From 1b1b8e20c7e4872e2872182757e561125859c9f0 Mon Sep 17 00:00:00 2001 From: Jorge Niedbalski Date: Fri, 31 May 2019 15:37:07 -0400 Subject: [PATCH] Add user_domain_name to keystone client. Use user_domain_name as a fallback if no user_domain_id is provided, the default keystone password auth uses only user_domain_id, if not provided aodh will fail getting a token, add the extra user_domain_name parameter to the authentication. Closes-Bug: #1831181 Change-Id: I170267ddbed31f63717e1c8fe119b2557afc812e Signed-off-by: Jorge Niedbalski (cherry picked from commit 83fb96463c6ba55e536c3c47fa04253ab1b53eff) --- aodh/keystone_client.py | 1 + aodh/tests/unit/test_notifier.py | 50 ++++++++++++++++++++++++++++++++ 2 files changed, 51 insertions(+) diff --git a/aodh/keystone_client.py b/aodh/keystone_client.py index 86fec6439..023d260c5 100644 --- a/aodh/keystone_client.py +++ b/aodh/keystone_client.py @@ -48,6 +48,7 @@ def get_trusted_client(conf, trust_id): password=conf[CFG_GROUP].password, auth_url=conf[CFG_GROUP].auth_url, user_domain_id=conf[CFG_GROUP].user_domain_id, + user_domain_name=conf[CFG_GROUP].user_domain_name, trust_id=trust_id) sess = session.Session(auth=auth_plugin) diff --git a/aodh/tests/unit/test_notifier.py b/aodh/tests/unit/test_notifier.py index 34cfe1fe0..71790ef0b 100644 --- a/aodh/tests/unit/test_notifier.py +++ b/aodh/tests/unit/test_notifier.py @@ -17,13 +17,17 @@ import json import time import mock +from oslo_config import cfg from oslo_config import fixture as fixture_config + import oslo_messaging import requests import six.moves.urllib.parse as urlparse +from aodh import keystone_client from aodh import notifier from aodh import service + from aodh.tests import base as tests_base @@ -55,6 +59,52 @@ class TestAlarmNotifierService(tests_base.BaseTestCase): self.service.terminate() +class TestKeystoneClient(tests_base.BaseTestCase): + def setUp(self): + super(TestKeystoneClient, self).setUp() + self.config = fixture_config.Config( + service.prepare_service(argv=[], config_files=[])) + self.config.setUp() + self.config.register_opts([ + cfg.StrOpt('user_domain_id', default=""), + cfg.StrOpt('user_domain_name', default=""), + cfg.StrOpt('username', default="username"), + cfg.StrOpt('password', default="password"), + cfg.StrOpt('auth_url', default="testdomain") + ], "service_credentials") + + def test_get_trusted_client_domain_id(self): + self.config.config( + **{'group': "service_credentials", + 'user_domain_id': "uuid-domain"}) + + client = keystone_client.get_trusted_client( + self.config.conf, "testing") + self.assertEqual(client.session.auth._user_domain_id, "uuid-domain") + self.assertEqual(client.session.auth._user_domain_name, '') + + def test_get_trusted_client_domain_name(self): + self.config.config( + **{'group': "service_credentials", + 'user_domain_name': "testdomain"}) + + client = keystone_client.get_trusted_client( + self.config.conf, "testing") + self.assertEqual(client.session.auth._user_domain_name, "testdomain") + self.assertEqual(client.session.auth._user_domain_id, '') + + def test_get_trusted_client_domain(self): + self.config.config(**{'group': "service_credentials", + 'user_domain_name': "testdomain", + 'user_domain_id': "uuid-gen", + }) + + client = keystone_client.get_trusted_client(self.config.conf, + "testing") + self.assertEqual(client.session.auth._user_domain_name, "testdomain") + self.assertEqual(client.session.auth._user_domain_id, "uuid-gen") + + class TestAlarmNotifier(tests_base.BaseTestCase): def setUp(self): super(TestAlarmNotifier, self).setUp()