Account for differences in Rackspace Cloud Glance
The Rackspace Cloud service catalog has a tenant-scoped URL for the image service so our client implementation needs to munge the URL a little to make it work. Change-Id: Ic5b3702aec8c4ab373dbcf6eb8e6f164d9fd48d0
This commit is contained in:
parent
24cf6ad5ef
commit
8cfe15cf39
@ -13,6 +13,8 @@
|
||||
|
||||
"""Client Libraries for Rackspace Resources."""
|
||||
|
||||
import urlparse
|
||||
|
||||
from oslo.config import cfg
|
||||
|
||||
from heat.common import exception
|
||||
@ -20,6 +22,8 @@ from heat.engine import clients
|
||||
from heat.openstack.common.gettextutils import _
|
||||
from heat.openstack.common import log as logging
|
||||
|
||||
from glanceclient import client as glanceclient
|
||||
|
||||
LOG = logging.getLogger(__name__)
|
||||
|
||||
try:
|
||||
@ -119,6 +123,33 @@ class Clients(clients.OpenStackClients):
|
||||
# unwrap here and things just work
|
||||
return self._get_client("object_store").connection
|
||||
|
||||
def glance(self):
|
||||
if "image" not in self._clients:
|
||||
con = self.context
|
||||
endpoint_type = self._get_client_option('glance', 'endpoint_type')
|
||||
endpoint = self.url_for(service_type='image',
|
||||
endpoint_type=endpoint_type,
|
||||
region_name=cfg.CONF.region_name)
|
||||
# Rackspace service catalog includes a tenant scoped glance
|
||||
# endpoint so we have to munge the url a bit
|
||||
glance_url = urlparse.urlparse(endpoint)
|
||||
# remove the tenant and following from the url
|
||||
endpoint = "%s://%s" % (glance_url.scheme, glance_url.hostname)
|
||||
args = {
|
||||
'auth_url': con.auth_url,
|
||||
'service_type': 'image',
|
||||
'project_id': con.tenant,
|
||||
'token': self.auth_token,
|
||||
'endpoint_type': endpoint_type,
|
||||
'ca_file': self._get_client_option('glance', 'ca_file'),
|
||||
'cert_file': self._get_client_option('glance', 'cert_file'),
|
||||
'key_file': self._get_client_option('glance', 'key_file'),
|
||||
'insecure': self._get_client_option('glance', 'insecure')
|
||||
}
|
||||
client = glanceclient.Client('2', endpoint, **args)
|
||||
self._clients["image"] = client
|
||||
return self._clients["image"]
|
||||
|
||||
def __authenticate(self):
|
||||
"""Create an authenticated client context."""
|
||||
self.pyrax = pyrax.create_context("rackspace")
|
||||
|
Loading…
Reference in New Issue
Block a user