diff --git a/os_net_config/impl_ifcfg.py b/os_net_config/impl_ifcfg.py index 70eca4c5..83180230 100644 --- a/os_net_config/impl_ifcfg.py +++ b/os_net_config/impl_ifcfg.py @@ -34,6 +34,13 @@ def ifcfg_config_path(name): return "/etc/sysconfig/network-scripts/ifcfg-%s" % name +def remove_ifcfg_config(ifname): + if re.match('[\w-]+$', ifname): + ifcfg_file = ifcfg_config_path(ifname) + if os.path.exists(ifcfg_file): + os.remove(ifcfg_file) + + # NOTE(dprince): added here for testability def bridge_config_path(name): return ifcfg_config_path(name) @@ -574,6 +581,8 @@ class IfcfgNetConfig(os_net_config.NetConfig): # Bind the dpdk interface utils.bind_dpdk_interfaces(ifname, ovs_dpdk_port.driver, self.noop) + if not self.noop: + remove_ifcfg_config(ifname) data = self._add_common(ovs_dpdk_port) logger.debug('ovs dpdk port data: %s' % data) @@ -592,6 +601,8 @@ class IfcfgNetConfig(os_net_config.NetConfig): # checks are added at the object creation stage. ifname = dpdk_port.members[0].name utils.bind_dpdk_interfaces(ifname, dpdk_port.driver, self.noop) + if not self.noop: + remove_ifcfg_config(ifname) data = self._add_common(ovs_dpdk_bond) logger.debug('ovs dpdk bond data: %s' % data) diff --git a/os_net_config/tests/test_impl_ifcfg.py b/os_net_config/tests/test_impl_ifcfg.py index 7968d7b5..d235d37f 100644 --- a/os_net_config/tests/test_impl_ifcfg.py +++ b/os_net_config/tests/test_impl_ifcfg.py @@ -894,6 +894,13 @@ class TestIfcfgNetConfigApply(base.TestCase): return self.temp_ifcfg_file.name self.stubs.Set(impl_ifcfg, 'ifcfg_config_path', test_ifcfg_path) + def test_remove_ifcfg_config(name): + ifcfg_file = self.temp_ifcfg_file.name + if os.path.exists(ifcfg_file): + os.remove(ifcfg_file) + self.stubs.Set(impl_ifcfg, 'remove_ifcfg_config', + test_remove_ifcfg_config) + def test_routes_path(name): return self.temp_route_file.name self.stubs.Set(impl_ifcfg, 'route_config_path', test_routes_path)