From b38ff79afeb5f64ee70e39c713df1cf21becdba3 Mon Sep 17 00:00:00 2001 From: rabi Date: Fri, 3 Feb 2017 17:45:23 +0530 Subject: [PATCH] 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/engine/clients/os/keystone/heat_keystoneclient.py | 10 ++++++++-- heat/tests/clients/test_heat_client.py | 9 ++++++--- 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/heat/engine/clients/os/keystone/heat_keystoneclient.py b/heat/engine/clients/os/keystone/heat_keystoneclient.py index adf4560f4..26cf969bf 100644 --- a/heat/engine/clients/os/keystone/heat_keystoneclient.py +++ b/heat/engine/clients/os/keystone/heat_keystoneclient.py @@ -119,6 +119,10 @@ class KsClientWrapper(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: @@ -148,12 +152,14 @@ class KsClientWrapper(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) + client = kc_v3.Client(session=self.session, + 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 dfa2719e4..f653b2368 100644 --- a/heat/tests/clients/test_heat_client.py +++ b/heat/tests/clients/test_heat_client.py @@ -95,7 +95,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 @@ -139,7 +140,8 @@ class KeystoneClientTest(common.HeatTestCase): p.AndReturn(mock_ks_auth) if client: - c = kc_v3.Client(session=mox.IsA(ks_session.Session)) + c = kc_v3.Client(session=mox.IsA(ks_session.Session), + region_name=None) c.AndReturn(self.mock_ks_v3_client) if stub_trust_context: @@ -1532,7 +1534,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