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