Allow overriding of config for the default network

Signed-off-by: Aanand Prasad <aanand.prasad@gmail.com>
This commit is contained in:
Aanand Prasad 2016-01-18 16:16:24 +00:00
parent 53d56ea245
commit e7673bf920
3 changed files with 42 additions and 15 deletions

View File

@ -58,23 +58,24 @@ class Project(object):
use_networking = (config_data.version and config_data.version >= 2)
project = cls(name, [], client, use_networking=use_networking)
custom_networks = []
if config_data.networks:
for network_name, data in config_data.networks.items():
custom_networks.append(
Network(
client=client, project=name, name=network_name,
driver=data.get('driver'),
driver_opts=data.get('driver_opts'),
external_name=data.get('external_name'),
)
)
network_config = config_data.networks or {}
custom_networks = [
Network(
client=client, project=name, name=network_name,
driver=data.get('driver'),
driver_opts=data.get('driver_opts'),
external_name=data.get('external_name'),
)
for network_name, data in network_config.items()
]
all_networks = custom_networks[:]
if 'default' not in network_config:
all_networks.append(project.default_network)
for service_dict in config_data.services:
if use_networking:
networks = get_networks(
service_dict,
custom_networks + [project.default_network])
networks = get_networks(service_dict, all_networks)
net = Net(networks[0]) if networks else Net("none")
links = []
else:
@ -96,7 +97,7 @@ class Project(object):
**service_dict))
project.networks += custom_networks
if project.uses_default_network():
if 'default' not in network_config and project.uses_default_network():
project.networks.append(project.default_network)
if config_data.volumes:

View File

@ -409,6 +409,7 @@ class CLITestCase(DockerClientTestCase):
networks = self.client.networks(names=[self.project.default_network.full_name])
self.assertEqual(len(networks), 1)
self.assertEqual(networks[0]['Driver'], 'bridge')
assert 'com.docker.network.bridge.enable_icc' not in networks[0]['Options']
network = self.client.inspect_network(networks[0]['Id'])
@ -425,6 +426,18 @@ class CLITestCase(DockerClientTestCase):
for service in services:
assert self.lookup(container, service.name)
@v2_only()
def test_up_with_default_network_config(self):
filename = 'default-network-config.yml'
self.base_dir = 'tests/fixtures/networks'
self._project = get_project(self.base_dir, [filename])
self.dispatch(['-f', filename, 'up', '-d'], None)
networks = self.client.networks(names=[self.project.default_network.full_name])
assert networks[0]['Options']['com.docker.network.bridge.enable_icc'] == 'false'
@v2_only()
def test_up_with_networks(self):
self.base_dir = 'tests/fixtures/networks'

View File

@ -0,0 +1,13 @@
version: 2
services:
simple:
image: busybox:latest
command: top
another:
image: busybox:latest
command: top
networks:
default:
driver: bridge
driver_opts:
"com.docker.network.bridge.enable_icc": "false"