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 > Redhat > Fedora Development

 
 
LinkBack Thread Tools
 
Old 07-25-2011, 02:45 PM
Ales Kozumplik
 
Default edd: do not traceback when can not find the respective pci device.

Resolves: rhbz#723344
---
storage/devicelibs/edd.py | 15 +++++++++------
tests/mock/disk.py | 9 +++++++++
tests/storage/devicelibs/edd_test.py | 17 +++++++++++++++--
3 files changed, 33 insertions(+), 8 deletions(-)

diff --git a/storage/devicelibs/edd.py b/storage/devicelibs/edd.py
index 1ac40a6..9563af6 100644
--- a/storage/devicelibs/edd.py
+++ b/storage/devicelibs/edd.py
@@ -104,9 +104,12 @@ class EddMatcher(object):
'chan' : self.edd.channel,
'dev' : self.edd.ata_device
}
- block_entries = os.listdir(path)
- if len(block_entries) == 1:
- name = block_entries[0]
+ if os.path.isdir(path):
+ block_entries = os.listdir(path)
+ if len(block_entries) == 1:
+ name = block_entries[0]
+ else:
+ log.warning("edd: directory does not exist: %s" % path)
elif self.edd.type == "SCSI":
pattern = "/sys/devices/pci0000:00/0000:%(pci_dev)s/virtio*/block" %
{'pci_dev' : self.edd.pci_dev}
@@ -157,7 +160,7 @@ def collect_mbrs(devices):
mbrsig = struct.unpack('I', os.read(fd, 4))
os.close(fd)
except OSError as e:
- log.warning("Error reading mbrsig from disk %s: %s" %
+ log.warning("edd: error reading mbrsig from disk %s: %s" %
(dev.name, str(e)))
continue

@@ -202,11 +205,11 @@ def get_edd_dict(devices):
name = matcher.devname_from_pci_dev()
# next try to compare mbr signatures
if name:
- log.debug("matched 0x%x to %s using pci_dev" % (edd_number, name))
+ log.debug("edd: matched 0x%x to %s using pci_dev" % (edd_number, name))
else:
name = matcher.match_via_mbrsigs(mbr_dict)
if name:
- log.info("matched 0x%x to %s using MBR sig" % (edd_number, name))
+ log.info("edd: matched 0x%x to %s using MBR sig" % (edd_number, name))

if name:
old_edd_number = edd_dict.get(name)
diff --git a/tests/mock/disk.py b/tests/mock/disk.py
index 424e08c..fbd6181 100644
--- a/tests/mock/disk.py
+++ b/tests/mock/disk.py
@@ -25,6 +25,7 @@ _orig_glob_glob = glob.glob
_orig_open = open
_orig_os_listdir = os.listdir
_orig_os_path_exists = os.path.exists
+_orig_os_path_isdir = os.path.isdir

class DiskIO(object):
"""Simple object to simplify mocking of file operations in Mock
@@ -117,6 +118,12 @@ class DiskIO(object):
path = os.path.join(self._pwd, path)
return self.fs.has_key(path)

+ def os_path_isdir(self, path):
+ if not path.endswith("/"):
+ path += "/"
+ path += "*"
+ return len(fnmatch.filter(self.fs.keys(), path)) > 0
+
def os_remove(self, path):
path = os.path.join(self._pwd, path)
try:
@@ -137,6 +144,7 @@ class DiskIO(object):
module.glob.glob = self.glob_glob
module.os.listdir = self.os_listdir
module.os.path.exists = self.os_path_exists
+ module.os.path.isdir = self.os_path_isdir

@staticmethod
def restore_module(module):
@@ -144,3 +152,4 @@ class DiskIO(object):
module.glob.glob = _orig_glob_glob
module.os.listdir = _orig_os_listdir
module.os.path.exists = _orig_os_path_exists
+ module.os.path.isdir = _orig_os_path_isdir
diff --git a/tests/storage/devicelibs/edd_test.py b/tests/storage/devicelibs/edd_test.py
index ab87307..e4cf09b 100644
--- a/tests/storage/devicelibs/edd_test.py
+++ b/tests/storage/devicelibs/edd_test.py
@@ -66,6 +66,15 @@ class EddTestCase(mock.TestCase):
path = analyzer.devname_from_pci_dev()
self.assertEqual(path, "vda")

+ def test_bad_device_path(self):
+ from storage.devicelibs import edd
+ fs = EddTestFS(edd).sda_vda_no_pcidev()
+ edd_dict = edd.collect_edd_data()
+
+ analyzer = edd.EddMatcher(edd_dict[0x80])
+ path = analyzer.devname_from_pci_dev()
+ self.assertEqual(path, None)
+
def test_get_edd_dict_1(self):
""" Test get_edd_dict()'s pci_dev matching. """
from storage.devicelibs import edd
@@ -85,8 +94,6 @@ class EddTestCase(mock.TestCase):
{'sda' : 0x80,
'vda' : 0x81})

-
-
class EddTestFS(object):
def __init__(self, target_module):
self.fs = mock.DiskIO()
@@ -119,6 +126,12 @@ class EddTestFS(object):

return self.fs

+ def sda_vda_no_pcidev(self):
+ self.sda_vda()
+ entries = [e for e in self.fs.fs if e.startswith("/sys/devices/pci")]
+ map(self.fs.os_remove, entries)
+ return self.fs
+
def vda_vdb(self):
self.fs["/sys/firmware/edd/int13_dev80"] = self.fs.Dir()
self.fs["/sys/firmware/edd/int13_dev80/host_bus"] = "PCI 00:05.0 channel: 0
"
--
1.7.6

_______________________________________________
Anaconda-devel-list mailing list
Anaconda-devel-list@redhat.com
https://www.redhat.com/mailman/listinfo/anaconda-devel-list
 
Old 07-25-2011, 05:25 PM
"Brian C. Lane"
 
Default edd: do not traceback when can not find the respective pci device.

Ack to both of these.

--
Brian C. Lane | Anaconda Team | IRC: bcl #anaconda | Port Orchard, WA (PST8PDT)
_______________________________________________
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:31 AM.

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