Separate the Marconi client from the resource

Move Marconi client into its own module for consistency.

Change-Id: If240c1ddfc4ef3af3332c280da507d832a8b3246
This commit is contained in:
Richard Lee
2014-02-05 11:13:44 -06:00
parent 2a2cf5231d
commit 65153eaa7e
3 changed files with 61 additions and 42 deletions

View File

@@ -12,7 +12,7 @@ directive.
To install the Marconi plugin, one needs to first make sure the To install the Marconi plugin, one needs to first make sure the
python-marconiclient package is installed - pip install -r requirements.txt, and python-marconiclient package is installed - pip install -r requirements.txt, and
copy the plugin implementation, e.g. queue.py to wherever plugin_dirs points to. copy the plugin folder, e.g. marconi to wherever plugin_dirs points to.
### 2. Restart heat ### 2. Restart heat

View File

@@ -0,0 +1,56 @@
#
# 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.engine import clients
from heat.openstack.common import log as logging
logger = logging.getLogger(__name__)
try:
from marconiclient.queues.v1 import client as marconiclient
except ImportError:
marconiclient = None
logger.info(_('marconiclient not available'))
class Clients(clients.OpenStackClients):
'''
Convenience class to create and cache client instances.
'''
def __init__(self, context):
super(Clients, self).__init__(context)
self._marconi = None
def marconi(self, service_type="queuing"):
if self._marconi:
return self._marconi
con = self.context
if self.auth_token is None:
logger.error(_("Marconi connection failed, no auth_token!"))
return None
opts = {
'os_auth_token': con.auth_token,
'os_auth_url': con.auth_url,
'os_project_id': con.tenant,
'os_service_type': service_type,
}
auth_opts = {'backend': 'keystone',
'options': opts}
conf = {'auth_opts': auth_opts}
endpoint = self.url_for(service_type=service_type)
self._marconi = marconiclient.Client(url=endpoint, conf=conf)
return self._marconi

View File

@@ -12,21 +12,17 @@
# under the License. # under the License.
from heat.common import exception from heat.common import exception
from heat.engine import clients
from heat.engine import properties from heat.engine import properties
from heat.engine import resource from heat.engine import resource
from heat.openstack.common import log as logging from heat.openstack.common import log as logging
from .. import clients # noqa
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
try: if clients.marconiclient is None:
from marconiclient.queues.v1 import client as marconiclient
except ImportError:
marconiclient = None
logger.info(_('marconiclient not available'))
def resource_mapping(): def resource_mapping():
return {} return {}
else: else:
@@ -36,39 +32,6 @@ else:
} }
class Clients(clients.OpenStackClients):
'''
Convenience class to create and cache client instances.
'''
def __init__(self, context):
super(Clients, self).__init__(context)
self._marconi = None
def marconi(self, service_type="queuing"):
if self._marconi:
return self._marconi
con = self.context
if self.auth_token is None:
logger.error(_("Marconi connection failed, no auth_token!"))
return None
opts = {
'os_auth_token': con.auth_token,
'os_auth_url': con.auth_url,
'os_project_id': con.tenant,
'os_service_type': service_type,
}
auth_opts = {'backend': 'keystone',
'options': opts}
conf = {'auth_opts': auth_opts}
endpoint = self.url_for(service_type=service_type)
self._marconi = marconiclient.Client(url=endpoint, conf=conf)
return self._marconi
class MarconiQueue(resource.Resource): class MarconiQueue(resource.Resource):
PROPERTIES = ( PROPERTIES = (
@@ -98,7 +61,7 @@ class MarconiQueue(resource.Resource):
def __init__(self, name, json_snippet, stack): def __init__(self, name, json_snippet, stack):
super(MarconiQueue, self).__init__(name, json_snippet, stack) super(MarconiQueue, self).__init__(name, json_snippet, stack)
self.clients = Clients(self.context) self.clients = clients.Clients(self.context)
def marconi(self): def marconi(self):
return self.clients.marconi() return self.clients.marconi()