From 674b36f2356103805fe2120e03d92e925918b747 Mon Sep 17 00:00:00 2001 From: rabi Date: Fri, 3 Feb 2017 17:45:23 +0530 Subject: Use region_name when creating keystone client When creating trust and stack domain user/project, we create a keystone client without the region_name. This may not work in a multi-region environment. Change-Id: I90979e9fe889deb1ef322ab0af31b9e079b77747 Closes-Bug: #1661594 (cherry picked from commit a21a29c8479e18e13df4be350743b169c311eb67) --- heat/common/heat_keystoneclient.py | 10 ++++++++-- heat/tests/clients/test_heat_client.py | 9 ++++++--- 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/heat/common/heat_keystoneclient.py b/heat/common/heat_keystoneclient.py index 97ecf470d..b5ea0bf80 100644 --- a/heat/common/heat_keystoneclient.py +++ b/heat/common/heat_keystoneclient.py @@ -111,6 +111,10 @@ class KeystoneClientV3(object): self._client = self._v3_client_init() return self._client + @property + def region_name(self): + return self.context.region_name or cfg.CONF.region_name_for_services + @property def domain_admin_auth(self): if not self._domain_admin_auth: @@ -140,13 +144,15 @@ class KeystoneClientV3(object): if not self._domain_admin_client: self._domain_admin_client = kc_v3.Client( session=self.session, - auth=self.domain_admin_auth) + auth=self.domain_admin_auth, + region_name=self.region_name) return self._domain_admin_client def _v3_client_init(self): client = kc_v3.Client(session=self.session, - auth=self.context.auth_plugin) + auth=self.context.auth_plugin, + region_name=self.region_name) if hasattr(self.context.auth_plugin, 'get_access'): # NOTE(jamielennox): get_access returns the current token without diff --git a/heat/tests/clients/test_heat_client.py b/heat/tests/clients/test_heat_client.py index 4e39f6aac..92d974165 100644 --- a/heat/tests/clients/test_heat_client.py +++ b/heat/tests/clients/test_heat_client.py @@ -91,7 +91,8 @@ class KeystoneClientTest(common.HeatTestCase): m.AndReturn(mock_ks_auth) n = kc_v3.Client(session=mox.IsA(ks_session.Session), - auth=mock_ks_auth) + auth=mock_ks_auth, + region_name=None) n.AndReturn(self.mock_admin_client) self.mock_admin_client.domains = self.mock_ks_v3_client_domain_mngr @@ -131,7 +132,8 @@ class KeystoneClientTest(common.HeatTestCase): if client: c = kc_v3.Client(session=mox.IsA(ks_session.Session), - auth=mock_ks_auth) + auth=mock_ks_auth, + region_name=None) c.AndReturn(self.mock_ks_v3_client) if stub_trust_context: @@ -1482,7 +1484,8 @@ class KeystoneClientTestDomainName(KeystoneClientTest): m.AndReturn(mock_ks_auth) n = kc_v3.Client(session=mox.IsA(ks_session.Session), - auth=mock_ks_auth) + auth=mock_ks_auth, + region_name=None) n.AndReturn(self.mock_admin_client) self.mock_admin_client.domains = self.mock_ks_v3_client_domain_mngr -- cgit v1.2.1