From 5a48912cb9e8aa85104f173e30ac7848fae0525e Mon Sep 17 00:00:00 2001 From: rabi Date: Wed, 19 Sep 2018 12:12:04 +0530 Subject: [PATCH] Fix heat multi-region support with shared keystone keystone endpoint region can be different from other services. Let's use the one from keystone middleware authtoken config, if available, when creating keystone client. Change-Id: I190abd946db1cf8712ef669cf72a1134dfcf9376 Story: #2003806 Task: 26549 --- .../clients/os/keystone/heat_keystoneclient.py | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/heat/engine/clients/os/keystone/heat_keystoneclient.py b/heat/engine/clients/os/keystone/heat_keystoneclient.py index 315c57313b..d82cfdc498 100644 --- a/heat/engine/clients/os/keystone/heat_keystoneclient.py +++ b/heat/engine/clients/os/keystone/heat_keystoneclient.py @@ -119,8 +119,13 @@ class KsClientWrapper(object): return self._client @property - def region_name(self): - return self.context.region_name or cfg.CONF.region_name_for_services + def auth_region_name(self): + importutils.import_module('keystonemiddleware.auth_token') + auth_region = cfg.CONF.keystone_authtoken.region_name + if not auth_region: + auth_region = (self.context.region_name or + cfg.CONF.region_name_for_services) + return auth_region @property def domain_admin_auth(self): @@ -152,13 +157,13 @@ class KsClientWrapper(object): self._domain_admin_client = kc_v3.Client( session=self.session, auth=self.domain_admin_auth, - region_name=self.region_name) + region_name=self.auth_region_name) return self._domain_admin_client def _v3_client_init(self): client = kc_v3.Client(session=self.session, - region_name=self.region_name) + region_name=self.auth_region_name) if hasattr(self.context.auth_plugin, 'get_access'): # NOTE(jamielennox): get_access returns the current token without