Federico Simoncelli has uploaded a new change for review. Change subject: sp: move validatePoolSD in the StoragePool class ......................................................................
sp: move validatePoolSD in the StoragePool class It's the StoragePool duty to validate if an operation cannot be accomplished because the storage domain is not part of the pool. Change-Id: I75f0245ec5449d57431df7055be401d73975312b Signed-off-by: Federico Simoncelli <[email protected]> --- M vdsm/storage/hsm.py M vdsm/storage/sp.py 2 files changed, 16 insertions(+), 24 deletions(-) git pull ssh://gerrit.ovirt.org:29418/vdsm refs/changes/87/21787/1 diff --git a/vdsm/storage/hsm.py b/vdsm/storage/hsm.py index 0836777..231ea72 100644 --- a/vdsm/storage/hsm.py +++ b/vdsm/storage/hsm.py @@ -665,7 +665,6 @@ size = math.ceil(size / 2 ** 20) pool = self.getPool(spUUID) - pool.validatePoolSD(sdUUID) pool.extendVolume(sdUUID, volumeUUID, size, isShuttingDown) @public @@ -748,7 +747,6 @@ vars.task.getSharedLock(STORAGE, sdUUID) # We need to let the domain to extend itself pool = self.getPool(spUUID) - pool.validatePoolSD(sdUUID) dmDevs = tuple(os.path.join(devicemapper.DMPATH_PREFIX, guid) for guid in guids) pool.extendSD(sdUUID, dmDevs, force) @@ -797,7 +795,6 @@ vars.task.getExclusiveLock(STORAGE, spUUID) vars.task.getExclusiveLock(STORAGE, sdUUID) pool = self.getPool(spUUID) - pool.validatePoolSD(sdUUID) pool.detachSD(sdUUID) @public @@ -1188,7 +1185,6 @@ vars.task.getExclusiveLock(STORAGE, spUUID) vars.task.getExclusiveLock(STORAGE, sdUUID) pool = self.getPool(spUUID) - pool.validatePoolSD(sdUUID) pool.deactivateSD(sdUUID, msdUUID, masterVersion) @public @@ -1252,7 +1248,6 @@ """ vars.task.getSharedLock(STORAGE, sdUUID) pool = self.getPool(spUUID) - pool.validatePoolSD(sdUUID) pool.setVolumeDescription(sdUUID, imgUUID, volUUID, description) @public @@ -1276,7 +1271,6 @@ vars.task.getSharedLock(STORAGE, sdUUID) pool = self.getPool(spUUID) - pool.validatePoolSD(sdUUID) pool.setVolumeLegality(sdUUID, imgUUID, volUUID, legality) @public @@ -1301,9 +1295,7 @@ """ vars.task.getSharedLock(STORAGE, spUUID) pool = self.getPool(spUUID) - if sdUUID and sdUUID != sd.BLANK_UUID: - pool.validatePoolSD(sdUUID) - else: + if not sdUUID or sdUUID == sd.BLANK_UUID: sdUUID = pool.masterDomain.sdUUID vmUUIDs = [vmDesc['vm'] for vmDesc in vmList] @@ -1329,9 +1321,7 @@ """ vars.task.getSharedLock(STORAGE, spUUID) pool = self.getPool(spUUID) - if sdUUID and sdUUID != sd.BLANK_UUID: - pool.validatePoolSD(sdUUID) - else: + if not sdUUID or sdUUID == sd.BLANK_UUID: sdUUID = pool.masterDomain.sdUUID vars.task.getExclusiveLock(STORAGE, "%s_%s" % (vmUUID, sdUUID)) pool.removeVM(vmUUID=vmUUID, sdUUID=sdUUID) @@ -1351,9 +1341,7 @@ :param options: ? """ pool = self.getPool(spUUID) - if sdUUID and sdUUID != sd.BLANK_UUID: - pool.validatePoolSD(sdUUID) - else: + if not sdUUID or sdUUID != sd.BLANK_UUID: sdUUID = pool.masterDomain.sdUUID vars.task.getSharedLock(STORAGE, sdUUID) vms = pool.getVmsList(sdUUID) @@ -1379,7 +1367,6 @@ """ pool = self.getPool(spUUID) if sdUUID and sdUUID != sd.BLANK_UUID: - pool.validatePoolSD(sdUUID) # Only backup domains are allowed in this path self.validateBackupDom(sdUUID) else: @@ -2688,7 +2675,6 @@ vars.task.getSharedLock(STORAGE, sdUUID) pool = self.getPool(dom.getPools()[0]) - pool.validatePoolSD(sdUUID) pool.setSDDescription(dom, description) @public diff --git a/vdsm/storage/sp.py b/vdsm/storage/sp.py index 37dcec8..11d8d00 100644 --- a/vdsm/storage/sp.py +++ b/vdsm/storage/sp.py @@ -1062,6 +1062,7 @@ dom = sdCache.produce(sdUUID) # Avoid detach domains if not owned by pool + self.validatePoolSD(sdUUID) self.validateAttachedDomain(dom) if sdUUID == self.masterDomain.sdUUID: @@ -1148,6 +1149,7 @@ :param masterVersion: new master storage domain version """ + self.validatePoolSD(sdUUID) self.log.info("sdUUID=%s spUUID=%s newMsdUUID=%s", sdUUID, self.spUUID, newMsdUUID) domList = self.getDomains() @@ -1328,6 +1330,7 @@ If sdUUID is None, the update is on the pool, and therefore the master domain will be updated. """ + self.validatePoolSD(sdUUID) self.log.info("spUUID=%s sdUUID=%s", self.spUUID, sdUUID) vms = self._getVMsPath(sdUUID) # We should exclude 'masterd' link from IMG_METAPATTERN globing @@ -1365,6 +1368,7 @@ Remove VM. 'vmUUID' - Virtual machine UUID """ + self.validatePoolSD(sdUUID) self.log.info("spUUID=%s vmUUID=%s sdUUID=%s", self.spUUID, vmUUID, sdUUID) vms = self._getVMsPath(sdUUID) @@ -1392,6 +1396,7 @@ # block devices. The scope of this method is to extend only the # volume apparent size; the virtual disk size seen by the guest is # unchanged. + self.validatePoolSD(sdUUID) sdCache.produce(sdUUID).extendVolume(volumeUUID, size, isShuttingDown) def extendVolumeSize(self, sdUUID, imgUUID, volUUID, newSize): @@ -1972,6 +1977,7 @@ self.masterDomain.detach(self.spUUID) def setVolumeDescription(self, sdUUID, imgUUID, volUUID, description): + self.validatePoolSD(sdUUID) imageResourcesNamespace = sd.getNamespace(sdUUID, IMAGE_NAMESPACE) with rmanager.acquireResource(imageResourcesNamespace, imgUUID, rm.LockType.exclusive): @@ -1980,6 +1986,7 @@ volUUID=volUUID).setDescription(descr=description) def setVolumeLegality(self, sdUUID, imgUUID, volUUID, legality): + self.validatePoolSD(sdUUID) imageResourcesNamespace = sd.getNamespace(sdUUID, IMAGE_NAMESPACE) with rmanager.acquireResource(imageResourcesNamespace, imgUUID, rm.LockType.exclusive): @@ -1987,24 +1994,23 @@ imgUUID=imgUUID, volUUID=volUUID).setLegality(legality=legality) - def getVmsList(self, sdUUID=None): - if sdUUID is None: - dom = self.masterDomain - else: - dom = sdCache.produce(sdUUID) - - return dom.getVMsList() + def getVmsList(self, sdUUID): + self.validatePoolSD(sdUUID) + return sdCache.produce(sdUUID).getVMsList() def getVmsInfo(self, sdUUID, vmList=None): + self.validatePoolSD(sdUUID) return sdCache.produce(sdUUID).getVMsInfo(vmList=vmList) def validateVolumeChain(self, sdUUID, imgUUID): image.Image(self.poolPath).validateVolumeChain(sdUUID, imgUUID) def extendSD(self, sdUUID, devlist, force): + self.validatePoolSD(sdUUID) sdCache.produce(sdUUID).extend(devlist, force) def setSDDescription(self, sd, description): + self.validatePoolSD(sd.sdUUID) sd.setDescription(descr=description) def getAllTasksStatuses(self): -- To view, visit http://gerrit.ovirt.org/21787 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I75f0245ec5449d57431df7055be401d73975312b Gerrit-PatchSet: 1 Gerrit-Project: vdsm Gerrit-Branch: master Gerrit-Owner: Federico Simoncelli <[email protected]> _______________________________________________ vdsm-patches mailing list [email protected] https://lists.fedorahosted.org/mailman/listinfo/vdsm-patches
