Update clients with multi-region support

Clients for various OpenStack services
were updated so that it would be
possible to specify region name explicitly.

If it is not provided then for clients that are
used internally by the core library it is taken
from the current region. Otherwise the default
environment region is used.

Change-Id: I289c7f8dc93a30ba1d5aa06d9da29a6af1308b9a
This commit is contained in:
Stan Lagun 2016-08-29 13:18:40 -07:00
parent 077a3c364b
commit acd269f9b2
4 changed files with 18 additions and 9 deletions

View File

@ -30,12 +30,14 @@ CONF = config.CONF
class MagnumClient(object):
def __init__(self, this):
def __init__(self, this, region_name=None):
self._region_name = region_name
self._owner = this.find_owner('io.murano.Environment')
@property
def _client(self):
region = None if self._owner is None else self._owner['region']
region = self._region_name or (
None if self._owner is None else self._owner['region'])
return self._create_magnum_client(region)
@classmethod

View File

@ -41,7 +41,7 @@ class HeatStackError(Exception):
@dsl.name('io.murano.system.HeatStack')
class HeatStack(object):
def __init__(self, this, name, description=None):
def __init__(self, this, name, description=None, region_name=None):
self._name = name
self._template = None
self._parameters = {}
@ -52,6 +52,7 @@ class HeatStack(object):
self._last_stack_timestamps = (None, None)
self._tags = ''
self._owner = this.find_owner('io.murano.CloudRegion')
self._region_name = None
@staticmethod
def _create_client(session, region_name):
@ -62,7 +63,8 @@ class HeatStack(object):
@property
def _client(self):
region = None if self._owner is None else self._owner['name']
region = self._region_name or (
None if self._owner is None else self._owner['name'])
return self._get_client(region)
@staticmethod
@ -73,7 +75,8 @@ class HeatStack(object):
def _get_token_client(self):
ks_session = auth_utils.get_token_client_session(conf=CONF.heat)
region = None if self._owner is None else self._owner['name']
region = self._region_name or (
None if self._owner is None else self._owner['name'])
return self._create_client(ks_session, region)
def current(self):

View File

@ -35,12 +35,13 @@ LOG = logging.getLogger(__name__)
@dsl.name('io.murano.system.NetworkExplorer')
class NetworkExplorer(object):
def __init__(self, this):
def __init__(self, this, region_name=None):
session = helpers.get_execution_session()
self._project_id = session.project_id
self._settings = CONF.networking
self._available_cidrs = self._generate_possible_cidrs()
self._region = this.find_owner('io.murano.CloudRegion')
self._region_name = region_name
@staticmethod
@session_local_storage.execution_session_memoize
@ -52,7 +53,8 @@ class NetworkExplorer(object):
@property
def _client(self):
region = None if self._region is None else self._region['name']
region = self._region_name or (
None if self._region is None else self._region['name'])
return self._get_client(region)
# NOTE(starodubcevna): to avoid simultaneous router requests we use retry

View File

@ -39,12 +39,14 @@ class MistralError(Exception):
@dsl.name('io.murano.system.MistralClient')
class MistralClient(object):
def __init__(self, this):
def __init__(self, this, region_name):
self._owner = this.find_owner('io.murano.Environment')
self._region_name = region_name
@property
def _client(self):
region = None if self._owner is None else self._owner['region']
region = self._region_name or (
None if self._owner is None else self._owner['region'])
return self._create_client(region)
@staticmethod