Create a private shared network for Rally
[functest.git] / utils / clean_openstack.py
index 838927f..4ad5d5b 100644 (file)
@@ -20,8 +20,6 @@
 # http://www.apache.org/licenses/LICENSE-2.0
 #
 
-import argparse
-import logging
 import os
 import time
 import yaml
@@ -31,27 +29,12 @@ from neutronclient.v2_0 import client as neutronclient
 from keystoneclient.v2_0 import client as keystoneclient
 from cinderclient import client as cinderclient
 
-import openstack_utils
-
-parser = argparse.ArgumentParser()
-parser.add_argument("-d", "--debug", help="Debug mode", action="store_true")
-args = parser.parse_args()
+import functest.utils.functest_logger as ft_logger
+import functest.utils.openstack_utils as os_utils
 
 
 """ logging configuration """
-logger = logging.getLogger('clean_openstack')
-logger.setLevel(logging.DEBUG)
-
-ch = logging.StreamHandler()
-if args.debug:
-    ch.setLevel(logging.DEBUG)
-else:
-    ch.setLevel(logging.INFO)
-
-formatter = logging.Formatter('%(asctime)s - %(name)s - '
-                              '%(levelname)s - %(message)s')
-ch.setFormatter(formatter)
-logger.addHandler(ch)
+logger = ft_logger.Logger("clean_openstack").getLogger()
 
 REPO_PATH = os.environ['repos_dir'] + '/functest/'
 
@@ -83,7 +66,7 @@ def separator():
 
 def remove_instances(nova_client):
     logger.info("Removing Nova instances...")
-    instances = openstack_utils.get_instances(nova_client)
+    instances = os_utils.get_instances(nova_client)
     if instances is None or len(instances) == 0:
         logger.debug("No instances found.")
         return
@@ -93,7 +76,7 @@ def remove_instances(nova_client):
         instance_id = getattr(instance, 'id')
         logger.debug("Removing instance '%s', ID=%s ..."
                      % (instance_name, instance_id))
