Skip to content

Commit 3846c3a

Browse files
committed
chore(scheduler): optimize termination_grace_period_seconds parameter passing
1 parent dcb51ca commit 3846c3a

8 files changed

Lines changed: 34 additions & 37 deletions

File tree

rootfs/api/models/app.py

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1205,9 +1205,13 @@ def _gather_app_settings(self, release, app_settings, ptype, replicas, volumes=N
12051205
settings.KUBERNETES_DEPLOYMENTS_REVISION_HISTORY_LIMIT)
12061206

12071207
# get application level pod termination grace period
1208-
pod_termination_grace_period_seconds = int(envs.get(
1209-
'KUBERNETES_POD_TERMINATION_GRACE_PERIOD_SECONDS',
1210-
settings.KUBERNETES_POD_TERMINATION_GRACE_PERIOD_SECONDS))
1208+
termination_grace_period_seconds = int(config.termination_grace_period.get(
1209+
ptype,
1210+
envs.get(
1211+
'KUBERNETES_POD_TERMINATION_GRACE_PERIOD_SECONDS',
1212+
settings.KUBERNETES_POD_TERMINATION_GRACE_PERIOD_SECONDS
1213+
)
1214+
))
12111215

12121216
# set the image pull policy that is associated with the application container
12131217
image_pull_policy = envs.get('IMAGE_PULL_POLICY', settings.IMAGE_PULL_POLICY)
@@ -1240,16 +1244,15 @@ def _gather_app_settings(self, release, app_settings, ptype, replicas, volumes=N
12401244
'healthcheck': healthcheck,
12411245
'runtime_class_name': limit_plan.runtime_class_name,
12421246
'dns_policy': settings.DRYCC_APP_DNS_POLICY,
1243-
'lifecycle_post_start': config.lifecycle_post_start,
1244-
'lifecycle_pre_stop': config.lifecycle_pre_stop,
1247+
'lifecycle_post_start': config.lifecycle_post_start.get(ptype, {}),
1248+
'lifecycle_pre_stop': config.lifecycle_pre_stop.get(ptype, {}),
12451249
'routable': routable,
12461250
'deploy_batches': batches,
12471251
'restart_policy': "Always",
12481252
'deploy_timeout': deploy_timeout,
12491253
'deployment_revision_history_limit': deployment_history,
12501254
'release_summary': release.summary,
1251-
'pod_termination_grace_period_seconds': pod_termination_grace_period_seconds,
1252-
'pod_termination_grace_period_each': config.termination_grace_period,
1255+
'termination_grace_period_seconds': termination_grace_period_seconds,
12531256
'image_pull_secret_name': image_pull_secret_name,
12541257
'image_pull_policy': image_pull_policy,
12551258
'volumes': volumes,

rootfs/api/tests/test_app.py

Lines changed: 13 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -628,25 +628,28 @@ def test_gather_app_settings(self, mock_requests):
628628
url = f"/v2/apps/{app.id}/build"
629629
response = self.client.post(url, data)
630630
self.assertEqual(response.status_code, 201, response.data)
631-
Config.objects.create(
632-
owner=self.user,
633-
app=app,
634-
values=[
631+
# Set some app settings
632+
url = f"/v2/apps/{app.id}/config"
633+
body = {
634+
'values': [
635635
{"name": "DRYCC_DEPLOY_TIMEOUT", "value": "60", "group": "global"},
636636
{"name": "DRYCC_DEPLOY_BATCHES", "value": "3", "group": "global"},
637637
{
638638
"name": "KUBERNETES_POD_TERMINATION_GRACE_PERIOD_SECONDS",
639-
"value": "60", "group": "global"
639+
"value": "90", "group": "global"
640640
},
641-
]
642-
)
641+
],
642+
}
643+
response = self.client.post(url, body)
644+
self.assertEqual(response.status_code, 201, response.data)
645+
# Gather app settings
643646
s = app._gather_app_settings(app.release_set.latest(),
644647
app.appsettings_set.latest(),
645648
'web',
646649
3)
647-
assert isinstance(s['deploy_batches'], int)
648-
assert isinstance(s['deploy_timeout'], int)
649-
assert isinstance(s['pod_termination_grace_period_seconds'], int)
650+
self.assertEqual(s['deploy_batches'], 3)
651+
self.assertEqual(s['deploy_timeout'], 60)
652+
self.assertEqual(s['termination_grace_period_seconds'], 90)
650653

651654
def test_app_name_bad_regex(self, mock_requests):
652655
"""

rootfs/scheduler/resources/pod.py

Lines changed: 1 addition & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -169,7 +169,7 @@ def manifest(self, namespace, name, image, **kwargs):
169169
spec['nodeSelector'].update(kwargs.get('tags', {}))
170170

171171
# How long until a pod is forcefully terminated. 30 is kubernetes default
172-
spec['terminationGracePeriodSeconds'] = self._get_termination_grace_period(kwargs) # noqa
172+
spec['terminationGracePeriodSeconds'] = kwargs.get('termination_grace_period_seconds', 30)
173173
# set pod volumes
174174
spec['volumes'] = kwargs.get('volumes', [])
175175
# create the base container
@@ -258,15 +258,6 @@ def _set_container_default_env(self, data):
258258
data["env"].append({"name": "DRYCC_DEBUG", "value": "1"})
259259
return data
260260

261-
@staticmethod
262-
def _get_termination_grace_period(kwargs):
263-
""" return termination grace period """
264-
app_type = kwargs.get("app_type")
265-
timeout_global = kwargs.get('pod_termination_grace_period_seconds', 30)
266-
timeout_local = kwargs.get("pod_termination_grace_period_each", {}).get(app_type)
267-
268-
return timeout_global if timeout_local is None else int(timeout_local)
269-
270261
@staticmethod
271262
def _get_memory(size):
272263
""" Format memory limit value """

rootfs/scheduler/tests/test_deployments.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ def create(self, namespace=None, name=generate_random_name(), **kwargs):
2424
'app_type': kwargs.get('app_type', 'web'),
2525
'version': kwargs.get('version', 'v99'),
2626
'replicas': kwargs.get('replicas', 4),
27-
'pod_termination_grace_period_seconds': 2,
27+
'termination_grace_period_seconds': 2,
2828
'image': 'quay.io/fake/image',
2929
'command': 'sh',
3030
'args': 'start',
@@ -45,7 +45,7 @@ def update(self, namespace=None, name=generate_random_name(), **kwargs):
4545
'app_type': kwargs.get('app_type', 'web'),
4646
'version': kwargs.get('version', 'v99'),
4747
'replicas': kwargs.get('replicas', 4),
48-
'pod_termination_grace_period_seconds': 2,
48+
'termination_grace_period_seconds': 2,
4949
'image': 'quay.io/fake/image',
5050
'command': 'sh',
5151
'args': 'start',
@@ -67,7 +67,7 @@ def scale(self, namespace=None, name=generate_random_name(), **kwargs):
6767
'app_type': kwargs.get('app_type', 'web'),
6868
'version': kwargs.get('version', 'v99'),
6969
'replicas': kwargs.get('replicas', 4),
70-
'pod_termination_grace_period_seconds': 2,
70+
'termination_grace_period_seconds': 2,
7171
'image': 'quay.io/fake/image',
7272
'command': 'sh',
7373
'args': 'start',

rootfs/scheduler/tests/test_hpa.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ def create(self, namespace=None, name=generate_random_name(), **kwargs):
2323
'app_type': kwargs.get('app_type', 'web'),
2424
'version': kwargs.get('version', 'v99'),
2525
'replicas': kwargs.get('replicas', 1),
26-
'pod_termination_grace_period_seconds': 2,
26+
'termination_grace_period_seconds': 2,
2727
'image': 'quay.io/fake/image',
2828
'command': 'sh',
2929
'args': 'start',
@@ -72,7 +72,7 @@ def update_deployment(self, namespace=None, name=generate_random_name(), **kwarg
7272
'app_type': kwargs.get('app_type', 'web'),
7373
'version': kwargs.get('version', 'v99'),
7474
'replicas': kwargs.get('replicas', 4),
75-
'pod_termination_grace_period_seconds': 2,
75+
'termination_grace_period_seconds': 2,
7676
'image': 'quay.io/fake/image',
7777
'command': 'sh',
7878
'args': 'start',

rootfs/scheduler/tests/test_hpa_12_lower.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ def create(self, namespace=None, name=generate_random_name(), **kwargs):
2727
'app_type': kwargs.get('app_type', 'web'),
2828
'version': kwargs.get('version', 'v99'),
2929
'replicas': kwargs.get('replicas', 1),
30-
'pod_termination_grace_period_seconds': 2,
30+
'termination_grace_period_seconds': 2,
3131
'image': 'quay.io/fake/image',
3232
'command': 'sh',
3333
'args': 'start',
@@ -76,7 +76,7 @@ def update_deployment(self, namespace=None, name=generate_random_name(), **kwarg
7676
'app_type': kwargs.get('app_type', 'web'),
7777
'version': kwargs.get('version', 'v99'),
7878
'replicas': kwargs.get('replicas', 4),
79-
'pod_termination_grace_period_seconds': 2,
79+
'termination_grace_period_seconds': 2,
8080
'image': 'quay.io/fake/image',
8181
'command': 'sh',
8282
'args': 'start',

rootfs/scheduler/tests/test_pods.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ def create(self, namespace=None, name=generate_random_name(), **kwargs):
2525
'app_type': kwargs.get('app_type', 'web'),
2626
'version': kwargs.get('version', 'v99'),
2727
'replicas': kwargs.get('replicas', 4),
28-
'pod_termination_grace_period_seconds': 2,
28+
'termination_grace_period_seconds': 2,
2929
'image': 'quay.io/fake/image',
3030
'command': 'sh',
3131
'args': 'start',

rootfs/scheduler/tests/test_rc.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ def create(self, namespace=None, name=generate_random_name(), **kwargs):
2121
'app_type': kwargs.get('app_type', 'web'),
2222
'version': kwargs.get('version', 'v99'),
2323
'replicas': kwargs.get('replicas', 4),
24-
'pod_termination_grace_period_seconds': 2,
24+
'termination_grace_period_seconds': 2,
2525
'image': 'quay.io/fake/image',
2626
'command': 'sh',
2727
'args': 'start',
@@ -43,7 +43,7 @@ def scale_rc(self, namespace=None, name=generate_random_name(), **kwargs):
4343
'version': kwargs.get('version', 'v99'),
4444
'replicas': kwargs.get('replicas', 4),
4545
'deploy_timeout': 120,
46-
'pod_termination_grace_period_seconds': 2,
46+
'termination_grace_period_seconds': 2,
4747
'image': 'quay.io/fake/image',
4848
'command': 'sh',
4949
'args': 'start',

0 commit comments

Comments
 (0)