Change in vdsm[master]: Removing references to SDF.
by Dan Kenigsberg
Dan Kenigsberg has submitted this change and it was merged.
Change subject: Removing references to SDF.
......................................................................
Removing references to SDF.
Change-Id: I87ca502ebbb1c6384a8fe3d5f02edf3ed6d084f5
---
M vdsm/storage/blockVolume.py
M vdsm/storage/fileVolume.py
M vdsm/storage/hsm.py
M vdsm/storage/image.py
M vdsm/storage/resourceFactories.py
M vdsm/storage/sdc.py
M vdsm/storage/sp.py
M vdsm/storage/spm.py
M vdsm/storage/volume.py
9 files changed, 119 insertions(+), 120 deletions(-)
Approvals:
Dan Kenigsberg: Verified; Looks good to me, approved
--
To view, visit http://gerrit.usersys.redhat.com/995
To unsubscribe, visit http://gerrit.usersys.redhat.com/settings
Gerrit-MessageType: merged
Gerrit-Change-Id: I87ca502ebbb1c6384a8fe3d5f02edf3ed6d084f5
Gerrit-PatchSet: 2
Gerrit-Project: vdsm
Gerrit-Branch: master
Gerrit-Owner: Eduardo Warszawski <ewarszaw(a)redhat.com>
Gerrit-Reviewer: Dan Kenigsberg <danken(a)redhat.com>
Gerrit-Reviewer: Eduardo Warszawski <ewarszaw(a)redhat.com>
12 years, 7 months
[NEW PATCH] Removing references to sdf.py. (via gerrit-bot)
by ewarszaw@redhat.com
New patch submitted by Eduardo Warszawski (ewarszaw(a)redhat.com)
You can review this change at: http://gerrit.usersys.redhat.com/644
commit dd4884ae7cbf5d090c8e405dbd85705c72969b65
Author: Eduardo Warszawski <ewarszaw(a)redhat.com>
Date: Fri Jul 1 10:11:47 2011 +0300
Removing references to sdf.py.
Change-Id: I19d178e3b37fa119dc8a44815bb5055535c95241
diff --git a/vdsm/storage/blockVolume.py b/vdsm/storage/blockVolume.py
index ae411be..107ae69 100644
--- a/vdsm/storage/blockVolume.py
+++ b/vdsm/storage/blockVolume.py
@@ -23,7 +23,7 @@ import task
import lvm
import resourceManager as rm
from threadLocal import vars
-from sdf import StorageDomainFactory as SDF
+from sdc import StorageDomainFactory as SDF
from resourceFactories import LVM_ACTIVATION_NAMESPACE
import fileUtils
diff --git a/vdsm/storage/fileVolume.py b/vdsm/storage/fileVolume.py
index 9ed54ff..fc4008f 100644
--- a/vdsm/storage/fileVolume.py
+++ b/vdsm/storage/fileVolume.py
@@ -13,7 +13,7 @@ import uuid
from config import config
import storage_exception as se
-from sdf import StorageDomainFactory as SDF
+from sdc import StorageDomainFactory as SDF
import volume
import image
import sd
diff --git a/vdsm/storage/hsm.py b/vdsm/storage/hsm.py
index 296e923..f139b40 100644
--- a/vdsm/storage/hsm.py
+++ b/vdsm/storage/hsm.py
@@ -28,7 +28,7 @@ import spm
import lvm
import fileUtils
import multipath
-from sdf import StorageDomainFactory as SDF
+from sdc import StorageDomainFactory as SDF
import volume
import iscsi
import misc
@@ -1346,7 +1346,7 @@ class HSM:
domains = domList.keys()
else:
#getSharedLock(connectionsResource...)
- domains = SDF.getAllUUIDs()
+ domains = SDF.getUUIDs()
for sdUUID in domains[:]:
try:
diff --git a/vdsm/storage/image.py b/vdsm/storage/image.py
index 40a82c9..2e7c302 100644
--- a/vdsm/storage/image.py
+++ b/vdsm/storage/image.py
@@ -14,7 +14,7 @@ import threading
import uuid
import volume
-from sdf import StorageDomainFactory as SDF
+from sdc import StorageDomainFactory as SDF
import sd
import misc
import fileUtils
diff --git a/vdsm/storage/resourceFactories.py b/vdsm/storage/resourceFactories.py
index ce3ec70..42cd72a 100644
--- a/vdsm/storage/resourceFactories.py
+++ b/vdsm/storage/resourceFactories.py
@@ -13,7 +13,7 @@ import logging
import lvm
import resourceManager as rm
import storage_exception as se
-from sdf import StorageDomainFactory as SDF
+from sdc import StorageDomainFactory as SDF
import sd
import image
diff --git a/vdsm/storage/sdc.py b/vdsm/storage/sdc.py
index 883f7d2..8db7b11 100644
--- a/vdsm/storage/sdc.py
+++ b/vdsm/storage/sdc.py
@@ -13,6 +13,7 @@ for keeping storage related data that is expensive to harvest, but needed often
import logging
import threading
import weakref
+from config import config
import multipath
import lvm
@@ -22,6 +23,7 @@ import storage_exception as se
# Default cache age until forcibly refreshed
DEFAULT_REFRESH_INTERVAL = 300
+
class StorageDomainCache:
"""
Storage Domain List keeps track of all the storage domains accessible by the
@@ -58,7 +60,7 @@ class StorageDomainCache:
del self.__weakCache[sdUUID]
- def lookup(self, sdUUID):
+ def produce(self, sdUUID):
dom = self._getDomainFromCache(sdUUID)
if dom:
return dom
@@ -121,3 +123,8 @@ class StorageDomainCache:
def manuallyRemoveDomain(self, sdUUID):
with self._syncroot:
del self.__cache[sdUUID]
+
+
+storage_repository = config.get('irs', 'repository')
+StorageDomainFactory = StorageDomainCache(storage_repository)
+
diff --git a/vdsm/storage/sp.py b/vdsm/storage/sp.py
index c377ee4..39d1135 100644
--- a/vdsm/storage/sp.py
+++ b/vdsm/storage/sp.py
@@ -24,7 +24,7 @@ import misc
from misc import Event
import fileUtils
from config import config
-from sdf import StorageDomainFactory as SDF
+from sdc import StorageDomainFactory as SDF
import storage_exception as se
from persistentDict import DictValidator
diff --git a/vdsm/storage/spm.py b/vdsm/storage/spm.py
index 085d03b..dd603f2 100644
--- a/vdsm/storage/spm.py
+++ b/vdsm/storage/spm.py
@@ -29,7 +29,7 @@ import sd
import hsm
import blockSD
import image
-from sdf import StorageDomainFactory as SDF
+from sdc import StorageDomainFactory as SDF
import volume
import misc
import logging
diff --git a/vdsm/storage/volume.py b/vdsm/storage/volume.py
index 123ed37..6fb4dfb 100644
--- a/vdsm/storage/volume.py
+++ b/vdsm/storage/volume.py
@@ -16,7 +16,7 @@ import signal
import constants
import storage_exception as se
import sd
-from sdf import StorageDomainFactory as SDF
+from sdc import StorageDomainFactory as SDF
import misc
import fileUtils
import task
12 years, 7 months
[NEW PATCH] BZ#717658 - Simplify SDF.produce() (via gerrit-bot)
by ewarszaw@redhat.com
New patch submitted by Eduardo Warszawski (ewarszaw(a)redhat.com)
You can review this change at: http://gerrit.usersys.redhat.com/643
commit f30ec1f48c499c1f74de19be88744a7fa70f5b51
Author: Eduardo Warszawski <ewarszaw(a)redhat.com>
Date: Fri Jul 1 08:04:43 2011 +0300
BZ#717658 - Simplify SDF.produce()
produce() calls lookup(),
lookup() calls (blockSD, localFsSD, nfsSD).findDomain(),
findDomain() calls __init__(),
__init__() calls findDomainPath(),
findDomainPath() will return or raise StorageDomainDoesNotExist!
Never None, never a false value, no need for this check.
Change-Id: I442c368a1266855b324eab96e4a7b02634984834
diff --git a/vdsm/storage/sdc.py b/vdsm/storage/sdc.py
index 1a8a3fa..883f7d2 100644
--- a/vdsm/storage/sdc.py
+++ b/vdsm/storage/sdc.py
@@ -73,6 +73,7 @@ class StorageDomainCache:
self._cleanStaleWeakrefs()
+ #_findDomain will raise StorageDomainDoesNotExist if sdUUID is not found in storage.
dom = self._findDomain(sdUUID)
self.__cache[sdUUID] = dom
self.__weakCache[sdUUID] = weakref.ref(dom)
diff --git a/vdsm/storage/sdf.py b/vdsm/storage/sdf.py
index 58fdea0..9d09b3b 100644
--- a/vdsm/storage/sdf.py
+++ b/vdsm/storage/sdf.py
@@ -11,7 +11,6 @@ from config import config
import logging
import sdc
-import storage_exception as se
class StorageDomainFactory:
@@ -34,10 +33,7 @@ class StorageDomainFactory:
Produce a new Storage domain
"""
- newSD = cls.__sdc.lookup(sdUUID)
- if not newSD:
- raise se.StorageDomainDoesNotExist(sdUUID)
- return newSD
+ return cls.__sdc.lookup(sdUUID)
@classmethod
12 years, 7 months
[NEW PATCH] BZ#717658 - Remove SDF.create() (via gerrit-bot)
by ewarszaw@redhat.com
New patch submitted by Eduardo Warszawski (ewarszaw(a)redhat.com)
You can review this change at: http://gerrit.usersys.redhat.com/642
commit d15b149a4e5adc8d5763e4ff2aa31f4d050637a6
Author: Eduardo Warszawski <ewarszaw(a)redhat.com>
Date: Fri Jul 1 06:58:20 2011 +0300
BZ#717658 - Remove SDF.create()
Change-Id: I31b64def7aea87d4d3a94950abc8e96fbe3c4b8a
diff --git a/vdsm/storage/hsm.py b/vdsm/storage/hsm.py
index c4fa249..296e923 100644
--- a/vdsm/storage/hsm.py
+++ b/vdsm/storage/hsm.py
@@ -22,6 +22,8 @@ from itertools import imap
import sp
import sd
import blockSD
+import nfsSD
+import localFsSD
import spm
import lvm
import fileUtils
@@ -1171,8 +1173,15 @@ class HSM:
#getSharedLock(connectionsResource...)
#getExclusiveLock(sdUUID...)
- SDF.create(sdUUID=sdUUID, storageType=storageType, domainName=domainName,
- domClass=domClass, typeSpecificArg=typeSpecificArg, version=domVersion)
+ if storageType in sd.BLOCK_DOMAIN_TYPES:
+ newSD = blockSD.BlockStorageDomain.create(sdUUID, domainName, domClass, typeSpecificArg, storageType, domVersion)
+ elif storageType == sd.NFS_DOMAIN:
+ newSD = nfsSD.NfsStorageDomain.create(sdUUID, domainName, domClass, typeSpecificArg, storageType, domVersion)
+ elif storageType == sd.LOCALFS_DOMAIN:
+ newSD = localFsSD.LocalFsStorageDomain.create(sdUUID, domainName, domClass, typeSpecificArg, storageType, domVersion)
+ else:
+ raise se.StorageDomainTypeError(storageType)
+ SDF.manuallyAddDomain(newSD)
def public_validateStorageDomain(self, sdUUID, options = None):
diff --git a/vdsm/storage/sdf.py b/vdsm/storage/sdf.py
index 5e0577d..58fdea0 100644
--- a/vdsm/storage/sdf.py
+++ b/vdsm/storage/sdf.py
@@ -11,7 +11,6 @@ from config import config
import logging
import sdc
-import sd
import storage_exception as se
@@ -20,6 +19,11 @@ class StorageDomainFactory:
storage_repository = config.get('irs', 'repository')
__sdc = sdc.StorageDomainCache(storage_repository)
+ #WARNING! The parameters of the following two methods are not symmetric.
+ @classmethod
+ def manuallyAddDomain(cls, sd):
+ cls.__sdc.manuallyAddDomain(sd)
+
@classmethod
def manuallyRemoveDomain(cls, sdUUID):
cls.__sdc.manuallyRemoveDomain(sdUUID)
@@ -37,38 +41,6 @@ class StorageDomainFactory:
@classmethod
- def create(cls, sdUUID, storageType, domainName, domClass, typeSpecificArg, version):
- """
- Create a new Storage domain
- """
- import nfsSD
- import localFsSD
- import blockSD
-
- newSD = None
- if storageType in [sd.NFS_DOMAIN]:
- newSD = nfsSD.NfsStorageDomain.create(sdUUID=sdUUID,
- domainName=domainName, domClass=domClass,
- remotePath=typeSpecificArg, storageType=storageType,
- version=version)
- elif storageType in [sd.LOCALFS_DOMAIN]:
- newSD = localFsSD.LocalFsStorageDomain.create(sdUUID=sdUUID,
- domainName=domainName, domClass=domClass,
- remotePath=typeSpecificArg, storageType=storageType,
- version=version)
- elif storageType in [sd.ISCSI_DOMAIN, sd.FCP_DOMAIN]:
- newSD = blockSD.BlockStorageDomain.create(sdUUID=sdUUID,
- domainName=domainName, domClass=domClass,
- vgUUID=typeSpecificArg, storageType=storageType,
- version=version)
- else:
- raise se.StorageDomainTypeError(storageType)
-
- cls.__sdc.manuallyAddDomain(newSD)
- return newSD
-
-
- @classmethod
def getAllUUIDs(cls):
return cls.__sdc.getUUIDs()
12 years, 7 months
Change in vdsm[master]: Removing references to SDF.
by Dan Kenigsberg
Dan Kenigsberg has posted comments on this change.
Change subject: Removing references to SDF.
......................................................................
--
Gerrit-MessageType: comment
Gerrit-Change-Id: I87ca502ebbb1c6384a8fe3d5f02edf3ed6d084f5
Gerrit-PatchSet: 2
Gerrit-Project: vdsm
Gerrit-Branch: master
Gerrit-Owner: Eduardo Warszawski <ewarszaw(a)redhat.com>
Gerrit-Reviewer: Dan Kenigsberg <danken(a)redhat.com>
Gerrit-Reviewer: Eduardo Warszawski <ewarszaw(a)redhat.com>
12 years, 7 months
[NEW PATCH] BZ#717658 - Simplify recycle function. (via gerrit-bot)
by ewarszaw@redhat.com
New patch submitted by Eduardo Warszawski (ewarszaw(a)redhat.com)
You can review this change at: http://gerrit.usersys.redhat.com/641
commit 4ef2f06aca02bc48f63c3b5f7d48ae83e191b3ba
Author: Eduardo Warszawski <ewarszaw(a)redhat.com>
Date: Thu Jun 30 16:18:50 2011 +0300
BZ#717658 - Simplify recycle function.
Change-Id: I9cf3106f0fb5d5cd067907d48ff02fe50493a66c
diff --git a/vdsm/storage/hsm.py b/vdsm/storage/hsm.py
index 29206f5..c4fa249 100644
--- a/vdsm/storage/hsm.py
+++ b/vdsm/storage/hsm.py
@@ -1190,6 +1190,15 @@ class HSM:
return SDF.produce(sdUUID=sdUUID).validate()
+ #TODO: Remove this function when formatStorageDomain() is removed.
+ def _recycle(self, sd):
+ try:
+ SDF.manuallyRemoveDomain(sd.sdUUID)
+ except KeyError:
+ self.log.warn("Storage domain %s doesn't exist in cache. Trying recycle leftovers ...", sd.sdUUID)
+
+ sd.format(sd.sdUUID)
+
def public_formatStorageDomain(self, sdUUID, autoDetach = False, options = None):
"""
Formats a detached storage domain.
@@ -1198,6 +1207,7 @@ class HSM:
This removes all data from the storage domain.
:param sdUUID: The UUID for the storage domain you want to format.
+ :param autoDetach: DEPRECATED
:type sdUUID: UUID
:param options: ?
@@ -1214,22 +1224,17 @@ class HSM:
raise se.CannotFormatStorageDomainInConnectedPool(sdUUID)
# For domains that attached to disconnected pool, format domain if 'autoDetach' flag set
- if not misc.parseBool(autoDetach):
+ sd = SDF.produce(sdUUID=sdUUID)
+ try:
+ #TODO: autoDetach is True
+ if not misc.parseBool(autoDetach) and sd.getPools():
+ raise se.CannotFormatAttachedStorageDomain(sdUUID)
# Allow format also for broken domain
- try:
- if len(SDF.produce(sdUUID=sdUUID).getPools()) > 0:
- raise se.CannotFormatAttachedStorageDomain(sdUUID)
-
- except (se.StorageDomainMetadataNotFound, se.MetaDataGeneralError, se.MiscFileReadException,
- se.MiscBlockReadException, se.MiscBlockReadIncomplete), e:
- self.log.warn("Domain %s has problem with metadata. Continue formating... (%s)", sdUUID, str(e))
- except se.CannotFormatAttachedStorageDomain:
- raise
- except Exception:
- self.log.warn("Domain %s can't be formated", sdUUID, exc_info=True)
- raise se.StorageDomainFormatError(sdUUID)
+ except (se.StorageDomainMetadataNotFound, se.MetaDataGeneralError, se.MiscFileReadException,
+ se.MiscBlockReadException, se.MiscBlockReadIncomplete), e:
+ self.log.warn("Domain %s has problem with metadata. Continue formating... (%s)", sdUUID, str(e))
- SDF.recycle(sdUUID=sdUUID)
+ self._recycle(sd)
def public_setStorageDomainDescription(self, sdUUID, description, options = None):
diff --git a/vdsm/storage/sdf.py b/vdsm/storage/sdf.py
index 16faa3e..5e0577d 100644
--- a/vdsm/storage/sdf.py
+++ b/vdsm/storage/sdf.py
@@ -20,6 +20,9 @@ class StorageDomainFactory:
storage_repository = config.get('irs', 'repository')
__sdc = sdc.StorageDomainCache(storage_repository)
+ @classmethod
+ def manuallyRemoveDomain(cls, sdUUID):
+ cls.__sdc.manuallyRemoveDomain(sdUUID)
@classmethod
def produce(cls, sdUUID):
@@ -66,33 +69,6 @@ class StorageDomainFactory:
@classmethod
- def recycle(cls, sdUUID):
- """
- Cleanly destroys the domain
- """
- import nfsSD
- import localFsSD
- import blockSD
-
- try:
- cls.__sdc.manuallyRemoveDomain(sdUUID)
- except Exception:
- cls.log.warn("Storage domain %s doesn't exist. Trying recycle leftovers ...", sdUUID)
-
- for domClass in (blockSD.BlockStorageDomain, nfsSD.NfsStorageDomain, localFsSD.LocalFsStorageDomain):
- try:
- domClass.findDomainPath(sdUUID)
- except (se.StorageDomainDoesNotExist):
- pass
- except Exception:
- cls.log.error("Can't find out domain %s", sdUUID, exc_info=True)
- else:
- return domClass.format(sdUUID)
-
- raise se.StorageDomainTypeError(sdUUID)
-
-
- @classmethod
def getAllUUIDs(cls):
return cls.__sdc.getUUIDs()
12 years, 7 months