Add keystone host unreachable checks
Raise HostUnreachableException if the property auth_url is wrong Implements blueprint keystone-auth-url-wrong Change-Id: Idf2a07b1535a4a3c53814a1a55959afc59caefe2
This commit is contained in:
parent
de35f19279
commit
e64a98df61
@ -16,7 +16,7 @@
|
|||||||
import json
|
import json
|
||||||
import jsonschema
|
import jsonschema
|
||||||
|
|
||||||
from keystoneclient.v2_0 import client as keystone
|
from keystoneclient import exceptions as keystone_exceptions
|
||||||
|
|
||||||
from rally.benchmark import base
|
from rally.benchmark import base
|
||||||
from rally.benchmark import runner
|
from rally.benchmark import runner
|
||||||
@ -156,8 +156,11 @@ class TestEngine(object):
|
|||||||
if not any("admin" == role['name'] for role in roles):
|
if not any("admin" == role['name'] for role in roles):
|
||||||
raise exceptions.InvalidAdminException(
|
raise exceptions.InvalidAdminException(
|
||||||
username=self.endpoint["username"])
|
username=self.endpoint["username"])
|
||||||
except keystone.exceptions.Unauthorized:
|
except keystone_exceptions.Unauthorized:
|
||||||
raise exceptions.InvalidEndpointsException()
|
raise exceptions.InvalidEndpointsException()
|
||||||
|
except keystone_exceptions.AuthorizationFailure:
|
||||||
|
raise exceptions.HostUnreachableException(
|
||||||
|
url=self.endpoint['auth_url'])
|
||||||
return self
|
return self
|
||||||
|
|
||||||
def __enter__(self):
|
def __enter__(self):
|
||||||
|
@ -160,3 +160,7 @@ class InvalidAdminException(InvalidArgumentsException):
|
|||||||
class InvalidEndpointsException(InvalidArgumentsException):
|
class InvalidEndpointsException(InvalidArgumentsException):
|
||||||
msg_fmt = _("wrong keystone credentials specified in your endpoint"
|
msg_fmt = _("wrong keystone credentials specified in your endpoint"
|
||||||
" properties. (HTTP 401)")
|
" properties. (HTTP 401)")
|
||||||
|
|
||||||
|
|
||||||
|
class HostUnreachableException(InvalidArgumentsException):
|
||||||
|
msg_fmt = _("unable to establish connection to the remote host: %(url)s")
|
||||||
|
@ -17,6 +17,8 @@
|
|||||||
|
|
||||||
import mock
|
import mock
|
||||||
|
|
||||||
|
from keystoneclient import exceptions as keystone_exceptions
|
||||||
|
|
||||||
from rally.benchmark import engine
|
from rally.benchmark import engine
|
||||||
from rally import consts
|
from rally import consts
|
||||||
from rally import exceptions
|
from rally import exceptions
|
||||||
@ -133,12 +135,21 @@ class TestEngineTestCase(test.TestCase):
|
|||||||
@mock.patch("rally.cmd.main.api.engine.osclients.Clients"
|
@mock.patch("rally.cmd.main.api.engine.osclients.Clients"
|
||||||
".get_keystone_client")
|
".get_keystone_client")
|
||||||
def test_bind_unauthorized_keystone(self, mock_osclients):
|
def test_bind_unauthorized_keystone(self, mock_osclients):
|
||||||
mock_osclients.side_effect = exceptions.InvalidEndpointsException
|
mock_osclients.side_effect = keystone_exceptions.Unauthorized
|
||||||
tester = engine.TestEngine(self.valid_test_config_continuous_times,
|
tester = engine.TestEngine(self.valid_test_config_continuous_times,
|
||||||
mock.MagicMock())
|
mock.MagicMock())
|
||||||
self.assertRaises(exceptions.InvalidEndpointsException,
|
self.assertRaises(exceptions.InvalidEndpointsException,
|
||||||
tester.bind, self.valid_endpoint)
|
tester.bind, self.valid_endpoint)
|
||||||
|
|
||||||
|
@mock.patch("rally.cmd.main.api.engine.osclients.Clients"
|
||||||
|
".get_keystone_client")
|
||||||
|
def test_bind_keystone_host_unreachable(self, mock_osclients):
|
||||||
|
mock_osclients.side_effect = keystone_exceptions.AuthorizationFailure
|
||||||
|
tester = engine.TestEngine(self.valid_test_config_continuous_times,
|
||||||
|
mock.MagicMock())
|
||||||
|
self.assertRaises(exceptions.HostUnreachableException,
|
||||||
|
tester.bind, self.valid_endpoint)
|
||||||
|
|
||||||
@mock.patch("rally.benchmark.runner.ScenarioRunner.run")
|
@mock.patch("rally.benchmark.runner.ScenarioRunner.run")
|
||||||
@mock.patch("rally.benchmark.utils.osclients")
|
@mock.patch("rally.benchmark.utils.osclients")
|
||||||
@mock.patch("rally.benchmark.engine.osclients")
|
@mock.patch("rally.benchmark.engine.osclients")
|
||||||
|
Loading…
Reference in New Issue
Block a user