Change in vdsm[master]: sp: move validatePoolSD in the StoragePool class

fsimonce at redhat.com fsimonce at redhat.com
Wed Nov 27 13:39:37 UTC 2013


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 <fsimonce at redhat.com>
---
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 <fsimonce at redhat.com>


More information about the vdsm-patches mailing list