Browse Source

Merge pull request #4565 from shin-/onorua-pids-limit

Add pids_limit to service config
Joffrey F 8 years ago
parent
commit
b454268f93

+ 1 - 0
compose/config/config.py

@@ -88,6 +88,7 @@ DOCKER_CONFIG_KEYS = [
     'secrets',
     'security_opt',
     'shm_size',
+    'pids_limit',
     'stdin_open',
     'stop_signal',
     'sysctls',

+ 1 - 0
compose/config/config_schema_v2.1.json

@@ -223,6 +223,7 @@
         "security_opt": {"type": "array", "items": {"type": "string"}, "uniqueItems": true},
         "shm_size": {"type": ["number", "string"]},
         "sysctls": {"$ref": "#/definitions/list_or_dict"},
+        "pids_limit": {"type": ["number", "string"]},
         "stdin_open": {"type": "boolean"},
         "stop_grace_period": {"type": "string", "format": "duration"},
         "stop_signal": {"type": "string"},

+ 2 - 0
compose/service.py

@@ -67,6 +67,7 @@ DOCKER_START_KEYS = [
     'oom_score_adj',
     'mem_swappiness',
     'pid',
+    'pids_limit',
     'privileged',
     'restart',
     'security_opt',
@@ -774,6 +775,7 @@ class Service(object):
             cpu_quota=options.get('cpu_quota'),
             shm_size=options.get('shm_size'),
             sysctls=options.get('sysctls'),
+            pids_limit=options.get('pids_limit'),
             tmpfs=options.get('tmpfs'),
             oom_score_adj=options.get('oom_score_adj'),
             mem_swappiness=options.get('mem_swappiness'),

+ 8 - 0
tests/integration/service_test.py

@@ -115,6 +115,14 @@ class ServiceTest(DockerClientTestCase):
         service.start_container(container)
         self.assertEqual(container.get('HostConfig.ShmSize'), 67108864)
 
+    @pytest.mark.xfail(True, reason='Some kernels/configs do not support pids_limit')
+    def test_create_container_with_pids_limit(self):
+        self.require_api_version('1.23')
+        service = self.create_service('db', pids_limit=10)
+        container = service.create_container()
+        service.start_container(container)
+        assert container.get('HostConfig.PidsLimit') == 10
+
     def test_create_container_with_extra_hosts_list(self):
         extra_hosts = ['somehost:162.242.195.82', 'otherhost:50.31.209.229']
         service = self.create_service('db', extra_hosts=extra_hosts)