diff options
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 |