# http://www.apache.org/licenses/LICENSE-2.0
#
-import argparse
-import logging
import os
import time
import yaml
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/'
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
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 "
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:
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
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"
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
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 "
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
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:
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:
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:
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:
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 "
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 "
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!")
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..."
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 "
"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 "
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
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 "
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
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 "
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
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 "
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'],
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)
remove_tenants(keystone_client)
separator()
- exit(0)
-
if __name__ == '__main__':
main()