behave_tests: add unit tests for TestAPI client
[nfvbench.git] / nfvbench / cleanup.py
index 22ed3c1..cefdcfa 100644 (file)
@@ -15,7 +15,6 @@
 #
 
 import sys
-import time
 
 from neutronclient.neutron import client as nclient
 from novaclient.client import Client
@@ -24,6 +23,7 @@ from tabulate import tabulate
 
 from . import credentials
 from .log import LOG
+from . import utils
 
 
 class ComputeCleaner(object):
@@ -36,13 +36,6 @@ class ComputeCleaner(object):
         self.servers = [server for server in all_servers
                         if server.name.startswith(instance_prefix)]
 
-    def instance_exists(self, server):
-        try:
-            self.nova_client.servers.get(server.id)
-        except NotFound:
-            return False
-        return True
-
     def get_resource_list(self):
         return [["Instance", server.name, server.id] for server in self.servers]
 
@@ -59,29 +52,8 @@ class ComputeCleaner(object):
         if self.clean_needed(clean_options):
             if self.servers:
                 for server in self.servers:
-                    try:
-                        LOG.info('Deleting instance %s...', server.name)
-                        self.nova_client.servers.delete(server.id)
-                    except Exception:
-                        LOG.exception("Instance %s deletion failed", server.name)
-                LOG.info('    Waiting for %d instances to be fully deleted...', len(self.servers))
-                retry_count = 15 + len(self.servers) * 5
-                while True:
-                    retry_count -= 1
-                    self.servers = [server for server in self.servers if
-                                    self.instance_exists(server)]
-                    if not self.servers:
-                        break
-
-                    if retry_count:
-                        LOG.info('    %d yet to be deleted by Nova, retries left=%d...',
-                                 len(self.servers), retry_count)
-                        time.sleep(2)
-                    else:
-                        LOG.warning(
-                            '    instance deletion verification time-out: %d still not deleted',
-                            len(self.servers))
-                        break
+                    utils.delete_server(self.nova_client, server)
+                utils.waiting_servers_deletion(self.nova_client, self.servers)
 
 
 class NetworkCleaner(object):
@@ -96,7 +68,7 @@ class NetworkCleaner(object):
         for net in all_networks:
             netname = net['name']
             for prefix in network_name_prefixes:
-                if netname.startswith(prefix):
+                if prefix and netname.startswith(prefix):
                     self.networks.append(net)
                     net_ids.append(net['id'])
                     break
@@ -263,14 +235,14 @@ class Cleaner(object):
     """Cleaner for all NFVbench resources."""
 
     def __init__(self, config):
-        cred = credentials.Credentials(config.openrc_file, None, False)
+        cred = credentials.Credentials(config.openrc_file, config.clouds_detail, None, False)
         session = cred.get_session()
         self.neutron_client = nclient.Client('2.0', session=session)
         self.nova_client = Client(2, session=session)
         network_names = [inet['name'] for inet in config.internal_networks.values()]
         network_names.extend([inet['name'] for inet in config.edge_networks.values()])
-        network_names.extend(config.management_network['name'])
-        network_names.extend(config.floating_network['name'])
+        network_names.append(config.management_network['name'])
+        network_names.append(config.floating_network['name'])
         router_names = [rtr['router_name'] for rtr in config.edge_networks.values()]
         # add idle networks as well
         if config.idle_networks.name: