Provide access to Trove client

python-troveclient is required for implementing Database As A
Service (DBaaS) resource. This patch makes Heat depend on
python-troveclient and also changing clients.py and resource.py
to provide access to troveclient.

Implements: blueprint dbaas-trove-resource

Change-Id: I010d4a11793cc634aa0af5f01b637fff4effbf61
This commit is contained in:
Vijendar Komalla 2013-10-14 16:45:15 -05:00
parent 01fb048330
commit 89376661cb
3 changed files with 37 additions and 0 deletions

View File

@ -41,6 +41,12 @@ except ImportError:
cinderclient = None
logger.info(_('cinderclient not available'))
try:
from troveclient import client as troveclient
except ImportError:
troveclient = None
logger.info(_('troveclient not available'))
try:
from ceilometerclient.v2 import client as ceilometerclient
except ImportError:
@ -68,6 +74,7 @@ class OpenStackClients(object):
self._swift = None
self._neutron = None
self._cinder = None
self._trove = None
self._ceilometer = None
@property
@ -195,6 +202,32 @@ class OpenStackClients(object):
return self._cinder
def trove(self, service_type="database"):
if troveclient is None:
return None
if self._trove:
return self._trove
con = self.context
if self.auth_token is None:
logger.error(_("Trove connection failed, no auth_token!"))
return None
args = {
'service_type': service_type,
'auth_url': con.auth_url,
'proxy_token': con.auth_token,
'username': None,
'password': None
}
self._trove = troveclient.Client('1.0', **args)
management_url = self.url_for(service_type=service_type)
self._trove.client.auth_token = con.auth_token
self._trove.client.management_url = management_url
return self._trove
def ceilometer(self):
if ceilometerclient is None:
return None

View File

@ -338,6 +338,9 @@ class Resource(object):
def cinder(self):
return self.stack.clients.cinder()
def trove(self):
return self.stack.clients.trove()
def ceilometer(self):
return self.stack.clients.ceilometer()

View File

@ -22,6 +22,7 @@ python-swiftclient>=1.5
python-neutronclient>=2.3.0,<3
python-ceilometerclient>=1.0.6
python-cinderclient>=1.0.6
python-troveclient>=1.0.0
PyYAML>=3.1.0
paramiko>=1.8.0
Babel>=1.3