summaryrefslogtreecommitdiffstats
path: root/apex
diff options
context:
space:
mode:
authorFeng Pan <fpan@redhat.com>2017-09-21 13:34:16 +0000
committerGerrit Code Review <gerrit@opnfv.org>2017-09-21 13:34:16 +0000
commit3755bd651deed84291de61cd56530ad856e3d1b1 (patch)
treed57f6937f754af2cd033b379765199a6d78ee904 /apex
parentd76b7e53517116a4b5cbe10dbf69a1a82e9b9a41 (diff)
parent02dc854a504569da15b0e41353a9f456e02599ad (diff)
Merge "Improves clean to cleanup virsh nets and and other bridges"
Diffstat (limited to 'apex')
-rw-r--r--apex/clean.py30
-rw-r--r--apex/tests/test_apex_clean.py12
2 files changed, 37 insertions, 5 deletions
diff --git a/apex/clean.py b/apex/clean.py
index 9d0e648e..0b1be860 100644
--- a/apex/clean.py
+++ b/apex/clean.py
@@ -87,12 +87,36 @@ def clean_vms():
def clean_ssh_keys(key_file='/root/.ssh/authorized_keys'):
logging.info('Removing any stack pub keys from root authorized keys')
+ if not os.path.isfile(key_file):
+ logging.warning("Key file does not exist: ".format(key_file))
+ return
for line in fileinput.input(key_file, inplace=True):
line = line.strip('\n')
if 'stack@undercloud' not in line:
print(line)
+def clean_networks():
+ logging.debug('Cleaning all network config')
+ for network in constants.OPNFV_NETWORK_TYPES:
+ logging.info("Cleaning Jump Host Network config for network "
+ "{}".format(network))
+ jumphost.detach_interface_from_ovs(network)
+ jumphost.remove_ovs_bridge(network)
+
+ conn = libvirt.open('qemu:///system')
+ if not conn:
+ raise ApexCleanException('Unable to open libvirt connection')
+ logging.debug('Destroying all virsh networks')
+ for network in conn.listNetworks():
+ if network in constants.OPNFV_NETWORK_TYPES:
+ virsh_net = conn.networkLookupByName(network)
+ logging.debug("Destroying virsh network: {}".format(network))
+ if virsh_net.isActive():
+ virsh_net.destroy()
+ virsh_net.undefine()
+
+
def main():
clean_parser = argparse.ArgumentParser()
clean_parser.add_argument('-i',
@@ -123,11 +147,7 @@ def main():
# Delete vbmc
clean_vbmcs()
# Clean network config
- for network in constants.ADMIN_NETWORK, constants.EXTERNAL_NETWORK:
- logging.info("Cleaning Jump Host Network config for network "
- "{}".format(network))
- jumphost.detach_interface_from_ovs(network)
- jumphost.remove_ovs_bridge(network)
+ clean_networks()
# clean pub keys from root's auth keys
clean_ssh_keys()
diff --git a/apex/tests/test_apex_clean.py b/apex/tests/test_apex_clean.py
index b6b9d428..b3ead6f7 100644
--- a/apex/tests/test_apex_clean.py
+++ b/apex/tests/test_apex_clean.py
@@ -100,3 +100,15 @@ class TestClean:
ml.listDefinedDomains.return_value = ['undercloud']
ml.lookupByName.return_value = dummy_domain()
assert clean.clean_vms() is None
+
+ @patch('apex.network.jumphost.detach_interface_from_ovs')
+ @patch('apex.network.jumphost.remove_ovs_bridge')
+ @patch('libvirt.open')
+ def test_clean_networks(self, mock_libvirt, mock_jumphost_ovs_remove,
+ mock_jumphost_detach):
+ ml = mock_libvirt.return_value
+ ml.listNetworks.return_value = ['admin', 'external', 'tenant', 'blah']
+ mock_net = ml.networkLookupByName.return_value
+ mock_net.isActive.return_value = True
+ clean.clean_networks()
+ assert_equal(mock_net.destroy.call_count, 3)