summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKay Yan <kay.yan@daocloud.io>2016-07-13 14:55:33 +0800
committerJoffrey F <joffrey@docker.com>2016-08-23 15:32:06 -0700
commitfc72ac66e99551c10375398ee7afa552fbe867f2 (patch)
tree0db489e4c64f3a7c2cb4cf09f0ac5fec9cd47454
parent7b7e07e63b580328fc1fa1c101549b962b4cff14 (diff)
downloaddocker-py-fc72ac66e99551c10375398ee7afa552fbe867f2.tar.gz
support MemoryReservation and KernelMemory
Signed-off-by: Kay Yan <kay.yan@daocloud.io>
-rw-r--r--docker/utils/utils.py18
-rw-r--r--tests/unit/utils_test.py14
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):