From 0704e0f8843330c1d25206f4274fbaf12f91efa3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20de=20Metz?= Date: Fri, 24 Jul 2015 16:25:50 +0200 Subject: [PATCH] Add cgroup_parent option. To: - utils.create_host_config - client.start --- docker/client.py | 5 +++-- docker/utils/utils.py | 5 ++++- tests/utils_test.py | 4 ++++ 3 files changed, 11 insertions(+), 3 deletions(-) diff --git a/docker/client.py b/docker/client.py index e4712c23c3..b038fb38ae 100644 --- a/docker/client.py +++ b/docker/client.py @@ -737,7 +737,7 @@ def start(self, container, binds=None, port_bindings=None, lxc_conf=None, dns=None, dns_search=None, volumes_from=None, network_mode=None, restart_policy=None, cap_add=None, cap_drop=None, devices=None, extra_hosts=None, read_only=None, pid_mode=None, ipc_mode=None, - security_opt=None, ulimits=None): + security_opt=None, ulimits=None, cgroup_parent=None): if utils.compare_version('1.10', self._version) < 0: if dns is not None: @@ -782,7 +782,8 @@ def start(self, container, binds=None, port_bindings=None, lxc_conf=None, cap_drop=cap_drop, volumes_from=volumes_from, devices=devices, network_mode=network_mode, restart_policy=restart_policy, extra_hosts=extra_hosts, read_only=read_only, pid_mode=pid_mode, - ipc_mode=ipc_mode, security_opt=security_opt, ulimits=ulimits + ipc_mode=ipc_mode, security_opt=security_opt, ulimits=ulimits, + cgroup_parent=cgroup_parent ) url = self._url("/containers/{0}/start".format(container)) diff --git a/docker/utils/utils.py b/docker/utils/utils.py index a714c97c4b..792025a605 100644 --- a/docker/utils/utils.py +++ b/docker/utils/utils.py @@ -390,7 +390,7 @@ def create_host_config( restart_policy=None, cap_add=None, cap_drop=None, devices=None, extra_hosts=None, read_only=None, pid_mode=None, ipc_mode=None, security_opt=None, ulimits=None, log_config=None, mem_limit=None, - memswap_limit=None + memswap_limit=None, cgroup_parent=None ): host_config = {} @@ -404,6 +404,9 @@ def create_host_config( memswap_limit = parse_bytes(memswap_limit) host_config['MemorySwap'] = memswap_limit + if cgroup_parent is not None: + host_config['CgroupParent'] = cgroup_parent + if pid_mode not in (None, 'host'): raise errors.DockerException( 'Invalid value for pid param: {0}'.format(pid_mode) diff --git a/tests/utils_test.py b/tests/utils_test.py index 1c8729ca00..b664a6e395 100644 --- a/tests/utils_test.py +++ b/tests/utils_test.py @@ -167,6 +167,10 @@ def test_logconfig_invalid_type(self): type=LogConfig.types.JSON, config='helloworld' )) + def test_set_cgroup_parent(self): + config = create_host_config(cgroup_parent="systemd.slice") + self.assertEqual("systemd.slice", config['CgroupParent']) + def test_resolve_repository_name(self): # docker hub library image self.assertEqual(