Skip to content

Commit 459d806

Browse files
add builder for buildpack binding (#39)
1 parent 5310038 commit 459d806

File tree

7 files changed

+267
-93
lines changed

7 files changed

+267
-93
lines changed

src/spring-cloud/azext_spring_cloud/_enterprise.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
create_service_registry,
1111
create_gateway,
1212
create_api_portal)
13+
from .buildpack_binding import create_default_buildpack_binding_for_application_insights
1314
from .custom import (app_get, _create_service)
1415
from azure.cli.core.commands.client_factory import get_subscription_id
1516
from azure.cli.core.util import sdk_no_wait
@@ -58,14 +59,16 @@ def spring_cloud_create(cmd, client, resource_group, name, location=None,
5859
create_application_configuration_service(cmd, client, resource_group, name, enable_application_configuration_service),
5960
create_service_registry(cmd, client, resource_group, name, enable_service_registry),
6061
create_gateway(cmd, client, resource_group, name, enable_gateway),
61-
create_api_portal(cmd, client, resource_group, name, enable_api_portal)]
62+
create_api_portal(cmd, client, resource_group, name, enable_api_portal),
63+
create_default_buildpack_binding_for_application_insights(cmd, client, resource_group, name, location, app_insights_key,
64+
app_insights, sampling_rate, disable_app_insights)
65+
]
6266
pollers = [x for x in pollers if x]
6367
if not no_wait:
6468
_wait_till_end(cmd, *pollers)
6569
return resource
6670

6771

