diff options
author | Joffrey F <f.joffrey@gmail.com> | 2016-09-29 14:53:53 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2016-09-29 14:53:53 -0700 |
commit | 2b34e0b8e44597b36d888b3f3272641f602cb6da (patch) | |
tree | cf32950513e3a485be4033a408a1fc66ca315df6 | |
parent | ce52e091e1de49b245f42b996836b8960eab8752 (diff) | |
parent | a665c8c4431cc3af6eb5510aff1014b06be6b4b2 (diff) | |
download | docker-py-2b34e0b8e44597b36d888b3f3272641f602cb6da.tar.gz |
Merge pull request #1224 from mferon/addRestartPolicyUpdateSupport
Add support for restart policy update
-rw-r--r-- | docker/api/container.py | 10 | ||||
-rw-r--r-- | docs/api.md | 1 | ||||
-rw-r--r-- | tests/integration/container_test.py | 30 |
3 files changed, 40 insertions, 1 deletions
diff --git a/docker/api/container.py b/docker/api/container.py index b8507d8..d71d17a 100644 --- a/docker/api/container.py +++ b/docker/api/container.py @@ -421,7 +421,8 @@ class ContainerApiMixin(object): def update_container( self, container, blkio_weight=None, cpu_period=None, cpu_quota=None, cpu_shares=None, cpuset_cpus=None, cpuset_mems=None, mem_limit=None, - mem_reservation=None, memswap_limit=None, kernel_memory=None + mem_reservation=None, memswap_limit=None, kernel_memory=None, + restart_policy=None ): url = self._url('/containers/{0}/update', container) data = {} @@ -445,6 +446,13 @@ class ContainerApiMixin(object): data['MemorySwap'] = utils.parse_bytes(memswap_limit) if kernel_memory: data['KernelMemory'] = utils.parse_bytes(kernel_memory) + if restart_policy: + if utils.version_lt(self._version, '1.23'): + raise errors.InvalidVersion( + 'restart policy update is not supported ' + 'for API version < 1.23' + ) + data['RestartPolicy'] = restart_policy res = self._post_json(url, data=data) return self._result(res, True) diff --git a/docs/api.md b/docs/api.md index 1699344..579057a 100644 --- a/docs/api.md +++ b/docs/api.md @@ -1126,6 +1126,7 @@ Update resource configs of one or more containers. * mem_reservation (int or str): Memory soft limit * memswap_limit (int or str): Total memory (memory + swap), -1 to disable swap * kernel_memory (int or str): Kernel memory limit +* restart_policy (dict): Restart policy dictionary **Returns** (dict): Dictionary containing a `Warnings` key. diff --git a/tests/integration/container_test.py b/tests/integration/container_test.py index a7267ef..4bb78bf 100644 --- a/tests/integration/container_test.py +++ b/tests/integration/container_test.py @@ -1104,6 +1104,36 @@ class ContainerUpdateTest(helpers.BaseTestCase): inspect_data = self.client.inspect_container(container) self.assertEqual(inspect_data['HostConfig']['Memory'], new_mem_limit) + @requires_api_version('1.23') + def test_restart_policy_update(self): + old_restart_policy = { + 'MaximumRetryCount': 0, + 'Name': 'always' + } + new_restart_policy = { + 'MaximumRetryCount': 42, + 'Name': 'on-failure' + } + container = self.client.create_container( + BUSYBOX, ['sleep', '60'], + host_config=self.client.create_host_config( + restart_policy=old_restart_policy + ) + ) + self.tmp_containers.append(container) + self.client.start(container) + self.client.update_container(container, + restart_policy=new_restart_policy) + inspect_data = self.client.inspect_container(container) + self.assertEqual( + inspect_data['HostConfig']['RestartPolicy']['MaximumRetryCount'], + new_restart_policy['MaximumRetryCount'] + ) + self.assertEqual( + inspect_data['HostConfig']['RestartPolicy']['Name'], + new_restart_policy['Name'] + ) + class ContainerCPUTest(helpers.BaseTestCase): @requires_api_version('1.18') |