Skip to content

Commit 1848d2c

Browse files
Matthieu Nottaleshin-
authored andcommitted
stop(), restart(): Adjust request timeout.
Signed-off-by: Matthieu Nottale <[email protected]>
1 parent c0c46a3 commit 1848d2c

File tree

3 files changed

+21
-5
lines changed

3 files changed

+21
-5
lines changed

docker/api/container.py

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1018,7 +1018,10 @@ def restart(self, container, timeout=10):
10181018
"""
10191019
params = {'t': timeout}
10201020
url = self._url("/containers/{0}/restart", container)
1021-
res = self._post(url, params=params)
1021+
conn_timeout = self.timeout
1022+
if conn_timeout:
1023+
conn_timeout = max(conn_timeout, timeout+15)
1024+
res = self._post(url, params=params, timeout=conn_timeout)
10221025
self._raise_for_status(res)
10231026

10241027
@utils.check_resource('container')
@@ -1107,9 +1110,11 @@ def stop(self, container, timeout=None):
11071110
else:
11081111
params = {'t': timeout}
11091112
url = self._url("/containers/{0}/stop", container)
1110-
1113+
conn_timeout = self.timeout
1114+
if conn_timeout:
1115+
conn_timeout = max(conn_timeout, timeout + 15)
11111116
res = self._post(url, params=params,
1112-
timeout=(timeout + (self.timeout or 0)))
1117+
timeout=conn_timeout)
11131118
self._raise_for_status(res)
11141119

11151120
@utils.check_resource('container')

tests/integration/api_container_test.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1165,6 +1165,17 @@ def test_restart(self):
11651165
assert info2['State']['Running'] is True
11661166
self.client.kill(id)
11671167

1168+
def test_restart_with_hight_timeout(self):
1169+
container = self.client.create_container(BUSYBOX, ['sleep', '9999'])
1170+
id = container['Id']
1171+
self.client.start(id)
1172+
self.client.timeout = 1
1173+
self.client.restart(id, timeout=3)
1174+
self.client.timeout = None
1175+
self.client.restart(id, timeout=3)
1176+
self.client.timeout = 1
1177+
self.client.stop(id, timeout=3)
1178+
11681179
def test_restart_with_dict_instead_of_id(self):
11691180
container = self.client.create_container(BUSYBOX, ['sleep', '9999'])
11701181
assert 'Id' in container

tests/unit/api_container_test.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1264,7 +1264,7 @@ def test_stop_container(self):
12641264
'POST',
12651265
url_prefix + 'containers/3cc2351ab11b/stop',
12661266
params={'t': timeout},
1267-
timeout=(DEFAULT_TIMEOUT_SECONDS + timeout)
1267+
timeout=(DEFAULT_TIMEOUT_SECONDS)
12681268
)
12691269

12701270
def test_stop_container_with_dict_instead_of_id(self):
@@ -1277,7 +1277,7 @@ def test_stop_container_with_dict_instead_of_id(self):
12771277
'POST',
12781278
url_prefix + 'containers/3cc2351ab11b/stop',
12791279
params={'t': timeout},
1280-
timeout=(DEFAULT_TIMEOUT_SECONDS + timeout)
1280+
timeout=(DEFAULT_TIMEOUT_SECONDS)
12811281
)
12821282

12831283
def test_pause_container(self):

0 commit comments

Comments
 (0)