diff options
author | Patrick Schaefer <pschaef@de.ibm.com> | 2013-05-28 17:44:15 +0200 |
---|---|---|
committer | Patrick Schaefer <pschaef@de.ibm.com> | 2013-05-29 17:42:34 +0200 |
commit | d93e466857f75073b243fea9901ea21b77753485 (patch) | |
tree | 24a5a106669356de0fb2febeb75b554e97ce3cbd /nova/storage | |
parent | 3a024ba3762af170ea493526a6010dfcccb8e30b (diff) | |
download | nova-d93e466857f75073b243fea9901ea21b77753485.tar.gz |
Enhance multipath parsing
The output of the multipath command is not always parseable from
the current implementation. This causes attach to fail.
Fixes Bug: #1184861
Change-Id: I1afa96a695b1008672226e7e76eb8e0feca52578
Diffstat (limited to 'nova/storage')
-rw-r--r-- | nova/storage/linuxscsi.py | 22 |
1 files changed, 12 insertions, 10 deletions
diff --git a/nova/storage/linuxscsi.py b/nova/storage/linuxscsi.py index 95cec192d4..afd8aa81ce 100644 --- a/nova/storage/linuxscsi.py +++ b/nova/storage/linuxscsi.py @@ -123,17 +123,19 @@ def find_multipath_device(device): LOG.debug(_("Found multipath device = %(mdev)s") % locals()) device_lines = lines[3:] for dev_line in device_lines: - dev_line = dev_line.strip() - dev_line = dev_line[3:] + if dev_line.find("policy") != -1: + continue + + dev_line = dev_line.lstrip(' |-`') dev_info = dev_line.split() - if dev_line.find("policy") == -1: - address = dev_info[0].split(":") - - dev = {'device': '/dev/%s' % dev_info[1], - 'host': address[0], 'channel': address[1], - 'id': address[2], 'lun': address[3] - } - devices.append(dev) + address = dev_info[0].split(":") + + dev = {'device': '/dev/%s' % dev_info[1], + 'host': address[0], 'channel': address[1], + 'id': address[2], 'lun': address[3] + } + + devices.append(dev) if mdev is not None: info = {"device": mdev, |