[blivet 1/2] Use a setter for Device.name as foretold by the prophecy of TODO
David Shea
dshea at redhat.com
Tue May 20 14:47:05 UTC 2014
Remove the uses of Device._name except the parts that actually need it.
Change the property to use _getName and _setName methods to make it less
confusing to override.
---
blivet/devicefactory.py | 14 ++++++-------
blivet/devices.py | 53 +++++++++++++++++++++++++++++++++----------------
2 files changed, 42 insertions(+), 25 deletions(-)
diff --git a/blivet/devicefactory.py b/blivet/devicefactory.py
index c655a71..b30c55b 100644
--- a/blivet/devicefactory.py
+++ b/blivet/devicefactory.py
@@ -674,17 +674,16 @@ class DeviceFactory(object):
swap=(self.fstype == "swap"),
mountpoint=self.mountpoint)
- # TODO: write a StorageDevice.name setter
safe_new_name = self.storage.safeDeviceName(self.device_name)
if self.device.name != safe_new_name:
if safe_new_name in self.storage.names:
log.error("not renaming '%s' to in-use name '%s'",
- self.device._name, safe_new_name)
+ self.device.name, safe_new_name)
return
log.debug("renaming device '%s' to '%s'",
- self.device._name, safe_new_name)
- self.device._name = safe_new_name
+ self.device.name, safe_new_name)
+ self.device.name = safe_new_name
def _post_create(self):
""" Hook for post-creation operations. """
@@ -1234,13 +1233,12 @@ class LVMFactory(DeviceFactory):
swap=(self.fstype == "swap"),
mountpoint=self.mountpoint)
- # TODO: write a StorageDevice.name setter
lvname = "%s-%s" % (self.container.name, self.device_name)
safe_new_name = self.storage.safeDeviceName(lvname)
if self.device.name != safe_new_name:
if safe_new_name in self.storage.names:
log.error("not renaming '%s' to in-use name '%s'",
- self.device._name, safe_new_name)
+ self.device.name, safe_new_name)
return
if not safe_new_name.startswith(self.container.name):
@@ -1250,8 +1248,8 @@ class LVMFactory(DeviceFactory):
# strip off the vg name before setting
safe_new_name = safe_new_name[len(self.container.name)+1:]
log.debug("renaming device '%s' to '%s'",
- self.device._name, safe_new_name)
- self.device._name = safe_new_name
+ self.device.name, safe_new_name)
+ self.device.name = safe_new_name
def _configure(self):
self._set_container()
diff --git a/blivet/devices.py b/blivet/devices.py
index 86c869e..163ebd3 100644
--- a/blivet/devices.py
+++ b/blivet/devices.py
@@ -385,11 +385,16 @@ class Device(util.ObjectID):
""" Is this device currently active and ready for use? """
return False
- @property
- def name(self):
- """ This device's name. """
+ def _getName(self):
return self._name
+ def _setName(self, value):
+ self._name = value
+
+ name = property(lambda s: s._getName(),
+ lambda s, v: s._setName(v),
+ doc="This device's name")
+
@property
def isleaf(self):
""" True if no other device depends on this one. """
@@ -649,6 +654,21 @@ class StorageDevice(Device):
return self._partedDevice
+ def _setName(self, value):
+ """Set the device's name.
+
+ :param value: the new device name
+ :raises errors.DeviceError: if the device exists
+ """
+
+ if value == self._name:
+ return
+
+ if self.exists:
+ raise errors.DeviceError("Cannot rename existing device.")
+
+ super(StorageDevice, self)._setName(value)
+
def _getTargetSize(self):
return self._targetSize
@@ -1483,9 +1503,9 @@ class PartitionDevice(StorageDevice):
def updateName(self):
if self.partedPartition is None:
- self._name = self.req_name
+ self.name = self.req_name
else:
- self._name = \
+ self.name = \
devicePathToName(self.partedPartition.getDeviceNodeName())
def dependsOn(self, dep):
@@ -1992,18 +2012,18 @@ class DMDevice(StorageDevice):
if dev.startswith(prefix) and dev[len(prefix):].isdigit():
dm.dm_remove(dev)
- def _setName(self, name):
+ def _setName(self, value):
""" Set the device's map name. """
+ if value == self._name:
+ return
+
log_method_call(self, self.name, status=self.status)
if self.status:
raise errors.DeviceError("cannot rename active device", self.name)
- self._name = name
+ super(DMDevice, self)._setName(value)
#self.sysfsPath = "/dev/disk/by-id/dm-name-%s" % self.name
- name = property(lambda d: d._name,
- lambda d,n: d._setName(n))
-
@property
def slave(self):
""" This device's backing device. """
@@ -2136,7 +2156,7 @@ class LUKSDevice(DMCryptDevice):
return size
def _postCreate(self):
- self._name = self.slave.format.mapName
+ self.name = self.slave.format.mapName
StorageDevice._postCreate(self)
def _postTeardown(self, recursive=False):
@@ -2845,8 +2865,7 @@ class LVMLogicalVolumeDevice(DMDevice):
return dm.dm_node_from_name(self.mapName)
- @property
- def name(self):
+ def _getName(self):
""" This device's name. """
return "%s-%s" % (self.vg.name, self._name)
@@ -4116,7 +4135,7 @@ class LoopDevice(StorageDevice):
name = loop.get_loop_name(self.slave.path)
if name.startswith("loop"):
- self._name = name
+ self.name = name
return self.name
@@ -4154,7 +4173,7 @@ class LoopDevice(StorageDevice):
def _postTeardown(self, recursive=False):
StorageDevice._postTeardown(self, recursive=recursive)
- self._name = "tmploop%d" % self.id
+ self.name = "tmploop%d" % self.id
self.sysfsPath = ''
@property
@@ -4634,10 +4653,10 @@ class BTRFSVolumeDevice(BTRFSDevice, ContainerDevice):
def _setFormat(self, fmt):
""" Set the Device's format. """
super(BTRFSVolumeDevice, self)._setFormat(fmt)
- self._name = "btrfs.%d" % self.id
+ self.name = "btrfs.%d" % self.id
label = getattr(self.format, "label", None)
if label:
- self._name = label
+ self.name = label
def _getSize(self):
size = sum([d.size for d in self.parents])
--
1.9.0
More information about the anaconda-patches
mailing list