summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZuul <zuul@review.opendev.org>2022-03-07 16:49:41 +0000
committerGerrit Code Review <review@openstack.org>2022-03-07 16:49:41 +0000
commit75178ffeb3a4b6819bb9116e2785ece83882f72b (patch)
tree99dc890398cd18d2332eebc577c8f929fee6fb37
parent6331605d6c5c44802efb2c6215c6e09354c95e76 (diff)
parent8de7e84d5b0fdbdb2fa84d9b687819bdb48060e7 (diff)
downloadironic-75178ffeb3a4b6819bb9116e2785ece83882f72b.tar.gz
Merge "Inspector: better error message on DiscoveryFailure" into stable/xena
-rw-r--r--ironic/drivers/modules/inspector.py12
-rw-r--r--ironic/tests/unit/drivers/modules/test_inspector.py12
2 files changed, 21 insertions, 3 deletions
diff --git a/ironic/drivers/modules/inspector.py b/ironic/drivers/modules/inspector.py
index b344abb74..0a3219b71 100644
--- a/ironic/drivers/modules/inspector.py
+++ b/ironic/drivers/modules/inspector.py
@@ -21,6 +21,7 @@ from urllib import parse as urlparse
import eventlet
from futurist import periodics
+from keystoneauth1 import exceptions as ks_exception
import openstack
from oslo_log import log as logging
@@ -66,9 +67,14 @@ def _get_client(context):
conf['ironic-inspector'] = conf.pop('inspector')
# TODO(pas-ha) investigate possibility of passing user context here,
# similar to what neutron/glance-related code does
- return openstack.connection.Connection(
- session=session,
- oslo_conf=conf).baremetal_introspection
+ try:
+ return openstack.connection.Connection(
+ session=session,
+ oslo_conf=conf).baremetal_introspection
+ except ks_exception.DiscoveryFailure as exc:
+ raise exception.ConfigInvalid(
+ _("Could not contact ironic-inspector for version discovery: %s")
+ % exc)
def _get_callback_endpoint(client):
diff --git a/ironic/tests/unit/drivers/modules/test_inspector.py b/ironic/tests/unit/drivers/modules/test_inspector.py
index d0a529852..005b3434b 100644
--- a/ironic/tests/unit/drivers/modules/test_inspector.py
+++ b/ironic/tests/unit/drivers/modules/test_inspector.py
@@ -13,6 +13,7 @@
from unittest import mock
import eventlet
+from keystoneauth1 import exceptions as ks_exception
import openstack
from ironic.common import context
@@ -61,6 +62,17 @@ class GetClientTestCase(db_base.DbTestCase):
self.assertEqual(1, mock_auth.call_count)
self.assertEqual(1, mock_session.call_count)
+ def test__get_client_connection_problem(
+ self, mock_conn, mock_session, mock_auth):
+ mock_conn.side_effect = ks_exception.DiscoveryFailure("")
+ self.assertRaises(exception.ConfigInvalid,
+ inspector._get_client, self.context)
+ mock_conn.assert_called_once_with(
+ session=mock.sentinel.session,
+ oslo_conf=mock.ANY)
+ self.assertEqual(1, mock_auth.call_count)
+ self.assertEqual(1, mock_session.call_count)
+
class BaseTestCase(db_base.DbTestCase):
def setUp(self):