summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTim Rozet <trozet@redhat.com>2017-09-18 21:48:45 -0400
committerTim Rozet <trozet@redhat.com>2017-09-21 13:35:14 +0000
commitf9d02c076974168677bf5fdb02f26caf73924fb8 (patch)
tree9f723ded40d338f11421359acb4ac71f4a4cc167
parent4770ea6a40807b0f80a15e406703443b9a147955 (diff)
Improves clean to cleanup virsh nets and and other bridges
Currently only the admin and external bridges will be removed from the jumphost which is only really clean for a baremetal deployment. Virtual deployments will leave br-tenant, br-api, br-storage. This patch removes those as well as deletes all Apex virsh networks from libvirt. Also checks if authorized_keys exists before trying to edit it. Change-Id: I1affe2733ba1dc38fd3b91fb14398454137f00a4 Signed-off-by: Tim Rozet <trozet@redhat.com> (cherry picked from commit 02dc854a504569da15b0e41353a9f456e02599ad)
-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)