diff --git a/heat_integrationtests/common/test.py b/heat_integrationtests/common/test.py index b422012f96..e387f3e73e 100644 --- a/heat_integrationtests/common/test.py +++ b/heat_integrationtests/common/test.py @@ -18,6 +18,7 @@ import time import fixtures from heatclient import exc as heat_exceptions +from keystoneauth1 import exceptions as kc_exceptions from neutronclient.common import exceptions as network_exceptions from oslo_log import log as logging from oslo_utils import timeutils @@ -194,6 +195,15 @@ class HeatIntegrationTest(testscenarios.WithScenarios, return False return True + def is_service_available(self, service_type): + try: + self.identity_client.get_endpoint_url( + service_type, self.conf.region) + except kc_exceptions.EndpointNotFound: + return False + else: + return True + @staticmethod def _stack_output(stack, output_key, validate_errors=True): """Return a stack output value for a given key.""" diff --git a/heat_integrationtests/functional/test_aws_stack.py b/heat_integrationtests/functional/test_aws_stack.py index 1241d22aad..05539dca85 100644 --- a/heat_integrationtests/functional/test_aws_stack.py +++ b/heat_integrationtests/functional/test_aws_stack.py @@ -72,6 +72,8 @@ Outputs: def setUp(self): super(AwsStackTest, self).setUp() + if not self.is_service_available('object-store'): + self.skipTest('object-store service not available, skipping') self.object_container_name = test.rand_name() self.project_id = self.identity_client.project_id self.swift_key = hashlib.sha224( diff --git a/heat_integrationtests/functional/test_swiftsignal_update.py b/heat_integrationtests/functional/test_swiftsignal_update.py index 0cf2f81b28..9e656b1048 100644 --- a/heat_integrationtests/functional/test_swiftsignal_update.py +++ b/heat_integrationtests/functional/test_swiftsignal_update.py @@ -34,6 +34,8 @@ outputs: class SwiftSignalHandleUpdateTest(functional_base.FunctionalTestsBase): def test_stack_update_same_template_replace_no_url(self): + if not self.is_service_available('object-store'): + self.skipTest('object-store service not available, skipping') stack_identifier = self.stack_create(template=test_template) stack = self.client.stacks.get(stack_identifier) orig_url = self._stack_output(stack, 'signal_url')