[NEW PATCH] Related to BZ#737329 - Remove verifyMasterDomain(). (via gerrit-bot)
Dan Kenigsberg
danken at redhat.com
Tue Sep 13 10:23:20 UTC 2011
New patch submitted by Dan Kenigsberg (danken at redhat.com)
You can review this change at: http://gerrit.usersys.redhat.com/903
commit ba6253c512b1897fb24732a79106d9029de2c666
Author: Eduardo Warszawski <ewarszaw at redhat.com>
Date: Tue Sep 6 16:22:23 2011 +0300
Related to BZ#737329 - Remove verifyMasterDomain().
Change-Id: I6284fbaf1716b99182c75630e0d3ad17a09b69ba
diff --git a/vdsm/storage/hsm.py b/vdsm/storage/hsm.py
index 4a300d8..85fa5da 100644
--- a/vdsm/storage/hsm.py
+++ b/vdsm/storage/hsm.py
@@ -534,7 +534,10 @@ class HSM:
if not msdUUID or not masterVersion:
hostID, scsiKey, msdUUID, masterVersion = pool.getPoolParams()
misc.validateN(hostID, 'hostID')
- pool.verifyMasterDomain(msdUUID=msdUUID, masterVersion=masterVersion)
+ #getMasterDomain is called because produce is required here
+ #since the master domain can be changed by the SPM if it is the
+ #refreshPool flow.
+ pool.getMasterDomain(msdUUID=msdUUID, masterVersion=masterVersion)
return
with rmanager.acquireResource(STORAGE, spUUID, rm.LockType.exclusive):
@@ -546,7 +549,8 @@ class HSM:
if not msdUUID or not masterVersion:
hostID, scsiKey, msdUUID, masterVersion = pool.getPoolParams()
misc.validateN(hostID, 'hostID')
- pool.verifyMasterDomain(msdUUID=msdUUID, masterVersion=masterVersion)
+ #Idem. See above.
+ pool.getMasterDomain(msdUUID=msdUUID, masterVersion=masterVersion)
return
pool = sp.StoragePool(spUUID)
diff --git a/vdsm/storage/sp.py b/vdsm/storage/sp.py
index ed1422e..c1a3a38 100644
--- a/vdsm/storage/sp.py
+++ b/vdsm/storage/sp.py
@@ -829,7 +829,7 @@ class StoragePool:
Rebuild storage pool.
"""
# master domain must be refreshed first
- msd = self.getMasterDomain(msdUUID=msdUUID, masterVersion=masterVersion)
+ self.masterDomain = self.getMasterDomain(msdUUID=msdUUID, masterVersion=masterVersion)
self.updateMonitoringThreads()
fileUtils.createdir(self.poolPath)
@@ -867,10 +867,10 @@ class StoragePool:
oldLinks.remove(linkName)
# Always try to build master links
try:
- self._refreshDomainLinks(msd)
+ self._refreshDomainLinks(self.masterDomain)
except (se.StorageException, OSError):
- self.log.error("_refreshDomainLinks failed for master domain %s", msd.sdUUID, exc_info=True)
- linkName = os.path.join(self.poolPath, msd.sdUUID)
+ self.log.error("_refreshDomainLinks failed for master domain %s", self.masterDomain.sdUUID, exc_info=True)
+ linkName = os.path.join(self.poolPath, self.masterDomain.sdUUID)
if linkName in oldLinks:
oldLinks.remove(linkName)
@@ -1117,46 +1117,34 @@ class StoragePool:
return self._metadata[key]
def getMasterDomain(self, msdUUID, masterVersion):
- # Either we have in cache or we got non blank msdUUID,
- # no other option should be supported
- self.masterDomain = self.verifyMasterDomain(msdUUID=msdUUID, masterVersion=masterVersion)
- self.log.debug("Master domain '%s' verified", self.masterDomain)
-
- return self.masterDomain
-
- def verifyMasterDomain(self, msdUUID, masterVersion=-1):
"""
- Get master domain of this pool
- 'spUUID' - storage pool UUID
+ Get the (verified) master domain of this pool.
+
+ 'msdUUID' - expected master domain UUID.
+ 'masterVersion' - expected pool msd version.
"""
- # Validate params, if given
try:
- # Make sure we did not receive a version without a domain
- if not msdUUID:
- masterVersion = -1
- # Make sure that version is an integer
- masterVersion = int(masterVersion)
- except:
- msdUUID = None
- masterVersion = -1
+ domain = SDF.produce(msdUUID)
+ except se.StorageDomainDoesNotExist:
+ #Manager should start reconstructMaster if SPM.
+ raise se.StoragePoolMasterNotFound(self.spUUID, msdUUID)
- domain = SDF.produce(msdUUID)
if not domain.isMaster():
- self.log.error("Requested master domain '%s' is not a master domain at all", msdUUID)
+ self.log.error("Requested master domain %s is not a master domain at all", msdUUID)
raise se.StoragePoolWrongMaster(self.spUUID, msdUUID)
pools = domain.getPools()
if (self.spUUID not in pools):
- self.log.error("Requested master domain '%s' does not belong to pool '%s'", msdUUID, self.spUUID)
+ self.log.error("Requested master domain %s does not belong to pool %s", msdUUID, self.spUUID)
raise se.StoragePoolWrongMaster(self.spUUID, msdUUID)
- ver = self._getPoolMD(domain)[PMDK_MASTER_VER]
- if masterVersion != -1 and ver != masterVersion:
- self.log.error("Requested master domain '%s' does not have expected version '%d' it is version '%s'",
- msdUUID, masterVersion, ver)
+ version = self._getPoolMD(domain)[PMDK_MASTER_VER]
+ if version != masterVersion:
+ self.log.error("Requested master domain %s does not have expected version %d it is version %s",
+ msdUUID, masterVersion, version)
raise se.StoragePoolWrongMaster(self.spUUID, msdUUID)
- self.log.debug("Master domain '%s' verified", msdUUID)
+ self.log.debug("Master domain %s verified, version %d", msdUUID, masterVersion)
return domain
More information about the vdsm-patches
mailing list