[NEW PATCH] Related to BZ#737329 - Simplify getMasterDomain(). (via gerrit-bot)

Dan Kenigsberg danken at redhat.com
Tue Sep 13 10:23:23 UTC 2011


New patch submitted by Dan Kenigsberg (danken at redhat.com)

You can review this change at: http://gerrit.usersys.redhat.com/902

commit 394935fe6a917f86e26a165c0f7abbd96a38e50a
Author: Eduardo Warszawski <ewarszaw at redhat.com>
Date:   Tue Sep 6 12:21:42 2011 +0300

    Related to BZ#737329 - Simplify getMasterDomain().
    
    Unveil the behaviour of getMasterDomain() without parameters.
    verifyMasterDomain() can't return None.
    
    Change-Id: Ie2d397a81516f9025bd6c8da6ce25d4b052e3ed7

diff --git a/vdsm/storage/hsm.py b/vdsm/storage/hsm.py
index aa4d6aa..730898a 100644
--- a/vdsm/storage/hsm.py
+++ b/vdsm/storage/hsm.py
@@ -1319,7 +1319,7 @@ class HSM:
             # make sure it's THE master
             try:
                 pool = self.getPool(dom.getPools()[0])
-                master = pool.getMasterDomain()
+                master = pool.masterDomain
                 if master.sdUUID == sdUUID:
                     poolInfo = pool.getInfo()
                     for key in ['lver', 'spm_id', 'master_ver']:
@@ -1867,7 +1867,7 @@ class HSM:
         for p in self.pools.values():
             # Find the master domains
             try:
-                master = p.getMasterDomain()
+                master = p.masterDomain
             except se.StorageException:
                 self.log.error("Unexpected error", exc_info=True)
                 master = None
diff --git a/vdsm/storage/sp.py b/vdsm/storage/sp.py
index bec3beb..dbd4b22 100644
--- a/vdsm/storage/sp.py
+++ b/vdsm/storage/sp.py
@@ -208,11 +208,11 @@ class StoragePool:
         return self.getMetaParam(PMDK_MASTER_VER)
 
     def acquireClusterLock(self):
-        msd = self.getMasterDomain()
+        msd = self.masterDomain
         msd.acquireClusterLock(self.id)
 
     def releaseClusterLock(self):
-        self.getMasterDomain().releaseClusterLock()
+        self.masterDomain.releaseClusterLock()
 
     def validateAttachedDomain(self, sdUUID):
         domList = self.getDomains()
@@ -236,15 +236,16 @@ class StoragePool:
             exception if masterVersion doesn't follow the rules
 
         """
-        d = self.getMasterDomain()
+        d = self.masterDomain
         mver = self.getMasterVersion()
         if not int(masterVersion) > mver:
             raise se.StoragePoolWrongMaster(self.spUUID, d.sdUUID)
 
 
     def getMaximumSupportedDomains(self):
-        msdType = sd.name2type(self.getMasterDomain().getInfo()["type"])
-        msdVersion = int(self.getMasterDomain().getInfo()["version"])
+        msdInfo = self.masterDomain.getInfo()
+        msdType = sd.name2type(msdInfo["type"])
+        msdVersion = int(msdInfo["version"])
         if msdType in sd.BLOCK_DOMAIN_TYPES and msdVersion in blockSD.VERS_METADATA_LV:
             return MAX_DOMAINS
         else:
@@ -700,7 +701,7 @@ class StoragePool:
 
                 # If the domain being detached is the 'master', move all pool
                 # metadata to the new 'master' domain (msdUUID)
-                if sdUUID == self.getMasterDomain().sdUUID:
+                if sdUUID == self.masterDomain.sdUUID:
                     self.masterMigrate(sdUUID, msdUUID, masterVersion)
 
                 # Remove pool info from domain metadata
@@ -906,7 +907,7 @@ class StoragePool:
                     master domain will be updated.
         """
         if sdUUID is None:
-            sdUUID = self.getMasterDomain().sdUUID
+            sdUUID = self.masterDomain.sdUUID
 
         self.log.info("spUUID=%s sdUUID=%s", self.spUUID, sdUUID)
         vms = self._getVMsPath(sdUUID)
@@ -975,7 +976,7 @@ class StoragePool:
 
     @property
     def _metadata(self):
-        master = self.getMasterDomain()
+        master = self.masterDomain
         return self._getPoolMD(master)
 
     def getDescription(self):
@@ -988,7 +989,7 @@ class StoragePool:
             return ""
 
     def getVersion(self):
-        return self.getMasterDomain().getVersion()
+        return self.masterDomain.getVersion()
 
     def getSpmId(self):
         spmid = self.getMetaParam(PMDK_SPM_ID)
@@ -1014,7 +1015,7 @@ class StoragePool:
 
         msdUUID = None
         try:
