diff options
author | Peter Jones <pjones@redhat.com> | 2010-01-25 15:24:23 -0500 |
---|---|---|
committer | Peter Jones <pjones@redhat.com> | 2010-02-26 11:25:02 -0500 |
commit | c69b38827091b64c7091e415c6596a7045fd5039 (patch) | |
tree | d9c59d7bf70788610d4ba315939052dc7ea2ab45 | |
parent | 74e65cbf111a4f17fa393192519910de53d6c7ac (diff) | |
download | anaconda-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.py | 69 |
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): |