From 1447d9fe1b298996686539c1c3bb85e9776db6a9 Mon Sep 17 00:00:00 2001 From: Peter Jones Date: Fri, 26 Feb 2010 13:33:47 -0500 Subject: Revert "Remove MultipathDevice.identity* and add DMDevice.serial" This reverts commit c69b38827091b64c7091e415c6596a7045fd5039. --- storage/devices.py | 69 ++++++++++++++++++++---------------------------------- 1 file changed, 25 insertions(+), 44 deletions(-) diff --git a/storage/devices.py b/storage/devices.py index 604eec469..69aa8bf76 100644 --- a/storage/devices.py +++ b/storage/devices.py @@ -1481,23 +1481,6 @@ 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. """ @@ -3014,47 +2997,45 @@ class MultipathDevice(DMDevice): """ self._info = info - dmUuid="mpath-%s" % info['ID_SERIAL'] + self.setupIdentity() DMDevice.__init__(self, name, format=format, size=size, parents=parents, sysfsPath=sysfsPath, - exists=True, dmUuid=dmUuid) + exists=True) self.config = { - 'wwid' : info['ID_SERIAL'], + 'wwid' : self.identity, 'alias' : self.name, 'mode' : '0600', 'uid' : '0', 'gid' : '0', } - def _getWwidFromSerial(self, serial): - wwid = [] - while serial: - wwid.append(serial[:2]) - serial = serial[2:] - wwid = ":".join(wwid) - return wwid - - 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 + 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'] @property - def wwid(self): - if not self._serial: - self._serial = self._getSerial() - if not self._serial: - return "" - return self._getWwidFromSerial(self._serial) + 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 @property + def wwid(self): + identity = self._identity_short + ret = [] + while identity: + ret.append(identity[:2]) + identity = identity[2:] + return ":".join(ret) @property def model(self): -- cgit