summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPeter Jones <pjones@redhat.com>2010-01-25 15:24:23 -0500
committerPeter Jones <pjones@redhat.com>2010-02-26 11:25:02 -0500
commitc69b38827091b64c7091e415c6596a7045fd5039 (patch)
treed9c59d7bf70788610d4ba315939052dc7ea2ab45
parent74e65cbf111a4f17fa393192519910de53d6c7ac (diff)
downloadanaconda-c69b38827091b64c7091e415c6596a7045fd5039.tar.gz
anaconda-c69b38827091b64c7091e415c6596a7045fd5039.tar.xz
anaconda-c69b38827091b64c7091e415c6596a7045fd5039.zip
Remove MultipathDevice.identity* and add DMDevice.serial
We're not internally determining multipaths any more, so we don't really need a separate infrastructure for device serial numbers. Also, add a generic DMDevice.serial that gets it from self.dmUuid
-rw-r--r--storage/devices.py69
1 files changed, 44 insertions, 25 deletions
diff --git a/storage/devices.py b/storage/devices.py
index 69aa8bf76..604eec469 100644
--- a/storage/devices.py
+++ b/storage/devices.py
@@ -1481,6 +1481,23 @@ class DMDevice(StorageDevice):
d.update({"target": self.target, "dmUuid": self.dmUuid})
return d
+ def _getSerial(self):
+ serial = self.dmUuid
+ if not serial:
+ return None
+
+ # self.dmUuid looks like "LVM-13Z8f3Y0UPhG1jHpnesb9enBb7xQqREps1CczxQSXD8Ofv271EAc8ocUviw4OV9K"
+ # we want 13Z8f3Y0UPhG1jHpnesb9enBb7xQqREps1CczxQSXD8Ofv271EAc8ocUviw4OV9K
+ return serial.split('-')[1]
+
+ @property
+ def serial(self):
+ if self._serial:
+ return self._serial
+
+ self._serial = self._getSerial()
+ return getattr(self, "_serial", "")
+
@property
def fstabSpec(self):
""" Return the device specifier for use in /etc/fstab. """
@@ -2997,45 +3014,47 @@ class MultipathDevice(DMDevice):
"""
self._info = info
- self.setupIdentity()
+ dmUuid="mpath-%s" % info['ID_SERIAL']
DMDevice.__init__(self, name, format=format, size=size,
parents=parents, sysfsPath=sysfsPath,
- exists=True)
+ exists=True, dmUuid=dmUuid)
self.config = {
- 'wwid' : self.identity,
+ 'wwid' : info['ID_SERIAL'],
'alias' : self.name,
'mode' : '0600',
'uid' : '0',
'gid' : '0',
}
- def setupIdentity(self):
- """ Adds identifying remarks to MultipathDevice object.
-
- May be overridden by a sub-class for e.g. RDAC handling.
- """
- self._identity_short = self._info['ID_SERIAL_SHORT']
- self._identity = self._info['ID_SERIAL']
+ def _getWwidFromSerial(self, serial):
+ wwid = []
+ while serial:
+ wwid.append(serial[:2])
+ serial = serial[2:]
+ wwid = ":".join(wwid)
+ return wwid
- @property
- def identity(self):
- """ Get identity set with setupIdentityFromInfo()
-
- May be overridden by a sub-class for e.g. RDAC handling.
- """
- if not hasattr(self, "_identity"):
- raise RuntimeError, "setupIdentityFromInfo() has not been called."
- return self._identity
+ def _getSerial(self):
+ serial = DMDevice._getSerial(self)
+ if not serial:
+ return None
+
+ # DMDevice._serial looks like 36006016092d21800703762872c60db11"
+ # we want 6006016092d21800703762872c60db11
+ serial = serial[1:]
+ self.config['wwid'] = self._getWwidFromSerial(serial)
+ return serial
@property
def wwid(self):
- identity = self._identity_short
- ret = []
- while identity:
- ret.append(identity[:2])
- identity = identity[2:]
- return ":".join(ret)
+ if not self._serial:
+ self._serial = self._getSerial()
+ if not self._serial:
+ return ""
+ return self._getWwidFromSerial(self._serial)
+
+ @property
@property
def model(self):