powervc-driver/common-powervc/powervc/common/client/extensions/glance.py

76 lines
2.6 KiB
Python

# Copyright 2013 IBM Corp.
import powervc.common.client.extensions.base as base
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 = utils.strip_version(client_info['endpoint'])
kwargs = {'cacert': client_info['cacert'],
'insecure': client_info['insecure'],
'token': client_info['token']}
if isinstance(endpoint, tuple):
endpoint = endpoint[0]
self.http_client = http.HTTPClient(endpoint, **kwargs)
self.schemas = schemas.Controller(self.http_client)
self.images = images.Controller(self.http_client, self.schemas)
self.image_tags = image_tags.Controller(self.http_client, self.schemas)
self.image_members = image_members.Controller(self.http_client,
self.schemas)
class Client(base.ClientExtension):
def __init__(self, client):
super(Client, self).__init__(client)
def listImages(self):
return [image for image in self.client.images.list()]
def getImage(self, image_id):
return self.client.images.get(image_id)
def getImageFile(self, image_id):
return self.client.images.data(image_id)
def deleteImage(self, image_id):
return self.client.images.delete(image_id)
def updateImage(self, image_id, **kwargs):
return self.client.images.update(image_id, **kwargs)
def listImageMembers(self, image_id):
return [imageMember for imageMember in
self.client.image_members.list(image_id)]
def deleteImageMember(self, image_id, member_id):
self.client.image_members.delete(image_id, member_id)
def updateImageMember(self, image_id, member_id, member_status):
return self.client.image_members.update(image_id, member_id,
member_status)
def createImageMember(self, image_id, member_id):
return self.client.image_members.create(image_id, member_id)
def updateImageTag(self, image_id, tag_value):
if self.client_version == 2:
return self.client.image_tags.update(image_id, tag_value)
def deleteImageTag(self, image_id, tag_value):
if self.client_version == 2:
return self.client.image_tags.delete(image_id, tag_value)