network: Rename '_get_phynet_info'

"phynets" are not a thing. We'll also be retrieving additional info here
in the future, but we can rename that again when we do this.

Part of blueprint numa-aware-vswitches

Change-Id: I3cf5bc81790b75a074fb9e108286632bf0aea4cd
This commit is contained in:
Stephen Finucane 2018-06-22 15:48:19 +01:00
parent c86691a86d
commit 2bb9e5563c
2 changed files with 45 additions and 36 deletions

View File

@ -1536,8 +1536,17 @@ class API(base_api.NetworkAPI):
raise exception.FixedIpNotFoundForSpecificInstance(
instance_uuid=instance.uuid, ip=address)
def _get_phynet_info(self, context, neutron, net_id):
phynet_name = None
def _get_physnet_info(self, context, neutron, net_id):
"""Retrieve detailed network info.
:param context: The request context.
:param neutron: The neutron client object.
:param net_id: The ID of the network to retrieve information for.
:return: Name of physical network as indicated by the
``provider:physical_network`` attribute of the network, else None
if that attribute is not defined.
"""
if self._has_multi_provider_extension(context, neutron=neutron):
network = neutron.show_network(net_id,
fields='segments').get('network')
@ -1552,9 +1561,10 @@ class API(base_api.NetworkAPI):
# TODO(vladikr): Additional work will be required to handle the
# case of multiple vlan segments associated with different
# physical networks.
phynet_name = net.get('provider:physical_network')
if phynet_name:
return phynet_name
physnet_name = net.get('provider:physical_network')
if physnet_name:
return physnet_name
# Raising here as at least one segment should
# have a physical network provided.
if segments:
@ -1562,10 +1572,9 @@ class API(base_api.NetworkAPI):
"physical_network") % net_id)
raise exception.NovaException(message=msg)
net = neutron.show_network(net_id,
fields='provider:physical_network').get('network')
phynet_name = net.get('provider:physical_network')
return phynet_name
net = neutron.show_network(
net_id, fields=['provider:physical_network']).get('network')
return net.get('provider:physical_network')
@staticmethod
def _get_trusted_mode_from_port(port):
@ -1581,7 +1590,7 @@ class API(base_api.NetworkAPI):
return strutils.bool_from_string(value)
def _get_port_vnic_info(self, context, neutron, port_id):
"""Retrieve port vnic info
"""Retrieve port vNIC info
:param context: The request context
:param neutron: The Neutron client
@ -1615,18 +1624,18 @@ class API(base_api.NetworkAPI):
neutron = get_client(context, admin=True)
for request_net in requested_networks:
phynet_name = None
physnet = None
trusted = None
vnic_type = network_model.VNIC_TYPE_NORMAL
if request_net.port_id:
vnic_type, trusted, network_id = self._get_port_vnic_info(
context, neutron, request_net.port_id)
phynet_name = self._get_phynet_info(
physnet = self._get_physnet_info(
context, neutron, network_id)
LOG.debug("Creating PCI device request for port_id=%s, "
"vnic_type=%s, phynet_name=%s, trusted=%s",
request_net.port_id, vnic_type, phynet_name,
request_net.port_id, vnic_type, physnet,
trusted)
pci_request_id = None
if vnic_type in network_model.VNIC_TYPES_SRIOV:
@ -1636,7 +1645,7 @@ class API(base_api.NetworkAPI):
# libvirt to expose the nic feature. At the moment
# there is a limitation that deployers cannot use both
# SR-IOV modes (legacy and ovs) in the same deployment.
spec = {pci_request.PCI_NET_TAG: phynet_name}
spec = {pci_request.PCI_NET_TAG: physnet}
dev_type = pci_request.DEVICE_TYPE_FOR_VNIC_TYPE.get(vnic_type)
if dev_type:
spec[pci_request.PCI_DEVICE_TYPE_TAG] = dev_type

View File

@ -2909,7 +2909,7 @@ class TestNeutronv2(TestNeutronv2Base):
'binding:vnic_type': model.VNIC_TYPE_DIRECT,
neutronapi.BINDING_PROFILE: {'pci_vendor_info': '1137:0047',
'pci_slot': '0000:0a:00.1',
'physical_network': 'phynet1'},
'physical_network': 'physnet1'},
'binding:vif_details': {model.VIF_DETAILS_PROFILEID: 'pfid'},
},
# admin_state_up=True and status='ACTIVE' thus vif.active=True
@ -2923,7 +2923,7 @@ class TestNeutronv2(TestNeutronv2Base):
'binding:vnic_type': model.VNIC_TYPE_MACVTAP,
neutronapi.BINDING_PROFILE: {'pci_vendor_info': '1137:0047',
'pci_slot': '0000:0a:00.2',
'physical_network': 'phynet1'},
'physical_network': 'physnet1'},
'binding:vif_details': {model.VIF_DETAILS_PROFILEID: 'pfid'},
},
# admin_state_up=True and status='ACTIVE' thus vif.active=True
@ -3123,11 +3123,11 @@ class TestNeutronv2(TestNeutronv2Base):
self.assertEqual(0, len(networks))
@mock.patch.object(neutronapi, 'get_client', return_value=mock.Mock())
def test_get_phynet_info_multi_segment(self, mock_get_client):
def test_get_physnet_info_multi_segment(self, mock_get_client):
api = neutronapi.API()
self.mox.ResetAll()
test_net = {'network': {'segments':
[{'provider:physical_network': 'phynet10',
[{'provider:physical_network': 'physnet10',
'provider:segmentation_id': 1000,
'provider:network_type': 'vlan'},
{'provider:physical_network': None,
@ -3140,19 +3140,19 @@ class TestNeutronv2(TestNeutronv2Base):
mock_client = mock_get_client()
mock_client.list_extensions.return_value = test_ext_list
mock_client.show_network.return_value = test_net
physnet_name = api._get_phynet_info(
physnet_name = api._get_physnet_info(
self.context, mock_client, 'test-net')
mock_client.show_network.assert_called_once_with(
'test-net', fields='segments')
self.assertEqual('phynet10', physnet_name)
self.assertEqual('physnet10', physnet_name)
@mock.patch.object(neutronapi, 'get_client', return_value=mock.Mock())
def test_get_phynset_info_vlan_with_multi_segment_ext(
def test_get_physnet_info_vlan_with_multi_segment_ext(
self, mock_get_client):
api = neutronapi.API()
self.mox.ResetAll()
test_net = {'network': {'provider:physical_network': 'phynet10',
test_net = {'network': {'provider:physical_network': 'physnet10',
'provider:segmentation_id': 1000,
'provider:network_type': 'vlan'}}
test_ext_list = {'extensions':
@ -3162,15 +3162,15 @@ class TestNeutronv2(TestNeutronv2Base):
mock_client = mock_get_client()
mock_client.list_extensions.return_value = test_ext_list
mock_client.show_network.return_value = test_net
physnet_name = api._get_phynet_info(
physnet_name = api._get_physnet_info(
self.context, mock_client, 'test-net')
mock_client.show_network.assert_called_with(
'test-net', fields='provider:physical_network')
self.assertEqual('phynet10', physnet_name)
'test-net', fields=['provider:physical_network'])
self.assertEqual('physnet10', physnet_name)
@mock.patch.object(neutronapi, 'get_client', return_value=mock.Mock())
def test_get_phynet_info_multi_segment_no_physnet(
def test_get_physnet_info_multi_segment_no_physnet(
self, mock_get_client):
api = neutronapi.API()
self.mox.ResetAll()
@ -3189,7 +3189,7 @@ class TestNeutronv2(TestNeutronv2Base):
mock_client.list_extensions.return_value = test_ext_list
mock_client.show_network.return_value = test_net
self.assertRaises(exception.NovaException,
api._get_phynet_info,
api._get_physnet_info,
self.context, mock_client, 'test-net')
def _test_get_port_vnic_info(self, mock_get_client,
@ -4693,13 +4693,13 @@ class TestNeutronv2WithMock(test.TestCase):
'id': uuids.port,
'binding:profile': {'pci_vendor_info': '1377:0047',
'pci_slot': '0000:0a:00.1',
'physical_network': 'phynet1',
'physical_network': 'physnet1',
'capabilities': ['switchdev']}
}
self.api._unbind_ports(self.context, ports, neutron, port_client)
port_req_body = {'port': {'binding:host_id': None,
'binding:profile':
{'physical_network': 'phynet1',
{'physical_network': 'physnet1',
'capabilities': ['switchdev']},
'device_id': '',
'device_owner': ''}
@ -4915,11 +4915,11 @@ class TestNeutronv2WithMock(test.TestCase):
self.context, pci_requests, requested_networks)
self.assertFalse(getclient.called)
@mock.patch.object(neutronapi.API, '_get_phynet_info')
@mock.patch.object(neutronapi.API, '_get_physnet_info')
@mock.patch.object(neutronapi.API, "_get_port_vnic_info")
@mock.patch.object(neutronapi, 'get_client')
def test_create_pci_requests_for_sriov_ports(self, getclient,
mock_get_port_vnic_info, mock_get_phynet_info):
mock_get_port_vnic_info, mock_get_physnet_info):
requested_networks = objects.NetworkRequestList(
objects = [
objects.NetworkRequest(port_id=uuids.portid_1),
@ -4938,7 +4938,7 @@ class TestNeutronv2WithMock(test.TestCase):
(model.VNIC_TYPE_DIRECT_PHYSICAL, None, 'netN'),
(model.VNIC_TYPE_DIRECT, True, 'netN'),
]
mock_get_phynet_info.side_effect = [
mock_get_physnet_info.side_effect = [
'physnet1', '', 'physnet1', 'physnet2', 'physnet3', 'physnet4',
]
api = neutronapi.API()
@ -5084,12 +5084,12 @@ class TestNeutronv2Portbinding(TestNeutronv2Base):
mydev = PciDevice(**pci_dev)
profile = {'pci_vendor_info': '1377:0047',
'pci_slot': '0000:0a:00.1',
'physical_network': 'phynet1',
'physical_network': 'physnet1',
}
mock_get_instance_pci_devs.return_value = [mydev]
devspec = mock.Mock()
devspec.get_tags.return_value = {'physical_network': 'phynet1'}
devspec.get_tags.return_value = {'physical_network': 'physnet1'}
mock_get_pci_device_devspec.return_value = devspec
api._populate_neutron_binding_profile(instance,
pci_req_id, port_req_body)
@ -5118,13 +5118,13 @@ class TestNeutronv2Portbinding(TestNeutronv2Base):
mydev = PciDevice(**pci_dev)
profile = {'pci_vendor_info': '1377:0047',
'pci_slot': '0000:0a:00.1',
'physical_network': 'phynet1',
'physical_network': 'physnet1',
'capabilities': ['switchdev'],
}
mock_get_instance_pci_devs.return_value = [mydev]
devspec = mock.Mock()
devspec.get_tags.return_value = {'physical_network': 'phynet1'}
devspec.get_tags.return_value = {'physical_network': 'physnet1'}
mock_get_pci_device_devspec.return_value = devspec
api._populate_neutron_binding_profile(instance,
pci_req_id, port_req_body)