FAQ Search Today's Posts Mark Forums Read
» Video Reviews

» Linux Archive

Linux-archive is a website aiming to archive linux email lists and to make them easily accessible for linux users/developers.


» Sponsor

» Partners

» Sponsor

Go Back   Linux Archive > Ubuntu > Ubuntu Kernel Team

 
 
LinkBack Thread Tools
 
Old 01-15-2010, 08:23 PM
Peter Jones
 
Default Make all StorageDevice-s support .vendor and .model

Not everything has one, but this makes them all at least show "None"
instead of having to do the hasattr dance. Also, it now normally gets
the info from udev rather than using parted's concatenated version
(which fixes some minor UI problems as well as making it available at
more places.)

Also add a correct "model" method to MultipathDevice - we want to
display the model for the underlying disk device, not "linux device
mapper device" or whatnot.
---
storage/devices.py | 52 ++++++++++++++++++++++++++++++++++++++----------
storage/devicetree.py | 8 +++++-
2 files changed, 47 insertions(+), 13 deletions(-)

diff --git a/storage/devices.py b/storage/devices.py
index 6b19fd8..8d74fa7 100644
--- a/storage/devices.py
+++ b/storage/devices.py
@@ -432,7 +432,7 @@ class StorageDevice(Device):
def __init__(self, device, format=None,
size=None, major=None, minor=None,
sysfsPath=', parents=None, exists=None, serial=None,
- vendor="", bus=""):
+ vendor="", model="", bus=""):
""" Create a StorageDevice instance.

Arguments:
@@ -447,6 +447,10 @@ class StorageDevice(Device):
sysfsPath -- sysfs device path
format -- a DeviceFormat instance
parents -- a list of required Device instances
+ serial -- the ID_SERIAL_SHORT for this device
+ vendor -- the manufacturer of this Device
+ model -- manufacturer's device model string
+ bus -- the interconnect this device uses

"""
# allow specification of individual parents
@@ -462,8 +466,9 @@ class StorageDevice(Device):
self.major = numeric_type(major)
self.minor = numeric_type(minor)
self.sysfsPath = sysfsPath
- self.serial = serial
- self.vendor = vendor
+ self._serial = serial
+ self._vendor = vendor
+ self._model = model
self.bus = bus

self.protected = False
@@ -737,6 +742,19 @@ class StorageDevice(Device):
def partitioned(self):
return self.format.type == "disklabel" and self.partitionable

+ @property
+ def serial(self):
+ return self._serial
+
+ @property
+ def model(self):
+ if not self._model:
+ self._model = getattr(self.partedDevice, "model", None)
+ return self._model
+
+ @property
+ def vendor(self):
+ return self._vendor

class DiskDevice(StorageDevice):
""" A disk """
@@ -746,7 +764,7 @@ class DiskDevice(StorageDevice):

