mirror of
https://github.com/docker/compose.git
synced 2025-07-23 13:45:00 +02:00
Fix when pyyaml has interpreted line as a dictionary
Added unit tests in build_extra_hosts + fix Signed-off-by: CJ <lim@chernjie.com>
This commit is contained in:
parent
fb81c37ca6
commit
8098b65576
@ -629,7 +629,17 @@ def build_extra_hosts(extra_hosts_config):
|
|||||||
if extra_hosts_config is None:
|
if extra_hosts_config is None:
|
||||||
return None
|
return None
|
||||||
|
|
||||||
if isinstance(extra_hosts_config, list):
|
if isinstance(extra_hosts_config, basestring):
|
||||||
return dict(r.split(':') for r in extra_hosts_config)
|
extra_hosts_config = [extra_hosts_config]
|
||||||
else:
|
|
||||||
return dict([extra_hosts_config.split(':')])
|
extra_hosts_dict = {}
|
||||||
|
for extra_hosts_line in extra_hosts_config:
|
||||||
|
if isinstance(extra_hosts_line, dict):
|
||||||
|
# already interpreted as a dict (depends on pyyaml version)
|
||||||
|
extra_hosts_dict.update(extra_hosts_line)
|
||||||
|
else:
|
||||||
|
# not already interpreted as a dict
|
||||||
|
host, ip = extra_hosts_line.split(':')
|
||||||
|
extra_hosts_dict.update({host.strip(): ip.strip()})
|
||||||
|
|
||||||
|
return extra_hosts_dict
|
||||||
|
@ -6,6 +6,7 @@ import mock
|
|||||||
|
|
||||||
from compose import Service
|
from compose import Service
|
||||||
from compose.service import CannotBeScaledError
|
from compose.service import CannotBeScaledError
|
||||||
|
from compose.service import build_extra_hosts
|
||||||
from compose.container import Container
|
from compose.container import Container
|
||||||
from docker.errors import APIError
|
from docker.errors import APIError
|
||||||
from .testcases import DockerClientTestCase
|
from .testcases import DockerClientTestCase
|
||||||
@ -107,6 +108,28 @@ class ServiceTest(DockerClientTestCase):
|
|||||||
service.start_container(container)
|
service.start_container(container)
|
||||||
self.assertEqual(container.inspect()['Config']['CpuShares'], 73)
|
self.assertEqual(container.inspect()['Config']['CpuShares'], 73)
|
||||||
|
|
||||||
|
def test_build_extra_hosts(self):
|
||||||
|
# string
|
||||||
|
self.assertEqual(build_extra_hosts("www.example.com: 192.168.0.17"),
|
||||||
|
{'www.example.com': '192.168.0.17'})
|
||||||
|
|
||||||
|
# list of strings
|
||||||
|
self.assertEqual(build_extra_hosts(
|
||||||
|
["www.example.com: 192.168.0.17"]),
|
||||||
|
{'www.example.com': '192.168.0.17'})
|
||||||
|
self.assertEqual(build_extra_hosts(
|
||||||
|
["www.example.com: 192.168.0.17",
|
||||||
|
"api.example.com: 192.168.0.18"]),
|
||||||
|
{'www.example.com': '192.168.0.17',
|
||||||
|
'api.example.com': '192.168.0.18'})
|
||||||
|
# list of dictionaries
|
||||||
|
self.assertEqual(build_extra_hosts(
|
||||||
|
[{'www.example.com': '192.168.0.17'},
|
||||||
|
{'api.example.com': '192.168.0.18'}
|
||||||
|
]),
|
||||||
|
{'www.example.com': '192.168.0.17',
|
||||||
|
'api.example.com': '192.168.0.18'})
|
||||||
|
|
||||||
def test_create_container_with_extra_hosts_list(self):
|
def test_create_container_with_extra_hosts_list(self):
|
||||||
extra_hosts = ['docker:162.242.195.82', 'fig:50.31.209.229']
|
extra_hosts = ['docker:162.242.195.82', 'fig:50.31.209.229']
|
||||||
service = self.create_service('db', extra_hosts=extra_hosts)
|
service = self.create_service('db', extra_hosts=extra_hosts)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user