aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorCédric Ollivier <cedric.ollivier@orange.com>2019-09-12 11:15:06 +0200
committerCédric Ollivier <cedric.ollivier@orange.com>2019-09-12 11:21:48 +0200
commitf3072c8b1f32feacc9785165477efee9a328eb2e (patch)
tree0d5b7b1833a3f5c88c53b4fc00f2b39263428f6e
parent2457aaf32867cfc77596465e2f0dec8e8033c9a9 (diff)
Allow skipping list_services
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>
-rw-r--r--functest/opnfv_tests/openstack/api/connection_check.py22
-rw-r--r--functest/utils/env.py3
2 files changed, 17 insertions, 8 deletions
diff --git a/functest/opnfv_tests/openstack/api/connection_check.py b/functest/opnfv_tests/openstack/api/connection_check.py
index 48d06211b..7a320b5e4 100644
--- a/functest/opnfv_tests/openstack/api/connection_check.py
+++ b/functest/opnfv_tests/openstack/api/connection_check.py
@@ -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")
diff --git a/functest/utils/env.py b/functest/utils/env.py
index 8c003092d..04919acce 100644
--- a/functest/utils/env.py
+++ b/functest/utils/env.py
@@ -36,7 +36,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'
}