Set networking_config when creating a container.

Signed-off-by: Daniel Nephin <dnephin@docker.com>
This commit is contained in:
Daniel Nephin 2016-04-11 13:22:37 -04:00
parent abb5ae7fe4
commit e1356e1f6f
1 changed files with 29 additions and 5 deletions

View File

@ -461,10 +461,9 @@ class Service(object):
container.id, container.id,
network) network)
aliases = netdefs.get('aliases', [])
self.client.connect_container_to_network( self.client.connect_container_to_network(
container.id, network, container.id, network,
aliases=list(self._get_aliases(container).union(aliases)), aliases=self._get_aliases(netdefs, container),
ipv4_address=netdefs.get('ipv4_address', None), ipv4_address=netdefs.get('ipv4_address', None),
ipv6_address=netdefs.get('ipv6_address', None), ipv6_address=netdefs.get('ipv6_address', None),
links=self._get_links(False)) links=self._get_links(False))
@ -534,11 +533,32 @@ class Service(object):
numbers = [c.number for c in containers] numbers = [c.number for c in containers]
return 1 if not numbers else max(numbers) + 1 return 1 if not numbers else max(numbers) + 1
def _get_aliases(self, container): def _get_aliases(self, network, container=None):
if container.labels.get(LABEL_ONE_OFF) == "True": if container and container.labels.get(LABEL_ONE_OFF) == "True":
return set() return set()
return {self.name, container.short_id} return list(
{self.name} |
({container.short_id} if container else set()) |
set(network.get('aliases', ()))
)
def build_default_networking_config(self):
if not self.networks:
return {}
network = self.networks[self.network_mode.id]
endpoint = {
'Aliases': self._get_aliases(network),
'IPAMConfig': {},
}
if network.get('ipv4_address'):
endpoint['IPAMConfig']['IPv4Address'] = network.get('ipv4_address')
if network.get('ipv6_address'):
endpoint['IPAMConfig']['IPv6Address'] = network.get('ipv6_address')
return {"EndpointsConfig": {self.network_mode.id: endpoint}}
def _get_links(self, link_to_self): def _get_links(self, link_to_self):
links = {} links = {}
@ -634,6 +654,10 @@ class Service(object):
override_options, override_options,
one_off=one_off) one_off=one_off)
networking_config = self.build_default_networking_config()
if networking_config:
container_options['networking_config'] = networking_config
container_options['environment'] = format_environment( container_options['environment'] = format_environment(
container_options['environment']) container_options['environment'])
return container_options return container_options