diff --git a/src/spring-cloud/azext_spring_cloud/_enterprise.py b/src/spring-cloud/azext_spring_cloud/_enterprise.py index bc01469c42a..bb877556507 100644 --- a/src/spring-cloud/azext_spring_cloud/_enterprise.py +++ b/src/spring-cloud/azext_spring_cloud/_enterprise.py @@ -70,14 +70,15 @@ def app_update_enterprise(cmd, client, resource_group, service, name, assign_endpoint, deployment, jvm_options, - env): + env, + config_file_patterns): '''app_update_enterprise 1. update app properties (make sure some properties requires active deployment exist) 2. update deployment properties ''' # check app properties need active deployment exist is_app_update = any(x is not None for x in [assign_endpoint]) - is_deployment_update = any(x is not None for x in [jvm_options, env]) + is_deployment_update = any(x is not None for x in [jvm_options, env, config_file_patterns]) app_properties_needs_deployment_update = any(x is not None for x in [assign_endpoint]) if app_properties_needs_deployment_update or is_deployment_update: deployment = _deployment_or_active_deployment_name(client, resource_group, service, name, deployment) @@ -89,7 +90,7 @@ def app_update_enterprise(cmd, client, resource_group, service, name, if is_deployment_update: deployment_resource = models.DeploymentResource( properties=models.DeploymentResourceProperties( - deployment_settings=_format_deployment_settings(jvm_options=jvm_options, env=env) + deployment_settings=_format_deployment_settings(jvm_options=jvm_options, env=env, config_file_patterns=config_file_patterns) ) ) deployment_poller = client.deployments.begin_update(resource_group, service, name, deployment, deployment_resource) @@ -195,6 +196,7 @@ def deployment_create_enterprise(cmd, client, resource_group, service, app, name memory=None, instance_count=None, env=None, + config_file_patterns=None, no_wait=False): _ensure_deployment_not_exist(client, resource_group, service, app, name) origin_deployment = _get_active_deployment_or_default(client, resource_group, service, app, skip_clone_settings) @@ -203,7 +205,8 @@ def deployment_create_enterprise(cmd, client, resource_group, service, app, name settings = _format_deployment_settings(cpu=cpu or origin_settings.resource_requests.cpu, memory=memory or origin_settings.resource_requests.memory, jvm_options=jvm_options, - env=env or origin_settings.environment_variables) + env=env or origin_settings.environment_variables, + config_file_patterns=config_file_patterns or _get_config_file_patterns(origin_settings.addon_configs)) user_source_info = _build_and_get_result(cmd, client, resource_group, service, app, version, artifact_path, target_module, additional_steps=1) resource = models.DeploymentResource( properties=models.DeploymentResourceProperties( @@ -304,6 +307,10 @@ def _get_addon_configs(config_file_patterns): return addon_configs +def _get_config_file_patterns(addon_configs): + return addon_configs.get(APPLICATION_CONFIGURATION_SERVICE_NAME) if addon_configs is not None else None + + def _get_active_deployment(client, resource_group, service, name): deployments = client.deployments.list(resource_group, service, name) return next(iter(x for x in deployments if x.properties.active), None) diff --git a/src/spring-cloud/azext_spring_cloud/_params.py b/src/spring-cloud/azext_spring_cloud/_params.py index 387d1dfe23a..4fbcbbb79e4 100644 --- a/src/spring-cloud/azext_spring_cloud/_params.py +++ b/src/spring-cloud/azext_spring_cloud/_params.py @@ -142,9 +142,10 @@ def prepare_logs_argument(c): help="A string containing jvm options, use '=' instead of ' ' for this argument to avoid bash parse error, eg: --jvm-options='-Xms1024m -Xmx2048m'") c.argument('env', env_type) - with self.argument_context('spring-cloud app deploy') as c: - c.argument('config_file_patterns', type=str, - help="Configure file patterns separated with \',\' to decide which patterns of Application Configuration Service will be used. Use '\"\"' to clear existing configurations.", + for scope in ['spring-cloud app update', 'spring-cloud app deployment create', 'spring-cloud app deploy']: + with self.argument_context(scope) as c: + c.argument('config_file_patterns', type=str, + help="Only support in enterprise tier now. Config file patterns separated with \',\' to decide which patterns of Application Configuration Service will be used. Use '\"\"' to clear existing configurations.", validator=validate_config_file_patterns) with self.argument_context('spring-cloud app scale') as c: diff --git a/src/spring-cloud/azext_spring_cloud/tier_routing_app.py b/src/spring-cloud/azext_spring_cloud/tier_routing_app.py index a6386f4ad10..8300a339e42 100644 --- a/src/spring-cloud/azext_spring_cloud/tier_routing_app.py +++ b/src/spring-cloud/azext_spring_cloud/tier_routing_app.py @@ -62,13 +62,14 @@ def app_update(cmd, client, resource_group, service, name, jvm_options=None, main_entry=None, env=None, + config_file_patterns=None, enable_persistent_storage=None, https_only=None, enable_end_to_end_tls=None): if is_enterprise_tier(cmd, resource_group, service): # runtime_version, enable_persistent_storage, main_entry, https_only, enable_end_to_end_tls not support return app_update_enterprise(cmd, get_client(cmd), resource_group, service, name, - assign_endpoint, deployment, jvm_options, env) + assign_endpoint, deployment, jvm_options, env, config_file_patterns) else: return app_update_standard(cmd, client, resource_group, service, name, assign_endpoint, deployment, runtime_version, jvm_options, diff --git a/src/spring-cloud/azext_spring_cloud/tier_routing_deployment.py b/src/spring-cloud/azext_spring_cloud/tier_routing_deployment.py index ab3103f3922..b9d5b8c135f 100644 --- a/src/spring-cloud/azext_spring_cloud/tier_routing_deployment.py +++ b/src/spring-cloud/azext_spring_cloud/tier_routing_deployment.py @@ -46,11 +46,12 @@ def deployment_create(cmd, client, resource_group, service, app, name, memory=None, instance_count=None, env=None, + config_file_patterns=None, no_wait=False): if is_enterprise_tier(cmd, resource_group, service): return deployment_create_enterprise(cmd, get_client(cmd), resource_group, service, app, name, skip_clone_settings, version, artifact_path, target_module, - jvm_options, cpu, memory, instance_count, env, no_wait) + jvm_options, cpu, memory, instance_count, env, config_file_patterns, no_wait) else: return deployment_create_standard(cmd, client, resource_group, service, app, name, skip_clone_settings, version, artifact_path, target_module, runtime_version,