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:
Sergey Kraynev 2015-08-25 08:53:17 -04:00
parent 415846c699
commit f6e5841248
2 changed files with 38 additions and 46 deletions

View File

@ -23,27 +23,17 @@ class ServerNetworkMixin(object):
nics = []
for net_data in networks:
for net in networks:
nic_info = {}
net_identifier = (net_data.get(self.NETWORK_UUID) or
net_data.get(self.NETWORK_ID))
if net_identifier:
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]
nic_info['net-id'] = self._get_network_id(net)
if net.get(self.NETWORK_FIXED_IP):
ip = net[self.NETWORK_FIXED_IP]
if netutils.is_valid_ipv6(ip):
nic_info['v6-fixed-ip'] = ip
else:
nic_info['v4-fixed-ip'] = ip
if net_data.get(self.NETWORK_PORT):
nic_info['port-id'] = net_data[self.NETWORK_PORT]
if net.get(self.NETWORK_PORT):
nic_info['port-id'] = net[self.NETWORK_PORT]
nics.append(nic_info)
return nics
@ -61,16 +51,20 @@ class ServerNetworkMixin(object):
return not_updated_nets
def _get_network_id(self, net):
net_id = None
if net.get(self.NETWORK_ID):
# network and network_id properties can be used interchangeably
# 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():
net_id = self.client_plugin(
'neutron').resolve_network(
net,
self.NETWORK_ID, self.NETWORK_UUID)
net, self.NETWORK_ID, self.NETWORK_UUID)
else:
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
def update_networks_matching_iface_port(self, nets, interfaces):
@ -80,15 +74,13 @@ class ServerNetworkMixin(object):
if (net.get('port') == port or
(net.get('fixed_ip') == ip and
(self._get_network_id(net) == net_id or
net.get('uuid') == net_id))):
self._get_network_id(net) == net_id)):
return net
def find_poor_net(net_id, nets):
for net in nets:
if (not net.get('port') and not net.get('fixed_ip') and
(self._get_network_id(net) == net_id or
net.get('uuid') == net_id)):
self._get_network_id(net) == net_id):
return net
for iface in interfaces:
@ -141,6 +133,7 @@ class ServerNetworkMixin(object):
for net in old_nets:
if net.get(self.NETWORK_PORT):
remove_ports.append(net.get(self.NETWORK_PORT))
handler_kwargs = {'port_id': None, 'net_id': None, 'fip': None}
# if new_nets is None, we should attach first free port,
# according to similar behavior during instance creation
@ -149,14 +142,12 @@ class ServerNetworkMixin(object):
# attach section similar for both variants that
# were mentioned above
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):
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)

View File

@ -2195,12 +2195,13 @@ class ServersTest(common.HeatTestCase):
self.assertIsNone(server._build_nics([]))
self.assertIsNone(server._build_nics(None))
self.assertEqual([{'port-id': 'aaaabbbb'},
{'v4-fixed-ip': '192.0.2.0'}],
self.assertEqual([{'port-id': 'aaaabbbb', 'net-id': None},
{'v4-fixed-ip': '192.0.2.0', 'net-id': None}],
server._build_nics([{'port': 'aaaabbbb'},
{'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'},
{'fixed_ip': '2002::2'}]))
self.patchobject(neutron.NeutronClientPlugin, 'resolve_network',
@ -2828,6 +2829,10 @@ class ServersTest(common.HeatTestCase):
net_id = server._get_network_id(net)
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):
return_server = self.fc.servers.list()[3]
server = self._create_test_server(return_server, 'networks_update')
@ -2936,7 +2941,7 @@ class ServersTest(common.HeatTestCase):
return_server = self.fc.servers.list()[3]
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 = [
self.create_old_net(port='aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa'),
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(port='dddddddd-dddd-dddd-dddd-dddddddddddd'),
self.create_old_net(uuid='gggggggg-1111-1111-1111-gggggggggggg',
ip='5.6.7.8'),
self.create_old_net(uuid='0da8adbf-a7e2-4c59-a511-96b03d2da0d7')]
# new order 5 2 3 0 1 4
ip='5.6.7.8')]
# new order 2 3 0 1 4
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',
nets[2]['network'], '10.0.0.11'),
self.create_fake_iface(nets[3]['port'],
@ -2983,11 +2985,7 @@ class ServersTest(common.HeatTestCase):
{'port': 'eeeeeeee-eeee-eeee-eeee-eeeeeeeeeeee',
'uuid': 'gggggggg-1111-1111-1111-gggggggggggg',
'fixed_ip': '5.6.7.8',
'network': None},
{'port': 'ffffffff-ffff-ffff-ffff-ffffffffffff',
'network': None,
'fixed_ip': None,
'uuid': '0da8adbf-a7e2-4c59-a511-96b03d2da0d7'}]
'network': None}]
self.patchobject(neutron.NeutronClientPlugin, 'resolve_network',
return_value='gggggggg-1111-1111-1111-gggggggggggg')
@ -3096,6 +3094,9 @@ class ServersTest(common.HeatTestCase):
return_server.interface_detach(
'aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa').AndReturn(None)
self.patchobject(neutron.NeutronClientPlugin, 'resolve_network',
return_value=None)
self.m.StubOutWithMock(return_server, 'interface_attach')
return_server.interface_attach(
new_networks[0]['port'], None, None).AndReturn(None)