summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTim Rozet <trozet@redhat.com>2017-09-16 09:42:47 -0400
committerTim Rozet <trozet@redhat.com>2017-09-16 09:42:47 -0400
commit74336aa1ff8270e701c1e5f20c7a566715ed8d92 (patch)
treecb01fd6485ac827543dc1a5b71ec93efd7cdccd2
parent54b8b2a51e4156d42005158f003fb307b32e45c1 (diff)
Fix broken jumphost detach method when orig file exists
In the case where the backup ifcfg file exists (.orig) the functionality to detach the interface from ovs was broken. This fixes it and adds unit test case to cover that scenario. Change-Id: If6d8ca0ba5cf80df71bb82f52e9d204435374479 Signed-off-by: Tim Rozet <trozet@redhat.com>
-rw-r--r--apex/network/jumphost.py7
-rw-r--r--apex/tests/test_apex_network_jumphost.py23
2 files changed, 26 insertions, 4 deletions
diff --git a/apex/network/jumphost.py b/apex/network/jumphost.py
index 2ecb7f4e..96b06cba 100644
--- a/apex/network/jumphost.py
+++ b/apex/network/jumphost.py
@@ -227,15 +227,14 @@ def detach_interface_from_ovs(network):
orig_ifcfg_file = os.path.join(NET_CFG_PATH,
"ifcfg-{}.orig".format(real_interface))
ifcfg_file = orig_ifcfg_file[:-len('.orig')]
+ bridge_ifcfg_file = os.path.join(NET_CFG_PATH,
+ "ifcfg-{}".format(bridge))
if os.path.isfile(orig_ifcfg_file):
logging.debug("Original interface file found: "
"{}".format(orig_ifcfg_file))
- shutil.move(orig_ifcfg_file, ifcfg_file)
else:
logging.info("No original ifcfg file found...will attempt to use "
- "bridge icfg file and re-create")
- bridge_ifcfg_file = os.path.join(NET_CFG_PATH,
- "ifcfg-{}".format(bridge))
+ "bridge ifcfg file and re-create")
if os.path.isfile(bridge_ifcfg_file):
ifcfg_params = generate_ifcfg_params(bridge_ifcfg_file, network)
if_content = """DEVICE={}
diff --git a/apex/tests/test_apex_network_jumphost.py b/apex/tests/test_apex_network_jumphost.py
index a23f1c56..da9703e3 100644
--- a/apex/tests/test_apex_network_jumphost.py
+++ b/apex/tests/test_apex_network_jumphost.py
@@ -203,6 +203,29 @@ class TestNetworkJumpHost:
os.remove(ifcfg_path)
@patch('subprocess.check_call')
+ @patch('apex.network.jumphost.is_ovs_bridge', return_value=True)
+ @patch('apex.network.jumphost.dump_ovs_ports', return_value=['enpfakes0'])
+ def test_detach_interface_orig_exists(self, dump_ports_func,
+ is_bridge_func, subprocess_func):
+ ifcfg_dir = con.TEST_DUMMY_CONFIG
+ shutil.copyfile(os.path.join(ifcfg_dir, 'ifcfg-br-dummy'),
+ os.path.join(ifcfg_dir, 'ifcfg-br-admin'))
+ shutil.copyfile(os.path.join(ifcfg_dir, 'ifcfg-dummy'),
+ os.path.join(ifcfg_dir, 'ifcfg-enpfakes0.orig'))
+ jumphost.NET_CFG_PATH = ifcfg_dir
+ output = jumphost.detach_interface_from_ovs('admin')
+ assert output is None
+ assert os.path.isfile(os.path.join(ifcfg_dir, 'ifcfg-enpfakes0'))
+ assert os.path.isfile(os.path.join(ifcfg_dir, 'ifcfg-br-admin'))
+ assert not os.path.isfile(os.path.join(ifcfg_dir,
+ 'ifcfg-enpfakes0.orig'))
+ for ifcfg in ('ifcfg-enpfakes0', 'ifcfg-enpfakes0.orig',
+ 'ifcfg-br-admin'):
+ ifcfg_path = os.path.join(ifcfg_dir, ifcfg)
+ if os.path.isfile(ifcfg_path):
+ os.remove(ifcfg_path)
+
+ @patch('subprocess.check_call')
@patch('apex.network.jumphost.is_ovs_bridge', return_value=False)
@patch('apex.network.jumphost.dump_ovs_ports', return_value=[])
def test_detach_interface_no_bridge(self, dump_ports_func,