Merge "Preserve preexisting ports on container delete"
This commit is contained in:
commit
f480a90e4e
@ -400,7 +400,8 @@ class ContainersController(base.Controller):
|
||||
network.get('router:external'),
|
||||
'shared': network.get('shared'),
|
||||
'v4-fixed-ip': '',
|
||||
'v6-fixed-ip': ''})
|
||||
'v6-fixed-ip': '',
|
||||
'preserve_on_delete': True})
|
||||
elif net.get('network'):
|
||||
network = neutron_api.get_neutron_network(net['network'])
|
||||
requested_networks.append({'network': network['id'],
|
||||
@ -411,7 +412,8 @@ class ContainersController(base.Controller):
|
||||
'v4-fixed-ip':
|
||||
net.get('v4-fixed-ip', ''),
|
||||
'v6-fixed-ip':
|
||||
net.get('v6-fixed-ip', '')})
|
||||
net.get('v6-fixed-ip', ''),
|
||||
'preserve_on_delete': False})
|
||||
|
||||
if not requested_networks:
|
||||
# Find an available neutron net and create docker network by
|
||||
@ -420,7 +422,8 @@ class ContainersController(base.Controller):
|
||||
requested_networks.append({'network': neutron_net['id'],
|
||||
'port': '',
|
||||
'v4-fixed-ip': '',
|
||||
'v6-fixed-ip': ''})
|
||||
'v6-fixed-ip': '',
|
||||
'preserve_on_delete': False})
|
||||
|
||||
self._check_external_network_attach(context, requested_networks)
|
||||
return requested_networks
|
||||
|
@ -192,6 +192,7 @@ class KuryrNetwork(network.Network):
|
||||
|
||||
ipv4_address = None
|
||||
ipv6_address = None
|
||||
preserve_on_delete = requested_network['preserve_on_delete']
|
||||
addresses = []
|
||||
for fixed_ip in neutron_port['fixed_ips']:
|
||||
ip_address = fixed_ip['ip_address']
|
||||
@ -201,14 +202,16 @@ class KuryrNetwork(network.Network):
|
||||
addresses.append({
|
||||
'addr': ip_address,
|
||||
'version': 4,
|
||||
'port': neutron_port['id']
|
||||
'port': neutron_port['id'],
|
||||
'preserve_on_delete': preserve_on_delete
|
||||
})
|
||||
else:
|
||||
ipv6_address = ip_address
|
||||
addresses.append({
|
||||
'addr': ip_address,
|
||||
'version': 6,
|
||||
'port': neutron_port['id']
|
||||
'port': neutron_port['id'],
|
||||
'preserve_on_delete': preserve_on_delete
|
||||
})
|
||||
|
||||
kwargs = {}
|
||||
@ -230,8 +233,9 @@ class KuryrNetwork(network.Network):
|
||||
if container.addresses and neutron_network_id:
|
||||
addrs_list = container.addresses.get(neutron_network_id, [])
|
||||
for addr in addrs_list:
|
||||
port_id = addr['port']
|
||||
neutron_ports.add(port_id)
|
||||
if not addr['preserve_on_delete']:
|
||||
port_id = addr['port']
|
||||
neutron_ports.add(port_id)
|
||||
|
||||
try:
|
||||
self.docker.disconnect_container_from_network(container_id,
|
||||
|
@ -646,6 +646,7 @@ class TestContainerController(api_base.FunctionalTest):
|
||||
self.assertEqual(fake_port['network_id'],
|
||||
requested_networks[0]['network'])
|
||||
self.assertEqual(fake_port['id'], requested_networks[0]['port'])
|
||||
self.assertTrue(requested_networks[0]['preserve_on_delete'])
|
||||
|
||||
def side_effect(*args, **kwargs):
|
||||
(ctx, cnt, force) = args
|
||||
|
@ -110,9 +110,9 @@ class KuryrNetowrkTestCase(base.TestCase):
|
||||
container = Container(self.context, **utils.get_test_container())
|
||||
network_name = 'c02afe4e-8350-4263-8078'
|
||||
kwargs = {'ip_version': 4, 'ipv4_address': '192.168.2.22',
|
||||
'port': '1234567'}
|
||||
'port': '1234567', 'preserve_on_delete': True}
|
||||
expected = [{'version': 4, 'addr': '192.168.2.22',
|
||||
'port': '1234567'}]
|
||||
'port': '1234567', 'preserve_on_delete': True}]
|
||||
address = self.network_api.connect_container_to_network(container,
|
||||
network_name,
|
||||
kwargs)
|
||||
|
Loading…
x
Reference in New Issue
Block a user