Fix computation of port bindings. Port bindings configuration can be a list

if several host ports are bound to the same guest port.
reviewable/pr18780/r1
Ed Hein 10 years ago
parent 475aa78763
commit 558f2ace1f

@ -1041,15 +1041,14 @@ class DockerManager(object):
for container_port, config in self.port_bindings.iteritems(): for container_port, config in self.port_bindings.iteritems():
if isinstance(container_port, int): if isinstance(container_port, int):
container_port = "{0}/tcp".format(container_port) container_port = "{0}/tcp".format(container_port)
bind = {}
if len(config) == 1: if len(config) == 1:
bind['HostIp'] = "0.0.0.0" expected_bound_ports[container_port] = [{'HostIp': "0.0.0.0", 'HostPort': ""}]
bind['HostPort'] = "" elif isinstance(config[0], tuple):
expected_bound_ports[container_port] = []
for hostip, hostport in config:
expected_bound_ports[container_port].append({ 'HostIp': hostip, 'HostPort': str(hostport)})
else: else:
bind['HostIp'] = config[0] expected_bound_ports[container_port] = [{'HostIp': config[0], 'HostPort': str(config[1])}]
bind['HostPort'] = str(config[1])
expected_bound_ports[container_port] = [bind]
actual_bound_ports = container['HostConfig']['PortBindings'] or {} actual_bound_ports = container['HostConfig']['PortBindings'] or {}

Loading…
Cancel
Save