diff options
-rw-r--r-- | testcases/VIM/OpenStack/CI/libraries/clean_openstack.py | 44 | ||||
-rw-r--r-- | testcases/functest_utils.py | 14 |
2 files changed, 39 insertions, 19 deletions
diff --git a/testcases/VIM/OpenStack/CI/libraries/clean_openstack.py b/testcases/VIM/OpenStack/CI/libraries/clean_openstack.py index 4f950b228..eab89d22d 100644 --- a/testcases/VIM/OpenStack/CI/libraries/clean_openstack.py +++ b/testcases/VIM/OpenStack/CI/libraries/clean_openstack.py @@ -134,8 +134,14 @@ def remove_volumes(cinder_client): if functest_utils.delete_volume(cinder_client, volume_id): logger.debug(" > Done!") else: - logger.info(" > ERROR: There has been a problem removing the " - "volume %s..." % volume_id) + logger.debug("Trying forced removal...") + if functest_utils.delete_volume(cinder_client, + volume_id, + forced=True): + logger.debug(" > Done!") + else: + logger.info(" > ERROR: There has been a problem removing the " + "volume %s..." % volume_id) def remove_floatingips(nova_client): @@ -177,11 +183,13 @@ def remove_networks(neutron_client): net_id = network['id'] net_name = network['name'] logger.debug(" '%s', ID=%s " %(net_name,net_id)) - if net_name not in default_networks: - logger.debug(" > this is not a default network and will be deleted.") - network_ids.append(net_id) - else: + if net_name in default_networks: logger.debug(" > this is a default network and will NOT be deleted.") + elif network['router:external'] == True: + logger.debug(" > this is an external network and will NOT be deleted.") + else: + logger.debug(" > this network will be deleted.") + network_ids.append(net_id) #delete ports ports = functest_utils.get_port_list(neutron_client) @@ -225,6 +233,7 @@ def remove_ports(neutron_client, ports, network_ids): else: logger.info(" > ERROR: There has been a problem removing the " "port %s ..." %port_id) + force_remove_port(neutron_client, port_id) elif port['device_owner'] == 'network:router_interface': logger.debug("Detaching port %s (subnet %s) from router %s ..." @@ -236,16 +245,21 @@ def remove_ports(neutron_client, ports, network_ids): else: logger.info(" > ERROR: There has been a problem removing the " "interface %s from router %s..." %(subnet_id,router_id)) + force_remove_port(neutron_client, port_id) else: - logger.debug("Clearing device_owner for port %s ..." % port_id) - functest_utils.update_neutron_port(neutron_client, - port_id, - device_owner='clear') - logger.debug("Removing port %s ..." % port_id) - if functest_utils.delete_neutron_port(neutron_client, port_id): - logger.debug(" > Done!") - else: - logger.debug(" > Port %s could not be removed directly" % port_id) + force_remove_port(neutron_client, port_id) + + +def force_remove_port(neutron_client, port_id): + logger.debug("Clearing device_owner for port %s ..." % port_id) + functest_utils.update_neutron_port(neutron_client, + port_id, + device_owner='clear') + logger.debug("Removing port %s ..." % port_id) + if functest_utils.delete_neutron_port(neutron_client, port_id): + logger.debug(" > Done!") + else: + logger.info(" > ERROR: Deleting port %s failed" % port_id) def remove_routers(neutron_client, routers): diff --git a/testcases/functest_utils.py b/testcases/functest_utils.py index 888c043fd..53f5706c9 100644 --- a/testcases/functest_utils.py +++ b/testcases/functest_utils.py @@ -414,10 +414,16 @@ def get_volumes(cinder_client): except: return None - -def delete_volume(cinder_client, volume_id): - try: - cinder_client.volumes.delete(volume_id) +def delete_volume(cinder_client, volume_id, forced=False): + try: + if forced: + try: + cinder_client.volumes.detach(volume_id) + except: + print "Error:", sys.exc_info()[0] + cinder_client.volumes.force_delete(volume_id) + else: + cinder_client.volumes.delete(volume_id) return True except: print "Error:", sys.exc_info()[0] |