Browse Source

Implemented dns_opt

Signed-off-by: George Lester <[email protected]>
George Lester 9 years ago
parent
commit
c7b8278e78

+ 1 - 0
compose/config/config.py

@@ -61,6 +61,7 @@ DOCKER_CONFIG_KEYS = [
     'devices',
     'dns',
     'dns_search',
+    'dns_opt',
     'domainname',
     'entrypoint',
     'env_file',

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

@@ -81,6 +81,13 @@
         "devices": {"type": "array", "items": {"type": "string"}, "uniqueItems": true},
         "dns": {"$ref": "#/definitions/string_or_list"},
         "dns_search": {"$ref": "#/definitions/string_or_list"},
+		"dns_opt": {
+			"type": "array",
+			"items": {
+				"type": "string"
+			},
+			"uniqueItems": true
+		},
         "domainname": {"type": "string"},
         "entrypoint": {
           "oneOf": [

+ 2 - 1
compose/service.py

@@ -54,6 +54,7 @@ DOCKER_START_KEYS = [
     'devices',
     'dns',
     'dns_search',
+    'dns_opt',
     'env_file',
     'extra_hosts',
     'group_add',
@@ -755,7 +756,7 @@ class Service(object):
             network_mode=self.network_mode.mode,
             devices=options.get('devices'),
             dns=options.get('dns'),
-            dns_search=options.get('dns_search'),
+            dns_opt=options.get('dns_opt'),
             restart_policy=options.get('restart'),
             cap_add=options.get('cap_add'),
             cap_drop=options.get('cap_drop'),

+ 8 - 0
tests/integration/service_test.py

@@ -890,6 +890,14 @@ class ServiceTest(DockerClientTestCase):
         self.assertTrue("root" in host_container_groupadd)
         self.assertTrue("1" in host_container_groupadd)
 
+    def test_dns_opt_value(self):
+        service = self.create_service('web', dns_opt=["use-vc", "no-tld-query"])
+        container = create_and_start_container(service)
+
+        dns_opt = container.get('HostConfig.DNSOptions')
+        self.assertTrue("use-vc" in dns_opt)
+        self.assertTrue("no-tld-query" in dns_opt)
+
     def test_restart_on_failure_value(self):
         service = self.create_service('web', restart={
             'Name': 'on-failure',

+ 19 - 1
tests/unit/config/config_test.py

@@ -1411,7 +1411,6 @@ class ConfigTest(unittest.TestCase):
         ]
 
     def test_group_add_option(self):
-
         actual = config.load(build_config_details({
             'version': '2',
             'services': {
@@ -1430,6 +1429,25 @@ class ConfigTest(unittest.TestCase):
             }
         ]
 
+    def test_dns_opt_option(self):
+        actual = config.load(build_config_details({
+            'version': '2',
+            'services': {
+                'web': {
+                    'image': 'alpine',
+                    'dns_opt': ["use-vc", "no-tld-query"]
+                }
+            }
+        }))
+
+        assert actual.services == [
+            {
+                'name': 'web',
+                'image': 'alpine',
+                'dns_opt': ["use-vc", "no-tld-query"]
+            }
+        ]
+
     def test_isolation_option(self):
         actual = config.load(build_config_details({
             'version': V2_1,