From: Krisztian Lengyel Date: Wed, 2 Oct 2019 14:25:47 +0000 (+0200) Subject: Upgrade os-net-config to version 10.4.1 X-Git-Url: https://gerrit.akraino.org/r/gitweb?p=ta%2Fos-net-config.git;a=commitdiff_plain;h=edcad710338ca13444269e07ecac8624f8115c51 Upgrade os-net-config to version 10.4.1 Signed-off-by: Krisztian Lengyel Change-Id: If9e9284acad87c9d69e0d3540f79996c0c1c27eb --- diff --git a/0001-initial.patch b/0001-initial.patch index 9ae6d24..476c002 100644 --- a/0001-initial.patch +++ b/0001-initial.patch @@ -47,19 +47,19 @@ index 17a73a3..896ca79 100644 - type: ovs_dpdk_port diff --git a/os_net_config/__init__.py b/os_net_config/__init__.py -index 609d5dc..0523bfc 100644 +index 7a00ee0..ce2ee86 100644 --- a/os_net_config/__init__.py +++ b/os_net_config/__init__.py -@@ -253,7 +253,7 @@ class NetConfig(object): - msg = 'running ifdown on %s: %s' % (iftype, interface) - self.execute(msg, '/sbin/ifdown', interface, check_exit_code=False) +@@ -316,7 +316,7 @@ class NetConfig(object): + self.execute(msg, '/sbin/ip', + 'link', 'set', 'dev', interface, 'down') - def ifup(self, interface, iftype='interface'): + def ifup(self, interface, iftype='interface', check_exit_code=True): """Run 'ifup' on the specified interface If a failure occurs when bringing up the interface it will be saved -@@ -265,7 +265,7 @@ class NetConfig(object): +@@ -328,7 +328,7 @@ class NetConfig(object): """ msg = 'running ifup on %s: %s' % (iftype, interface) try: @@ -69,11 +69,11 @@ index 609d5dc..0523bfc 100644 self.errors.append(e) diff --git a/os_net_config/impl_ifcfg.py b/os_net_config/impl_ifcfg.py -index 3a82597..3fd7eb5 100644 +index 2fccbf3..c97ca0f 100644 --- a/os_net_config/impl_ifcfg.py +++ b/os_net_config/impl_ifcfg.py -@@ -18,10 +18,13 @@ import glob - import logging +@@ -20,10 +20,13 @@ import logging + import netaddr import os import re +import time @@ -86,24 +86,23 @@ index 3a82597..3fd7eb5 100644 logger = logging.getLogger(__name__) -@@ -162,6 +165,10 @@ class IfcfgNetConfig(os_net_config.NetConfig): - else: - if base_opt.linux_bond_name: - data += "PHYSDEV=%s\n" % base_opt.linux_bond_name +@@ -364,6 +367,10 @@ class IfcfgNetConfig(os_net_config.NetConfig): + data += "PHYSDEV=%s\n" % base_opt.device + elif base_opt.linux_bond_name: + data += "PHYSDEV=%s\n" % base_opt.linux_bond_name + elif base_opt.device: + # vlan on OVS bridge with device, create linux vlan + data += "VLAN=yes\n" + data += "PHYSDEV=%s\n" % base_opt.device - elif isinstance(base_opt, objects.IvsInterface): - data += "TYPE=IVSIntPort\n" - elif isinstance(base_opt, objects.NfvswitchInternal): -@@ -187,9 +194,11 @@ class IfcfgNetConfig(os_net_config.NetConfig): + else: + if base_opt.ovs_options: + data += "OVS_OPTIONS=\"%s\"\n" % base_opt.ovs_options +@@ -391,9 +398,10 @@ class IfcfgNetConfig(os_net_config.NetConfig): data += "NFVSWITCH_BRIDGE=%s\n" % base_opt.nfvswitch_bridge_name if base_opt.ovs_port: if not isinstance(base_opt, objects.LinuxTeam): - data += "DEVICETYPE=ovs\n" -+ if not (isinstance(base_opt, objects.Vlan) -+ and base_opt.device): ++ if not (isinstance(base_opt, objects.Vlan) and base_opt.device): + data += "DEVICETYPE=ovs\n" if base_opt.bridge_name: - if isinstance(base_opt, objects.Vlan): @@ -111,7 +110,7 @@ index 3a82597..3fd7eb5 100644 data += "TYPE=OVSIntPort\n" data += "OVS_BRIDGE=%s\n" % base_opt.bridge_name data += "OVS_OPTIONS=\"tag=%s\"\n" % base_opt.vlan_id -@@ -313,6 +322,10 @@ class IfcfgNetConfig(os_net_config.NetConfig): +@@ -518,6 +526,10 @@ class IfcfgNetConfig(os_net_config.NetConfig): data += "RX_QUEUE=%i\n" % base_opt.rx_queue ovs_extra.append("set Interface $DEVICE " + "options:n_rxq=$RX_QUEUE") @@ -122,7 +121,7 @@ index 3a82597..3fd7eb5 100644 elif isinstance(base_opt, objects.OvsDpdkBond): ovs_extra.extend(base_opt.ovs_extra) # Referring to bug:1643026, the below commenting of the interfaces, -@@ -349,6 +362,11 @@ class IfcfgNetConfig(os_net_config.NetConfig): +@@ -554,6 +566,11 @@ class IfcfgNetConfig(os_net_config.NetConfig): for member in base_opt.members: ovs_extra.append("set Interface %s options:n_rxq=" "$RX_QUEUE" % member.name) @@ -134,7 +133,19 @@ index 3a82597..3fd7eb5 100644 if base_opt.ovs_options: data += "OVS_OPTIONS=\"%s\"\n" % base_opt.ovs_options ovs_extra.extend(base_opt.ovs_extra) -@@ -1043,14 +1061,27 @@ class IfcfgNetConfig(os_net_config.NetConfig): +@@ -1500,6 +1517,11 @@ class IfcfgNetConfig(os_net_config.NetConfig): + else: + logger.info('No changes required for vlan interface: %s' % + vlan_name) ++ # Vlan needs to be restarted if underneath bond is restarted ++ if vlan_name not in restart_vlans: ++ for linuxbond in restart_linux_bonds: ++ if 'PHYSDEV={}\n'.format(linuxbond) in vlan_data: ++ restart_vlans.append(vlan_name) + if utils.diff(vlan_route_path, route_data): + update_files[vlan_route_path] = route_data + if vlan_name not in restart_vlans: +@@ -1659,14 +1681,27 @@ class IfcfgNetConfig(os_net_config.NetConfig): stop_dhclient_process(interface) for interface in restart_interfaces: @@ -166,27 +177,28 @@ index 3a82597..3fd7eb5 100644 if ivs_uplinks or ivs_interfaces: logger.info("Attach to ivs with " diff --git a/os_net_config/objects.py b/os_net_config/objects.py -index 417f34a..1b321f3 100644 +index 538c367..806d082 100644 --- a/os_net_config/objects.py +++ b/os_net_config/objects.py -@@ -993,7 +993,7 @@ class OvsDpdkPort(_BaseOpts): - persist_mapping=False, defroute=True, dhclient_args=None, - dns_servers=None, nm_controlled=False, members=None, - driver='vfio-pci', ovs_options=None, ovs_extra=None, -- rx_queue=None): -+ rx_queue=None, dpdk_lsc_interrupt=False): - - super(OvsDpdkPort, self).__init__(name, use_dhcp, use_dhcpv6, - addresses, routes, mtu, primary, -@@ -1005,6 +1005,7 @@ class OvsDpdkPort(_BaseOpts): +@@ -1249,7 +1249,8 @@ class OvsDpdkPort(_BaseOpts): + nic_mapping=None, persist_mapping=False, defroute=True, + dhclient_args=None, dns_servers=None, nm_controlled=False, + onboot=True, domain=None, members=None, driver='vfio-pci', +- ovs_options=None, ovs_extra=None, rx_queue=None): ++ ovs_options=None, ovs_extra=None, rx_queue=None, ++ dpdk_lsc_interrupt=False): + + check_ovs_installed(self.__class__.__name__) + +@@ -1264,6 +1265,7 @@ class OvsDpdkPort(_BaseOpts): self.ovs_extra = format_ovs_extra(self, ovs_extra) self.driver = driver self.rx_queue = rx_queue + self.dpdk_lsc_interrupt = dpdk_lsc_interrupt @staticmethod - def from_json(json): -@@ -1047,6 +1048,11 @@ class OvsDpdkPort(_BaseOpts): + def update_vf_config(iface): +@@ -1331,6 +1333,11 @@ class OvsDpdkPort(_BaseOpts): raise InvalidConfigException(msg) rx_queue = json.get('rx_queue', None) @@ -198,27 +210,27 @@ index 417f34a..1b321f3 100644 ovs_options = json.get('ovs_options', []) ovs_options = ['options:%s' % opt for opt in ovs_options] ovs_extra = json.get('ovs_extra', []) -@@ -1060,7 +1066,8 @@ class OvsDpdkPort(_BaseOpts): - dns_servers=dns_servers, - nm_controlled=nm_controlled, members=members, - driver=driver, ovs_options=ovs_options, +@@ -1345,7 +1352,8 @@ class OvsDpdkPort(_BaseOpts): + nm_controlled=nm_controlled, onboot=onboot, + domain=domain, members=members, driver=driver, + ovs_options=ovs_options, - ovs_extra=ovs_extra, rx_queue=rx_queue) + ovs_extra=ovs_extra, rx_queue=rx_queue, + dpdk_lsc_interrupt=dpdk_lsc_interrupt) - class OvsDpdkBond(_BaseOpts): -@@ -1070,7 +1077,8 @@ class OvsDpdkBond(_BaseOpts): - routes=None, mtu=None, primary=False, members=None, - ovs_options=None, ovs_extra=None, nic_mapping=None, - persist_mapping=False, defroute=True, dhclient_args=None, -- dns_servers=None, nm_controlled=False, rx_queue=None): -+ dns_servers=None, nm_controlled=False, rx_queue=None, + class SriovVF(_BaseOpts): +@@ -1493,7 +1501,8 @@ class OvsDpdkBond(_BaseOpts): + members=None, ovs_options=None, ovs_extra=None, + nic_mapping=None, persist_mapping=False, defroute=True, + dhclient_args=None, dns_servers=None, nm_controlled=False, +- onboot=True, domain=None, rx_queue=None): ++ onboot=True, domain=None, rx_queue=None, + dpdk_lsc_interrupt=False): - super(OvsDpdkBond, self).__init__(name, use_dhcp, use_dhcpv6, - addresses, routes, mtu, primary, - nic_mapping, persist_mapping, -@@ -1080,6 +1088,7 @@ class OvsDpdkBond(_BaseOpts): + + check_ovs_installed(self.__class__.__name__) + +@@ -1507,6 +1516,7 @@ class OvsDpdkBond(_BaseOpts): self.ovs_options = ovs_options self.ovs_extra = format_ovs_extra(self, ovs_extra) self.rx_queue = rx_queue @@ -226,7 +238,7 @@ index 417f34a..1b321f3 100644 for member in self.members: if member.primary: -@@ -1127,6 +1136,11 @@ class OvsDpdkBond(_BaseOpts): +@@ -1554,6 +1564,11 @@ class OvsDpdkBond(_BaseOpts): msg = 'Members must be a list.' raise InvalidConfigException(msg) @@ -236,23 +248,23 @@ index 417f34a..1b321f3 100644 + dpdk_lsc_interrupt = True + return OvsDpdkBond(name, use_dhcp=use_dhcp, use_dhcpv6=use_dhcpv6, - addresses=addresses, routes=routes, mtu=mtu, - members=members, ovs_options=ovs_options, -@@ -1134,7 +1148,8 @@ class OvsDpdkBond(_BaseOpts): - persist_mapping=persist_mapping, + addresses=addresses, routes=routes, rules=rules, + mtu=mtu, members=members, ovs_options=ovs_options, +@@ -1562,7 +1577,8 @@ class OvsDpdkBond(_BaseOpts): defroute=defroute, dhclient_args=dhclient_args, dns_servers=dns_servers, -- nm_controlled=nm_controlled, rx_queue=rx_queue) -+ nm_controlled=nm_controlled, rx_queue=rx_queue, + nm_controlled=nm_controlled, onboot=onboot, +- domain=domain, rx_queue=rx_queue) ++ domain=domain, rx_queue=rx_queue, + dpdk_lsc_interrupt=dpdk_lsc_interrupt) class VppInterface(_BaseOpts): diff --git a/os_net_config/schema.yaml b/os_net_config/schema.yaml -index 5060a34..62aeb41 100644 +index 5643960..9d081f7 100644 --- a/os_net_config/schema.yaml +++ b/os_net_config/schema.yaml -@@ -529,6 +529,8 @@ definitions: +@@ -772,6 +772,8 @@ definitions: $ref: "#/definitions/ovs_extra_or_param" rx_queue: $ref: "#/definitions/int_or_param" @@ -261,7 +273,7 @@ index 5060a34..62aeb41 100644 # common options: use_dhcp: $ref: "#/definitions/bool_or_param" -@@ -581,6 +583,8 @@ definitions: +@@ -832,6 +834,8 @@ definitions: $ref: "#/definitions/ovs_extra_or_param" rx_queue: $ref: "#/definitions/int_or_param" @@ -271,27 +283,26 @@ index 5060a34..62aeb41 100644 use_dhcp: $ref: "#/definitions/bool_or_param" diff --git a/os_net_config/tests/test_cli.py b/os_net_config/tests/test_cli.py -index 32f9395..338f946 100644 +index b667a2a..4487d48 100644 --- a/os_net_config/tests/test_cli.py +++ b/os_net_config/tests/test_cli.py -@@ -17,10 +17,12 @@ - import os.path +@@ -19,10 +19,12 @@ import random import sys + import yaml +from mock import patch import os_net_config from os_net_config import cli - from os_net_config import impl_ifcfg + from os_net_config import sriov_config from os_net_config.tests import base +from os_net_config.tests.test_utils import _PCI_OUTPUT + from os_net_config import utils import six - -@@ -31,6 +33,22 @@ SAMPLE_BASE = os.path.join(REALPATH, '../../', 'etc', - +@@ -35,6 +37,18 @@ SAMPLE_BASE = os.path.join(REALPATH, '../../', 'etc', class TestCli(base.TestCase): -+ def setUp(self): + def setUp(self): + patcher_get_pci_address = patch('os_net_config.utils.get_pci_address', + return_value=(_PCI_OUTPUT, None)) + self.mock_get_pci_address = patcher_get_pci_address.start() @@ -304,25 +315,22 @@ index 32f9395..338f946 100644 + return_value=interface_list) + self.mock_interfaces = patcher_interfaces.start() + self.addCleanup(patcher_interfaces.stop) -+ -+ super(TestCli, self).setUp() -+ - def run_cli(self, argstr, exitcodes=(0,)): - orig = sys.stdout - orig_stderr = sys.stderr + super(TestCli, self).setUp() + rand = str(int(random.random() * 100000)) + sriov_config._SRIOV_CONFIG_FILE = '/tmp/sriov_config_' + rand + '.yaml' diff --git a/os_net_config/tests/test_impl_ifcfg.py b/os_net_config/tests/test_impl_ifcfg.py -index 337eeb3..a0abf93 100644 +index 5eba70b..11c3836 100644 --- a/os_net_config/tests/test_impl_ifcfg.py +++ b/os_net_config/tests/test_impl_ifcfg.py -@@ -19,6 +19,7 @@ import tempfile +@@ -21,6 +21,7 @@ import tempfile from oslo_concurrency import processutils +from mock import patch import os_net_config from os_net_config import impl_ifcfg - from os_net_config import NetConfig -@@ -260,6 +261,13 @@ OVS_OPTIONS="tag=5" + from os_net_config import objects +@@ -354,6 +355,13 @@ OVS_OPTIONS="tag=5" BOOTPROTO=none """ @@ -336,7 +344,7 @@ index 337eeb3..a0abf93 100644 _VLAN_LINUX_BRIDGE = _BASE_VLAN_OVS + """VLAN=yes PHYSDEV=em1 BRIDGE=br-ctlplane -@@ -719,7 +727,7 @@ class TestIfcfgNetConfig(base.TestCase): +@@ -1082,13 +1090,13 @@ class TestIfcfgNetConfig(base.TestCase): self.assertEqual(_VLAN_NO_IP, self.get_vlan_config('vlan5')) def test_add_vlan_ovs(self): @@ -345,7 +353,14 @@ index 337eeb3..a0abf93 100644 vlan.ovs_port = True self.provider.add_vlan(vlan) self.assertEqual(_VLAN_OVS, self.get_vlan_config('vlan5')) -@@ -731,13 +739,21 @@ class TestIfcfgNetConfig(base.TestCase): + + def test_add_vlan_ovs_options(self): +- vlan = objects.Vlan('em1', 5) ++ vlan = objects.Vlan(None, 5) + vlan.ovs_port = True + vlan.ovs_options = 'foo' + vlan.ovs_extra = ['bar', 'baz'] +@@ -1102,13 +1110,21 @@ class TestIfcfgNetConfig(base.TestCase): self.assertEqual(expected, self.get_vlan_config('vlan5')) def test_add_ovs_bridge_with_vlan(self): @@ -368,7 +383,7 @@ index 337eeb3..a0abf93 100644 def test_add_linux_bridge_with_vlan(self): vlan = objects.Vlan('em1', 5) bridge = objects.LinuxBridge('br-ctlplane', use_dhcp=True, -@@ -932,13 +948,14 @@ OVS_EXTRA="set Interface $DEVICE options:dpdk-devargs=0000:00:09.0" +@@ -1634,13 +1650,14 @@ OVS_EXTRA="set Interface $DEVICE options:dpdk-devargs=0000:00:09.0" self.provider.bridge_data['br-link']) self.assertEqual(dpdk0_config, self.get_interface_config('dpdk0')) @@ -385,7 +400,7 @@ index 337eeb3..a0abf93 100644 bridge = objects.OvsUserBridge('br-link', members=[dpdk_port]) def test_bind_dpdk_interfaces(ifname, driver, noop): -@@ -970,10 +987,12 @@ DEVICETYPE=ovs +@@ -1672,10 +1689,12 @@ DEVICETYPE=ovs TYPE=OVSDPDKPort OVS_BRIDGE=br-link RX_QUEUE=4 @@ -399,7 +414,7 @@ index 337eeb3..a0abf93 100644 """ self.assertEqual(br_link_config, self.provider.bridge_data['br-link']) -@@ -1068,7 +1087,8 @@ OVS_EXTRA="set Interface dpdk0 options:dpdk-devargs=0000:00:08.0 \ +@@ -1770,7 +1789,8 @@ OVS_EXTRA="set Interface dpdk0 options:dpdk-devargs=0000:00:08.0 \ iface1 = objects.Interface(name='nic3') dpdk1 = objects.OvsDpdkPort(name='dpdk1', members=[iface1]) bond = objects.OvsDpdkBond('dpdkbond0', rx_queue=4, @@ -409,7 +424,7 @@ index 337eeb3..a0abf93 100644 bridge = objects.OvsUserBridge('br-link', members=[bond]) def test_bind_dpdk_interfaces(ifname, driver, noop): -@@ -1093,10 +1113,13 @@ TYPE=OVSDPDKBond +@@ -1795,10 +1815,13 @@ TYPE=OVSDPDKBond OVS_BRIDGE=br-link BOND_IFACES="dpdk0 dpdk1" RX_QUEUE=4 @@ -424,7 +439,7 @@ index 337eeb3..a0abf93 100644 """ self.assertEqual(dpdk_bond_config, self.get_interface_config('dpdkbond0')) -@@ -1110,7 +1133,8 @@ OVS_EXTRA="set Interface dpdk0 options:dpdk-devargs=0000:00:08.0 \ +@@ -1812,7 +1835,8 @@ OVS_EXTRA="set Interface dpdk0 options:dpdk-devargs=0000:00:08.0 \ iface1 = objects.Interface(name='nic3') dpdk1 = objects.OvsDpdkPort(name='dpdk1', members=[iface1]) bond = objects.OvsDpdkBond('dpdkbond0', rx_queue=4, mtu=9000, @@ -434,7 +449,7 @@ index 337eeb3..a0abf93 100644 bridge = objects.OvsUserBridge('br-link', members=[bond]) def test_bind_dpdk_interfaces(ifname, driver, noop): -@@ -1135,13 +1159,16 @@ TYPE=OVSDPDKBond +@@ -1837,13 +1861,16 @@ TYPE=OVSDPDKBond OVS_BRIDGE=br-link BOND_IFACES="dpdk0 dpdk1" RX_QUEUE=4 @@ -452,7 +467,7 @@ index 337eeb3..a0abf93 100644 """ self.assertEqual(dpdk_bond_config, self.get_interface_config('dpdkbond0')) -@@ -1150,6 +1177,11 @@ OVS_EXTRA="set Interface dpdk0 options:dpdk-devargs=0000:00:08.0 \ +@@ -1852,6 +1879,11 @@ OVS_EXTRA="set Interface dpdk0 options:dpdk-devargs=0000:00:08.0 \ class TestIfcfgNetConfigApply(base.TestCase): def setUp(self): @@ -465,23 +480,24 @@ index 337eeb3..a0abf93 100644 self.temp_ifcfg_file = tempfile.NamedTemporaryFile() self.temp_bond_file = tempfile.NamedTemporaryFile() diff --git a/os_net_config/tests/test_objects.py b/os_net_config/tests/test_objects.py -index 1c07eee..39a7884 100644 +index 0d42721..b0e34dc 100644 --- a/os_net_config/tests/test_objects.py +++ b/os_net_config/tests/test_objects.py -@@ -17,8 +17,10 @@ - import json +@@ -20,9 +20,11 @@ import random import six + import yaml +from mock import patch from os_net_config import objects + from os_net_config import sriov_config from os_net_config.tests import base +from os_net_config.tests.test_utils import _PCI_OUTPUT from os_net_config import utils -@@ -917,6 +919,13 @@ class TestNicMapping(base.TestCase): - # We want to test the function, not the dummy.. - stub_mapped_nics = False +@@ -1605,6 +1607,13 @@ class TestNicMapping(base.TestCase): + def stub_is_ovs_installed(self): + return True + def setUp(self): + patcher = patch('os_net_config.utils.get_pci_address', return_value=(_PCI_OUTPUT, None)) @@ -493,7 +509,7 @@ index 1c07eee..39a7884 100644 def tearDown(self): super(TestNicMapping, self).tearDown() objects._MAPPED_NICS = None -@@ -1122,6 +1131,13 @@ class TestOvsDpdkBond(base.TestCase): +@@ -2172,6 +2181,13 @@ class TestOvsDpdkBond(base.TestCase): # We want to test the function, not the dummy.. stub_mapped_nics = False @@ -507,7 +523,7 @@ index 1c07eee..39a7884 100644 def _stub_active_nics(self, nics): def dummy_ordered_active_nics(): return nics -@@ -1133,6 +1149,7 @@ class TestOvsDpdkBond(base.TestCase): +@@ -2189,6 +2205,7 @@ class TestOvsDpdkBond(base.TestCase): "type": "ovs_dpdk_bond", "name": "dpdkbond0", "use_dhcp": true, @@ -515,7 +531,7 @@ index 1c07eee..39a7884 100644 "members": [ { "type": "ovs_dpdk_port", -@@ -1160,6 +1177,7 @@ class TestOvsDpdkBond(base.TestCase): +@@ -2216,6 +2233,7 @@ class TestOvsDpdkBond(base.TestCase): bond = objects.object_from_json(json.loads(data)) self.assertEqual("dpdkbond0", bond.name) self.assertTrue(bond.use_dhcp) @@ -524,19 +540,19 @@ index 1c07eee..39a7884 100644 self.assertEqual("dpdk0", dpdk_port0.name) self.assertEqual("vfio-pci", dpdk_port0.driver) diff --git a/os_net_config/tests/test_utils.py b/os_net_config/tests/test_utils.py -index e09b6f7..66a0e59 100644 +index 2c9a3b0..72dc107 100644 --- a/os_net_config/tests/test_utils.py +++ b/os_net_config/tests/test_utils.py -@@ -110,6 +110,8 @@ class TestUtils(base.TestCase): +@@ -328,6 +328,8 @@ class TestUtils(base.TestCase): if 'ethtool' in name: out = _PCI_OUTPUT return out, None + if 'lspci' in name: + return '', None - self.stubs.Set(processutils, 'execute', test_execute) + self.stub_out('oslo_concurrency.processutils.execute', test_execute) pci = utils.get_pci_address('nic2', False) self.assertEqual('0000:00:19.0', pci) -@@ -153,6 +155,8 @@ class TestUtils(base.TestCase): +@@ -397,6 +399,8 @@ class TestUtils(base.TestCase): if 'ethtool' in name: out = _PCI_OUTPUT return out, None @@ -545,7 +561,7 @@ index e09b6f7..66a0e59 100644 if 'driverctl' in name: return None, None -@@ -171,6 +175,8 @@ class TestUtils(base.TestCase): +@@ -415,6 +419,8 @@ class TestUtils(base.TestCase): if 'ethtool' in name: out = _PCI_OUTPUT return out, None @@ -555,10 +571,10 @@ index e09b6f7..66a0e59 100644 return None, 'Error' diff --git a/os_net_config/tests/test_validator.py b/os_net_config/tests/test_validator.py -index 7991d9f..fd33ca2 100644 +index 81131b2..01d38a7 100644 --- a/os_net_config/tests/test_validator.py +++ b/os_net_config/tests/test_validator.py -@@ -264,6 +264,7 @@ class TestDeviceTypes(base.TestCase): +@@ -335,6 +335,7 @@ class TestDeviceTypes(base.TestCase): "name": "dpdkbond0", "mtu": 9000, "rx_queue": 4, @@ -567,10 +583,10 @@ index 7991d9f..fd33ca2 100644 "type": "ovs_dpdk_port", "name": "dpdk0", diff --git a/os_net_config/utils.py b/os_net_config/utils.py -index 27e888d..98e2741 100644 +index 986bf46..a3daf6d 100644 --- a/os_net_config/utils.py +++ b/os_net_config/utils.py -@@ -216,6 +216,17 @@ def bind_dpdk_interfaces(ifname, driver, noop): +@@ -259,6 +259,17 @@ def bind_dpdk_interfaces(ifname, driver, noop): pci_address = get_pci_address(ifname, noop) if not noop: if pci_address: @@ -588,7 +604,7 @@ index 27e888d..98e2741 100644 # modbprobe of the driver has to be done before binding. # for reboots, puppet will add the modprobe to /etc/rc.modules if 'vfio-pci' in driver: -@@ -252,6 +263,19 @@ def bind_dpdk_interfaces(ifname, driver, noop): +@@ -307,6 +318,19 @@ def bind_dpdk_interfaces(ifname, driver, noop): {'name': ifname, 'driver': driver}) @@ -617,10 +633,19 @@ index 0000000..81b4f50 +[MESSAGES CONTROL] +disable=E1101,F0401,E0211 diff --git a/tox.ini b/tox.ini -index 1dd9da1..962540a 100644 +index e7f0d84..6ad73ac 100644 --- a/tox.ini +++ b/tox.ini -@@ -28,6 +28,6 @@ commands = python setup.py build_sphinx +@@ -9,7 +9,7 @@ install_command = pip install -U {opts} {packages} + setenv = + VIRTUAL_ENV={envdir} + deps = +- -c{env:UPPER_CONSTRAINTS_FILE: https://releases.openstack.org/constraints/upper/stein} ++ -c{env:UPPER_CONSTRAINTS_FILE:https://releases.openstack.org/constraints/upper/stein} + -r{toxinidir}/requirements.txt + -r{toxinidir}/test-requirements.txt + commands = stestr run --slowest {posargs} +@@ -40,6 +40,6 @@ commands = python setup.py build_sphinx # E123, E125 skipped as they are invalid PEP-8. show-source = True diff --git a/os-net-config.spec b/os-net-config.spec index 351e7bd..34c6d01 100644 --- a/os-net-config.spec +++ b/os-net-config.spec @@ -1,11 +1,11 @@ Name: os-net-config -Version: 7.3.0 -Release: 0.20170914.77fe592%{?dist}.1 +Version: 10.4.1 +Release: 0.20191003.14e46a5%{?dist}.1 Summary: Host network configuration tool License: %{_platform_licence} and ASL 2.0 URL: http://pypi.python.org/pypi/%{name} -Source0: https://files.pythonhosted.org/packages/26/8d/c9ce44fd6a805a4ec56cba59c0a6743fba2230b7b79aa57a48709e94f47c/%{name}-%{version}.tar.gz +Source0: https://files.pythonhosted.org/packages/e6/4f/2e344cbe95e57c151c747df6367ace569697af7967b5b464d76ffcc3a4d8/%{name}-%{version}.tar.gz Patch0: 0001-initial.patch Vendor: OpenStack Foundation and %{_platform_vendor} modified @@ -54,4 +54,5 @@ Host network configuration tool for OpenStack. %doc LICENSE %doc doc/build/html %{_bindir}/os-net-config +%{_bindir}/os-net-config-sriov %{python_sitelib}/os_net_config*