From fe2c09482eb9184b50cbc93ff8112d10bd8010c3 Mon Sep 17 00:00:00 2001 From: Ilya Shakhat Date: Wed, 9 Aug 2017 13:42:37 +0200 Subject: [PATCH] Show proper error message if Heat is not present Change-Id: I0cd5662aec4ad80d413782ad9830a9825c5abc64 --- shaker/engine/server.py | 5 +++++ shaker/openstack/clients/openstack.py | 7 +++++++ 2 files changed, 12 insertions(+) diff --git a/shaker/engine/server.py b/shaker/engine/server.py index c4903f3..0459746 100644 --- a/shaker/engine/server.py +++ b/shaker/engine/server.py @@ -29,6 +29,7 @@ from shaker.engine import messaging from shaker.engine import quorum as quorum_pkg from shaker.engine import report from shaker.engine import utils +from shaker.openstack.clients import openstack as openstack_clients LOG = logging.getLogger(__name__) @@ -160,9 +161,13 @@ def play_scenario(message_queue, scenario): openstack_params, cfg.CONF.flavor_name, cfg.CONF.image_name, cfg.CONF.external_net, cfg.CONF.dns_nameservers) + except openstack_clients.OpenStackClientException: + raise except Exception as e: LOG.warning('Failed to connect to OpenStack: %s. Please ' 'verify parameters: %s', e, openstack_params) + # try to proceed even if OpenStack connection fails + # (in case scenario does not need it) base_dir = os.path.dirname(scenario['file_name']) scenario_deployment = scenario.get('deployment', {}) diff --git a/shaker/openstack/clients/openstack.py b/shaker/openstack/clients/openstack.py index 4886f82..c89834b 100644 --- a/shaker/openstack/clients/openstack.py +++ b/shaker/openstack/clients/openstack.py @@ -20,6 +20,10 @@ from oslo_log import log as logging LOG = logging.getLogger(__name__) +class OpenStackClientException(Exception): + pass + + class OpenStackClient(object): def __init__(self, openstack_params): LOG.debug('Establishing connection to OpenStack') @@ -36,6 +40,9 @@ class OpenStackClient(object): # heat client wants endpoint to be always set endpoint = cloud_config.get_session_endpoint('orchestration') + if not endpoint: + raise OpenStackClientException( + 'Endpoint for orchestration service is not found') self.heat = cloud_config.get_legacy_client('orchestration', endpoint=endpoint)