From 4388157fefa797e18eb07c27f9ee1f202dfbc73c Mon Sep 17 00:00:00 2001 From: davy Date: Wed, 27 Aug 2014 13:38:27 +0200 Subject: [PATCH] Added support for 'cpuset' --- docker/client.py | 12 +++++++----- tests/test.py | 24 ++++++++++++++++++++++++ 2 files changed, 31 insertions(+), 5 deletions(-) diff --git a/docker/client.py b/docker/client.py index c4871a69..7e4f079a 100644 --- a/docker/client.py +++ b/docker/client.py @@ -102,8 +102,8 @@ class Client(requests.Session): mem_limit=0, ports=None, environment=None, dns=None, volumes=None, volumes_from=None, network_disabled=False, entrypoint=None, - cpu_shares=None, working_dir=None, domainname=None, - memswap_limit=0): + cpu_shares=None, cpuset=None, working_dir=None, + domainname=None, memswap_limit=0): if isinstance(command, six.string_types): command = shlex.split(str(command)) if isinstance(environment, dict): @@ -216,6 +216,7 @@ class Client(requests.Session): 'NetworkDisabled': network_disabled, 'Entrypoint': entrypoint, 'CpuShares': cpu_shares, + 'Cpuset': cpuset, 'WorkingDir': working_dir, 'MemorySwap': memswap_limit } @@ -500,8 +501,8 @@ class Client(requests.Session): mem_limit=0, ports=None, environment=None, dns=None, volumes=None, volumes_from=None, network_disabled=False, name=None, entrypoint=None, - cpu_shares=None, working_dir=None, domainname=None, - memswap_limit=0): + cpu_shares=None, cpuset=None, working_dir=None, + domainname=None, memswap_limit=0): if isinstance(volumes, six.string_types): volumes = [volumes, ] @@ -509,7 +510,8 @@ class Client(requests.Session): config = self._container_config( image, command, hostname, user, detach, stdin_open, tty, mem_limit, ports, environment, dns, volumes, volumes_from, network_disabled, - entrypoint, cpu_shares, working_dir, domainname, memswap_limit + entrypoint, cpu_shares, cpuset, working_dir, domainname, + memswap_limit ) return self.create_container_from_config(config, name) diff --git a/tests/test.py b/tests/test.py index 4fced935..0bfb0a1c 100644 --- a/tests/test.py +++ b/tests/test.py @@ -348,6 +348,30 @@ class DockerClientTest(Cleanup, unittest.TestCase): self.assertEqual(args[1]['headers'], {'Content-Type': 'application/json'}) + def test_create_container_with_cpuset(self): + try: + self.client.create_container('busybox', 'ls', + cpuset='0,1') + except Exception as e: + self.fail('Command should not raise exception: {0}'.format(e)) + + args = fake_request.call_args + self.assertEqual(args[0][0], + url_prefix + 'containers/create') + self.assertEqual(json.loads(args[1]['data']), + json.loads(''' + {"Tty": false, "Image": "busybox", + "Cmd": ["ls"], "AttachStdin": false, + "Memory": 0, + "AttachStderr": true, + "AttachStdout": true, "OpenStdin": false, + "StdinOnce": false, + "NetworkDisabled": false, + "Cpuset": "0,1", + "MemorySwap": 0}''')) + self.assertEqual(args[1]['headers'], + {'Content-Type': 'application/json'}) + def test_create_container_with_working_dir(self): try: self.client.create_container('busybox', 'ls',