Change in vdsm[master]: sp: refresh metadata on hsm when listing domains

Federico Simoncelli fsimonce at redhat.com
Tue Dec 31 16:23:53 UTC 2013


Federico Simoncelli has uploaded a new change for review.

Change subject: sp: refresh metadata on hsm when listing domains
......................................................................

sp: refresh metadata on hsm when listing domains

In this patch:
- validatePoolSD and validateAttachedDomain are relevant only for SPM
  operations (remove @unsecured)

Change-Id: I095cd0760076fb4be97a776498af78a40ff84112
Signed-off-by: Federico Simoncelli <fsimonce at redhat.com>
---
M vdsm/storage/sp.py
1 file changed, 16 insertions(+), 14 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/vdsm refs/changes/86/21786/4

diff --git a/vdsm/storage/sp.py b/vdsm/storage/sp.py
index 961d2a8..40200d2 100644
--- a/vdsm/storage/sp.py
+++ b/vdsm/storage/sp.py
@@ -159,6 +159,14 @@
         # any time.
         self.setMetaParams(metaParams, __securityOverride=True)
 
+    @unsecured
+    def getDomainsMap(self):
+        self.invalidateMetadata()
+        return self.getMetaParam(PMDK_DOMAINS)
+
+    def setDomainsMap(self, domains):
+        self.setMetaParam(PMDK_DOMAINS, domains)
+
     def __del__(self):
         if len(self.domainMonitor.poolMonitoredDomains) > 0:
             threading.Thread(target=self.stopMonitoringDomains).start()
@@ -529,15 +537,11 @@
             domain.changeRole(role)
 
     # TODO: Remove or rename this function.
-    @unsecured
     def validatePoolSD(self, sdUUID):
         if sdUUID not in self.getDomains():
-            self._metadata.invalidate()
-            if sdUUID not in self.getDomains():
-                raise se.StorageDomainNotMemberOfPool(self.spUUID, sdUUID)
+            raise se.StorageDomainNotMemberOfPool(self.spUUID, sdUUID)
         return True
 
-    @unsecured
     def validateAttachedDomain(self, dom):
         """
         Avoid handling domains if not owned by pool.
@@ -1024,7 +1028,7 @@
 
                 dom.attach(self.spUUID)
                 domains[sdUUID] = sd.DOM_ATTACHED_STATUS
-                self.setMetaParam(PMDK_DOMAINS, domains)
+                self.setDomainsMap(domains)
                 self._refreshDomainLinks(dom)
 
             finally:
@@ -1044,7 +1048,7 @@
 
         del domains[sdUUID]
 
-        self.setMetaParam(PMDK_DOMAINS, domains)
+        self.setDomainsMap(domains)
         self._cleanupDomainLinks(sdUUID)
 
         # If the domain that we are detaching is the master domain
@@ -1140,7 +1144,7 @@
         dom.activate()
         # set domains also do rebuild
         domainStatuses[sdUUID] = sd.DOM_ACTIVE_STATUS
-        self.setMetaParam(PMDK_DOMAINS, domainStatuses)
+        self.setDomainsMap(domainStatuses)
         self.updateMonitoringThreads()
         return True
 
@@ -1202,7 +1206,7 @@
                                        "%s", masterDir, dom)
 
         domList[sdUUID] = sd.DOM_ATTACHED_STATUS
-        self.setMetaParam(PMDK_DOMAINS, domList)
+        self.setDomainsMap(domList)
         self.updateMonitoringThreads()
 
     @unsecured
@@ -1541,7 +1545,6 @@
     def updateMonitoringThreads(self):
         # domain list it's list of sdUUID:status
         # sdUUID1:status1,sdUUID2:status2,...
-        self.invalidateMetadata()
         activeDomains = self.getDomains(activeOnly=True)
         monitoredDomains = self.domainMonitor.poolMonitoredDomains
 
@@ -1568,10 +1571,9 @@
 
     @unsecured
     def getDomains(self, activeOnly=False):
-        return dict(
-            (sdUUID, status) for sdUUID, status in
-            self.getMetaParam(PMDK_DOMAINS).iteritems()
-            if not activeOnly or status == sd.DOM_ACTIVE_STATUS)
+        return dict((sdUUID, status) for sdUUID, status
+                    in self.getDomainsMap().iteritems()
+                    if not activeOnly or status == sd.DOM_ACTIVE_STATUS)
 
     def checkBackupDomain(self):
         domDict = self.getDomains(activeOnly=True)


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

Gerrit-MessageType: newchange
Gerrit-Change-Id: I095cd0760076fb4be97a776498af78a40ff84112
Gerrit-PatchSet: 4
Gerrit-Project: vdsm
Gerrit-Branch: master
Gerrit-Owner: Federico Simoncelli <fsimonce at redhat.com>
Gerrit-Reviewer: Allon Mureinik <amureini at redhat.com>
Gerrit-Reviewer: Ayal Baron <abaron at redhat.com>
Gerrit-Reviewer: Dan Kenigsberg <danken at redhat.com>
Gerrit-Reviewer: Federico Simoncelli <fsimonce at redhat.com>
Gerrit-Reviewer: Nir Soffer <nsoffer at redhat.com>
Gerrit-Reviewer: Sergey Gotliv <sgotliv at redhat.com>
Gerrit-Reviewer: oVirt Jenkins CI Server


More information about the vdsm-patches mailing list