-            master = self.getMasterDomain()
+            master = self.masterDomain
             msdUUID = master.sdUUID
             msdInfo = master.getInfo()
         except Exception:
@@ -1120,16 +1121,11 @@ class StoragePool:
         """
         return self._metadata[key]
 
-    def getMasterDomain(self, msdUUID=None, masterVersion=None):
+    def getMasterDomain(self, msdUUID, masterVersion):
         # Either we have in cache or we got non blank msdUUID,
         # no other option should be supported
-        if msdUUID and msdUUID != sd.BLANK_UUID:
-            self.masterDomain = self.verifyMasterDomain(msdUUID=msdUUID, masterVersion=masterVersion)
-            self.log.debug("Master domain '%s' verified", self.masterDomain)
-
-        if not self.masterDomain:
-            self.log.error("Couldn't find master domain for pool %s", self.spUUID, exc_info=True)
-            raise se.StoragePoolMasterNotFound(self.spUUID, str(msdUUID))
+        self.masterDomain = self.verifyMasterDomain(msdUUID=msdUUID, masterVersion=masterVersion)
+        self.log.debug("Master domain '%s' verified", self.masterDomain)
 
         return self.masterDomain
 
@@ -1261,7 +1257,7 @@ class StoragePool:
             vmPath = SDF.produce(sdUUID).getVMsDir()
         # Get VMs path from the pool (from the master domain)
         else:
-            vmPath = self.getMasterDomain().getVMsDir()
+            vmPath = self.masterDomain.getVMsDir()
 
         if not os.path.exists(vmPath):
             raise se.VMPathNotExists(vmPath)
@@ -1272,7 +1268,7 @@ class StoragePool:
         baddomains = {}
         message = "Pool OK"
         try:
-            masterdomain = self.getMasterDomain()
+            masterdomain = self.masterDomain
             self.invalidateMetadata()
             spmId = self.getMetaParam(PMDK_SPM_ID)
             domains = self.getDomains(activeOnly=True)
diff --git a/vdsm/storage/spm.py b/vdsm/storage/spm.py
index 54fc202..653a67a 100644
--- a/vdsm/storage/spm.py
+++ b/vdsm/storage/spm.py
@@ -345,7 +345,7 @@ class SPM:
 
             sd.validateDomainVersion(targetDomVersion)
             pool = hsm.HSM.getPool(spUUID)
-            masterDom = pool.getMasterDomain()
+            masterDom = pool.masterDomain
             sdUUID = masterDom.sdUUID
             self.log.info("Trying to upgrade master domain `%s`", sdUUID)
             with rmanager.acquireResource(STORAGE, masterDom.sdUUID, rm.LockType.exclusive):
@@ -382,7 +382,7 @@ class SPM:
             #Assumed that the domain can be attached only to one pool
             poolUUID = domain.getPools()[0]
             pool = hsm.HSM.getPool(poolUUID)
-            masterDom = pool.getMasterDomain()
+            masterDom = pool.masterDomain
             targetDomVersion = masterDom.getVersion()
         except:
             self.log.error("Error while preparing domain `%s` upgrade", sdUUID, exc_info=True)
@@ -457,7 +457,7 @@ class SPM:
             pool = hsm.HSM.getPool(spUUID)
             pool.updateMonitoringThreads()
             pool.invalidateMetadata()
-            masterDom = pool.getMasterDomain()
+            masterDom = pool.masterDomain
             oldlver = pool.getMetaParam(sp.PMDK_LVER)
             oldid = pool.getMetaParam(sp.PMDK_SPM_ID)
             masterDomVersion = pool.getVersion()
@@ -1016,7 +1016,7 @@ class SPM:
         vars.task.setDefaultException(se.StorageDomainActionError("sdUUID=%s, spUUID=%s" % (str(sdUUID), str(spUUID))))
         vars.task.getExclusiveLock(STORAGE, spUUID)
         pool = hsm.HSM.getPool(spUUID)
-        if sdUUID == pool.getMasterDomain().sdUUID:
+        if sdUUID == pool.masterDomain.sdUUID:
             raise se.CannotDetachMasterStorageDomain(sdUUID)
         pool.forcedDetachSD(sdUUID)
 
@@ -1051,7 +1051,7 @@ class SPM:
         Detach all domains from pool before destroying pool
         """
         # First find out this pool master domain
-        mDom = pool.getMasterDomain()
+        mDom = pool.masterDomain
         # Find out domain list from the pool metadata
         domList = pool.getDomains().keys()
 
@@ -1336,7 +1336,7 @@ class SPM:
         vars.task.getSharedLock(STORAGE, sdUUID)
 
         if sdUUID == None:
-            dom = self.getPool(spUUID).getMasterDomain()
+            dom = self.getPool(spUUID).masterDomain
         else:
             dom = SDF.produce(sdUUID)
 




More information about the vdsm-patches mailing list