-        if openstack_utils.delete_instance(nova_client, instance_id):
+        if os_utils.delete_instance(nova_client, instance_id):
             logger.debug("  > Done!")
         else:
             logger.error("There has been a problem removing the "
@@ -101,7 +84,7 @@ def remove_instances(nova_client):
 
     timeout = 50
     while timeout > 0:
-        instances = openstack_utils.get_instances(nova_client)
+        instances = os_utils.get_instances(nova_client)
         if instances is None or len(instances) == 0:
             break
         else:
@@ -112,7 +95,7 @@ def remove_instances(nova_client):
 
 def remove_images(nova_client):
     logger.info("Removing Glance images...")
-    images = openstack_utils.get_images(nova_client)
+    images = os_utils.get_images(nova_client)
     if images is None or len(images) == 0:
         logger.debug("No images found.")
         return
@@ -124,7 +107,7 @@ def remove_images(nova_client):
         if image_id not in default_images:
             logger.debug("Removing image '%s', ID=%s ..."
                          % (image_name, image_id))
-            if openstack_utils.delete_glance_image(nova_client, image_id):
+            if os_utils.delete_glance_image(nova_client, image_id):
                 logger.debug("  > Done!")
             else:
                 logger.error("There has been a problem removing the"
@@ -136,7 +119,7 @@ def remove_images(nova_client):
 
 def remove_volumes(cinder_client):
     logger.info("Removing Cinder volumes...")
-    volumes = openstack_utils.get_volumes(cinder_client)
+    volumes = os_utils.get_volumes(cinder_client)
     if volumes is None or len(volumes) == 0:
         logger.debug("No volumes found.")
         return
@@ -147,13 +130,13 @@ def remove_volumes(cinder_client):
         logger.debug("'%s', ID=%s " % (volume_name, volume_id))
         if volume_id not in default_volumes:
             logger.debug("Removing cinder volume %s ..." % volume_id)
-            if openstack_utils.delete_volume(cinder_client, volume_id):
+            if os_utils.delete_volume(cinder_client, volume_id):
                 logger.debug("  > Done!")
             else:
                 logger.debug("Trying forced removal...")
-                if openstack_utils.delete_volume(cinder_client,
-                                                 volume_id,
-                                                 forced=True):
+                if os_utils.delete_volume(cinder_client,
+                                          volume_id,
+                                          forced=True):
                     logger.debug("  > Done!")
                 else:
                     logger.error("There has been a problem removing the "
@@ -165,7 +148,7 @@ def remove_volumes(cinder_client):
 
 def remove_floatingips(nova_client):
     logger.info("Removing floating IPs...")
-    floatingips = openstack_utils.get_floating_ips(nova_client)
+    floatingips = os_utils.get_floating_ips(nova_client)
     if floatingips is None or len(floatingips) == 0:
         logger.debug("No floating IPs found.")
         return
@@ -178,7 +161,7 @@ def remove_floatingips(nova_client):
         logger.debug("'%s', ID=%s " % (fip_ip, fip_id))
         if fip_id not in default_floatingips:
             logger.debug("Removing floating IP %s ..." % fip_id)
-            if openstack_utils.delete_floating_ip(nova_client, fip_id):
+            if os_utils.delete_floating_ip(nova_client, fip_id):
                 logger.debug("  > Done!")
                 deleted += 1
             else:
@@ -190,7 +173,7 @@ def remove_floatingips(nova_client):
 
     timeout = 50
     while timeout > 0:
-        floatingips = openstack_utils.get_floating_ips(nova_client)
+        floatingips = os_utils.get_floating_ips(nova_client)
         if floatingips is None or len(floatingips) == (init_len - deleted):
             break
         else:
@@ -202,7 +185,7 @@ def remove_floatingips(nova_client):
 def remove_networks(neutron_client):
     logger.info("Removing Neutron objects")
     network_ids = []
-    networks = openstack_utils.get_network_list(neutron_client)
+    networks = os_utils.get_network_list(neutron_client)
     if networks is None:
         logger.debug("There are no networks in the deployment. ")
     else:
@@ -222,14 +205,14 @@ def remove_networks(neutron_client):
                 network_ids.append(net_id)
 
     # delete ports
-    ports = openstack_utils.get_port_list(neutron_client)
+    ports = os_utils.get_port_list(neutron_client)
     if ports is None:
         logger.debug("There are no ports in the deployment. ")
     else:
         remove_ports(neutron_client, ports, network_ids)
 
     # remove routers
-    routers = openstack_utils.get_router_list(neutron_client)
+    routers = os_utils.get_router_list(neutron_client)
     if routers is None:
         logger.debug("There are no routers in the deployment. ")
     else:
@@ -239,7 +222,7 @@ def remove_networks(neutron_client):
     if network_ids is not None:
         for net_id in network_ids:
             logger.debug("Removing network %s ..." % net_id)
-            if openstack_utils.delete_neutron_net(neutron_client, net_id):
+            if os_utils.delete_neutron_net(neutron_client, net_id):
                 logger.debug("  > Done!")
             else:
                 logger.error("There has been a problem removing the "
@@ -259,8 +242,7 @@ def remove_ports(neutron_client, ports, network_ids):
             router_id = port['device_id']
             if len(port['fixed_ips']) == 0 and router_id == '':
                 logger.debug("Removing port %s ..." % port_id)
-                if (openstack_utils.delete_neutron_port(neutron_client,
-                                                        port_id)):
+                if (os_utils.delete_neutron_port(neutron_client, port_id)):
                     logger.debug("  > Done!")
                 else:
                     logger.error("There has been a problem removing the "
@@ -270,7 +252,7 @@ def remove_ports(neutron_client, ports, network_ids):
             elif port['device_owner'] == 'network:router_interface':
                 logger.debug("Detaching port %s (subnet %s) from router %s ..."
                              % (port_id, subnet_id, router_id))
-                if openstack_utils.remove_interface_router(
+                if os_utils.remove_interface_router(
                         neutron_client, router_id, subnet_id):
                     time.sleep(5)  # leave 5 seconds to detach
                     logger.debug("  > Done!")
@@ -285,11 +267,10 @@ def remove_ports(neutron_client, ports, network_ids):
 
 def force_remove_port(neutron_client, port_id):
     logger.debug("Clearing device_owner for port %s ..." % port_id)
-    openstack_utils.update_neutron_port(neutron_client,
-                                        port_id,
-                                        device_owner='clear')
+    os_utils.update_neutron_port(neutron_client, port_id,
+                                 device_owner='clear')
     logger.debug("Removing port %s ..." % port_id)
-    if openstack_utils.delete_neutron_port(neutron_client, port_id):
+    if os_utils.delete_neutron_port(neutron_client, port_id):
         logger.debug("  > Done!")
     else:
         logger.error("There has been a problem removing the port %s..."
@@ -306,8 +287,7 @@ def remove_routers(neutron_client, routers):
             if router['external_gateway_info'] is not None:
                 logger.debug("Router has gateway to external network."
                              "Removing link...")
-                if openstack_utils.remove_gateway_router(neutron_client,
-                                                         router_id):
+                if os_utils.remove_gateway_router(neutron_client, router_id):
                     logger.debug("  > Done!")
                 else:
                     logger.error("There has been a problem removing "
@@ -317,8 +297,7 @@ def remove_routers(neutron_client, routers):
                              "Ready to remove...")
             logger.debug("Removing router %s(%s) ..."
                          % (router_name, router_id))
-            if openstack_utils.delete_neutron_router(neutron_client,
-                                                     router_id):
+            if os_utils.delete_neutron_router(neutron_client, router_id):
                 logger.debug("  > Done!")
             else:
                 logger.error("There has been a problem removing the "
@@ -327,7 +306,7 @@ def remove_routers(neutron_client, routers):
 
 def remove_security_groups(neutron_client):
     logger.info("Removing Security groups...")
-    secgroups = openstack_utils.get_security_groups(neutron_client)
+    secgroups = os_utils.get_security_groups(neutron_client)
     if secgroups is None or len(secgroups) == 0:
         logger.debug("No security groups found.")
         return
@@ -338,8 +317,7 @@ def remove_security_groups(neutron_client):
         logger.debug("'%s', ID=%s " % (secgroup_name, secgroup_id))
         if secgroup_id not in default_security_groups:
             logger.debug(" Removing '%s'..." % secgroup_name)
-            if openstack_utils.delete_security_group(neutron_client,
-                                                     secgroup_id):
+            if os_utils.delete_security_group(neutron_client, secgroup_id):
                 logger.debug("  > Done!")
             else:
                 logger.error("There has been a problem removing the "
@@ -351,7 +329,7 @@ def remove_security_groups(neutron_client):
 
 def remove_users(keystone_client):
     logger.info("Removing Users...")
-    users = openstack_utils.get_users(keystone_client)
+    users = os_utils.get_users(keystone_client)
     if users is None:
         logger.debug("There are no users in the deployment. ")
         return
@@ -362,7 +340,7 @@ def remove_users(keystone_client):
         logger.debug("'%s', ID=%s " % (user_name, user_id))
         if user_id not in default_users:
             logger.debug(" Removing '%s'..." % user_name)
-            if openstack_utils.delete_user(keystone_client, user_id):
+            if os_utils.delete_user(keystone_client, user_id):
                 logger.debug("  > Done!")
             else:
                 logger.error("There has been a problem removing the "
@@ -374,7 +352,7 @@ def remove_users(keystone_client):
 
 def remove_tenants(keystone_client):
     logger.info("Removing Tenants...")
-    tenants = openstack_utils.get_tenants(keystone_client)
+    tenants = os_utils.get_tenants(keystone_client)
     if tenants is None:
         logger.debug("There are no tenants in the deployment. ")
         return
@@ -385,7 +363,7 @@ def remove_tenants(keystone_client):
         logger.debug("'%s', ID=%s " % (tenant_name, tenant_id))
         if tenant_id not in default_tenants:
             logger.debug(" Removing '%s'..." % tenant_name)
-            if openstack_utils.delete_tenant(keystone_client, tenant_id):
+            if os_utils.delete_tenant(keystone_client, tenant_id):
                 logger.debug("  > Done!")
             else:
                 logger.error("There has been a problem removing the "
@@ -396,16 +374,19 @@ def remove_tenants(keystone_client):
 
 
 def main():
-    creds_nova = openstack_utils.get_credentials("nova")
+    logger.info("+++++++++++++++++++++++++++++++")
+    logger.info("Cleaning OpenStack resources...")
+    logger.info("+++++++++++++++++++++++++++++++")
+    creds_nova = os_utils.get_credentials("nova")
     nova_client = novaclient.Client('2', **creds_nova)
 
-    creds_neutron = openstack_utils.get_credentials("neutron")
+    creds_neutron = os_utils.get_credentials("neutron")
     neutron_client = neutronclient.Client(**creds_neutron)
 
-    creds_keystone = openstack_utils.get_credentials("keystone")
+    creds_keystone = os_utils.get_credentials("keystone")
     keystone_client = keystoneclient.Client(**creds_keystone)
 
-    creds_cinder = openstack_utils.get_credentials("cinder")
+    creds_cinder = os_utils.get_credentials("cinder")
     # cinder_client = cinderclient.Client(**creds_cinder)
     cinder_client = cinderclient.Client('1', creds_cinder['username'],
                                         creds_cinder['api_key'],
@@ -413,7 +394,7 @@ def main():
                                         creds_cinder['auth_url'],
                                         service_type="volume")
 
-    if not openstack_utils.check_credentials():
+    if not os_utils.check_credentials():
         logger.error("Please source the openrc credentials and run "
                      "the script again.")
         exit(-1)
@@ -435,8 +416,6 @@ def main():
     remove_tenants(keystone_client)
     separator()
 
-    exit(0)
-
 
 if __name__ == '__main__':
     main()