Fix issue for glance image sync failed

Because of the code change of glanceclient , the component of glance-
powervc could not do the image sync sucessfully.

Change-Id: If0b31e20ec645478584c2dc08ad0aa48bb8db392
Closes-Bug: #1369817
This commit is contained in:
Eric_Zhao 2014-09-16 12:56:23 +08:00 committed by Zhao_Jian
parent 66ac1ea035
commit 5e0cd86117
2 changed files with 50 additions and 0 deletions

View File

@ -2,6 +2,45 @@
import powervc.common.client.extensions.base as base
import warlock
from glanceclient.common import http
from glanceclient.common import utils
from glanceclient.v2 import image_members
from glanceclient.v2 import image_tags
from glanceclient.v2 import images
from glanceclient.v2 import schemas
class Extended_V2_Client(object):
"""
Client for the Glance Images v2 API.
:param dict client_info : The client info dict to init a glance v2 client
"""
def __init__(self, client_info):
endpoint = client_info['endpoint']
kwargs = {'cacert': client_info['cacert'],
'insecure': client_info['insecure'],
'token': client_info['token']}
self.http_client = http.HTTPClient(utils.strip_version(endpoint),
**kwargs)
self.schemas = schemas.Controller(self.http_client)
image_model = self._get_image_model()
self.images = images.Controller(self.http_client, image_model)
self.image_tags = image_tags.Controller(self.http_client, image_model)
self.image_members = image_members.Controller(self.http_client,
self._get_member_model())
def _get_image_model(self):
schema = self.schemas.get('image')
return warlock.model_factory(schema.raw(), schemas.SchemaBasedModel)
def _get_member_model(self):
schema = self.schemas.get('member')
return warlock.model_factory(schema.raw(), schemas.SchemaBasedModel)
class Client(base.ClientExtension):

View File

@ -8,6 +8,7 @@ import powervc.common.client.delegate as delegate
from glanceclient.openstack.common import importutils
from powervc.common.constants import SERVICE_TYPES as SERVICE_TYPES
from powervc.common import netutils
from powervc.common.client.extensions.glance import Extended_V2_Client
LOG = logging.getLogger(__name__)
@ -146,6 +147,16 @@ class GlanceService(AbstractService):
url = self.url
if not url.endswith('/'):
url += '/'
if 'v2' in self.version:
client_info = {}
client_info['endpoint'] = self.url
client_info['cacert'] = self.base_args['cacert']
client_info['insecure'] = self.base_args['insecure']
client_info['token'] = self.keystone.auth_token
extened_client = Extended_V2_Client(client_info)
return (self._extend(self._patch(extened_client),
client_extension,
*extension_args))
return (self.
_extend(self.
_patch(self.clazz(url, token=self.keystone.auth_token,