Only disconnect if we don't already have the short id alias.

Signed-off-by: Daniel Nephin <dnephin@docker.com>
This commit is contained in:
Daniel Nephin 2016-04-08 15:45:03 -04:00 committed by Joffrey F
parent 4e8b017283
commit 250a7a530b
1 changed files with 16 additions and 9 deletions

View File

@ -453,20 +453,21 @@ class Service(object):
connected_networks = container.get('NetworkSettings.Networks')
for network, netdefs in self.networks.items():
aliases = netdefs.get('aliases', [])
ipv4_address = netdefs.get('ipv4_address', None)
ipv6_address = netdefs.get('ipv6_address', None)
if network in connected_networks:
self.client.disconnect_container_from_network(
container.id, network)
if short_id_alias_exists(container, network):
continue
self.client.disconnect_container_from_network(
container.id,
network)
aliases = netdefs.get('aliases', [])
self.client.connect_container_to_network(
container.id, network,
aliases=list(self._get_aliases(container).union(aliases)),
ipv4_address=ipv4_address,
ipv6_address=ipv6_address,
links=self._get_links(False)
)
ipv4_address=netdefs.get('ipv4_address', None),
ipv6_address=netdefs.get('ipv6_address', None),
links=self._get_links(False))
def remove_duplicate_containers(self, timeout=DEFAULT_TIMEOUT):
for c in self.duplicate_containers():
@ -796,6 +797,12 @@ class Service(object):
log.error(six.text_type(e))
def short_id_alias_exists(container, network):
aliases = container.get(
'NetworkSettings.Networks.{net}.Aliases'.format(net=network)) or ()
return container.short_id in aliases
class NetworkMode(object):
"""A `standard` network mode (ex: host, bridge)"""