Merge "Add extra check to avoid double delete of instances"
[functest.git] / functest / utils / openstack_clean.py
index bf582de..ce61fca 100755 (executable)
@@ -9,6 +9,8 @@
 #       - Neutron networks, subnets and ports
 #       - Routers
 #       - Users and tenants
+#       - Tacker VNFDs and VNFs
+#       - Tacker SFCs and SFC classifiers
 #
 # Author:
 #    jose.lausuch@ericsson.com
 #
 
 import time
-import functest.utils.functest_logger as ft_logger
-import functest.utils.functest_utils as ft_utils
-import functest.utils.openstack_utils as os_utils
+
 import yaml
 
+import functest.utils.functest_logger as ft_logger
+import functest.utils.openstack_utils as os_utils
+from functest.utils.constants import CONST
 
 logger = ft_logger.Logger("openstack_clean").getLogger()
 
-OS_SNAPSHOT_FILE = \
-    ft_utils.get_functest_config("general.openstack.snapshot_file")
+OS_SNAPSHOT_FILE = CONST.openstack_snapshot_file
 
 
 def separator():
@@ -47,9 +49,14 @@ def remove_instances(nova_client, default_instances):
     for instance in instances:
         instance_name = getattr(instance, 'name')
         instance_id = getattr(instance, 'id')
+        instance_status = getattr(instance, 'status')
+        instance_state = getattr(instance, 'OS-EXT-STS:task_state')
+
         logger.debug("'%s', ID=%s " % (instance_name, instance_id))
         if (instance_id not in default_instances and
-                instance_name not in default_instances.values()):
+                instance_name not in default_instances.values() and
+                instance_status != 'DELETED' and
+                (instance_status != 'BUILD' or instance_state != 'deleting')):
             logger.debug("Removing instance '%s' ..." % instance_id)
             if os_utils.delete_instance(nova_client, instance_id):
                 logger.debug("  > Request sent.")
@@ -107,7 +114,7 @@ def remove_volumes(cinder_client, default_volumes):
 
     for volume in volumes:
         volume_id = getattr(volume, 'id')
-        volume_name = getattr(volume, 'display_name')
+        volume_name = getattr(volume, 'name')
         logger.debug("'%s', ID=%s " % (volume_name, volume_id))
         if (volume_id not in default_volumes and
                 volume_name not in default_volumes.values()):