Use _get_network_id in other methods of mixin class
Start using _get_network_id method to get net_id in other methods of mixin class. Interfaces have only "net_id" parameter instead of Heat's "network" and "network_id", so we should handle it in the same way. According validation both properties can no be used in the same time, so we may handle it interchangeably. Change-Id: Ic3cc28ea480783ff3479c3b16ba63bfc4fb02af8
This commit is contained in:
parent
415846c699
commit
f6e5841248
@ -23,27 +23,17 @@ class ServerNetworkMixin(object):
|
|||||||
|
|
||||||
nics = []
|
nics = []
|
||||||
|
|
||||||
for net_data in networks:
|
for net in networks:
|
||||||
nic_info = {}
|
nic_info = {}
|
||||||
net_identifier = (net_data.get(self.NETWORK_UUID) or
|
nic_info['net-id'] = self._get_network_id(net)
|
||||||
net_data.get(self.NETWORK_ID))
|
if net.get(self.NETWORK_FIXED_IP):
|
||||||
if net_identifier:
|
ip = net[self.NETWORK_FIXED_IP]
|
||||||
if self.is_using_neutron():
|
|
||||||
net_id = (self.client_plugin(
|
|
||||||
'neutron').resolve_network(
|
|
||||||
net_data, self.NETWORK_ID, self.NETWORK_UUID))
|
|
||||||
else:
|
|
||||||
net_id = (self.client_plugin(
|
|
||||||
'nova').get_nova_network_id(net_identifier))
|
|
||||||
nic_info['net-id'] = net_id
|
|
||||||
if net_data.get(self.NETWORK_FIXED_IP):
|
|
||||||
ip = net_data[self.NETWORK_FIXED_IP]
|
|
||||||
if netutils.is_valid_ipv6(ip):
|
if netutils.is_valid_ipv6(ip):
|
||||||
nic_info['v6-fixed-ip'] = ip
|
nic_info['v6-fixed-ip'] = ip
|
||||||
else:
|
else:
|
||||||
nic_info['v4-fixed-ip'] = ip
|
nic_info['v4-fixed-ip'] = ip
|
||||||
if net_data.get(self.NETWORK_PORT):
|
if net.get(self.NETWORK_PORT):
|
||||||
nic_info['port-id'] = net_data[self.NETWORK_PORT]
|
nic_info['port-id'] = net[self.NETWORK_PORT]
|
||||||
nics.append(nic_info)
|
nics.append(nic_info)
|
||||||
return nics
|
return nics
|
||||||
|
|
||||||
@ -61,16 +51,20 @@ class ServerNetworkMixin(object):
|
|||||||
return not_updated_nets
|
return not_updated_nets
|
||||||
|
|
||||||
def _get_network_id(self, net):
|
def _get_network_id(self, net):
|
||||||
net_id = None
|
# network and network_id properties can be used interchangeably
|
||||||
if net.get(self.NETWORK_ID):
|
# if move the same value from one properties to another, it should
|
||||||
|
# not change anything, i.e. it will be the same port/interface
|
||||||
|
net_id = (net.get(self.NETWORK_UUID) or
|
||||||
|
net.get(self.NETWORK_ID) or None)
|
||||||
|
|
||||||
|
if net_id:
|
||||||
if self.is_using_neutron():
|
if self.is_using_neutron():
|
||||||
net_id = self.client_plugin(
|
net_id = self.client_plugin(
|
||||||
'neutron').resolve_network(
|
'neutron').resolve_network(
|
||||||
net,
|
net, self.NETWORK_ID, self.NETWORK_UUID)
|
||||||
self.NETWORK_ID, self.NETWORK_UUID)
|
|
||||||
else:
|
else:
|
||||||
net_id = self.client_plugin(
|
net_id = self.client_plugin(
|
||||||
'nova').get_nova_network_id(net.get(self.NETWORK_ID))
|
'nova').get_nova_network_id(net_id)
|
||||||
return net_id
|
return net_id
|
||||||
|
|
||||||
def update_networks_matching_iface_port(self, nets, interfaces):
|
def update_networks_matching_iface_port(self, nets, interfaces):
|
||||||
@ -80,15 +74,13 @@ class ServerNetworkMixin(object):
|
|||||||
|
|
||||||
if (net.get('port') == port or
|
if (net.get('port') == port or
|
||||||
(net.get('fixed_ip') == ip and
|
(net.get('fixed_ip') == ip and
|
||||||
(self._get_network_id(net) == net_id or
|
self._get_network_id(net) == net_id)):
|
||||||
net.get('uuid') == net_id))):
|
|
||||||
return net
|
return net
|
||||||
|
|
||||||
def find_poor_net(net_id, nets):
|
def find_poor_net(net_id, nets):
|
||||||
for net in nets:
|
for net in nets:
|
||||||
if (not net.get('port') and not net.get('fixed_ip') and
|
if (not net.get('port') and not net.get('fixed_ip') and
|
||||||
(self._get_network_id(net) == net_id or
|
self._get_network_id(net) == net_id):
|
||||||
net.get('uuid') == net_id)):
|
|
||||||
return net
|
return net
|
||||||
|
|
||||||
for iface in interfaces:
|
for iface in interfaces:
|
||||||
@ -141,6 +133,7 @@ class ServerNetworkMixin(object):
|
|||||||
for net in old_nets:
|
for net in old_nets:
|
||||||
if net.get(self.NETWORK_PORT):
|
if net.get(self.NETWORK_PORT):
|
||||||
remove_ports.append(net.get(self.NETWORK_PORT))
|
remove_ports.append(net.get(self.NETWORK_PORT))
|
||||||
|
|
||||||
handler_kwargs = {'port_id': None, 'net_id': None, 'fip': None}
|
handler_kwargs = {'port_id': None, 'net_id': None, 'fip': None}
|
||||||
# if new_nets is None, we should attach first free port,
|
# if new_nets is None, we should attach first free port,
|
||||||
# according to similar behavior during instance creation
|
# according to similar behavior during instance creation
|
||||||
@ -149,14 +142,12 @@ class ServerNetworkMixin(object):
|
|||||||
# attach section similar for both variants that
|
# attach section similar for both variants that
|
||||||
# were mentioned above
|
# were mentioned above
|
||||||
for net in new_nets:
|
for net in new_nets:
|
||||||
|
handler_kwargs = {'port_id': None, 'net_id': None, 'fip': None}
|
||||||
|
handler_kwargs['net_id'] = self._get_network_id(net)
|
||||||
|
if handler_kwargs['net_id']:
|
||||||
|
handler_kwargs['fip'] = net.get('fixed_ip')
|
||||||
if net.get(self.NETWORK_PORT):
|
if net.get(self.NETWORK_PORT):
|
||||||
handler_kwargs['port_id'] = net.get(self.NETWORK_PORT)
|
handler_kwargs['port_id'] = net.get(self.NETWORK_PORT)
|
||||||
elif net.get(self.NETWORK_ID):
|
|
||||||
handler_kwargs['net_id'] = self._get_network_id(net)
|
|
||||||
handler_kwargs['fip'] = net.get('fixed_ip')
|
|
||||||
elif net.get(self.NETWORK_UUID):
|
|
||||||
handler_kwargs['net_id'] = net['uuid']
|
|
||||||
handler_kwargs['fip'] = net.get('fixed_ip')
|
|
||||||
|
|
||||||
add_nets.append(handler_kwargs)
|
add_nets.append(handler_kwargs)
|
||||||
|
|
||||||
|
@ -2195,12 +2195,13 @@ class ServersTest(common.HeatTestCase):
|
|||||||
|
|
||||||
self.assertIsNone(server._build_nics([]))
|
self.assertIsNone(server._build_nics([]))
|
||||||
self.assertIsNone(server._build_nics(None))
|
self.assertIsNone(server._build_nics(None))
|
||||||
self.assertEqual([{'port-id': 'aaaabbbb'},
|
self.assertEqual([{'port-id': 'aaaabbbb', 'net-id': None},
|
||||||
{'v4-fixed-ip': '192.0.2.0'}],
|
{'v4-fixed-ip': '192.0.2.0', 'net-id': None}],
|
||||||
server._build_nics([{'port': 'aaaabbbb'},
|
server._build_nics([{'port': 'aaaabbbb'},
|
||||||
{'fixed_ip': '192.0.2.0'}]))
|
{'fixed_ip': '192.0.2.0'}]))
|
||||||
self.assertEqual([{'port-id': 'aaaabbbb'},
|
|
||||||
{'v6-fixed-ip': '2002::2'}],
|
self.assertEqual([{'port-id': 'aaaabbbb', 'net-id': None},
|
||||||
|
{'v6-fixed-ip': '2002::2', 'net-id': None}],
|
||||||
server._build_nics([{'port': 'aaaabbbb'},
|
server._build_nics([{'port': 'aaaabbbb'},
|
||||||
{'fixed_ip': '2002::2'}]))
|
{'fixed_ip': '2002::2'}]))
|
||||||
self.patchobject(neutron.NeutronClientPlugin, 'resolve_network',
|
self.patchobject(neutron.NeutronClientPlugin, 'resolve_network',
|
||||||
@ -2828,6 +2829,10 @@ class ServersTest(common.HeatTestCase):
|
|||||||
net_id = server._get_network_id(net)
|
net_id = server._get_network_id(net)
|
||||||
self.assertEqual('f3ef5d2f-d7ba-4b27-af66-58ca0b81e032', net_id)
|
self.assertEqual('f3ef5d2f-d7ba-4b27-af66-58ca0b81e032', net_id)
|
||||||
|
|
||||||
|
net = {'network': '', 'fixed_ip': '1.2.3.4'}
|
||||||
|
net_id = server._get_network_id(net)
|
||||||
|
self.assertEqual(None, net_id)
|
||||||
|
|
||||||
def test_get_network_id_nova(self):
|
def test_get_network_id_nova(self):
|
||||||
return_server = self.fc.servers.list()[3]
|
return_server = self.fc.servers.list()[3]
|
||||||
server = self._create_test_server(return_server, 'networks_update')
|
server = self._create_test_server(return_server, 'networks_update')
|
||||||
@ -2936,7 +2941,7 @@ class ServersTest(common.HeatTestCase):
|
|||||||
return_server = self.fc.servers.list()[3]
|
return_server = self.fc.servers.list()[3]
|
||||||
server = self._create_test_server(return_server, 'networks_update')
|
server = self._create_test_server(return_server, 'networks_update')
|
||||||
|
|
||||||
# old order 0 1 2 3 4 5
|
# old order 0 1 2 3 4
|
||||||
nets = [
|
nets = [
|
||||||
self.create_old_net(port='aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa'),
|
self.create_old_net(port='aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa'),
|
||||||
self.create_old_net(net='gggggggg-1111-1111-1111-gggggggggggg',
|
self.create_old_net(net='gggggggg-1111-1111-1111-gggggggggggg',
|
||||||
@ -2944,12 +2949,9 @@ class ServersTest(common.HeatTestCase):
|
|||||||
self.create_old_net(net='gggggggg-1111-1111-1111-gggggggggggg'),
|
self.create_old_net(net='gggggggg-1111-1111-1111-gggggggggggg'),
|
||||||
self.create_old_net(port='dddddddd-dddd-dddd-dddd-dddddddddddd'),
|
self.create_old_net(port='dddddddd-dddd-dddd-dddd-dddddddddddd'),
|
||||||
self.create_old_net(uuid='gggggggg-1111-1111-1111-gggggggggggg',
|
self.create_old_net(uuid='gggggggg-1111-1111-1111-gggggggggggg',
|
||||||
ip='5.6.7.8'),
|
ip='5.6.7.8')]
|
||||||
self.create_old_net(uuid='0da8adbf-a7e2-4c59-a511-96b03d2da0d7')]
|
# new order 2 3 0 1 4
|
||||||
# new order 5 2 3 0 1 4
|
|
||||||
interfaces = [
|
interfaces = [
|
||||||
self.create_fake_iface('ffffffff-ffff-ffff-ffff-ffffffffffff',
|
|
||||||
nets[5]['uuid'], '10.0.0.10'),
|
|
||||||
self.create_fake_iface('cccccccc-cccc-cccc-cccc-cccccccccccc',
|
self.create_fake_iface('cccccccc-cccc-cccc-cccc-cccccccccccc',
|
||||||
nets[2]['network'], '10.0.0.11'),
|
nets[2]['network'], '10.0.0.11'),
|
||||||
self.create_fake_iface(nets[3]['port'],
|
self.create_fake_iface(nets[3]['port'],
|
||||||
@ -2983,11 +2985,7 @@ class ServersTest(common.HeatTestCase):
|
|||||||
{'port': 'eeeeeeee-eeee-eeee-eeee-eeeeeeeeeeee',
|
{'port': 'eeeeeeee-eeee-eeee-eeee-eeeeeeeeeeee',
|
||||||
'uuid': 'gggggggg-1111-1111-1111-gggggggggggg',
|
'uuid': 'gggggggg-1111-1111-1111-gggggggggggg',
|
||||||
'fixed_ip': '5.6.7.8',
|
'fixed_ip': '5.6.7.8',
|
||||||
'network': None},
|
'network': None}]
|
||||||
{'port': 'ffffffff-ffff-ffff-ffff-ffffffffffff',
|
|
||||||
'network': None,
|
|
||||||
'fixed_ip': None,
|
|
||||||
'uuid': '0da8adbf-a7e2-4c59-a511-96b03d2da0d7'}]
|
|
||||||
|
|
||||||
self.patchobject(neutron.NeutronClientPlugin, 'resolve_network',
|
self.patchobject(neutron.NeutronClientPlugin, 'resolve_network',
|
||||||
return_value='gggggggg-1111-1111-1111-gggggggggggg')
|
return_value='gggggggg-1111-1111-1111-gggggggggggg')
|
||||||
@ -3096,6 +3094,9 @@ class ServersTest(common.HeatTestCase):
|
|||||||
return_server.interface_detach(
|
return_server.interface_detach(
|
||||||
'aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa').AndReturn(None)
|
'aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa').AndReturn(None)
|
||||||
|
|
||||||
|
self.patchobject(neutron.NeutronClientPlugin, 'resolve_network',
|
||||||
|
return_value=None)
|
||||||
|
|
||||||
self.m.StubOutWithMock(return_server, 'interface_attach')
|
self.m.StubOutWithMock(return_server, 'interface_attach')
|
||||||
return_server.interface_attach(
|
return_server.interface_attach(
|
||||||
new_networks[0]['port'], None, None).AndReturn(None)
|
new_networks[0]['port'], None, None).AndReturn(None)
|
||||||
|
Loading…
Reference in New Issue
Block a user