Allow skipping list_services 75/68475/1
authorCédric Ollivier <cedric.ollivier@orange.com>
Thu, 12 Sep 2019 09:15:06 +0000 (11:15 +0200)
committerCédric Ollivier <cedric.ollivier@orange.com>
Thu, 12 Sep 2019 18:31:12 +0000 (20:31 +0200)
Shade forces the use of admin endpoints when listing services [1].

A new env var is added to allow running Functest when only public
endpoints are reachable (e.g. testing from a VM as proposed for ONAP
integration).

It seems the best approach as list_services provides key data and
we do avoid blocking requests.

It seems easier and more generic than listing all calls in
testcases.yaml.

[1] https://github.com/openstack/shade/blob/master/shade/openstackcloud.py#L9956

Change-Id: Idcbe5d364f4230ffe1da34e7da0e99e863f15c5e
Signed-off-by: Cédric Ollivier <cedric.ollivier@orange.com>
(cherry picked from commit f3072c8b1f32feacc9785165477efee9a328eb2e)

functest/opnfv_tests/openstack/api/connection_check.py
functest/utils/env.py

index 48d0621..7a320b5 100644 (file)
@@ -16,11 +16,20 @@ import os_client_config
 import shade
 from xtesting.core import testcase
 
+from functest.utils import env
+
 
 class ConnectionCheck(testcase.TestCase):
     """Perform simplest queries"""
     __logger = logging.getLogger(__name__)
 
+    func_list = [
+        "get_network_extensions", "list_aggregates", "list_domains",
+        "list_endpoints", "list_floating_ip_pools", "list_floating_ips",
+        "list_hypervisors", "list_keypairs", "list_networks", "list_ports",
+        "list_role_assignments", "list_roles", "list_routers", "list_servers",
+        "list_services", "list_subnets"]
+
     def __init__(self, **kwargs):
         if "case_name" not in kwargs:
             kwargs["case_name"] = 'connection_check'
@@ -38,13 +47,12 @@ class ConnectionCheck(testcase.TestCase):
         try:
             assert self.cloud
             self.start_time = time.time()
-            for func in ["get_network_extensions",
-                         "list_aggregates", "list_domains", "list_endpoints",
-                         "list_floating_ip_pools", "list_floating_ips",
-                         "list_hypervisors", "list_keypairs", "list_networks",
-                         "list_ports", "list_role_assignments", "list_roles",
-                         "list_routers", "list_servers", "list_services",
-                         "list_subnets"]:
+            if env.get('PUBLIC_ENDPOINT_ONLY').lower() == 'true':
+                self.__logger.warning(
+                    "Listing services is skipped "
+                    "because the admin endpoints are unreachable")
+                self.func_list.remove("list_services")
+            for func in self.func_list:
                 self.__logger.debug(
                     "%s: %s", func, getattr(self.cloud, func)())
             data = self.cloud._network_client.get("/service-providers.json")
index 892d174..ba8d6ce 100644 (file)
@@ -39,7 +39,8 @@ INPUTS = {
     'NEW_USER_ROLE': 'Member',
     'USE_DYNAMIC_CREDENTIALS': 'True',
     'BLOCK_MIGRATION': 'True',
-    'CLEAN_ORPHAN_SECURITY_GROUPS': 'True'
+    'CLEAN_ORPHAN_SECURITY_GROUPS': 'True',
+    'PUBLIC_ENDPOINT_ONLY': 'False'
 }