aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--functest/core/singlevm.py21
-rw-r--r--functest/utils/env.py3
2 files changed, 23 insertions, 1 deletions
diff --git a/functest/core/singlevm.py b/functest/core/singlevm.py
index dce6d819b..0473a21da 100644
--- a/functest/core/singlevm.py
+++ b/functest/core/singlevm.py
@@ -237,6 +237,25 @@ class VmReady1(tenantnetwork.TenantNetwork1):
self.__logger.error("cannot find regex '%s' in console", regex)
return False
+ def clean_orphan_security_groups(self):
+ """Clean all security groups which are not owned by an existing tenant
+
+ It lists all orphan security groups in use as debug to avoid
+ misunderstanding the testcase results (it could happen if cloud admin
+ removes accounts without cleaning the virtual machines)
+ """
+ sec_groups = self.orig_cloud.list_security_groups()
+ for sec_group in sec_groups:
+ if not sec_group.tenant_id:
+ continue
+ if not self.orig_cloud.get_project(sec_group.tenant_id):
+ self.__logger.debug("Cleaning security group %s", sec_group.id)
+ try:
+ self.orig_cloud.delete_security_group(sec_group.id)
+ except Exception: # pylint: disable=broad-except
+ self.__logger.debug(
+ "Orphan security group %s in use", sec_group.id)
+
def run(self, **kwargs):
"""Boot the new VM
@@ -273,6 +292,8 @@ class VmReady1(tenantnetwork.TenantNetwork1):
self.cloud.delete_image(self.image.id)
if self.flavor:
self.orig_cloud.delete_flavor(self.flavor.id)
+ if env.get('CLEAN_ORPHAN_SECURITY_GROUPS').lower() == 'true':
+ self.clean_orphan_security_groups()
except Exception: # pylint: disable=broad-except
self.__logger.exception("Cannot clean all resources")
diff --git a/functest/utils/env.py b/functest/utils/env.py
index c5869e449..8c003092d 100644
--- a/functest/utils/env.py
+++ b/functest/utils/env.py
@@ -35,7 +35,8 @@ INPUTS = {
'NAMESERVER': '8.8.8.8',
'NEW_USER_ROLE': 'Member',
'USE_DYNAMIC_CREDENTIALS': 'True',
- 'BLOCK_MIGRATION': 'True'
+ 'BLOCK_MIGRATION': 'True',
+ 'CLEAN_ORPHAN_SECURITY_GROUPS': 'True'
}