Change in vdsm[master]: Make IRS methods bypass API.py

smizrahi at redhat.com smizrahi at redhat.com
Wed Aug 15 21:30:45 UTC 2012


Saggi Mizrahi has uploaded a new change for review.

Change subject: Make IRS methods bypass API.py
......................................................................

Make IRS methods bypass API.py

Change-Id: Iaf7dc90462e47b9f067959df7325b57cbaa82241
Signed-off-by: Saggi Mizrahi <smizrahi at redhat.com>
---
M vdsm/BindingXMLRPC.py
1 file changed, 80 insertions(+), 432 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/vdsm refs/changes/27/7227/1

diff --git a/vdsm/BindingXMLRPC.py b/vdsm/BindingXMLRPC.py
index 0d74af6..2e0dce2 100644
--- a/vdsm/BindingXMLRPC.py
+++ b/vdsm/BindingXMLRPC.py
@@ -33,6 +33,7 @@
 import API
 from vdsm.exception import VdsmException
 import fenceAgent
+from functools import partial
 
 try:
     from gluster.api import getGlusterMethods
@@ -388,358 +389,6 @@
         api = API.Global()
         return api.setMOMPolicy(policy)
 
-    def domainActivate(self, sdUUID, spUUID, options=None):
-        domain = API.StorageDomain(sdUUID, spUUID)
-        return domain.activate()
-
-    def domainAttach(self, sdUUID, spUUID, options=None):
-        domain = API.StorageDomain(sdUUID, spUUID)
-        return domain.attach(spUUID)
-
-    def domainCreate(self, storageType, sdUUID, domainName,
-                     typeSpecificArg, domClass,
-                     domVersion=None, options=None):
-        domain = API.StorageDomain(sdUUID, spUUID=None)
-        return domain.create(storageType, typeSpecificArg, domainName,
-                             domClass, domVersion)
-
-    def domainDeactivate(self, sdUUID, spUUID, msdUUID, masterVersion,
-                         options=None):
-        domain = API.StorageDomain(sdUUID, spUUID)
-        return domain.deactivate(msdUUID, masterVersion)
-
-    def domainDetach(self, sdUUID, spUUID, msdUUID, masterVersion,
-                     options=None):
-        domain = API.StorageDomain(sdUUID, spUUID)
-        return domain.detach(msdUUID, masterVersion, force=False)
-
-    def domainDetachForced(self, sdUUID, spUUID, options=None):
-        domain = API.StorageDomain(sdUUID, spUUID)
-        return domain.detach(None, None, force=True)
-
-    def domainExtend(self, sdUUID, spUUID, devlist, options=None):
-        domain = API.StorageDomain(sdUUID, spUUID)
-        return domain.extend(devlist)
-
-    def domainFormat(self, sdUUID,
-                     autoDetach=False, options=None):
-        domain = API.StorageDomain(sdUUID, spUUID=None)
-        return domain.format(autoDetach)
-
-    def domainGetFileList(self, sdUUID, pattern='*', options=None):
-        domain = API.StorageDomain(sdUUID, spUUID=None)
-        return domain.getFileList(pattern)
-
-    def domainGetImages(self, sdUUID, options=None):
-        domain = API.StorageDomain(sdUUID, spUUID=None)
-        return domain.getImages()
-
-    def domainGetInfo(self, sdUUID, options=None):
-        domain = API.StorageDomain(sdUUID, spUUID=None)
-        return domain.getInfo()
-
-    def domainGetStats(self, sdUUID, options=None):
-        domain = API.StorageDomain(sdUUID, spUUID=None)
-        return domain.getStats()
-
-    def domainGetVolumes(self, sdUUID, spUUID,
-                         imgUUID=API.Image.BLANK_UUID):
-        domain = API.StorageDomain(sdUUID, spUUID)
-        return domain.getVolumes(imgUUID)
-
-    def domainSetDescription(self, sdUUID, description, options=None):
-        domain = API.StorageDomain(sdUUID, spUUID=None)
-        return domain.setDescription(description)
-
-    def domainUploadVolume(self, sdUUID, spUUID, imgUUID, volUUID,
-                           srcPath, size, method="rsync", options=None):
-        domain = API.StorageDomain(sdUUID, spUUID)
-        return domain.uploadVolume(imgUUID, volUUID, srcPath, size, method)
-
-    def domainValidate(self, sdUUID, options=None):
-        domain = API.StorageDomain(sdUUID, spUUID=None)
-        return domain.validate()
-
-    def imageDelete(self, sdUUID, spUUID,
-                    imgUUID, postZero=False, force=False):
-        image = API.Image(imgUUID, spUUID, sdUUID)
-        return image.delete(postZero, force)
-
-    def imageDeleteVolumes(self, sdUUID, spUUID, imgUUID, volumes,
-                           postZero=False, force=False):
-        image = API.Image(imgUUID, spUUID, sdUUID)
-        return image.deleteVolumes(volumes, postZero, force)
-
-    def imageMergeSnapshots(self, sdUUID, spUUID, vmUUID, imgUUID,
-                            ancestor, successor, postZero=False):
-        image = API.Image(imgUUID, spUUID, sdUUID)
-        return image.mergeSnapshots(ancestor, successor, postZero)
-
-    def imageMove(self, spUUID, srcDomUUID, dstDomUUID, imgUUID, vmUUID,
-                  op, postZero=False, force=False):
-        image = API.Image(imgUUID, spUUID, srcDomUUID)
-        return image.move(dstDomUUID, op, postZero, force)
-
-    def poolConnect(self, spUUID, hostID, scsiKey, msdUUID, masterVersion,
-                    options=None):
-        pool = API.StoragePool(spUUID)
-        return pool.connect(hostID, scsiKey, msdUUID, masterVersion)
-
-    def poolConnectStorageServer(self, domType, spUUID, conList, options=None):
-        pool = API.StoragePool(spUUID)
-        return pool.connectStorageServer(domType, conList)
-
-    def poolCreate(self, poolType, spUUID, poolName, masterDom, domList,
-                   masterVersion, lockPolicy=None, lockRenewalIntervalSec=None,
-                   leaseTimeSec=None, ioOpTimeoutSec=None,
-                   leaseRetries=None, options=None):
-        pool = API.StoragePool(spUUID)
-        return pool.create(poolName, masterDom, masterVersion, domList,
-               lockRenewalIntervalSec, leaseTimeSec, ioOpTimeoutSec,
-               leaseRetries)
-
-    def poolDestroy(self, spUUID, hostID, scsiKey, options=None):
-        pool = API.StoragePool(spUUID)
-        return pool.destroy(hostID, scsiKey)
-
-    def poolDisconnect(self, spUUID, hostID, scsiKey, remove=False,
-                       options=None):
-        pool = API.StoragePool(spUUID)
-        return pool.disconnect(hostID, scsiKey, remove)
-
-    def poolDisconnectStorageServer(self, domType, spUUID, conList,
-                                    options=None):
-        pool = API.StoragePool(spUUID)
-        return pool.disconnectStorageServer(domType, conList)
-
-    def poolFenceSPMStorage(self, spUUID, lastOwner, lastLver, options=None):
-        pool = API.StoragePool(spUUID)
-        return pool.fence()
-
-    def poolGetBackedUpVmsInfo(self, spUUID, sdUUID,
-                               vmList=None, options=None):
-        pool = API.StoragePool(spUUID)
-        return pool.getBackedUpVmsInfo(sdUUID, vmList)
-
-    def poolGetBackedUpVmsList(self, spUUID, sdUUID=None, options=None):
-        pool = API.StoragePool(spUUID)
-        return pool.getBackedUpVmsList(sdUUID)
-
-    def poolGetFloppyList(self, spUUID, options=None):
-        pool = API.StoragePool(spUUID)
-        return pool.getFloppyList()
-
-    def poolGetDomainsContainingImage(self, spUUID, imgUUID, datadomains=True,
-                                      options=None):
-        pool = API.StoragePool(spUUID)
-        return pool.getDomainsContainingImage(imgUUID, datadomains)
-
-    def poolGetIsoList(self, spUUID, extension='iso', options=None):
-        pool = API.StoragePool(spUUID)
-        return pool.getIsoList(extension)
-
-    def poolGetSpmStatus(self, spUUID, options=None):
-        pool = API.StoragePool(spUUID)
-        return pool.getSpmStatus()
-
-    def poolGetInfo(self, spUUID, options=None):
-        pool = API.StoragePool(spUUID)
-        return pool.getInfo()
-
-    def poolMoveMultipleImages(self, spUUID, srcDomUUID, dstDomUUID, imgDict,
-                               vmUUID, force=False):
-        pool = API.StoragePool(spUUID)
-        return pool.moveMultipleImages(srcDomUUID, dstDomUUID, imgDict, force)
-
-    def poolReconstructMaster(self, spUUID, poolName, masterDom, domDict,
-                              masterVersion, lockPolicy=None,
-                              lockRenewalIntervalSec=None, leaseTimeSec=None,
-                              ioOpTimeoutSec=None, leaseRetries=None,
-                              hostId=None, options=None):
-        pool = API.StoragePool(spUUID)
-        return pool.reconstructMaster(hostId, poolName, masterDom,
-            masterVersion, domDict, lockRenewalIntervalSec, leaseTimeSec,
-            ioOpTimeoutSec, leaseRetries)
-
-    def poolRefresh(self, spUUID, msdUUID, masterVersion, options=None):
-        pool = API.StoragePool(spUUID)
-        return pool.refresh(msdUUID, masterVersion)
-
-    def poolSetDescription(self, spUUID, description, options=None):
-        pool = API.StoragePool(spUUID)
-        return pool.setDescription(description)
-
-    def poolSpmStart(self, spUUID, prevID, prevLVER, recoveryMode,
-                     scsiFencing, maxHostID=None,
-                     domVersion=None, options=None):
-        pool = API.StoragePool(spUUID)
-        return pool.spmStart(prevID, prevLVER, scsiFencing,
-                             maxHostID, domVersion)
-
-    def poolSpmStop(self, spUUID, options=None):
-        pool = API.StoragePool(spUUID)
-        return pool.spmStop()
-
-    def poolUpgrade(self, spUUID, targetDomVersion):
-        pool = API.StoragePool(spUUID)
-        return pool.upgrade(targetDomVersion)
-
-    def poolValidateStorageServerConnection(self, domType, spUUID, conList,
-                                            options=None):
-        pool = API.StoragePool(spUUID)
-        return pool.validateStorageServerConnection(domType, conList)
-
-    def poolUpdateVMs(self, spUUID, vmList, sdUUID=None, options=None):
-        pool = API.StoragePool(spUUID)
-        return pool.updateVMs(vmList, sdUUID)
-
-    def poolRemoveVm(self, spUUID, vmUUID, sdUUID=None, options=None):
-        pool = API.StoragePool(spUUID)
-        return pool.removeVM(vmUUID, sdUUID)
-
-    def volumeCopy(self, sdUUID, spUUID, vmUUID, srcImgUUID, srcVolUUID,
-                   dstImgUUID, dstVolUUID, description='',
-                   dstSdUUID=API.StorageDomain.BLANK_UUID,
-                   volType=API.Volume.Roles.SHARED,
-                   volFormat=API.Volume.Formats.UNKNOWN,
-                   preallocate=API.Volume.Types.UNKNOWN, postZero=False,
-                   force=False):
-        volume = API.Volume(srcVolUUID, spUUID, sdUUID, srcImgUUID)
-        return volume.copy(dstSdUUID, dstImgUUID, dstVolUUID,
-            description, volType, volFormat, preallocate, postZero,
-            force)
-
-    def volumeCreate(self, sdUUID, spUUID, imgUUID, size, volFormat,
-                     preallocate, diskType, volUUID, desc,
-                     srcImgUUID=API.Image.BLANK_UUID,
-                     srcVolUUID=API.Volume.BLANK_UUID):
-        volume = API.Volume(volUUID, spUUID, sdUUID, imgUUID)
-        return volume.create(size, volFormat, preallocate, diskType,
-                desc, srcImgUUID, srcVolUUID)
-
-    def volumeExtend(self, sdUUID, spUUID, imgUUID, volUUID, size,
-                     isShuttingDown=None):
-        volume = API.Volume(volUUID, spUUID, sdUUID, imgUUID)
-        return volume.extend(size, isShuttingDown)
-
-    def volumeGetInfo(self, sdUUID, spUUID, imgUUID, volUUID):
-        volume = API.Volume(volUUID, spUUID, sdUUID, imgUUID)
-        return volume.getInfo()
-
-    def volumeGetPath(self, sdUUID, spUUID, imgUUID, volUUID):
-        volume = API.Volume(volUUID, spUUID, sdUUID, imgUUID)
-        return volume.getPath()
-
-    def volumeGetSize(self, sdUUID, spUUID, imgUUID, volUUID):
-        volume = API.Volume(volUUID, spUUID, sdUUID, imgUUID)
-        return volume.getSize()
-
-    def volumePrepare(self, sdUUID, spUUID, imgUUID, volUUID, rw=True):
-        volume = API.Volume(volUUID, spUUID, sdUUID, imgUUID)
-        return volume.prepare(rw)
-
-    def volumeRefresh(self, sdUUID, spUUID, imgUUID, volUUID):
-        volume = API.Volume(volUUID, spUUID, sdUUID, imgUUID)
-        return volume.refresh()
-
-    def volumeSetDescription(self, sdUUID, spUUID, imgUUID, volUUID,
-                             description):
-        volume = API.Volume(volUUID, spUUID, sdUUID, imgUUID)
-        return volume.setDescription(description)
-
-    def volumeSetLegality(self, sdUUID, spUUID, imgUUID, volUUID, legality):
-        volume = API.Volume(volUUID, spUUID, sdUUID, imgUUID)
-        return volume.setLegality(legality)
-
-    def volumeTearDown(self, sdUUID, spUUID, imgUUID, volUUID):
-        volume = API.Volume(volUUID, spUUID, sdUUID, imgUUID)
-        return volume.tearDown()
-
-    def taskClear(self, taskId):
-        task = API.Task(taskId)
-        return task.clear()
-
-    def taskGetInfo(self, taskId):
-        task = API.Task(taskId)
-        return task.getInfo()
-
-    def taskGetStatus(self, taskId):
-        task = API.Task(taskId)
-        return task.getStatus()
-
-    def taskRevert(self, taskId):
-        task = API.Task(taskId)
-        return task.revert()
-
-    def taskStop(self, taskId):
-        task = API.Task(taskId)
-        return task.stop()
-
-    # Global storage methods
-    def tasksGetAllInfo(self):
-        api = API.Global()
-        return api.getAllTasksInfo()
-
-    def tasksGetAllStatuses(self):
-        api = API.Global()
-        return api.getAllTasksStatuses()
-
-    def iscsiDiscoverSendTargets(self, con, options=None):
-        iscsiConn = API.ISCSIConnection(con['connection'],
-            con['port'], con['user'], con['password'])
-        return iscsiConn.discoverSendTargets()
-
-    def vgCreate(self, name, devlist, force=False):
-        vg = API.LVMVolumeGroup(self.cif)
-        return vg.create(name, devlist, force)
-
-    def vgGetInfo(self, vgUUID, options=None):
-        vg = API.LVMVolumeGroup(vgUUID)
-        return vg.getInfo()
-
-    def vgRemove(self, vgUUID, options=None):
-        vg = API.LVMVolumeGroup(vgUUID)
-        return vg.remove()
-
-    def domainsGetList(self, spUUID=None, domainClass=None, storageType=None,
-                       remotePath=None, options=None):
-        api = API.Global()
-        return api.getStorageDomains(spUUID, domainClass, storageType,
-                                     remotePath)
-
-    def poolsGetConnectedList(self, options=None):
-        api = API.Global()
-        return api.getConnectedStoragePools()
-
-    def storageRepoGetStats(self, options=None):
-        api = API.Global()
-        return api.getStorageRepoStats()
-
-    def vgsGetList(self, storageType=None, options=None):
-        api = API.Global()
-        return api.getLVMVolumeGroups(storageType)
-
-    def devicesGetList(self, storageType=None, options=None):
-        api = API.Global()
-        return api.getDeviceList(storageType)
-
-    def devicesGetVisibility(self, guids, options=None):
-        api = API.Global()
-        return api.getDevicesVisibility(guids)
-
-    def deviceGetInfo(self, guid, options=None):
-        api = API.Global()
-        return api.getDeviceInfo(guid)
-
-    def storageServerConnectionRefsAcquire(self, conRefArgs):
-        return API.ConnectionRefs().acquire(conRefArgs)
-
-    def storageServerConnectionRefsRelease(self, refIDs):
-        return API.ConnectionRefs().release(refIDs)
-
-    def storageServerConnectionRefsStatuses(self):
-        return API.ConnectionRefs().statuses()
-
     def getGlobalMethods(self):
         return ((self.vmDestroy, 'destroy'),
                 (self.vmCreate, 'create'),
@@ -785,86 +434,85 @@
                 (self.vmHotunplugNic, 'hotunplugNic'))
 
     def getIrsMethods(self):
