diff --git a/watcher/common/clients.py b/watcher/common/clients.py index 047840004..80c2f57c9 100755 --- a/watcher/common/clients.py +++ b/watcher/common/clients.py @@ -83,8 +83,10 @@ class OpenStackClients(object): novaclient_version = self._get_client_option('nova', 'api_version') nova_endpoint_type = self._get_client_option('nova', 'endpoint_type') + nova_region_name = self._get_client_option('nova', 'region_name') self._nova = nvclient.Client(novaclient_version, endpoint_type=nova_endpoint_type, + region_name=nova_region_name, session=self.session) return self._nova @@ -96,8 +98,10 @@ class OpenStackClients(object): glanceclient_version = self._get_client_option('glance', 'api_version') glance_endpoint_type = self._get_client_option('glance', 'endpoint_type') + glance_region_name = self._get_client_option('glance', 'region_name') self._glance = glclient.Client(glanceclient_version, interface=glance_endpoint_type, + region_name=glance_region_name, session=self.session) return self._glance @@ -110,8 +114,11 @@ class OpenStackClients(object): 'api_version') gnocchiclient_interface = self._get_client_option('gnocchi', 'endpoint_type') + gnocchiclient_region_name = self._get_client_option('gnocchi', + 'region_name') adapter_options = { - "interface": gnocchiclient_interface + "interface": gnocchiclient_interface, + "region_name": gnocchiclient_region_name } self._gnocchi = gnclient.Client(gnocchiclient_version, @@ -127,8 +134,10 @@ class OpenStackClients(object): cinderclient_version = self._get_client_option('cinder', 'api_version') cinder_endpoint_type = self._get_client_option('cinder', 'endpoint_type') + cinder_region_name = self._get_client_option('cinder', 'region_name') self._cinder = ciclient.Client(cinderclient_version, endpoint_type=cinder_endpoint_type, + region_name=cinder_region_name, session=self.session) return self._cinder @@ -141,9 +150,12 @@ class OpenStackClients(object): 'api_version') ceilometer_endpoint_type = self._get_client_option('ceilometer', 'endpoint_type') + ceilometer_region_name = self._get_client_option('ceilometer', + 'region_name') self._ceilometer = ceclient.get_client( ceilometerclient_version, endpoint_type=ceilometer_endpoint_type, + region_name=ceilometer_region_name, session=self.session) return self._ceilometer @@ -156,6 +168,8 @@ class OpenStackClients(object): 'monasca', 'api_version') monascaclient_interface = self._get_client_option( 'monasca', 'interface') + monascaclient_region = self._get_client_option( + 'monasca', 'region_name') token = self.session.get_token() watcher_clients_auth_config = CONF.get(_CLIENTS_AUTH_GROUP) service_type = 'monitoring' @@ -172,7 +186,8 @@ class OpenStackClients(object): 'password': watcher_clients_auth_config.password, } endpoint = self.session.get_endpoint(service_type=service_type, - interface=monascaclient_interface) + interface=monascaclient_interface, + region_name=monascaclient_region) self._monasca = monclient.Client( monascaclient_version, endpoint, **monasca_kwargs) @@ -188,9 +203,11 @@ class OpenStackClients(object): 'api_version') neutron_endpoint_type = self._get_client_option('neutron', 'endpoint_type') + neutron_region_name = self._get_client_option('neutron', 'region_name') self._neutron = netclient.Client(neutronclient_version, endpoint_type=neutron_endpoint_type, + region_name=neutron_region_name, session=self.session) self._neutron.format = 'json' return self._neutron @@ -202,7 +219,9 @@ class OpenStackClients(object): ironicclient_version = self._get_client_option('ironic', 'api_version') endpoint_type = self._get_client_option('ironic', 'endpoint_type') + ironic_region_name = self._get_client_option('ironic', 'region_name') self._ironic = irclient.get_client(ironicclient_version, os_endpoint_type=endpoint_type, + region_name=ironic_region_name, session=self.session) return self._ironic diff --git a/watcher/conf/ceilometer_client.py b/watcher/conf/ceilometer_client.py index 48fdf88aa..95b15ceaf 100644 --- a/watcher/conf/ceilometer_client.py +++ b/watcher/conf/ceilometer_client.py @@ -30,7 +30,10 @@ CEILOMETER_CLIENT_OPTS = [ default='internalURL', help='Type of endpoint to use in ceilometerclient.' 'Supported values: internalURL, publicURL, adminURL' - 'The default is internalURL.')] + 'The default is internalURL.'), + cfg.StrOpt('region_name', + help='Region in Identity service catalog to use for ' + 'communication with the OpenStack service.')] def register_opts(conf): diff --git a/watcher/conf/cinder_client.py b/watcher/conf/cinder_client.py index 687c4ce6c..0b7ccf4f6 100644 --- a/watcher/conf/cinder_client.py +++ b/watcher/conf/cinder_client.py @@ -29,7 +29,10 @@ CINDER_CLIENT_OPTS = [ default='publicURL', help='Type of endpoint to use in cinderclient.' 'Supported values: internalURL, publicURL, adminURL' - 'The default is publicURL.')] + 'The default is publicURL.'), + cfg.StrOpt('region_name', + help='Region in Identity service catalog to use for ' + 'communication with the OpenStack service.')] def register_opts(conf): diff --git a/watcher/conf/glance_client.py b/watcher/conf/glance_client.py index 015a09c87..e77dd73f1 100644 --- a/watcher/conf/glance_client.py +++ b/watcher/conf/glance_client.py @@ -29,7 +29,10 @@ GLANCE_CLIENT_OPTS = [ default='publicURL', help='Type of endpoint to use in glanceclient.' 'Supported values: internalURL, publicURL, adminURL' - 'The default is publicURL.')] + 'The default is publicURL.'), + cfg.StrOpt('region_name', + help='Region in Identity service catalog to use for ' + 'communication with the OpenStack service.')] def register_opts(conf): diff --git a/watcher/conf/gnocchi_client.py b/watcher/conf/gnocchi_client.py index 885aaf1d9..b5882036e 100644 --- a/watcher/conf/gnocchi_client.py +++ b/watcher/conf/gnocchi_client.py @@ -30,6 +30,9 @@ GNOCCHI_CLIENT_OPTS = [ help='Type of endpoint to use in gnocchi client.' 'Supported values: internal, public, admin' 'The default is public.'), + cfg.StrOpt('region_name', + help='Region in Identity service catalog to use for ' + 'communication with the OpenStack service.'), cfg.IntOpt('query_max_retries', default=10, mutable=True, diff --git a/watcher/conf/ironic_client.py b/watcher/conf/ironic_client.py index fc4940ecf..bcc87b68a 100755 --- a/watcher/conf/ironic_client.py +++ b/watcher/conf/ironic_client.py @@ -29,7 +29,10 @@ IRONIC_CLIENT_OPTS = [ default='publicURL', help='Type of endpoint to use in ironicclient.' 'Supported values: internalURL, publicURL, adminURL' - 'The default is publicURL.')] + 'The default is publicURL.'), + cfg.StrOpt('region_name', + help='Region in Identity service catalog to use for ' + 'communication with the OpenStack service.')] def register_opts(conf): diff --git a/watcher/conf/monasca_client.py b/watcher/conf/monasca_client.py index 26d54f415..39048ba7c 100644 --- a/watcher/conf/monasca_client.py +++ b/watcher/conf/monasca_client.py @@ -29,7 +29,10 @@ MONASCA_CLIENT_OPTS = [ default='internal', help='Type of interface used for monasca endpoint.' 'Supported values: internal, public, admin' - 'The default is internal.')] + 'The default is internal.'), + cfg.StrOpt('region_name', + help='Region in Identity service catalog to use for ' + 'communication with the OpenStack service.')] def register_opts(conf): diff --git a/watcher/conf/neutron_client.py b/watcher/conf/neutron_client.py index 4a8888dbb..b9b41ce89 100644 --- a/watcher/conf/neutron_client.py +++ b/watcher/conf/neutron_client.py @@ -29,7 +29,10 @@ NEUTRON_CLIENT_OPTS = [ default='publicURL', help='Type of endpoint to use in neutronclient.' 'Supported values: internalURL, publicURL, adminURL' - 'The default is publicURL.')] + 'The default is publicURL.'), + cfg.StrOpt('region_name', + help='Region in Identity service catalog to use for ' + 'communication with the OpenStack service.')] def register_opts(conf): diff --git a/watcher/conf/nova_client.py b/watcher/conf/nova_client.py index 14c43a2f7..4b29bd3ee 100755 --- a/watcher/conf/nova_client.py +++ b/watcher/conf/nova_client.py @@ -29,7 +29,10 @@ NOVA_CLIENT_OPTS = [ default='publicURL', help='Type of endpoint to use in novaclient.' 'Supported values: internalURL, publicURL, adminURL' - 'The default is publicURL.')] + 'The default is publicURL.'), + cfg.StrOpt('region_name', + help='Region in Identity service catalog to use for ' + 'communication with the OpenStack service.')] def register_opts(conf): diff --git a/watcher/tests/common/test_clients.py b/watcher/tests/common/test_clients.py index e0ce35af1..8010a3b69 100755 --- a/watcher/tests/common/test_clients.py +++ b/watcher/tests/common/test_clients.py @@ -120,6 +120,7 @@ class TestClients(base.TestCase): mock_call.assert_called_once_with( CONF.nova_client.api_version, endpoint_type=CONF.nova_client.endpoint_type, + region_name=CONF.nova_client.region_name, session=mock_session) @mock.patch.object(clients.OpenStackClients, 'session') @@ -155,6 +156,7 @@ class TestClients(base.TestCase): mock_call.assert_called_once_with( CONF.glance_client.api_version, interface=CONF.glance_client.endpoint_type, + region_name=CONF.glance_client.region_name, session=mock_session) @mock.patch.object(clients.OpenStackClients, 'session') @@ -191,7 +193,8 @@ class TestClients(base.TestCase): mock_call.assert_called_once_with( CONF.gnocchi_client.api_version, adapter_options={ - "interface": CONF.gnocchi_client.endpoint_type}, + "interface": CONF.gnocchi_client.endpoint_type, + "region_name": CONF.gnocchi_client.region_name}, session=mock_session) @mock.patch.object(clients.OpenStackClients, 'session') @@ -229,6 +232,7 @@ class TestClients(base.TestCase): mock_call.assert_called_once_with( CONF.cinder_client.api_version, endpoint_type=CONF.cinder_client.endpoint_type, + region_name=CONF.cinder_client.region_name, session=mock_session) @mock.patch.object(clients.OpenStackClients, 'session') @@ -266,6 +270,7 @@ class TestClients(base.TestCase): CONF.ceilometer_client.api_version, None, endpoint_type=CONF.ceilometer_client.endpoint_type, + region_name=CONF.ceilometer_client.region_name, session=mock_session) @mock.patch.object(clients.OpenStackClients, 'session') @@ -314,6 +319,7 @@ class TestClients(base.TestCase): mock_call.assert_called_once_with( CONF.neutron_client.api_version, endpoint_type=CONF.neutron_client.endpoint_type, + region_name=CONF.neutron_client.region_name, session=mock_session) @mock.patch.object(clients.OpenStackClients, 'session')