68-
6972
def app_create_enterprise(cmd, client, resource_group, service, name,
7073
assign_endpoint=None,
7174
cpu=None,

src/spring-cloud/azext_spring_cloud/_help.py

Lines changed: 31 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -694,45 +694,53 @@
694694

695695
helps['spring-cloud build-service buildpacks-binding'] = """
696696
type: group
697-
short-summary: (Enterprise Tier Only) Commands to manage Buildpacks Binding
697+
short-summary: (Enterprise Tier Only) Commands to manage buildpack Binding
698698
"""
699699

700-
helps['spring-cloud build-service buildpacks-binding create'] = """
700+
helps['spring-cloud build-service builder buildpack-binding create'] = """
701701
type: command
702-
short-summary: Create a buildpacks binding.
702+
short-summary: Create a buildpack binding.
703703
examples:
704-
- name: Create a buildpacks binding without properties or secrets.
705-
text: az spring-cloud build-service buildpacks-binding create --name first-binding --type ApplicationInsights
706-
- name: Create a buildpacks binding with only secrets.
707-
text: az spring-cloud build-service buildpacks-binding create --name first-binding --type ApplicationInsights --secrets k1=v1 k2=v2
708-
- name: Create a buildpacks binding with only properties.
709-
text: az spring-cloud build-service buildpacks-binding create --name first-binding --type ApplicationInsights --properties a=b c=d
710-
- name: Create a buildpacks binding with properties and secrets.
711-
text: az spring-cloud build-service buildpacks-binding create --name first-binding --type ApplicationInsights --properties a=b c=d --secrets k1=v1 k2=v2
704+
- name: Create a buildpack binding without properties or secrets.
705+
text: az spring-cloud build-service builder buildpack-binding create --name first-binding --builder-name first-builder --type ApplicationInsights
706+
- name: Create a buildpack binding with only secrets.
707+
text: az spring-cloud build-service builder buildpack-binding create --name first-binding --builder-name first-builder --type ApplicationInsights --secrets k1=v1 k2=v2
708+
- name: Create a buildpack binding with only properties.
709+
text: az spring-cloud build-service builder buildpack-binding create --name first-binding --builder-name first-builder --type ApplicationInsights --properties a=b c=d
710+
- name: Create a buildpack binding with properties and secrets.
711+
text: az spring-cloud build-service builder buildpack-binding create --name first-binding --builder-name first-builder --type ApplicationInsights --properties a=b c=d --secrets k1=v1 k2=v2
712712
"""
713713

714-
helps['spring-cloud build-service buildpacks-binding set'] = """
714+
helps['spring-cloud build-service builder buildpack-binding set'] = """
715715
type: command
716-
short-summary: Set a buildpacks binding.
716+
short-summary: Set a buildpack binding.
717717
examples:
718-
- name: Set a buildpacks binding with properties and secrets.
719-
text: az spring-cloud build-service buildpacks-binding set --name first-binding --type ApplicationInsights --properties a=b c=d --secrets k1=v1 k2=v2
718+
- name: Set a buildpack binding with properties and secrets.
719+
text: az spring-cloud build-service builder buildpack-binding set --name first-binding --builder-name first-builder --type ApplicationInsights --properties a=b c=d --secrets k1=v1 k2=v2
720720
"""
721721

722-
helps['spring-cloud build-service buildpacks-binding show'] = """
722+
helps['spring-cloud build-service builder buildpack-binding show'] = """
723723
type: command
724-
short-summary: Show a buildpacks binding. The secrets will be masked.
724+
short-summary: Show a buildpack binding. The secrets will be masked.
725725
examples:
726-
- name: Show a buildpacks binding.
727-
text: az spring-cloud build-service buildpacks-binding show --name first-binding
726+
- name: Show a buildpack binding.
727+
text: az spring-cloud build-service builder buildpack-binding show --name first-binding --builder-name first-builder
728728
"""
729729

730-
helps['spring-cloud build-service buildpacks-binding delete'] = """
730+
helps['spring-cloud build-service builder buildpack-binding list'] = """
731731
type: command
732-
short-summary: Delete a buildpacks binding.
732+
short-summary: List all buildpack binding in a builder. The secrets will be masked.
733733
examples:
734-
- name: Delete a buildpacks binding.
735-
text: az spring-cloud build-service buildpacks-binding delete --name first-binding
734+
- name: Show a buildpack binding.
735+
text: az spring-cloud build-service builder buildpack-binding list --builder-name first-builder
736+
"""
737+
738+
helps['spring-cloud build-service builder buildpack-binding delete'] = """
739+
type: command
740+
short-summary: Delete a buildpack binding.
741+
examples:
742+
- name: Delete a buildpack binding.
743+
text: az spring-cloud build-service builder buildpack-binding delete --name first-binding --builder-name first-builder
736744
"""
737745

738746
helps['spring-cloud gateway'] = """

src/spring-cloud/azext_spring_cloud/_params.py

Lines changed: 37 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,9 @@
1515
validate_app_insights_parameters, validate_instance_count, validate_java_agent_parameters,
1616
validate_jar)
1717
from ._validators_enterprise import (validate_config_file_patterns, validate_cpu, validate_memory,
18-
validate_buildpacks_binding_properties,
19-
validate_buildpacks_binding_secrets, only_support_enterprise,
20-
validate_buildpacks_binding_not_exist, validate_buildpacks_binding_exist,
18+
validate_buildpack_binding_properties,
19+
validate_buildpack_binding_secrets, only_support_enterprise,
20+
validate_buildpack_binding_not_exist, validate_buildpack_binding_exist,
2121
validate_git_uri, validate_acs_patterns, validate_routes, validate_builder,
2222
validate_build_pool_size, validate_builder_resource, validate_builder_create,
2323
validate_builder_update)
@@ -539,34 +539,55 @@ def prepare_logs_argument(c):
539539
with self.argument_context(scope) as c:
540540
c.argument('name', type=str, help="The builder name.")
541541

542-
for scope in ['spring-cloud build-service buildpacks-binding create',
543-
'spring-cloud build-service buildpacks-binding set']:
542+
# BuildpackBinding in Builder
543+
for scope in ['spring-cloud build-service builder buildpack-binding create']:
544544
with self.argument_context(scope) as c:
545545
c.argument('type',
546546
arg_type=get_enum_type(v20220101_preview_AppPlatformEnums.BindingType),
547-
help='Required type for buildpacks binding.')
547+
help='Required type for buildpack binding.')
548548
c.argument('properties',
549549
help='Non-sensitive properties for launchProperties. Format "key[=value]".',
550550
nargs='*',
551-
validator=validate_buildpacks_binding_properties)
551+
validator=validate_buildpack_binding_properties)
552552
c.argument('secrets',
553553
help='Sensitive properties for launchProperties. '
554554
'Once put, it will be encrypted and never return to user. '
555555
'Format "key[=value]".',
556556
nargs='*',
557-
validator=validate_buildpacks_binding_secrets)
557+
validator=validate_buildpack_binding_secrets)
558+
c.argument('name', help='Name for buildpack binding.', validator=validate_buildpack_binding_not_exist)
559+
c.argument('builder_name', help='The name for builder.', default="default")
560+
c.argument('service', service_name_type, validator=only_support_enterprise)
561+
558562

559-
for scope in ['spring-cloud build-service buildpacks-binding create']:
563+
for scope in ['spring-cloud build-service builder buildpack-binding set']:
560564
with self.argument_context(scope) as c:
561-
c.argument('name', help='Name for buildpacks binding.', validator=validate_buildpacks_binding_not_exist)
565+
c.argument('type',
566+
arg_type=get_enum_type(v20220101_preview_AppPlatformEnums.BindingType),
567+
help='Required type for buildpack binding.')
568+
c.argument('properties',
569+
help='Non-sensitive properties for launchProperties. Format "key[=value]".',
570+
nargs='*',
571+
validator=validate_buildpack_binding_properties)
572+
c.argument('secrets',
573+
help='Sensitive properties for launchProperties. '
574+
'Once put, it will be encrypted and never return to user. '
575+
'Format "key[=value]".',
576+
nargs='*',
577+
validator=validate_buildpack_binding_secrets)
578+
c.argument('name', help='Name for buildpack binding.', validator=validate_buildpack_binding_exist)
579+
c.argument('builder_name', help='The name for builder.', default="default")
580+
c.argument('service', service_name_type, validator=only_support_enterprise)
581+
562582

563-
for scope in ['spring-cloud build-service buildpacks-binding set']:
583+
for scope in ['spring-cloud build-service builder buildpack-binding show',
584+
'spring-cloud build-service builder buildpack-binding delete']:
564585
with self.argument_context(scope) as c:
565-
c.argument('name', help='Name for buildpacks binding.', validator=validate_buildpacks_binding_exist)
586+
c.argument('name', help='Name for buildpack binding.', validator=validate_buildpack_binding_exist)
587+
c.argument('builder_name', help='The name for builder.', default="default")
588+
c.argument('service', service_name_type, validator=only_support_enterprise)
566589

567-
for scope in ['spring-cloud build-service buildpacks-binding create',
568-
'spring-cloud build-service buildpacks-binding set',
569-
'spring-cloud build-service buildpacks-binding show',
570-
'spring-cloud build-service buildpacks-binding delete']:
590+
for scope in ['spring-cloud build-service builder buildpack-binding list']:
571591
with self.argument_context(scope) as c:
592+
c.argument('builder_name', help='The name for builder.', default="default")
572593
c.argument('service', service_name_type, validator=only_support_enterprise)

src/spring-cloud/azext_spring_cloud/_validators_enterprise.py

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ def _is_valid_app_and_profile_name(pattern):
8282
return len(parts) == 2 and _is_valid_app_name(parts[0]) and _is_valid_profile_name(parts[1])
8383

8484

85-
def validate_buildpacks_binding_properties(namespace):
85+
def validate_buildpack_binding_properties(namespace):
8686
""" Extracts multiple space-separated properties in key[=value] format """
8787
if isinstance(namespace.properties, list):
8888
properties_dict = {}
@@ -91,7 +91,7 @@ def validate_buildpacks_binding_properties(namespace):
9191
namespace.properties = properties_dict
9292

9393

94-
def validate_buildpacks_binding_secrets(namespace):
94+
def validate_buildpack_binding_secrets(namespace):
9595
""" Extracts multiple space-separated secrets in key[=value] format """
9696
if isinstance(namespace.secrets, list):
9797
secrets_dict = {}
@@ -100,28 +100,29 @@ def validate_buildpacks_binding_secrets(namespace):
100100
namespace.secrets = secrets_dict
101101

102102

103-
def validate_buildpacks_binding_not_exist(cmd, namespace):
103+
def validate_buildpack_binding_not_exist(cmd, namespace):
104104
client = get_client(cmd)
105105
try:
106-
binding_resource = client.buildpacks_binding.get(namespace.resource_group,
106+
binding_resource = client.buildpack_binding.get(namespace.resource_group,
107107
namespace.service,
108108
DEFAULT_BUILD_SERVICE_NAME,
109+
namespace.builder_name,
109110
namespace.name)
110111
if binding_resource is not None:
111-
raise CLIError('Buildpacks Binding {} already exists '
112+
raise CLIError('buildpack Binding {} in builder {} already exists '
112113
'in resource group {}, service {}. You can edit it by set command.'
113-
.format(namespace.name, namespace.resource_group, namespace.service))
114+
.format(namespace.name, namespace.resource_group, namespace.service, namespace.builder_name))
114115
except ResourceNotFoundError:
115116
# Excepted case
116117
pass
117118

118-
119-
def validate_buildpacks_binding_exist(cmd, namespace):
119+
def validate_buildpack_binding_exist(cmd, namespace):
120120
client = get_client(cmd)
121121
# If not exists exception will be raised
122-
client.buildpacks_binding.get(namespace.resource_group,
122+
client.buildpack_binding.get(namespace.resource_group,
123123
namespace.service,
124124
DEFAULT_BUILD_SERVICE_NAME,
125+
namespace.builder_name,
125126
namespace.name)
126127

127128

0 commit comments

Comments
 (0)