Update to Alpine 3.14
[functest.git] / functest / core / tenantnetwork.py
index 604e49a..f8e4ddd 100644 (file)
@@ -20,17 +20,17 @@ This classes could be reused by more complexed scenarios (Single VM)
 
 import logging
 import os
-import random
-import string
 import time
 import uuid
 
 import os_client_config
 import shade
+from tempest.lib.common.utils import data_utils
 from xtesting.core import testcase
 
 from functest.utils import config
 from functest.utils import env
+from functest.utils import functest_utils
 
 
 class NewProject():
@@ -55,8 +55,8 @@ class NewProject():
         """Create projects/users"""
         assert self.orig_cloud
         assert self.case_name
-        self.password = ''.join(random.choice(
-            string.ascii_letters + string.digits) for _ in range(30))
+        self.password = data_utils.rand_password().replace('%', '!')
+        self.__logger.debug("password: %s", self.password)
         self.domain = self.orig_cloud.get_domain(
             name_or_id=self.orig_cloud.auth.get(
                 "project_domain_name", "Default"))
@@ -146,27 +146,28 @@ class TenantNetwork1(testcase.TestCase):
     __logger = logging.getLogger(__name__)
     cidr = '192.168.120.0/24'
     shared_network = False
-    allow_no_fip = False
 
     def __init__(self, **kwargs):
         if "case_name" not in kwargs:
             kwargs["case_name"] = 'tenantnetwork1'
-        super(TenantNetwork1, self).__init__(**kwargs)
-        self.res_dir = os.path.join(
-            getattr(config.CONF, 'dir_results'), self.case_name)
+        super().__init__(**kwargs)
+        self.dir_results = os.path.join(getattr(config.CONF, 'dir_results'))
+        self.res_dir = os.path.join(self.dir_results, self.case_name)
+        self.output_log_name = 'functest.log'
+        self.output_debug_log_name = 'functest.debug.log'
+        self.ext_net = None
         try:
             cloud_config = os_client_config.get_config()
             self.cloud = self.orig_cloud = shade.OpenStackCloud(
                 cloud_config=cloud_config)
         except Exception:  # pylint: disable=broad-except
             self.cloud = self.orig_cloud = None
-            self.ext_net = None
             self.__logger.exception("Cannot connect to Cloud")
-        try:
-            self.ext_net = self.get_external_network(self.cloud)
-        except Exception:  # pylint: disable=broad-except
-            self.ext_net = None
-            self.__logger.exception("Cannot get the external network")
+        if env.get('NO_TENANT_NETWORK').lower() != 'true':
+            try:
+                self.ext_net = self.get_external_network(self.cloud)
+            except Exception:  # pylint: disable=broad-except
+                self.__logger.exception("Cannot get the external network")
         self.guid = str(uuid.uuid4())
         self.network = None
         self.subnet = None
@@ -203,7 +204,7 @@ class TenantNetwork1(testcase.TestCase):
     @staticmethod
     def get_public_auth_url(cloud):
         """Get Keystone public endpoint"""
-        keystone_id = cloud.search_services('keystone')[0].id
+        keystone_id = functest_utils.search_services(cloud, 'keystone')[0].id
         endpoint = cloud.search_endpoints(
             filters={'interface': 'public',
                      'service_id': keystone_id})[0].url
@@ -218,7 +219,7 @@ class TenantNetwork1(testcase.TestCase):
         Raises: expection on error
         """
         assert self.cloud
-        if not self.allow_no_fip:
+        if env.get('NO_TENANT_NETWORK').lower() != 'true':
             assert self.ext_net
         provider = {}
         if hasattr(config.CONF, '{}_network_type'.format(self.case_name)):
@@ -263,7 +264,8 @@ class TenantNetwork1(testcase.TestCase):
         try:
             assert self.cloud
             self.start_time = time.time()
-            self.create_network_resources()
+            if env.get('NO_TENANT_NETWORK').lower() != 'true':
+                self.create_network_resources()
             self.result = 100
             status = testcase.TestCase.EX_OK
         except Exception:  # pylint: disable=broad-except
@@ -304,7 +306,7 @@ class TenantNetwork2(TenantNetwork1):
     def __init__(self, **kwargs):
         if "case_name" not in kwargs:
             kwargs["case_name"] = 'tenantnetwork2'
-        super(TenantNetwork2, self).__init__(**kwargs)
+        super().__init__(**kwargs)
         try:
             assert self.cloud
             self.project = NewProject(
@@ -318,7 +320,7 @@ class TenantNetwork2(TenantNetwork1):
 
     def clean(self):
         try:
-            super(TenantNetwork2, self).clean()
+            super().clean()
             assert self.project
             self.project.clean()
         except Exception:  # pylint: disable=broad-except