[anaconda:rhel7/master] Cover both possible ways that GUI WWID may have been set (#1074184)
David Lehman
dlehman at redhat.com
Mon Mar 10 16:48:02 UTC 2014
On Mon, 2014-03-10 at 12:28 -0400, mulhern wrote:
> Resolves: rhbz#1074184
>
> All the pages on the filter screen interact with the same backing store,
> and each page can add different items to that backing store.
> Although Multipath page uses wwid attribute of multipath device Other page
> synthesizes a wwid using the internal _long_identifier() method.
> When filtering by wwid in Search page, need to check for both possible
> values of WWID. Do not need to check for both when filtering on Multipath
> page, as all devices for which ismember is True are multipath.
> Moved _long_identifier() method up into parent class, so that SearchPage
> could access it directly.
>
> Signed-off-by: mulhern <amulhern at redhat.com>
> ---
> pyanaconda/ui/gui/spokes/filter.py | 26 +++++++++++++-------------
> 1 file changed, 13 insertions(+), 13 deletions(-)
>
> diff --git a/pyanaconda/ui/gui/spokes/filter.py b/pyanaconda/ui/gui/spokes/filter.py
> index af40ac2..ba0b144 100644
> --- a/pyanaconda/ui/gui/spokes/filter.py
> +++ b/pyanaconda/ui/gui/spokes/filter.py
> @@ -136,6 +136,18 @@ class FilterPage(object):
> if items:
> combo.set_active(0)
>
> + def _long_identifier(self, disk):
> + # For iSCSI devices, we want the long ip-address:port-iscsi-tgtname-lun-XX
> + # identifier, but blivet doesn't expose that in any useful way and I don't
> + # want to go asking udev. Instead, we dig around in the deviceLinks and
> + # default to the name if we can't figure anything else out.
> + for link in disk.deviceLinks:
> + if "by-path" in link:
> + lastSlash = link.rindex("/")+1
> + return link[lastSlash:]
> +
> + return disk.name
> +
> class SearchPage(FilterPage):
> def __init__(self, storage, builder):
> FilterPage.__init__(self, storage, builder)
> @@ -203,7 +215,7 @@ class SearchPage(FilterPage):
> elif filterBy == 1:
> return self._port_equal(device) and self._target_equal(device) and self._lun_equal(device)
> elif filterBy == 2:
> - return hasattr(device, "wwid") and self._wwidEntry.get_text() in device.wwid
> + return self._wwidEntry.get_text() in (device.wwid if hasattr(device, "wwid") else self._long_identifier(device))
You could simplify that last piece (after "in") to:
getattr(device, "wwid", self._long_identifier(device))
I'll defer to someone who knows this code for a meaningful review.
>
> def visible_func(self, model, itr, *args):
> obj = DiskStoreRow._make(model[itr])
> @@ -290,18 +302,6 @@ class OtherPage(FilterPage):
> def ismember(self, device):
> return isinstance(device, iScsiDiskDevice) or isinstance(device, FcoeDiskDevice)
>
> - def _long_identifier(self, disk):
> - # For iSCSI devices, we want the long ip-address:port-iscsi-tgtname-lun-XX
> - # identifier, but blivet doesn't expose that in any useful way and I don't
> - # want to go asking udev. Instead, we dig around in the deviceLinks and
> - # default to the name if we can't figure anything else out.
> - for link in disk.deviceLinks:
> - if "by-path" in link:
> - lastSlash = link.rindex("/")+1
> - return link[lastSlash:]
> -
> - return disk.name
> -
> def setup(self, store, selectedNames, disks):
> vendors = []
> interconnects = []
More information about the anaconda-patches
mailing list