diff --git a/src/spring/HISTORY.md b/src/spring/HISTORY.md index 8986092bef2..cd93f7373a7 100644 --- a/src/spring/HISTORY.md +++ b/src/spring/HISTORY.md @@ -2,6 +2,7 @@ Release History =============== 1.1.2 --- +* Support configure Germination Grace Period Seconds for deployments. * Fix the arguments parsing of the Command `az spring app create` with "--container-image". 1.1.1 diff --git a/src/spring/azext_spring/_deployment_factory.py b/src/spring/azext_spring/_deployment_factory.py index e729f375283..aed1d146073 100644 --- a/src/spring/azext_spring/_deployment_factory.py +++ b/src/spring/azext_spring/_deployment_factory.py @@ -46,10 +46,10 @@ def format_settings(self, **kwargs): readiness_probe=self._format_readiness_probe(**kwargs) ) - def _get_termination_grace_period_seconds(self, termination_seconds=None, **_): - if termination_seconds is None: + def _get_termination_grace_period_seconds(self, termination_grace_period_seconds=None, **_): + if termination_grace_period_seconds is None: return None - return termination_seconds + return termination_grace_period_seconds def _format_startup_probe(self, enable_startup_probe=None, startup_probe_config_file_path=None, **_): if enable_startup_probe is None: diff --git a/src/spring/azext_spring/_params.py b/src/spring/azext_spring/_params.py index 30a6211ed13..f7c6b52e976 100644 --- a/src/spring/azext_spring/_params.py +++ b/src/spring/azext_spring/_params.py @@ -213,6 +213,9 @@ def load_arguments(self, _): help='A json file path indicates the readiness probe config', arg_group='App Customization') c.argument('startup_probe_config', type=str, is_preview=True, help='A json file path indicates the startup probe config', arg_group='App Customization') + c.argument('termination_grace_period_seconds', type=str, is_preview=True, + options_list=['--termination-grace-period-seconds', '--grace-period'], + help='Optional duration in seconds the app instance needs to terminate gracefully', arg_group='App Customization') with self.argument_context('spring app create') as c: c.argument('assign_endpoint', arg_type=get_three_state_flag(), diff --git a/src/spring/azext_spring/app.py b/src/spring/azext_spring/app.py index 4e2fe9bc05d..646de45aac5 100644 --- a/src/spring/azext_spring/app.py +++ b/src/spring/azext_spring/app.py @@ -58,6 +58,7 @@ def app_create(cmd, client, resource_group, service, name, liveness_probe_config=None, readiness_probe_config=None, startup_probe_config=None, + termination_grace_period_seconds=None, assign_public_endpoint=None, loaded_public_certificate_file=None): '''app_create @@ -104,6 +105,7 @@ def app_create(cmd, client, resource_group, service, name, 'liveness_probe_config_file_path': liveness_probe_config, 'readiness_probe_config_file_path': readiness_probe_config, 'startup_probe_config_file_path': startup_probe_config, + 'termination_grace_period_seconds': termination_grace_period_seconds, } update_app_kwargs = { 'enable_persistent_storage': enable_persistent_storage, @@ -163,6 +165,7 @@ def app_update(cmd, client, resource_group, service, name, liveness_probe_config=None, readiness_probe_config=None, startup_probe_config=None, + termination_grace_period_seconds=None, # general no_wait=False): '''app_update @@ -196,6 +199,7 @@ def app_update(cmd, client, resource_group, service, name, 'liveness_probe_config_file_path': liveness_probe_config, 'readiness_probe_config_file_path': readiness_probe_config, 'startup_probe_config_file_path': startup_probe_config, + 'termination_grace_period_seconds': termination_grace_period_seconds, } app_kwargs = { @@ -268,6 +272,7 @@ def app_deploy(cmd, client, resource_group, service, name, liveness_probe_config=None, readiness_probe_config=None, startup_probe_config=None, + termination_grace_period_seconds=None, # general no_wait=False): '''app_deploy @@ -316,6 +321,7 @@ def app_deploy(cmd, client, resource_group, service, name, 'liveness_probe_config_file_path': liveness_probe_config, 'readiness_probe_config_file_path': readiness_probe_config, 'startup_probe_config_file_path': startup_probe_config, + 'termination_grace_period_seconds': termination_grace_period_seconds, 'no_wait': no_wait } @@ -373,6 +379,7 @@ def deployment_create(cmd, client, resource_group, service, app, name, liveness_probe_config=None, readiness_probe_config=None, startup_probe_config=None, + termination_grace_period_seconds=None, # general no_wait=False): '''deployment_create @@ -420,6 +427,7 @@ def deployment_create(cmd, client, resource_group, service, app, name, 'liveness_probe_config_file_path': liveness_probe_config, 'readiness_probe_config_file_path': readiness_probe_config, 'startup_probe_config_file_path': startup_probe_config, + 'termination_grace_period_seconds': termination_grace_period_seconds, 'no_wait': no_wait } diff --git a/src/spring/azext_spring/tests/latest/test_asa_app.py b/src/spring/azext_spring/tests/latest/test_asa_app.py index 4efbc7fd382..c06214eed0a 100644 --- a/src/spring/azext_spring/tests/latest/test_asa_app.py +++ b/src/spring/azext_spring/tests/latest/test_asa_app.py @@ -465,6 +465,11 @@ def test_app_update_jvm_options(self): self.assertEqual('Java_11', resource.properties.source.runtime_version) self.assertEqual('test-option', resource.properties.source.jvm_options) + def test_app_set_termination_grace_period_seconds(self): + self._execute('rg', 'asc', 'app', deployment=self._get_deployment(), termination_grace_period_seconds=88) + resource = self.patch_deployment_resource + self.assertEqual(88, resource.properties.deployment_settings.termination_grace_period_seconds) + def test_app_disable_probes(self): self._execute('rg', 'asc', 'app', deployment=self._get_deployment(), enable_liveness_probe=False, enable_readiness_probe=False, enable_startup_probe=False)