Federico Simoncelli has uploaded a new change for review.
Change subject: api: expose prepare and teardown image ......................................................................
api: expose prepare and teardown image
Bug-Url: https://bugzilla.redhat.com/show_bug.cgi?id=1092166 Change-Id: I6a4e21513a2a888ff5ee4bc085a3da9a8bf8980b Signed-off-by: Federico Simoncelli fsimonce@redhat.com --- M client/vdsClient.py M vdsm/API.py M vdsm/BindingXMLRPC.py M vdsm_api/vdsmapi-schema.json 4 files changed, 75 insertions(+), 0 deletions(-)
git pull ssh://gerrit.ovirt.org:29418/vdsm refs/changes/89/28389/1
diff --git a/client/vdsClient.py b/client/vdsClient.py index 0235837..80b8a0b 100644 --- a/client/vdsClient.py +++ b/client/vdsClient.py @@ -1340,6 +1340,18 @@
return 0, image['uuid']
+ def prepareImage(self, args): + if len(args) < 3 or len(args) > 4: + raise ValueError('Wrong number of parameters') + ret = self.s.prepareImage(*args) + return ret['status']['code'], ret['status']['message'] + + def teardownImage(self, args): + if len(args) < 3 or len(args) > 4: + raise ValueError('Wrong number of parameters') + ret = self.s.teardownImage(*args) + return ret['status']['code'], ret['status']['message'] + def moveMultiImage(self, args): spUUID = args[0] srcDomUUID = args[1] @@ -2423,6 +2435,14 @@ 'Download an image from a remote endpoint using the specified', 'methodArgs.' )), + 'prepareImage': (serv.prepareImage, ( + '<spUUID> <sdUUID> <imgUUID> [<volUUID>]', + 'Prepare an image, making the needed volumes available.' + )), + 'teardownImage': (serv.teardownImage, ( + '<spUUID> <sdUUID> <imgUUID> [<volUUID>]', + 'Teardown an image, releasing the prepared volumes.' + )), 'moveMultiImage': (serv.moveMultiImage, ('<spUUID> <srcDomUUID> <dstDomUUID> ' '<imgList>({imgUUID=postzero,' diff --git a/vdsm/API.py b/vdsm/API.py index 3ed1a0c..8b1032d 100644 --- a/vdsm/API.py +++ b/vdsm/API.py @@ -848,6 +848,14 @@ return self._irs.downloadImage( methodArgs, self._spUUID, self._sdUUID, self._UUID, volUUID)
+ def prepare(self, volUUID=None): + return self._irs.prepareImage( + self._sdUUID, self._spUUID, self._UUID, volUUID) + + def teardown(self, volUUID=None): + return self._irs.teardownImage( + self._sdUUID, self._spUUID, self._UUID, volUUID) + def uploadToStream(self, methodArgs, callback, startEvent, volUUID=None): return self._irs.uploadImageToStream( methodArgs, callback, startEvent, self._spUUID, self._sdUUID, diff --git a/vdsm/BindingXMLRPC.py b/vdsm/BindingXMLRPC.py index 3cb4af7..87ce86f 100644 --- a/vdsm/BindingXMLRPC.py +++ b/vdsm/BindingXMLRPC.py @@ -686,6 +686,14 @@ image = API.Image(imgUUID, spUUID, sdUUID) return image.download(methodArgs, volUUID)
+ def imagePrepare(self, spUUID, sdUUID, imgUUID, volUUID=None): + image = API.Image(imgUUID, spUUID, sdUUID) + return image.prepare(volUUID) + + def imageTeardown(self, spUUID, sdUUID, imgUUID, volUUID=None): + image = API.Image(imgUUID, spUUID, sdUUID) + return image.teardown(volUUID) + def poolConnect(self, spUUID, hostID, scsiKey, msdUUID, masterVersion, domainsMap=None, options=None): pool = API.StoragePool(spUUID) @@ -1032,6 +1040,8 @@ (self.imageSyncData, 'syncImageData'), (self.imageUpload, 'uploadImage'), (self.imageDownload, 'downloadImage'), + (self.imagePrepare, 'prepareImage'), + (self.imageTeardown, 'teardownImage'), (self.poolConnect, 'connectStoragePool'), (self.poolConnectStorageServer, 'connectStorageServer'), (self.poolCreate, 'createStoragePool'), diff --git a/vdsm_api/vdsmapi-schema.json b/vdsm_api/vdsmapi-schema.json index 993c7f4..1d094b8 100644 --- a/vdsm_api/vdsmapi-schema.json +++ b/vdsm_api/vdsmapi-schema.json @@ -4162,6 +4162,43 @@ 'storagedomainID': 'UUID', 'imageID': 'UUID', '*volumeID': 'UUID'}, 'returns': 'UUID'}
+## +# @Image.prepare: +# +# Prepare an image, making the needed volumes available. +# +# @storagepoolID: The UUID of the Storage Pool associated with the Image +# +# @storagedomainID: The UUID of the Storage Domain associated with the Image +# +# @imageID: The UUID of the Image +# +# @volumeID: #optional The UUID of the Volume (optional) +# +# Since: 4.15.0 +## +{'command': {'class': 'Image', 'name': 'prepare'}, + 'data': {'storagepoolID': 'UUID', 'storagedomainID': 'UUID', + 'imageID': 'UUID', '*volumeID': 'UUID'}} + +## +# @Image.teardown: +# +# Teardown an image, releasing the prepared volumes. +# +# @storagepoolID: The UUID of the Storage Pool associated with the Image +# +# @storagedomainID: The UUID of the Storage Domain associated with the Image +# +# @imageID: The UUID of the Image +# +# @volumeID: #optional The UUID of the Volume (optional) +# +# Since: 4.15.0 +## +{'command': {'class': 'Image', 'name': 'teardown'}, + 'data': {'storagepoolID': 'UUID', 'storagedomainID': 'UUID', + 'imageID': 'UUID', '*volumeID': 'UUID'}}
## Category: @LVMVolumeGroup ################################################### ##