Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add config-file-patterns for 'app deployment create' and 'app update' #16

Merged
merged 2 commits into from
Aug 11, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 11 additions & 4 deletions src/spring-cloud/azext_spring_cloud/_enterprise.py
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand All @@ -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)
Expand Down Expand Up @@ -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)
Expand All @@ -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(
Expand Down Expand Up @@ -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)
Expand Down
7 changes: 4 additions & 3 deletions src/spring-cloud/azext_spring_cloud/_params.py
Original file line number Diff line number Diff line change
Expand Up @@ -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:
Expand Down
3 changes: 2 additions & 1 deletion src/spring-cloud/azext_spring_cloud/tier_routing_app.py
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down