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
This commit is contained in:
rabi 2018-09-19 12:12:04 +05:30
parent 062d04e685
commit 5a48912cb9
1 changed files with 9 additions and 4 deletions

View File

@ -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