summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ceilometer/polling/discovery/non_openstack_credentials_discovery.py2
-rw-r--r--ceilometer/polling/dynamic_pollster.py14
-rw-r--r--ceilometer/tests/unit/polling/test_non_openstack_credentials_discovery.py10
3 files changed, 21 insertions, 5 deletions
diff --git a/ceilometer/polling/discovery/non_openstack_credentials_discovery.py b/ceilometer/polling/discovery/non_openstack_credentials_discovery.py
index 61459452..0b3ccec8 100644
--- a/ceilometer/polling/discovery/non_openstack_credentials_discovery.py
+++ b/ceilometer/polling/discovery/non_openstack_credentials_discovery.py
@@ -38,7 +38,7 @@ class NonOpenStackCredentialsDiscovery(EndpointDiscovery):
if not param:
return [barbican_secret]
barbican_endpoints = super(NonOpenStackCredentialsDiscovery,
- self).discover("key-manager")
+ self).discover(manager, "key-manager")
if not barbican_endpoints:
LOG.warning("No Barbican endpoints found to execute the"
" credentials discovery process to [%s].",
diff --git a/ceilometer/polling/dynamic_pollster.py b/ceilometer/polling/dynamic_pollster.py
index bb45b85f..2e9ea4ac 100644
--- a/ceilometer/polling/dynamic_pollster.py
+++ b/ceilometer/polling/dynamic_pollster.py
@@ -850,6 +850,9 @@ class NonOpenStackApisSamplesGatherer(PollsterSampleGatherer):
if override_credentials:
credentials = override_credentials
+ if not isinstance(credentials, str):
+ credentials = self.normalize_credentials_to_string(credentials)
+
url = self.get_request_linked_samples_url(kwargs, definitions)
authenticator_module_name = definitions['module']
@@ -878,6 +881,17 @@ class NonOpenStackApisSamplesGatherer(PollsterSampleGatherer):
return resp, url
+ @staticmethod
+ def normalize_credentials_to_string(credentials):
+ if isinstance(credentials, bytes):
+ credentials = credentials.decode('utf-8')
+ else:
+ credentials = str(credentials)
+ LOG.debug("Credentials [%s] were not defined as a string. "
+ "Therefore, we converted it to a string like object.",
+ credentials)
+ return credentials
+
def create_request_arguments(self, definitions):
request_arguments = super(
NonOpenStackApisSamplesGatherer, self).create_request_arguments(
diff --git a/ceilometer/tests/unit/polling/test_non_openstack_credentials_discovery.py b/ceilometer/tests/unit/polling/test_non_openstack_credentials_discovery.py
index c1fffd87..4e257415 100644
--- a/ceilometer/tests/unit/polling/test_non_openstack_credentials_discovery.py
+++ b/ceilometer/tests/unit/polling/test_non_openstack_credentials_discovery.py
@@ -95,8 +95,8 @@ class TestNonOpenStackCredentialsDiscovery(base.BaseTestCase):
@mock.patch('keystoneclient.v2_0.client.Client')
def test_discover_response_ok(self, client_mock):
- def discover_mock(self, manager, param=None):
- return ["barbican_url"]
+ discover_mock = mock.MagicMock()
+ discover_mock.return_value = ["barbican_url"]
original_discover_method = EndpointDiscovery.discover
EndpointDiscovery.discover = discover_mock
@@ -108,9 +108,11 @@ class TestNonOpenStackCredentialsDiscovery(base.BaseTestCase):
client_mock.session.get.return_value = return_value
- response = self.discovery.discover(
- manager=self.FakeManager(client_mock), param="param")
+ fake_manager = self.FakeManager(client_mock)
+ response = self.discovery.discover(manager=fake_manager, param="param")
self.assertEqual(["content"], response)
+ discover_mock.assert_has_calls([
+ mock.call(fake_manager, "key-manager")])
EndpointDiscovery.discover = original_discover_method