diff options
author | Kay Yan <kay.yan@daocloud.io> | 2016-07-13 14:55:33 +0800 |
---|---|---|
committer | Joffrey F <joffrey@docker.com> | 2016-08-23 15:32:06 -0700 |
commit | fc72ac66e99551c10375398ee7afa552fbe867f2 (patch) | |
tree | 0db489e4c64f3a7c2cb4cf09f0ac5fec9cd47454 | |
parent | 7b7e07e63b580328fc1fa1c101549b962b4cff14 (diff) | |
download | docker-py-fc72ac66e99551c10375398ee7afa552fbe867f2.tar.gz |
support MemoryReservation and KernelMemory
Signed-off-by: Kay Yan <kay.yan@daocloud.io>
-rw-r--r-- | docker/utils/utils.py | 18 | ||||
-rw-r--r-- | tests/unit/utils_test.py | 14 |
2 files changed, 30 insertions, 2 deletions
diff --git a/docker/utils/utils.py b/docker/utils/utils.py index 082bd9b..a5fbe0b 100644 --- a/docker/utils/utils.py +++ b/docker/utils/utils.py @@ -613,8 +613,10 @@ def create_host_config(binds=None, port_bindings=None, lxc_conf=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, mem_swappiness=None, - cgroup_parent=None, group_add=None, cpu_quota=None, + mem_limit=None, memswap_limit=None, + mem_reservation=None, kernel_memory=None, + mem_swappiness=None, cgroup_parent=None, + group_add=None, cpu_quota=None, cpu_period=None, blkio_weight=None, blkio_weight_device=None, device_read_bps=None, device_write_bps=None, device_read_iops=None, @@ -638,6 +640,18 @@ def create_host_config(binds=None, port_bindings=None, lxc_conf=None, if memswap_limit is not None: host_config['MemorySwap'] = parse_bytes(memswap_limit) + if mem_reservation: + if version_lt(version, '1.21'): + raise host_config_version_error('mem_reservation', '1.21') + + host_config['MemoryReservation'] = parse_bytes(mem_reservation) + + if kernel_memory: + if version_lt(version, '1.21'): + raise host_config_version_error('kernel_memory', '1.21') + + host_config['KernelMemory'] = parse_bytes(kernel_memory) + if mem_swappiness is not None: if version_lt(version, '1.20'): raise host_config_version_error('mem_swappiness', '1.20') diff --git a/tests/unit/utils_test.py b/tests/unit/utils_test.py index b377391..3476f04 100644 --- a/tests/unit/utils_test.py +++ b/tests/unit/utils_test.py @@ -171,6 +171,20 @@ class HostConfigTest(base.BaseTestCase): with pytest.raises(InvalidVersion): create_endpoint_config(version='1.21', aliases=['foo', 'bar']) + def test_create_host_config_with_mem_reservation(self): + config = create_host_config(version='1.21', mem_reservation=67108864) + self.assertEqual(config.get('MemoryReservation'), 67108864) + self.assertRaises( + InvalidVersion, lambda: create_host_config( + version='1.20', mem_reservation=67108864)) + + def test_create_host_config_with_kernel_memory(self): + config = create_host_config(version='1.21', kernel_memory=67108864) + self.assertEqual(config.get('KernelMemory'), 67108864) + self.assertRaises( + InvalidVersion, lambda: create_host_config( + version='1.20', kernel_memory=67108864)) + class UlimitTest(base.BaseTestCase): def test_create_host_config_dict_ulimit(self): |