summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoffrey F <joffrey@docker.com>2015-11-18 14:35:54 -0800
committerJoffrey F <joffrey@docker.com>2015-11-18 14:35:54 -0800
commitdfcc1d87bf4e6fb060780f18b3458811331cceba (patch)
treea54f856932b8494acbd3bfac4d16a8c972cf6f02
parent9ed721957ad42680b69141f89024e19245f1305b (diff)
parent8924319631445d25b5de885ea46c651522249de0 (diff)
downloaddocker-py-dfcc1d87bf4e6fb060780f18b3458811331cceba.tar.gz
Merge branch 'oom-kill-disable-pr' of https://github.com/schu/docker-py into schu-oom-kill-disable-pr
-rw-r--r--docker/utils/utils.py27
-rw-r--r--docs/hostconfig.md1
-rw-r--r--tests/unit/utils_test.py9
3 files changed, 26 insertions, 11 deletions
diff --git a/docker/utils/utils.py b/docker/utils/utils.py
index b9424f0..366f869 100644
--- a/docker/utils/utils.py
+++ b/docker/utils/utils.py
@@ -469,16 +469,16 @@ def parse_bytes(s):
return s
-def create_host_config(binds=None, port_bindings=None, lxc_conf=None,
- publish_all_ports=False, links=None, privileged=False,
- 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, log_config=None,
- mem_limit=None, memswap_limit=None, mem_swappiness=None,
- cgroup_parent=None, group_add=None, cpu_quota=None,
- cpu_period=None, version=None):
+def create_host_config(
+ binds=None, port_bindings=None, lxc_conf=None, publish_all_ports=False,
+ links=None, privileged=False, 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, log_config=None,
+ mem_limit=None, memswap_limit=None, mem_swappiness=None,
+ cgroup_parent=None, group_add=None, cpu_quota=None, cpu_period=None,
+ oom_kill_disable=False, version=None
+):
host_config = {}
@@ -525,6 +525,13 @@ def create_host_config(binds=None, port_bindings=None, lxc_conf=None,
if privileged:
host_config['Privileged'] = privileged
+ if oom_kill_disable:
+ if version_lt(version, '1.19'):
+ raise errors.InvalidVersion(
+ 'oom_kill_disable param not supported for API version < 1.19'
+ )
+ host_config['OomKillDisable'] = oom_kill_disable
+
if publish_all_ports:
host_config['PublishAllPorts'] = publish_all_ports
diff --git a/docs/hostconfig.md b/docs/hostconfig.md
index 40accce..6b28be6 100644
--- a/docs/hostconfig.md
+++ b/docs/hostconfig.md
@@ -72,6 +72,7 @@ for example:
* port_bindings (dict): Port bindings. See [Port bindings](port-bindings.md)
for more information.
* lxc_conf (dict): LXC config
+* oom_kill_disable (bool): Whether to disable OOM killer
* publish_all_ports (bool): Whether to publish all ports to the host
* links (dict or list of tuples): either as a dictionary mapping name to alias
or as a list of `(name, alias)` tuples
diff --git a/tests/unit/utils_test.py b/tests/unit/utils_test.py
index 93f95a1..3c9f6e2 100644
--- a/tests/unit/utils_test.py
+++ b/tests/unit/utils_test.py
@@ -13,7 +13,7 @@ import six
from docker.client import Client
from docker.constants import DEFAULT_DOCKER_API_VERSION
-from docker.errors import DockerException
+from docker.errors import DockerException, InvalidVersion
from docker.utils import (
parse_repository_tag, parse_host, convert_filters, kwargs_from_env,
create_host_config, Ulimit, LogConfig, parse_bytes, parse_env_file,
@@ -62,6 +62,13 @@ class HostConfigTest(base.BaseTestCase):
config = create_host_config(version='1.20', cpu_period=1999)
self.assertEqual(config.get('CpuPeriod'), 1999)
+ def test_create_host_config_with_oom_kill_disable(self):
+ config = create_host_config(version='1.20', oom_kill_disable=True)
+ self.assertEqual(config.get('OomKillDisable'), True)
+ self.assertRaises(
+ InvalidVersion, lambda: create_host_config(version='1.18.3',
+ oom_kill_disable=True))
+
class UlimitTest(base.BaseTestCase):
def test_create_host_config_dict_ulimit(self):