summaryrefslogtreecommitdiff
path: root/nova/storage
diff options
context:
space:
mode:
authorPatrick Schaefer <pschaef@de.ibm.com>2013-05-28 17:44:15 +0200
committerPatrick Schaefer <pschaef@de.ibm.com>2013-05-29 17:42:34 +0200
commitd93e466857f75073b243fea9901ea21b77753485 (patch)
tree24a5a106669356de0fb2febeb75b554e97ce3cbd /nova/storage
parent3a024ba3762af170ea493526a6010dfcccb8e30b (diff)
downloadnova-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.py22
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,