From 430b7e154f847b0dfb99c8419a999074e175e1e7 Mon Sep 17 00:00:00 2001 From: Ciprian Barbu Date: Thu, 2 Mar 2017 19:27:24 +0200 Subject: Add extra check to avoid double delete of instances JIRA: FUNCTEST-748 Sometimes Openstack doesn't handle deletion in a timely manner which can lead to openstack_clean to think there are leftovers from a previous test when in fact the instances are pending deletion. This patch tries to better handle this kind of situation that would otherwise result in a double free and eventually (HTTP 500) Change-Id: Id0d9b61d8380e9b12fc7acd46cd84260714f4baf Signed-off-by: Ciprian Barbu --- functest/utils/openstack_clean.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) (limited to 'functest/utils') diff --git a/functest/utils/openstack_clean.py b/functest/utils/openstack_clean.py index 15a8f33d..ce61fcac 100755 --- a/functest/utils/openstack_clean.py +++ b/functest/utils/openstack_clean.py @@ -49,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.") -- cgit 1.2.3-korg