def __init__(self, device, format=None,
size=None, major=None, minor=None, sysfsPath=',
- parents=None, serial=None, vendor="", bus="",
+ parents=None, serial=None, vendor="", model="", bus="",
exists=True):
""" Create a DiskDevice instance.

@@ -765,6 +783,7 @@ class DiskDevice(StorageDevice):
removable -- whether or not this is a removable device
serial -- the ID_SERIAL_SHORT for this device
vendor -- the manufacturer of this Device
+ model -- manufacturer's device model string
bus -- the interconnect this device uses


@@ -773,7 +792,8 @@ class DiskDevice(StorageDevice):
StorageDevice.__init__(self, device, format=format, size=size,
major=major, minor=minor, exists=exists,
sysfsPath=sysfsPath, parents=parents,
- serial=serial, vendor=vendor, bus=bus)
+ serial=serial, model=model,
+ vendor=vendor, bus=bus)

def __str__(self):
s = StorageDevice.__str__(self)
@@ -792,10 +812,6 @@ class DiskDevice(StorageDevice):
return self.partedDevice.getSize() != 0

@property
- def model(self):
- return getattr(self.partedDevice, "model", None)
-
- @property
def description(self):
return self.model

@@ -2969,6 +2985,18 @@ class MultipathDevice(DMDevice):
return ":".join(ret)

@property
+ def model(self):
+ if not self.parents:
+ return ""
+ return self.parents[0].model
+
+ @property
+ def vendor(self):
+ if not self.parents:
+ return ""
+ return self.parents[0].vendor
+
+ @property
def description(self):
return "WWID %s" % (self.wwid,)

@@ -3245,10 +3273,12 @@ class OpticalDevice(StorageDevice):
_type = "cdrom"

def __init__(self, name, major=None, minor=None, exists=None,
- format=None, parents=None, sysfsPath='):
+ format=None, parents=None, sysfsPath=', vendor="",
+ model=""):
StorageDevice.__init__(self, name, format=format,
major=major, minor=minor, exists=True,
- parents=parents, sysfsPath=sysfsPath)
+ parents=parents, sysfsPath=sysfsPath,
+ vendor=vendor, model=model)

@property
def mediaPresent(self):
diff --git a/storage/devicetree.py b/storage/devicetree.py
index 0059a20..1c241ab 100644
--- a/storage/devicetree.py
+++ b/storage/devicetree.py
@@ -1179,7 +1179,9 @@ class DeviceTree(object):
device = OpticalDevice(udev_device_get_name(info),
major=udev_device_get_major(info),
minor=udev_device_get_minor(info),
- sysfsPath=udev_device_get_sysfs_path(info))
+ sysfsPath=udev_device_get_sysfs_path(info),
+ vendor=udev_device_get_vendor(info),
+ model=udev_device_get_model(info))
self._addDevice(device)
return device

@@ -1204,7 +1206,9 @@ class DeviceTree(object):
major=udev_device_get_major(info),
minor=udev_device_get_minor(info),
sysfsPath=sysfs_path, exists=True,
- serial=udev_device_get_serial(info))
+ serial=udev_device_get_serial(info),
+ vendor=udev_device_get_vendor(info),
+ model=udev_device_get_model(info))
self._addDevice(device)
elif udev_device_is_dm(info) and
devicelibs.dm.dm_is_multipath(info):
--
1.6.5.2

_______________________________________________
Anaconda-devel-list mailing list
Anaconda-devel-list@redhat.com
https://www.redhat.com/mailman/listinfo/anaconda-devel-list
 
Old 01-20-2010, 03:36 PM
Chris Lumens
 
Default Make all StorageDevice-s support .vendor and .model

> diff --git a/storage/devices.py b/storage/devices.py
> index 6b19fd8..8d74fa7 100644
> --- a/storage/devices.py
> +++ b/storage/devices.py
> @@ -737,6 +742,19 @@ class StorageDevice(Device):
> def partitioned(self):
> return self.format.type == "disklabel" and self.partitionable
>
> + @property
> + def serial(self):
> + return self._serial
> +
> + @property
> + def model(self):
> + if not self._model:
> + self._model = getattr(self.partedDevice, "model", None)
> + return self._model
> +
> + @property
> + def vendor(self):
> + return self._vendor

In this model you return None as the default...

> @@ -2969,6 +2985,18 @@ class MultipathDevice(DMDevice):
> return ":".join(ret)
>
> @property
> + def model(self):
> + if not self.parents:
> + return ""
> + return self.parents[0].model
> +
> + @property
> + def vendor(self):
> + if not self.parents:
> + return ""
> + return self.parents[0].vendor
> +
> + @property
> def description(self):
> return "WWID %s" % (self.wwid,)

...but in this model you return "".

- Chris

_______________________________________________
Anaconda-devel-list mailing list
Anaconda-devel-list@redhat.com
https://www.redhat.com/mailman/listinfo/anaconda-devel-list
 
Old 01-20-2010, 08:12 PM
Peter Jones
 
Default Make all StorageDevice-s support .vendor and .model

Not everything has one, but this makes them all at least show "None"
instead of having to do the hasattr dance. Also, it now normally gets
the info from udev rather than using parted's concatenated version
(which fixes some minor UI problems as well as making it available at
more places.)

Also add a correct "model" method to MultipathDevice - we want to
display the model for the underlying disk device, not "linux device
mapper device" or whatnot.
---
storage/devices.py | 52 ++++++++++++++++++++++++++++++++++++++----------
storage/devicetree.py | 8 +++++-
2 files changed, 47 insertions(+), 13 deletions(-)

diff --git a/storage/devices.py b/storage/devices.py
index 6b19fd8..4137d4f 100644
--- a/storage/devices.py
+++ b/storage/devices.py
@@ -432,7 +432,7 @@ class StorageDevice(Device):
def __init__(self, device, format=None,
size=None, major=None, minor=None,
sysfsPath=', parents=None, exists=None, serial=None,
- vendor="", bus=""):
+ vendor="", model="", bus=""):
""" Create a StorageDevice instance.

Arguments:
@@ -447,6 +447,10 @@ class StorageDevice(Device):
sysfsPath -- sysfs device path
format -- a DeviceFormat instance
parents -- a list of required Device instances
+ serial -- the ID_SERIAL_SHORT for this device
+ vendor -- the manufacturer of this Device
+ model -- manufacturer's device model string
+ bus -- the interconnect this device uses

