Cleanup requirements & tox config, update pylint
[nfvbench.git] / nfvbench / cleanup.py
index 6a79a63..cefdcfa 100644 (file)
 #
 
 import sys
-import time
 
 from neutronclient.neutron import client as nclient
 from novaclient.client import Client
 from novaclient.exceptions import NotFound
 from tabulate import tabulate
 
-import credentials as credentials
-from log import LOG
+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:
@@ -300,20 +272,20 @@ class Cleaner(object):
         LOG.info("NFVbench will delete resources shown...")
         clean_options = None
         if prompt:
-            answer = raw_input("Do you want to delete all ressources? (y/n) ")
+            answer = input("Do you want to delete all ressources? (y/n) ")
             if answer.lower() != 'y':
-                print "What kind of resources do you want to delete?"
+                print("What kind of resources do you want to delete?")
                 all_option = ""
                 all_option_codes = []
                 for cleaner in self.cleaners:
                     code = cleaner.get_cleaner_code()
-                    print "%s: %s" % (code[0], code)
+                    print(("%s: %s" % (code[0], code)))
                     all_option += code[0]
                     all_option_codes.append(code)
-                print "a: all resources - a shortcut for '%s'" % all_option
+                print(("a: all resources - a shortcut for '%s'" % all_option))
                 all_option_codes.append("all resources")
-                print "q: quit"
-                answer_res = raw_input(":").lower()
+                print("q: quit")
+                answer_res = input(":").lower()
                 # Check only first character because answer_res can be "flavor" and it is != all
                 if answer_res[0] == "a":
                     clean_options = all_option