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-20 17:43:32 -0400
commit02dc854a504569da15b0e41353a9f456e02599ad (patch)
tree8463a45f542e38f904fd1e1a7c4db8700f596e27
parent946251720965cd5da9f6798d3ff931950524dd24 (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>
-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)