"""
# allow specification of individual parents
@@ -462,8 +466,9 @@ class StorageDevice(Device):
self.major = numeric_type(major)
self.minor = numeric_type(minor)
self.sysfsPath = sysfsPath
- self.serial = serial
- self.vendor = vendor
+ self._serial = serial
+ self._vendor = vendor
+ self._model = model
self.bus = bus

self.protected = False
@@ -737,6 +742,19 @@ class StorageDevice(Device):
def partitioned(self):
return self.format.type == "disklabel" and self.partitionable

+ @property
+ def serial(self):
+ return self._serial
+
+ @property
+ def model(self):
+ if not self._model:
+ self._model = getattr(self.partedDevice, "model", "")
+ return self._model
+
+ @property
+ def vendor(self):
+ return self._vendor

class DiskDevice(StorageDevice):
""" A disk """
@@ -746,7 +764,7 @@ class DiskDevice(StorageDevice):

def __init__(self, device, format=None,
size=None, major=None, minor=None, sysfsPath=',
- parents=None, serial=None, vendor="", bus="",
+ parents=None, serial=None, vendor="", model="", bus="",
exists=True):
""" Create a DiskDevice instance.

@@ -765,6 +783,7 @@ class DiskDevice(StorageDevice):
removable -- whether or not this is a removable device
serial -- the ID_SERIAL_SHORT for this device
vendor -- the manufacturer of this Device
+ model -- manufacturer's device model string
bus -- the interconnect this device uses


@@ -773,7 +792,8 @@ class DiskDevice(StorageDevice):
StorageDevice.__init__(self, device, format=format, size=size,
major=major, minor=minor, exists=exists,
sysfsPath=sysfsPath, parents=parents,
- serial=serial, vendor=vendor, bus=bus)
+ serial=serial, model=model,
+ vendor=vendor, bus=bus)

def __str__(self):
s = StorageDevice.__str__(self)
@@ -792,10 +812,6 @@ class DiskDevice(StorageDevice):
return self.partedDevice.getSize() != 0

@property
- def model(self):
- return getattr(self.partedDevice, "model", None)
-
- @property
def description(self):
return self.model

@@ -2969,6 +2985,18 @@ class MultipathDevice(DMDevice):
return ":".join(ret)

@property
+ def model(self):
+ if not self.parents:
+ return ""
+ return self.parents[0].model
+
+ @property
+ def vendor(self):
+ if not self.parents:
+ return ""
+ return self.parents[0].vendor
+
+ @property
def description(self):
return "WWID %s" % (self.wwid,)

@@ -3245,10 +3273,12 @@ class OpticalDevice(StorageDevice):
_type = "cdrom"

def __init__(self, name, major=None, minor=None, exists=None,
- format=None, parents=None, sysfsPath='):
+ format=None, parents=None, sysfsPath=', vendor="",
+ model=""):
StorageDevice.__init__(self, name, format=format,
major=major, minor=minor, exists=True,
- parents=parents, sysfsPath=sysfsPath)
+ parents=parents, sysfsPath=sysfsPath,
+ vendor=vendor, model=model)

@property
def mediaPresent(self):
diff --git a/storage/devicetree.py b/storage/devicetree.py
index 0059a20..1c241ab 100644
--- a/storage/devicetree.py
+++ b/storage/devicetree.py
@@ -1179,7 +1179,9 @@ class DeviceTree(object):
device = OpticalDevice(udev_device_get_name(info),
major=udev_device_get_major(info),
minor=udev_device_get_minor(info),
- sysfsPath=udev_device_get_sysfs_path(info))
+ sysfsPath=udev_device_get_sysfs_path(info),
+ vendor=udev_device_get_vendor(info),
+ model=udev_device_get_model(info))
self._addDevice(device)
return device

@@ -1204,7 +1206,9 @@ class DeviceTree(object):
major=udev_device_get_major(info),
minor=udev_device_get_minor(info),
sysfsPath=sysfs_path, exists=True,
- serial=udev_device_get_serial(info))
+ serial=udev_device_get_serial(info),
+ vendor=udev_device_get_vendor(info),
+ model=udev_device_get_model(info))
self._addDevice(device)
elif udev_device_is_dm(info) and
devicelibs.dm.dm_is_multipath(info):
--
1.6.5.2

_______________________________________________
Anaconda-devel-list mailing list
Anaconda-devel-list@redhat.com
https://www.redhat.com/mailman/listinfo/anaconda-devel-list
 
Old 01-20-2010, 08:53 PM
Chris Lumens
 
Default Make all StorageDevice-s support .vendor and .model

> Not everything has one, but this makes them all at least show "None"
> instead of having to do the hasattr dance. Also, it now normally gets
> the info from udev rather than using parted's concatenated version
> (which fixes some minor UI problems as well as making it available at
> more places.)
>
> Also add a correct "model" method to MultipathDevice - we want to
> display the model for the underlying disk device, not "linux device
> mapper device" or whatnot.

Ship it.

- Chris

_______________________________________________
Anaconda-devel-list mailing list
Anaconda-devel-list@redhat.com
https://www.redhat.com/mailman/listinfo/anaconda-devel-list
 

Thread Tools




All times are GMT. The time now is 09:18 AM.

VBulletin, Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.
Content Relevant URLs by vBSEO ©2007, Crawlability, Inc.
Copyright 2007 - 2008, www.linux-archive.org