Adding pci address in SRIOV config
This change is to store pci address in SRIOV config. In Nova PCI passthrough whitelist automation, Planning to use SRIOV config to find the already used pci addresses. Change-Id: Ifecc341ce652c638f06b540df4bf17aa6674db02
This commit is contained in:
parent
08445fabbd
commit
83ab4a196f
|
@ -639,7 +639,8 @@ class OvsBridge(_BaseOpts):
|
|||
vlan_id=iface.vlan_id, qos=iface.qos,
|
||||
spoofcheck=iface.spoofcheck,
|
||||
trust=iface.trust, state=iface.state,
|
||||
macaddr=iface.macaddr, promisc=iface.promisc)
|
||||
macaddr=iface.macaddr, promisc=iface.promisc,
|
||||
pci_address=iface.pci_address)
|
||||
|
||||
@staticmethod
|
||||
def from_json(json):
|
||||
|
@ -1005,7 +1006,8 @@ class LinuxBond(_BaseOpts):
|
|||
vlan_id=iface.vlan_id, qos=iface.qos,
|
||||
spoofcheck=iface.spoofcheck,
|
||||
trust=iface.trust, state=iface.state,
|
||||
macaddr=iface.macaddr, promisc=iface.promisc)
|
||||
macaddr=iface.macaddr, promisc=iface.promisc,
|
||||
pci_address=iface.pci_address)
|
||||
|
||||
@staticmethod
|
||||
def from_json(json):
|
||||
|
@ -1264,7 +1266,8 @@ class OvsDpdkPort(_BaseOpts):
|
|||
vlan_id=iface.vlan_id, qos=iface.qos,
|
||||
spoofcheck=iface.spoofcheck,
|
||||
trust=iface.trust, state=iface.state,
|
||||
macaddr=iface.macaddr, promisc=iface.promisc)
|
||||
macaddr=iface.macaddr, promisc=iface.promisc,
|
||||
pci_address=iface.pci_address)
|
||||
|
||||
@staticmethod
|
||||
def from_json(json):
|
||||
|
@ -1362,8 +1365,12 @@ class SriovVF(_BaseOpts):
|
|||
self.spoofcheck = spoofcheck
|
||||
self.trust = trust
|
||||
self.state = state
|
||||
pci_address = utils.get_pci_address(name, False)
|
||||
if pci_address is None:
|
||||
pci_address = utils.get_stored_pci_address(name, False)
|
||||
self.macaddr = macaddr
|
||||
self.promisc = promisc
|
||||
self.pci_address = pci_address
|
||||
utils.update_sriov_vf_map(device, self.vfid, name,
|
||||
vlan_id=self.vlan_id,
|
||||
qos=self.qos,
|
||||
|
@ -1371,7 +1378,8 @@ class SriovVF(_BaseOpts):
|
|||
trust=trust,
|
||||
state=state,
|
||||
macaddr=macaddr,
|
||||
promisc=promisc)
|
||||
promisc=promisc,
|
||||
pci_address=pci_address)
|
||||
|
||||
@staticmethod
|
||||
def get_on_off(config):
|
||||
|
|
|
@ -212,11 +212,16 @@ class TestCli(base.TestCase):
|
|||
def test_get_vf_devname(device, vfid):
|
||||
return device + '_' + str(vfid)
|
||||
|
||||
def test_get_pci_address(ifname, noop):
|
||||
return '0000:79:10.2'
|
||||
|
||||
def test_interface_mac(name):
|
||||
return 'AA:BB:CC:DD:EE:FF'
|
||||
|
||||
self.stub_out('os_net_config.utils.get_vf_devname',
|
||||
test_get_vf_devname)
|
||||
self.stub_out('os_net_config.utils.get_pci_address',
|
||||
test_get_pci_address)
|
||||
self.stub_out('os_net_config.utils.interface_mac',
|
||||
test_interface_mac)
|
||||
ivs_yaml = os.path.join(SAMPLE_BASE, 'sriov_pf.yaml')
|
||||
|
@ -248,8 +253,14 @@ class TestCli(base.TestCase):
|
|||
def test_sriov_vf_with_dpdk_noop_output(self):
|
||||
def test_get_vf_devname(device, vfid):
|
||||
return device + '_' + str(vfid)
|
||||
|
||||
def test_get_pci_address(ifname, noop):
|
||||
return '0000:79:10.2'
|
||||
|
||||
self.stub_out('os_net_config.utils.get_vf_devname',
|
||||
test_get_vf_devname)
|
||||
self.stub_out('os_net_config.utils.get_pci_address',
|
||||
test_get_pci_address)
|
||||
ivs_yaml = os.path.join(SAMPLE_BASE, 'sriov_pf_ovs_dpdk.yaml')
|
||||
ivs_json = os.path.join(SAMPLE_BASE, 'sriov_pf_ovs_dpdk.json')
|
||||
stdout_yaml, stderr = self.run_cli('ARG0 --provider=ifcfg --noop '
|
||||
|
|
|
@ -1259,7 +1259,8 @@ DOMAIN=openstack.local
|
|||
|
||||
def test_update_sriov_vf_map(pf_name, vfid, vf_name, vlan_id=None,
|
||||
qos=None, spoofcheck=None, trust=None,
|
||||
state=None, macaddr=None, promisc=None):
|
||||
state=None, macaddr=None, promisc=None,
|
||||
pci_address=None):
|
||||
self.assertEqual(pf_name, 'eth2')
|
||||
self.assertEqual(vfid, 7)
|
||||
self.assertEqual(vlan_id, 0)
|
||||
|
@ -1268,14 +1269,22 @@ DOMAIN=openstack.local
|
|||
self.assertEqual(trust, None)
|
||||
self.assertEqual(state, None)
|
||||
self.assertEqual(macaddr, None)
|
||||
self.assertEqual(pci_address, '0000:79:10.2')
|
||||
self.stub_out('os_net_config.utils.update_sriov_vf_map',
|
||||
test_update_sriov_vf_map)
|
||||
|
||||
def test_get_vf_devname(device, vfid):
|
||||
return device + '_' + str(vfid)
|
||||
|
||||
def test_get_pci_address(ifname, noop):
|
||||
return '0000:79:10.2'
|
||||
|
||||
self.stub_out('os_net_config.utils.get_vf_devname',
|
||||
test_get_vf_devname)
|
||||
|
||||
self.stub_out('os_net_config.utils.get_pci_address',
|
||||
test_get_pci_address)
|
||||
|
||||
vf = objects.SriovVF(device='nic3', vfid=7, addresses=addresses)
|
||||
self.provider.add_sriov_vf(vf)
|
||||
vf_config = """# This file is autogenerated by os-net-config
|
||||
|
@ -1297,7 +1306,8 @@ NETMASK=255.255.255.0
|
|||
|
||||
def test_update_sriov_vf_map(pf_name, vfid, vf_name, vlan_id=None,
|
||||
qos=None, spoofcheck=None, trust=None,
|
||||
state=None, macaddr=None, promisc=None):
|
||||
state=None, macaddr=None, promisc=None,
|
||||
pci_address=None):
|
||||
self.assertEqual(pf_name, 'eth2')
|
||||
self.assertEqual(vf_name, 'eth2_7')
|
||||
self.assertEqual(vfid, 7)
|
||||
|
@ -1308,15 +1318,22 @@ NETMASK=255.255.255.0
|
|||
self.assertEqual(state, "auto")
|
||||
self.assertEqual(macaddr, "AA:BB:CC:DD:EE:FF")
|
||||
self.assertTrue(promisc)
|
||||
self.assertEqual(pci_address, '0000:80:10.1')
|
||||
self.stub_out('os_net_config.utils.update_sriov_vf_map',
|
||||
test_update_sriov_vf_map)
|
||||
|
||||
def test_get_vf_devname(device, vfid):
|
||||
return device + '_' + str(vfid)
|
||||
|
||||
def test_get_pci_address(ifname, noop):
|
||||
return '0000:80:10.1'
|
||||
|
||||
self.stub_out('os_net_config.utils.get_vf_devname',
|
||||
test_get_vf_devname)
|
||||
|
||||
self.stub_out('os_net_config.utils.get_pci_address',
|
||||
test_get_pci_address)
|
||||
|
||||
vf = objects.SriovVF(device='nic3', vfid=7, addresses=addresses,
|
||||
vlan_id='100', qos='10', spoofcheck=True,
|
||||
trust=True, state="auto",
|
||||
|
@ -1342,7 +1359,8 @@ NETMASK=255.255.255.0
|
|||
|
||||
def test_update_sriov_vf_map(pf_name, vfid, vf_name, vlan_id=None,
|
||||
qos=None, spoofcheck=None, trust=None,
|
||||
state=None, macaddr=None, promisc=None):
|
||||
state=None, macaddr=None, promisc=None,
|
||||
pci_address=None):
|
||||
self.assertEqual(pf_name, 'eth2')
|
||||
self.assertEqual(vf_name, 'eth2_7')
|
||||
self.assertEqual(vfid, 7)
|
||||
|
@ -1353,15 +1371,22 @@ NETMASK=255.255.255.0
|
|||
self.assertEqual(state, "enable")
|
||||
self.assertEqual(macaddr, "AA:BB:CC:DD:EE:FF")
|
||||
self.assertFalse(promisc)
|
||||
self.assertEqual(pci_address, '0000:82:00.2')
|
||||
self.stub_out('os_net_config.utils.update_sriov_vf_map',
|
||||
test_update_sriov_vf_map)
|
||||
|
||||
def test_get_vf_devname(device, vfid):
|
||||
return device + '_' + str(vfid)
|
||||
|
||||
def test_get_pci_address(ifname, noop):
|
||||
return '0000:82:00.2'
|
||||
|
||||
self.stub_out('os_net_config.utils.get_vf_devname',
|
||||
test_get_vf_devname)
|
||||
|
||||
self.stub_out('os_net_config.utils.get_pci_address',
|
||||
test_get_pci_address)
|
||||
|
||||
vf = objects.SriovVF(device='nic3', vfid=7, addresses=addresses,
|
||||
vlan_id='100', qos='10', spoofcheck=False,
|
||||
trust=False, state="enable",
|
||||
|
|
|
@ -436,12 +436,18 @@ class TestBridge(base.TestCase):
|
|||
'device': {'name': 'em1', 'vfid': 1},
|
||||
'vlan_id': 111, 'qos': 1,
|
||||
'spoofcheck': 'off', 'trust': 'on',
|
||||
'promisc': 'on'}]
|
||||
'promisc': 'on', 'pci_address': '0000:79:10.2'}]
|
||||
|
||||
def test_get_vf_devname(device, vfid):
|
||||
return device + '_' + str(vfid)
|
||||
|
||||
def test_get_pci_address(ifname, noop):
|
||||
return '0000:79:10.2'
|
||||
|
||||
self.stub_out('os_net_config.utils.get_vf_devname',
|
||||
test_get_vf_devname)
|
||||
self.stub_out('os_net_config.utils.get_pci_address',
|
||||
test_get_pci_address)
|
||||
|
||||
bridge = objects.object_from_json(json.loads(data))
|
||||
self.assertEqual("br-foo", bridge.name)
|
||||
|
@ -495,8 +501,14 @@ class TestBridge(base.TestCase):
|
|||
|
||||
def test_get_vf_devname(device, vfid):
|
||||
return device + '_' + str(vfid)
|
||||
|
||||
def test_get_pci_address(ifname, noop):
|
||||
return '0000:79:10.2'
|
||||
|
||||
self.stub_out('os_net_config.utils.get_vf_devname',
|
||||
test_get_vf_devname)
|
||||
self.stub_out('os_net_config.utils.get_pci_address',
|
||||
test_get_pci_address)
|
||||
|
||||
bridge = objects.object_from_json(json.loads(data))
|
||||
self.assertEqual("br-foo", bridge.name)
|
||||
|
@ -558,8 +570,14 @@ class TestBridge(base.TestCase):
|
|||
|
||||
def test_get_vf_devname(device, vfid):
|
||||
return device + '_' + str(vfid)
|
||||
|
||||
def test_get_pci_address(ifname, noop):
|
||||
return '0000:79:10.2'
|
||||
|
||||
self.stub_out('os_net_config.utils.get_vf_devname',
|
||||
test_get_vf_devname)
|
||||
self.stub_out('os_net_config.utils.get_pci_address',
|
||||
test_get_pci_address)
|
||||
|
||||
objects.object_from_json(json.loads(data))
|
||||
|
||||
|
@ -587,14 +605,20 @@ class TestBridge(base.TestCase):
|
|||
vf_final = [{'device_type': 'vf', 'name': 'em1_1',
|
||||
'device': {'name': 'em1', 'vfid': 1},
|
||||
'vlan_id': 111, 'qos': 1,
|
||||
'pci_address': '0000:79:10.2',
|
||||
'spoofcheck': 'off', 'trust': 'off',
|
||||
'promisc': 'off'}]
|
||||
|
||||
def test_get_vf_devname(device, vfid):
|
||||
return device + '_' + str(vfid)
|
||||
|
||||
def test_get_pci_address(ifname, noop):
|
||||
return '0000:79:10.2'
|
||||
|
||||
self.stub_out('os_net_config.utils.get_vf_devname',
|
||||
test_get_vf_devname)
|
||||
|
||||
self.stub_out('os_net_config.utils.get_pci_address',
|
||||
test_get_pci_address)
|
||||
bridge = objects.object_from_json(json.loads(data))
|
||||
self.assertEqual("br-foo", bridge.name)
|
||||
self.assertTrue(bridge.use_dhcp)
|
||||
|
@ -630,13 +654,20 @@ class TestBridge(base.TestCase):
|
|||
vf_final = [{'device_type': 'vf', 'name': 'em1_1',
|
||||
'device': {'name': 'em1', 'vfid': 1},
|
||||
'vlan_id': 111, 'qos': 1,
|
||||
'spoofcheck': 'off', 'trust': 'on'
|
||||
'spoofcheck': 'off', 'trust': 'on',
|
||||
'pci_address': '0000:79:10.2'
|
||||
}]
|
||||
|
||||
def test_get_vf_devname(device, vfid):
|
||||
return device + '_' + str(vfid)
|
||||
|
||||
def test_get_pci_address(ifname, noop):
|
||||
return '0000:79:10.2'
|
||||
|
||||
self.stub_out('os_net_config.utils.get_vf_devname',
|
||||
test_get_vf_devname)
|
||||
self.stub_out('os_net_config.utils.get_pci_address',
|
||||
test_get_pci_address)
|
||||
|
||||
bridge = objects.object_from_json(json.loads(data))
|
||||
self.assertEqual("br-foo", bridge.name)
|
||||
|
@ -676,13 +707,20 @@ class TestBridge(base.TestCase):
|
|||
vf_final = [{'device_type': 'vf', 'name': 'em1_1',
|
||||
'device': {'name': 'em1', 'vfid': 1},
|
||||
'vlan_id': 111, 'qos': 1,
|
||||
'spoofcheck': 'off', 'trust': 'off'
|
||||
'spoofcheck': 'off', 'trust': 'off',
|
||||
'pci_address': '0000:79:10.2'
|
||||
}]
|
||||
|
||||
def test_get_vf_devname(device, vfid):
|
||||
return device + '_' + str(vfid)
|
||||
|
||||
def test_get_pci_address(ifname, noop):
|
||||
return '0000:79:10.2'
|
||||
|
||||
self.stub_out('os_net_config.utils.get_vf_devname',
|
||||
test_get_vf_devname)
|
||||
self.stub_out('os_net_config.utils.get_pci_address',
|
||||
test_get_pci_address)
|
||||
|
||||
bridge = objects.object_from_json(json.loads(data))
|
||||
self.assertEqual("br-foo", bridge.name)
|
||||
|
@ -1177,18 +1215,29 @@ class TestLinuxBond(base.TestCase):
|
|||
vf_final = [{'device_type': 'vf', 'name': 'em1_1',
|
||||
'device': {'name': 'em1', 'vfid': 1},
|
||||
'vlan_id': 111, 'qos': 1,
|
||||
'pci_address': '0000:79:10.1',
|
||||
'spoofcheck': 'on', 'trust': 'on',
|
||||
'promisc': 'off'},
|
||||
{'device_type': 'vf', 'name': 'em2_1',
|
||||
'device': {'name': 'em2', 'vfid': 1},
|
||||
'vlan_id': 111, 'qos': 1,
|
||||
'pci_address': '0000:79:10.2',
|
||||
'spoofcheck': 'on', 'trust': 'on',
|
||||
'promisc': 'off'}]
|
||||
|
||||
def test_get_vf_devname(device, vfid):
|
||||
return device + '_' + str(vfid)
|
||||
|
||||
def test_get_pci_address(ifname, noop):
|
||||
if ifname == 'em1_1':
|
||||
return '0000:79:10.1'
|
||||
elif ifname == 'em2_1':
|
||||
return '0000:79:10.2'
|
||||
|
||||
self.stub_out('os_net_config.utils.get_vf_devname',
|
||||
test_get_vf_devname)
|
||||
self.stub_out('os_net_config.utils.get_pci_address',
|
||||
test_get_pci_address)
|
||||
|
||||
bond = objects.object_from_json(json.loads(data))
|
||||
self.assertEqual("bond1", bond.name)
|
||||
|
@ -1233,18 +1282,29 @@ class TestLinuxBond(base.TestCase):
|
|||
vf_final = [{'device_type': 'vf', 'name': 'em1_1',
|
||||
'device': {'name': 'em1', 'vfid': 1},
|
||||
'vlan_id': 111, 'qos': 1,
|
||||
'pci_address': '0000:79:10.1',
|
||||
'spoofcheck': 'off', 'trust': 'off',
|
||||
'promisc': 'off'},
|
||||
{'device_type': 'vf', 'name': 'em2_1',
|
||||
'device': {'name': 'em2', 'vfid': 1},
|
||||
'vlan_id': 111, 'qos': 1,
|
||||
'pci_address': '0000:79:10.2',
|
||||
'spoofcheck': 'off', 'trust': 'off',
|
||||
'promisc': 'off'}]
|
||||
|
||||
def test_get_vf_devname(device, vfid):
|
||||
return device + '_' + str(vfid)
|
||||
|
||||
def test_get_pci_address(ifname, noop):
|
||||
if ifname == 'em1_1':
|
||||
return '0000:79:10.1'
|
||||
elif ifname == 'em2_1':
|
||||
return '0000:79:10.2'
|
||||
|
||||
self.stub_out('os_net_config.utils.get_vf_devname',
|
||||
test_get_vf_devname)
|
||||
self.stub_out('os_net_config.utils.get_pci_address',
|
||||
test_get_pci_address)
|
||||
|
||||
objects.object_from_json(json.loads(data))
|
||||
contents = utils.get_file_data(sriov_config._SRIOV_CONFIG_FILE)
|
||||
|
@ -1787,8 +1847,14 @@ class TestSriovVF(base.TestCase):
|
|||
def test_from_json_vfid(self):
|
||||
def test_get_vf_devname(device, vfid):
|
||||
return device + '_' + str(vfid)
|
||||
|
||||
def test_get_pci_address(ifname, noop):
|
||||
return '0000:79:10.2'
|
||||
|
||||
self.stub_out('os_net_config.utils.get_vf_devname',
|
||||
test_get_vf_devname)
|
||||
self.stub_out('os_net_config.utils.get_pci_address',
|
||||
test_get_pci_address)
|
||||
data = '{"type": "sriov_vf", "device": "em1", "vfid": 16,' \
|
||||
'"use_dhcp": false}'
|
||||
vf = objects.object_from_json(json.loads(data))
|
||||
|
@ -1800,8 +1866,14 @@ class TestSriovVF(base.TestCase):
|
|||
def test_from_json_name_ignored(self):
|
||||
def test_get_vf_devname(device, vfid):
|
||||
return device + '_' + str(vfid)
|
||||
|
||||
def test_get_pci_address(ifname, noop):
|
||||
return '0000:79:10.2'
|
||||
|
||||
self.stub_out('os_net_config.utils.get_vf_devname',
|
||||
test_get_vf_devname)
|
||||
self.stub_out('os_net_config.utils.get_pci_address',
|
||||
test_get_pci_address)
|
||||
data = '{"type": "sriov_vf", "device": "em1", "vfid": 16,' \
|
||||
'"use_dhcp": false, "name": "em1_7"}'
|
||||
vf = objects.object_from_json(json.loads(data))
|
||||
|
@ -1813,8 +1885,14 @@ class TestSriovVF(base.TestCase):
|
|||
def test_from_json_vfid_configs_enabled(self):
|
||||
def test_get_vf_devname(device, vfid):
|
||||
return device + '_' + str(vfid)
|
||||
|
||||
def test_get_pci_address(ifname, noop):
|
||||
return '0000:79:10.2'
|
||||
|
||||
self.stub_out('os_net_config.utils.get_vf_devname',
|
||||
test_get_vf_devname)
|
||||
self.stub_out('os_net_config.utils.get_pci_address',
|
||||
test_get_pci_address)
|
||||
|
||||
data = '{"type": "sriov_vf", "device": "em4", "vfid": 16,' \
|
||||
'"use_dhcp": false, "vlan_id": 100, "qos": 2, "trust": true,' \
|
||||
|
@ -1836,8 +1914,14 @@ class TestSriovVF(base.TestCase):
|
|||
def test_from_json_vfid_configs_disabled(self):
|
||||
def test_get_vf_devname(device, vfid):
|
||||
return device + '_' + str(vfid)
|
||||
|
||||
def test_get_pci_address(ifname, noop):
|
||||
return '0000:79:10.2'
|
||||
|
||||
self.stub_out('os_net_config.utils.get_vf_devname',
|
||||
test_get_vf_devname)
|
||||
self.stub_out('os_net_config.utils.get_pci_address',
|
||||
test_get_pci_address)
|
||||
|
||||
data = '{"type": "sriov_vf", "device": "em4", "vfid": 16,' \
|
||||
'"use_dhcp": false, "vlan_id": 0, "qos": 0, "trust": false,' \
|
||||
|
@ -1859,8 +1943,14 @@ class TestSriovVF(base.TestCase):
|
|||
def test_from_json_vfid_invalid_state(self):
|
||||
def test_get_vf_devname(device, vfid):
|
||||
return device + '_' + str(vfid)
|
||||
|
||||
def test_get_pci_address(ifname, noop):
|
||||
return '0000:79:10.2'
|
||||
|
||||
self.stub_out('os_net_config.utils.get_vf_devname',
|
||||
test_get_vf_devname)
|
||||
self.stub_out('os_net_config.utils.get_pci_address',
|
||||
test_get_pci_address)
|
||||
|
||||
data = '{"type": "sriov_vf", "device": "em4", "vfid": 16,' \
|
||||
'"use_dhcp": false, "vlan_id": 0, "qos": 0, "trust": false,' \
|
||||
|
@ -1875,8 +1965,14 @@ class TestSriovVF(base.TestCase):
|
|||
def test_from_json_vfid_invalid_qos(self):
|
||||
def test_get_vf_devname(device, vfid):
|
||||
return device + '_' + str(vfid)
|
||||
|
||||
def test_get_pci_address(ifname, noop):
|
||||
return '0000:79:10.2'
|
||||
|
||||
self.stub_out('os_net_config.utils.get_vf_devname',
|
||||
test_get_vf_devname)
|
||||
self.stub_out('os_net_config.utils.get_pci_address',
|
||||
test_get_pci_address)
|
||||
|
||||
data = '{"type": "sriov_vf", "device": "em4", "vfid": 16,' \
|
||||
'"use_dhcp": false, "vlan_id": 0, "qos": 10, "trust": false,' \
|
||||
|
@ -1890,8 +1986,14 @@ class TestSriovVF(base.TestCase):
|
|||
def test_from_json_vfid_nic1(self):
|
||||
def test_get_vf_devname(device, vfid):
|
||||
return device + '_' + str(vfid)
|
||||
|
||||
def test_get_pci_address(ifname, noop):
|
||||
return '0000:79:10.2'
|
||||
|
||||
self.stub_out('os_net_config.utils.get_vf_devname',
|
||||
test_get_vf_devname)
|
||||
self.stub_out('os_net_config.utils.get_pci_address',
|
||||
test_get_pci_address)
|
||||
|
||||
def dummy_mapped_nics(nic_mapping=None):
|
||||
return {"nic1": "em4"}
|
||||
|
@ -1906,6 +2008,30 @@ class TestSriovVF(base.TestCase):
|
|||
self.assertFalse(vf.use_dhcp)
|
||||
self.assertEqual("em4_16", vf.name)
|
||||
|
||||
def test_from_json_pci_address_none(self):
|
||||
def test_get_vf_devname(device, vfid):
|
||||
return device + '_' + str(vfid)
|
||||
|
||||
def test_get_pci_address(ifname, noop):
|
||||
return None
|
||||
|
||||
def test_get_stored_pci_address(ifname, noop):
|
||||
return '0000:79:10.2'
|
||||
|
||||
self.stub_out('os_net_config.utils.get_vf_devname',
|
||||
test_get_vf_devname)
|
||||
self.stub_out('os_net_config.utils.get_pci_address',
|
||||
test_get_pci_address)
|
||||
self.stub_out('os_net_config.utils.get_stored_pci_address',
|
||||
test_get_stored_pci_address)
|
||||
data = '{"type": "sriov_vf", "device": "em1", "vfid": 16,' \
|
||||
'"use_dhcp": false}'
|
||||
vf = objects.object_from_json(json.loads(data))
|
||||
self.assertEqual("em1", vf.device)
|
||||
self.assertEqual(16, vf.vfid)
|
||||
self.assertFalse(vf.use_dhcp)
|
||||
self.assertEqual("em1_16", vf.name)
|
||||
|
||||
|
||||
class TestOvsDpdkBond(base.TestCase):
|
||||
|
||||
|
|
|
@ -176,7 +176,8 @@ class TestUtils(base.TestCase):
|
|||
def test_update_sriov_vf_map_complete_new(self):
|
||||
utils.update_sriov_vf_map('eth1', 2, 'eth1_2', vlan_id=10, qos=5,
|
||||
spoofcheck="on", trust="on", state="enable",
|
||||
macaddr="AA:BB:CC:DD:EE:FF", promisc="off")
|
||||
macaddr="AA:BB:CC:DD:EE:FF", promisc="off",
|
||||
pci_address="0000:80:00.1")
|
||||
contents = utils.get_file_data(sriov_config._SRIOV_CONFIG_FILE)
|
||||
sriov_vf_map = yaml.safe_load(contents) if contents else []
|
||||
self.assertEqual(1, len(sriov_vf_map))
|
||||
|
@ -186,7 +187,8 @@ class TestUtils(base.TestCase):
|
|||
'spoofcheck': 'on', 'trust': 'on',
|
||||
'state': 'enable',
|
||||
'macaddr': 'AA:BB:CC:DD:EE:FF',
|
||||
'promisc': 'off'}]
|
||||
'promisc': 'off',
|
||||
'pci_address': "0000:80:00.1"}]
|
||||
self.assertListEqual(test_sriov_vf_map, sriov_vf_map)
|
||||
|
||||
def test_update_sriov_vf_map_exist(self):
|
||||
|
@ -196,14 +198,16 @@ class TestUtils(base.TestCase):
|
|||
|
||||
utils.update_sriov_vf_map('eth1', 2, 'eth1_2', vlan_id=10, qos=5,
|
||||
spoofcheck="on", trust="on", state="enable",
|
||||
macaddr="AA:BB:CC:DD:EE:FF", promisc="off")
|
||||
macaddr="AA:BB:CC:DD:EE:FF", promisc="off",
|
||||
pci_address="0000:80:00.1")
|
||||
vf_final = [{'device_type': 'vf', 'name': 'eth1_2',
|
||||
'device': {'name': 'eth1', 'vfid': 2},
|
||||
'vlan_id': 10, 'qos': 5,
|
||||
'spoofcheck': 'on', 'trust': 'on',
|
||||
'state': 'enable',
|
||||
'macaddr': 'AA:BB:CC:DD:EE:FF',
|
||||
'promisc': 'off'}]
|
||||
'promisc': 'off',
|
||||
'pci_address': '0000:80:00.1'}]
|
||||
contents = utils.get_file_data(sriov_config._SRIOV_CONFIG_FILE)
|
||||
|
||||
vf_map = yaml.safe_load(contents) if contents else []
|
||||
|
@ -217,19 +221,22 @@ class TestUtils(base.TestCase):
|
|||
'spoofcheck': 'on', 'trust': 'on',
|
||||
'state': 'enable',
|
||||
'macaddr': 'AA:BB:CC:DD:EE:FF',
|
||||
'promisc': 'off'}]
|
||||
'promisc': 'off',
|
||||
'pci_address': "0000:80:00.1"}]
|
||||
utils.write_yaml_config(sriov_config._SRIOV_CONFIG_FILE, vf_initial)
|
||||
|
||||
utils.update_sriov_vf_map('eth1', 2, 'eth1_2', vlan_id=100, qos=15,
|
||||
spoofcheck="off", trust="off", state="auto",
|
||||
macaddr="BB:BB:CC:DD:EE:FF", promisc="on")
|
||||
macaddr="BB:BB:CC:DD:EE:FF", promisc="on",
|
||||
pci_address="0000:80:00.1")
|
||||
vf_final = [{'device_type': 'vf', 'name': 'eth1_2',
|
||||
'device': {'name': 'eth1', 'vfid': 2},
|
||||
'vlan_id': 100, 'qos': 15,
|
||||
'spoofcheck': 'off', 'trust': 'off',
|
||||
'state': 'auto',
|
||||
'macaddr': 'BB:BB:CC:DD:EE:FF',
|
||||
'promisc': 'on'}]
|
||||
'promisc': 'on',
|
||||
'pci_address': '0000:80:00.1'}]
|
||||
contents = utils.get_file_data(sriov_config._SRIOV_CONFIG_FILE)
|
||||
|
||||
vf_map = yaml.safe_load(contents) if contents else []
|
||||
|
|
|
@ -445,7 +445,7 @@ def _get_sriov_map():
|
|||
|
||||
|
||||
def _set_vf_fields(vf_name, vlan_id, qos, spoofcheck, trust, state, macaddr,
|
||||
promisc):
|
||||
promisc, pci_address):
|
||||
vf_configs = {}
|
||||
vf_configs['name'] = vf_name
|
||||
if vlan_id != 0:
|
||||
|
@ -461,6 +461,7 @@ def _set_vf_fields(vf_name, vlan_id, qos, spoofcheck, trust, state, macaddr,
|
|||
vf_configs['state'] = state
|
||||
vf_configs['macaddr'] = macaddr
|
||||
vf_configs['promisc'] = promisc
|
||||
vf_configs['pci_address'] = pci_address
|
||||
return vf_configs
|
||||
|
||||
|
||||
|
@ -472,14 +473,15 @@ def _clear_empty_values(vf_config):
|
|||
|
||||
def update_sriov_vf_map(pf_name, vfid, vf_name, vlan_id=0, qos=0,
|
||||
spoofcheck=None, trust=None, state=None, macaddr=None,
|
||||
promisc=None):
|
||||
promisc=None, pci_address=None):
|
||||
sriov_map = _get_sriov_map()
|
||||
for item in sriov_map:
|
||||
if (item['device_type'] == 'vf' and
|
||||
item['device'].get('name') == pf_name and
|
||||
item['device'].get('vfid') == vfid):
|
||||
item.update(_set_vf_fields(vf_name, vlan_id, qos, spoofcheck,
|
||||
trust, state, macaddr, promisc))
|
||||
trust, state, macaddr, promisc,
|
||||
pci_address))
|
||||
_clear_empty_values(item)
|
||||
break
|
||||
else:
|
||||
|
@ -487,7 +489,8 @@ def update_sriov_vf_map(pf_name, vfid, vf_name, vlan_id=0, qos=0,
|
|||
new_item['device_type'] = 'vf'
|
||||
new_item['device'] = {"name": pf_name, "vfid": vfid}
|
||||
new_item.update(_set_vf_fields(vf_name, vlan_id, qos, spoofcheck,
|
||||
trust, state, macaddr, promisc))
|
||||
trust, state, macaddr, promisc,
|
||||
pci_address))
|
||||
_clear_empty_values(new_item)
|
||||
sriov_map.append(new_item)
|
||||
|
||||
|
|
|
@ -0,0 +1,5 @@
|
|||
---
|
||||
features:
|
||||
- |
|
||||
Adding PCI address of each VF to sriov_config.yaml. This information
|
||||
could be used in deriving the PCI passthrough whitelist.
|
Loading…
Reference in New Issue