-        return ((self.domainActivate, 'activateStorageDomain'),
-                (self.domainAttach, 'attachStorageDomain'),
-                (self.domainCreate, 'createStorageDomain'),
-                (self.domainDeactivate, 'deactivateStorageDomain'),
-                (self.domainDetach, 'detachStorageDomain'),
-                (self.domainDetachForced, 'forcedDetachStorageDomain'),
-                (self.domainExtend, 'extendStorageDomain'),
-                (self.domainFormat, 'formatStorageDomain'),
-                (self.domainGetFileList, 'getFileList'),
-                (self.domainGetImages, 'getImagesList'),
-                (self.domainGetInfo, 'getStorageDomainInfo'),
-                (self.domainGetStats, 'getStorageDomainStats'),
-                (self.domainGetVolumes, 'getVolumesList'),
-                (self.domainSetDescription, 'setStorageDomainDescription'),
-                (self.domainUploadVolume, 'uploadVolume'),
-                (self.domainValidate, 'validateStorageDomain'),
-                (self.imageDelete, 'deleteImage'),
-                (self.imageDeleteVolumes, 'deleteVolume'),
-                (self.imageMergeSnapshots, 'mergeSnapshots'),
-                (self.imageMove, 'moveImage'),
-                (self.poolConnect, 'connectStoragePool'),
-                (self.poolConnectStorageServer, 'connectStorageServer'),
-                (self.poolCreate, 'createStoragePool'),
-                (self.poolDestroy, 'destroyStoragePool'),
-                (self.poolDisconnect, 'disconnectStoragePool'),
-                (self.poolDisconnectStorageServer, 'disconnectStorageServer'),
-                (self.poolFenceSPMStorage, 'fenceSpmStorage'),
-                (self.poolGetBackedUpVmsInfo, 'getVmsInfo'),
-                (self.poolGetBackedUpVmsList, 'getVmsList'),
-                (self.poolGetFloppyList, 'getFloppyList'),
-                (self.poolGetDomainsContainingImage, 'getImageDomainsList'),
-                (self.poolGetIsoList, 'getIsoList'),
-                (self.poolGetSpmStatus, 'getSpmStatus'),
-                (self.poolGetInfo, 'getStoragePoolInfo'),
-                (self.poolMoveMultipleImages, 'moveMultipleImages'),
-                (self.poolReconstructMaster, 'reconstructMaster'),
-                (self.poolRefresh, 'refreshStoragePool'),
-                (self.poolSetDescription, 'setStoragePoolDescription'),
-                (self.poolSpmStart, 'spmStart'),
-                (self.poolSpmStop, 'spmStop'),
-                (self.poolUpgrade, 'upgradeStoragePool'),
-                (self.poolValidateStorageServerConnection,
-                 'validateStorageServerConnection'),
-                (self.poolUpdateVMs, 'updateVM'),
-                (self.poolRemoveVm, 'removeVM'),
-                (self.taskClear, 'clearTask'),
-                (self.taskGetInfo, 'getTaskInfo'),
-                (self.taskGetStatus, 'getTaskStatus'),
-                (self.taskRevert, 'revertTask'),
-                (self.taskStop, 'stopTask'),
-                (self.volumeCopy, 'copyImage'),
-                (self.volumeCreate, 'createVolume'),
-                (self.volumeExtend, 'extendVolume'),
-                (self.volumeGetInfo, 'getVolumeInfo'),
-                (self.volumeGetPath, 'getVolumePath'),
-                (self.volumeGetSize, 'getVolumeSize'),
-                (self.volumePrepare, 'prepareVolume'),
-                (self.volumeRefresh, 'refreshVolume'),
-                (self.volumeSetDescription, 'setVolumeDescription'),
-                (self.volumeSetLegality, 'setVolumeLegality'),
-                (self.volumeTearDown, 'teardownVolume'),
-                (self.tasksGetAllInfo, 'getAllTasksInfo'),
-                (self.tasksGetAllStatuses, 'getAllTasksStatuses'),
-                (self.iscsiDiscoverSendTargets, 'discoverSendTargets'),
-                (self.vgCreate, 'createVG'),
-                (self.vgGetInfo, 'getVGInfo'),
-                (self.vgRemove, 'removeVG'),
-                (self.domainsGetList, 'getStorageDomainsList'),
-                (self.poolsGetConnectedList, 'getConnectedStoragePoolsList'),
-                (self.storageRepoGetStats, 'repoStats'),
-                (self.vgsGetList, 'getVGList'),
-                (self.devicesGetList, 'getDeviceList'),
-                (self.devicesGetVisibility, 'getDevicesVisibility'),
-                (self.deviceGetInfo, 'getDeviceInfo'),
-                (self.storageServerConnectionRefsAcquire,
-                 'storageServer_ConnectionRefs_acquire'),
-                (self.storageServerConnectionRefsRelease,
-                 'storageServer_ConnectionRefs_release'),
-                (self.storageServerConnectionRefsStatuses,
-                 'storageServer_ConnectionRefs_statuses'),)
+        passThroughMethods = (
+                'activateStorageDomain',
+                'attachStorageDomain',
+                'createStorageDomain',
+                'deactivateStorageDomain',
+                'detachStorageDomain',
+                'forcedDetachStorageDomain',
+                'extendStorageDomain',
+                'formatStorageDomain',
+                'getFileList',
+                'getImagesList',
+                'getStorageDomainInfo',
+                'getStorageDomainStats',
+                'getVolumesList',
+                'setStorageDomainDescription',
+                'uploadVolume',
+                'validateStorageDomain',
+                'deleteImage',
+                'deleteVolume',
+                'mergeSnapshots',
+                'moveImage',
+                'connectStoragePool',
+                'connectStorageServer',
+                'createStoragePool',
+                'destroyStoragePool',
+                'disconnectStoragePool',
+                'disconnectStorageServer',
+                'fenceSpmStorage',
+                'getVmsInfo',
+                'getVmsList',
+                'getFloppyList',
+                'getImageDomainsList',
+                'getIsoList',
+                'getSpmStatus',
+                'getStoragePoolInfo',
+                'moveMultipleImages',
+                'reconstructMaster',
+                'refreshStoragePool',
+                'setStoragePoolDescription',
+                'spmStart',
+                'spmStop',
+                'upgradeStoragePool',
+                'validateStorageServerConnection',
+                'updateVM',
+                'removeVM',
+                'clearTask',
+                'getTaskInfo',
+                'getTaskStatus',
+                'revertTask',
+                'stopTask',
+                'copyImage',
+                'createVolume',
+                'extendVolume',
+                'getVolumeInfo',
+                'getVolumePath',
+                'getVolumeSize',
+                'prepareVolume',
+                'refreshVolume',
+                'setVolumeDescription',
+                'setVolumeLegality',
+                'teardownVolume',
+                'getAllTasksInfo',
+                'getAllTasksStatuses',
+                'discoverSendTargets',
+                'createVG',
+                'getVGInfo',
+                'removeVG',
+                'getStorageDomainsList',
+                'getConnectedStoragePoolsList',
+                'repoStats',
+                'getVGList',
+                'getDeviceList',
+                'getDevicesVisibility',
+                'getDeviceInfo',
+                'storageServer_ConnectionRefs_acquire',
+                'storageServer_ConnectionRefs_release',
+                'storageServer_ConnectionRefs_statuses',)
+        return zip(map(partial(getattr, self.cif.irs), passThroughMethods),
+                passThroughMethods)
 
 
 def wrapApiMethod(f):


--
To view, visit http://gerrit.ovirt.org/7227
To unsubscribe, visit http://gerrit.ovirt.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: Iaf7dc90462e47b9f067959df7325b57cbaa82241
Gerrit-PatchSet: 1
Gerrit-Project: vdsm
Gerrit-Branch: master
Gerrit-Owner: Saggi Mizrahi <smizrahi at redhat.com>


More information about the vdsm-patches mailing list