From ae701b3641d2b05a5c578f1b05ed889071bf0c7d Mon Sep 17 00:00:00 2001 From: Thomas Herve Date: Tue, 26 May 2015 08:17:17 +0200 Subject: [PATCH] Move zaqar client into main tree Moves the zaqar client plugin out of contrib into the main tree. blueprint software-config-zaqar Change-Id: I8a947e7b16b818d50b10688999d916c73a2297fd --- contrib/heat_zaqar/requirements.txt | 1 - contrib/heat_zaqar/setup.cfg | 4 --- .../engine/clients/os/zaqar.py | 16 ++++----- heat/tests/test_zaqar_client.py | 34 +++++++++++++++++++ requirements.txt | 1 + setup.cfg | 1 + 6 files changed, 43 insertions(+), 14 deletions(-) delete mode 100644 contrib/heat_zaqar/requirements.txt rename contrib/heat_zaqar/heat_zaqar/client.py => heat/engine/clients/os/zaqar.py (79%) create mode 100644 heat/tests/test_zaqar_client.py diff --git a/contrib/heat_zaqar/requirements.txt b/contrib/heat_zaqar/requirements.txt deleted file mode 100644 index 9c5558e89..000000000 --- a/contrib/heat_zaqar/requirements.txt +++ /dev/null @@ -1 +0,0 @@ -python-zaqarclient>=0.0.3 diff --git a/contrib/heat_zaqar/setup.cfg b/contrib/heat_zaqar/setup.cfg index 35e7e7dea..08837df5c 100644 --- a/contrib/heat_zaqar/setup.cfg +++ b/contrib/heat_zaqar/setup.cfg @@ -24,10 +24,6 @@ packages = data_files = lib/heat/zaqar = heat_zaqar/resources/* -[entry_points] -heat.clients = - zaqar = heat_zaqar.client:ZaqarClientPlugin - [global] setup-hooks = pbr.hooks.setup_hook diff --git a/contrib/heat_zaqar/heat_zaqar/client.py b/heat/engine/clients/os/zaqar.py similarity index 79% rename from contrib/heat_zaqar/heat_zaqar/client.py rename to heat/engine/clients/os/zaqar.py index f6e7e56e8..45c110ec2 100644 --- a/contrib/heat_zaqar/heat_zaqar/client.py +++ b/heat/engine/clients/os/zaqar.py @@ -17,22 +17,20 @@ from heat.common.i18n import _LE LOG = logging.getLogger(__name__) -try: - from zaqarclient.queues.v1 import client as zaqarclient - from zaqarclient.transport import errors as zaqar_errors -except ImportError: - zaqarclient = None - zaqar_errors = None +from zaqarclient.queues.v1 import client as zaqarclient +from zaqarclient.transport import errors as zaqar_errors from heat.engine.clients import client_plugin class ZaqarClientPlugin(client_plugin.ClientPlugin): - exception_module = zaqar_errors + exceptions_module = zaqar_errors def _create(self): + return self.create_for_tenant(self.context.tenant_id) + def create_for_tenant(self, tenant_id): con = self.context if self.auth_token is None: LOG.error(_LE("Zaqar connection failed, no auth_token!")) @@ -41,7 +39,7 @@ class ZaqarClientPlugin(client_plugin.ClientPlugin): opts = { 'os_auth_token': con.auth_token, 'os_auth_url': con.auth_url, - 'os_project_id': con.tenant, + 'os_project_id': tenant_id, 'os_service_type': 'messaging', } auth_opts = {'backend': 'keystone', @@ -49,7 +47,7 @@ class ZaqarClientPlugin(client_plugin.ClientPlugin): conf = {'auth_opts': auth_opts} endpoint = self.url_for(service_type='messaging') - client = zaqarclient.Client(url=endpoint, conf=conf) + client = zaqarclient.Client(url=endpoint, conf=conf, version=1.1) return client diff --git a/heat/tests/test_zaqar_client.py b/heat/tests/test_zaqar_client.py new file mode 100644 index 000000000..88c86a253 --- /dev/null +++ b/heat/tests/test_zaqar_client.py @@ -0,0 +1,34 @@ +# +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. + +from heat.tests import common +from heat.tests import utils + + +class ZaqarClientPluginTests(common.HeatTestCase): + + def test_create(self): + context = utils.dummy_context() + plugin = context.clients.client_plugin('zaqar') + client = plugin.client() + self.assertEqual('http://server.test:5000/v3', client.api_url) + self.assertEqual(1.1, client.api_version) + self.assertEqual('test_tenant_id', + client.conf['auth_opts']['options']['os_project_id']) + + def test_create_for_tenant(self): + context = utils.dummy_context() + plugin = context.clients.client_plugin('zaqar') + client = plugin.create_for_tenant('other_tenant') + self.assertEqual('other_tenant', + client.conf['auth_opts']['options']['os_project_id']) diff --git a/requirements.txt b/requirements.txt index 5ee6c090f..1444ba032 100644 --- a/requirements.txt +++ b/requirements.txt @@ -38,6 +38,7 @@ python-novaclient>=2.22.0 python-saharaclient>=0.9.0 python-swiftclient>=2.2.0 python-troveclient>=1.0.7 +python-zaqarclient>=0.0.3 PyYAML>=3.1.0 qpid-python requests>=2.5.2 diff --git a/setup.cfg b/setup.cfg index e8c29d1a9..fe93dde72 100644 --- a/setup.cfg +++ b/setup.cfg @@ -57,6 +57,7 @@ heat.clients = swift = heat.engine.clients.os.swift:SwiftClientPlugin trove = heat.engine.clients.os.trove:TroveClientPlugin sahara = heat.engine.clients.os.sahara:SaharaClientPlugin + zaqar = heat.engine.clients.os.zaqar:ZaqarClientPlugin heat.constraints = nova.flavor = heat.engine.clients.os.nova:FlavorConstraint