Skip to content

Commit 5b76f88

Browse files
committed
feat: implement healthcheck start_interval #3157
Signed-off-by: Khushiyant <khushiyant2002@gmail.com>
1 parent a365202 commit 5b76f88

File tree

3 files changed

+35
-1
lines changed

3 files changed

+35
-1
lines changed

docker/types/containers.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -711,6 +711,11 @@ def __init__(
711711
'healthcheck start period was introduced in API '
712712
'version 1.29'
713713
)
714+
715+
if version_lt(version, '1.44') and 'StartInterval' in healthcheck:
716+
raise errors.InvalidVersion(
717+
'healthcheck start interval was introduced in API version 1.44'
718+
)
714719

715720
if isinstance(command, str):
716721
command = split_command(command)

docker/types/healthcheck.py

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,8 @@ class Healthcheck(DictType):
2626
start_period (int): Start period for the container to
2727
initialize before starting health-retries countdown in
2828
nanoseconds. It should be 0 or at least 1000000 (1 ms).
29+
start_interval (int): It is interval to be used by healthchecks during the start period in
30+
nanoseconds. It should be 0 or at least 1000000 (1 ms).
2931
"""
3032
def __init__(self, **kwargs):
3133
test = kwargs.get('test', kwargs.get('Test'))
@@ -36,13 +38,15 @@ def __init__(self, **kwargs):
3638
timeout = kwargs.get('timeout', kwargs.get('Timeout'))
3739
retries = kwargs.get('retries', kwargs.get('Retries'))
3840
start_period = kwargs.get('start_period', kwargs.get('StartPeriod'))
41+
start_interval = kwargs.get('start_interval', kwargs.get('StartInterval'))
3942

4043
super().__init__({
4144
'Test': test,
4245
'Interval': interval,
4346
'Timeout': timeout,
4447
'Retries': retries,
45-
'StartPeriod': start_period
48+
'StartPeriod': start_period,
49+
'StartInterval': start_interval
4650
})
4751

4852
@property
@@ -86,3 +90,11 @@ def start_period(self):
8690
@start_period.setter
8791
def start_period(self, value):
8892
self['StartPeriod'] = value
93+
94+
@property
95+
def start_interval(self):
96+
return self['StartInterval']
97+
98+
@start_interval.setter
99+
def start_interval(self, value):
100+
self['StartInterval'] = value

tests/integration/api_healthcheck_test.py

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,3 +66,20 @@ def test_healthcheck_start_period(self):
6666
self.tmp_containers.append(container)
6767
self.client.start(container)
6868
wait_on_health_status(self.client, container, "healthy")
69+
70+
@helpers.requires_api_version('1.44')
71+
def test_healthcheck_start_interval(self):
72+
container = self.client.create_container(
73+
TEST_IMG, 'top', healthcheck={
74+
'test': "echo 'hello docker'",
75+
'interval': 1 * SECOND,
76+
'timeout': 1 * SECOND,
77+
'retries': 1,
78+
'start_interval': 1 * SECOND
79+
}
80+
)
81+
82+
self.tmp_containers.append(container)
83+
self.client.start(container)
84+
wait_on_health_status(self.client, container, "healthy")
85+

0 commit comments

Comments
 (0)