author | Devjani Ray <devjani.ray@oracle.com> |
Fri, 20 May 2016 17:42:29 -0400 | |
branch | s11u3-sru |
changeset 6035 | c9748fcc32de |
parent 5317 | fa561e436e88 |
permissions | -rw-r--r-- |
4072
db0cec748ec0
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
1 |
# vim: tabstop=4 shiftwidth=4 softtabstop=4 |
db0cec748ec0
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
2 |
|
6035
c9748fcc32de
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5317
diff
changeset
|
3 |
# Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. |
4072
db0cec748ec0
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
4 |
# |
db0cec748ec0
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
5 |
# Licensed under the Apache License, Version 2.0 (the "License"); you may |
db0cec748ec0
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
6 |
# not use this file except in compliance with the License. You may obtain |
db0cec748ec0
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
7 |
# a copy of the License at |
db0cec748ec0
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
8 |
# |
db0cec748ec0
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
9 |
# http://www.apache.org/licenses/LICENSE-2.0 |
db0cec748ec0
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
10 |
# |
db0cec748ec0
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
11 |
# Unless required by applicable law or agreed to in writing, software |
db0cec748ec0
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
12 |
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT |
db0cec748ec0
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
13 |
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the |
db0cec748ec0
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
14 |
# License for the specific language governing permissions and limitations |
db0cec748ec0
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
15 |
# under the License. |
db0cec748ec0
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
16 |
|
db0cec748ec0
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
17 |
"""Generic Solaris iSCSI utilities.""" |
db0cec748ec0
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
18 |
|
db0cec748ec0
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
19 |
import os |
4937
8f0976d7e40e
PSARC 2015/289 OpenStack Cinder Enhancements
Qiang Strony Zhang <strony.zhang@oracle.com>
parents:
4072
diff
changeset
|
20 |
import platform |
4072
db0cec748ec0
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
21 |
import time |
db0cec748ec0
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
22 |
|
6035
c9748fcc32de
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5317
diff
changeset
|
23 |
from oslo_concurrency import processutils as putils |
c9748fcc32de
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5317
diff
changeset
|
24 |
from oslo_log import log as logging |
c9748fcc32de
PSARC 2015/535 OpenStack service updates for Kilo
Devjani Ray <devjani.ray@oracle.com>
parents:
5317
diff
changeset
|
25 |
|
4072
db0cec748ec0
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
26 |
from cinder.brick import exception |
db0cec748ec0
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
27 |
from cinder.openstack.common.gettextutils import _ |
db0cec748ec0
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
28 |
|
db0cec748ec0
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
29 |
LOG = logging.getLogger(__name__) |
db0cec748ec0
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
30 |
|
db0cec748ec0
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
31 |
|
db0cec748ec0
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
32 |
class SolarisiSCSI(object): |
db0cec748ec0
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
33 |
def __init__(self, *args, **kwargs): |
db0cec748ec0
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
34 |
self.execute = putils.execute |
db0cec748ec0
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
35 |
|
db0cec748ec0
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
36 |
def _get_device_path(self, connection_properties): |
5317
fa561e436e88
22031461 volume attachment failed
Qiang Strony Zhang <strony.zhang@oracle.com>
parents:
4937
diff
changeset
|
37 |
"""Get the device path from the target info. |
fa561e436e88
22031461 volume attachment failed
Qiang Strony Zhang <strony.zhang@oracle.com>
parents:
4937
diff
changeset
|
38 |
|
fa561e436e88
22031461 volume attachment failed
Qiang Strony Zhang <strony.zhang@oracle.com>
parents:
4937
diff
changeset
|
39 |
The output of cmd below is like this: |
fa561e436e88
22031461 volume attachment failed
Qiang Strony Zhang <strony.zhang@oracle.com>
parents:
4937
diff
changeset
|
40 |
Target: iqn.2010-10.org.openstack:hostname1-tgt-grp-target |
fa561e436e88
22031461 volume attachment failed
Qiang Strony Zhang <strony.zhang@oracle.com>
parents:
4937
diff
changeset
|
41 |
Alias: - |
fa561e436e88
22031461 volume attachment failed
Qiang Strony Zhang <strony.zhang@oracle.com>
parents:
4937
diff
changeset
|
42 |
TPGT: 1 |
fa561e436e88
22031461 volume attachment failed
Qiang Strony Zhang <strony.zhang@oracle.com>
parents:
4937
diff
changeset
|
43 |
ISID: 4000002a0000 |
fa561e436e88
22031461 volume attachment failed
Qiang Strony Zhang <strony.zhang@oracle.com>
parents:
4937
diff
changeset
|
44 |
Connections: 1 |
fa561e436e88
22031461 volume attachment failed
Qiang Strony Zhang <strony.zhang@oracle.com>
parents:
4937
diff
changeset
|
45 |
LUN: 1 |
fa561e436e88
22031461 volume attachment failed
Qiang Strony Zhang <strony.zhang@oracle.com>
parents:
4937
diff
changeset
|
46 |
Vendor: SUN |
fa561e436e88
22031461 volume attachment failed
Qiang Strony Zhang <strony.zhang@oracle.com>
parents:
4937
diff
changeset
|
47 |
Product: COMSTAR |
fa561e436e88
22031461 volume attachment failed
Qiang Strony Zhang <strony.zhang@oracle.com>
parents:
4937
diff
changeset
|
48 |
OS Device Name: /dev/rdsk/c0t600144F0FDFAD05D0000563C04030003d0s2 |
fa561e436e88
22031461 volume attachment failed
Qiang Strony Zhang <strony.zhang@oracle.com>
parents:
4937
diff
changeset
|
49 |
LUN: 0 |
fa561e436e88
22031461 volume attachment failed
Qiang Strony Zhang <strony.zhang@oracle.com>
parents:
4937
diff
changeset
|
50 |
Vendor: SUN |
fa561e436e88
22031461 volume attachment failed
Qiang Strony Zhang <strony.zhang@oracle.com>
parents:
4937
diff
changeset
|
51 |
Product: COMSTAR |
fa561e436e88
22031461 volume attachment failed
Qiang Strony Zhang <strony.zhang@oracle.com>
parents:
4937
diff
changeset
|
52 |
OS Device Name: /dev/rdsk/c0t600144F0FDFAD05D0000563C02270002d0s2 |
fa561e436e88
22031461 volume attachment failed
Qiang Strony Zhang <strony.zhang@oracle.com>
parents:
4937
diff
changeset
|
53 |
|
fa561e436e88
22031461 volume attachment failed
Qiang Strony Zhang <strony.zhang@oracle.com>
parents:
4937
diff
changeset
|
54 |
""" |
4072
db0cec748ec0
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
55 |
(out, _err) = self.execute('/usr/sbin/iscsiadm', 'list', |
db0cec748ec0
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
56 |
'target', '-S', |
db0cec748ec0
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
57 |
connection_properties['target_iqn']) |
db0cec748ec0
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
58 |
|
5317
fa561e436e88
22031461 volume attachment failed
Qiang Strony Zhang <strony.zhang@oracle.com>
parents:
4937
diff
changeset
|
59 |
found = False |
4072
db0cec748ec0
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
60 |
for line in [l.strip() for l in out.splitlines()]: |
5317
fa561e436e88
22031461 volume attachment failed
Qiang Strony Zhang <strony.zhang@oracle.com>
parents:
4937
diff
changeset
|
61 |
if line.startswith("LUN:"): |
fa561e436e88
22031461 volume attachment failed
Qiang Strony Zhang <strony.zhang@oracle.com>
parents:
4937
diff
changeset
|
62 |
lun = line.split()[-1] |
fa561e436e88
22031461 volume attachment failed
Qiang Strony Zhang <strony.zhang@oracle.com>
parents:
4937
diff
changeset
|
63 |
if int(lun) == int(connection_properties['target_lun']): |
fa561e436e88
22031461 volume attachment failed
Qiang Strony Zhang <strony.zhang@oracle.com>
parents:
4937
diff
changeset
|
64 |
found = True |
fa561e436e88
22031461 volume attachment failed
Qiang Strony Zhang <strony.zhang@oracle.com>
parents:
4937
diff
changeset
|
65 |
continue |
fa561e436e88
22031461 volume attachment failed
Qiang Strony Zhang <strony.zhang@oracle.com>
parents:
4937
diff
changeset
|
66 |
if found: |
fa561e436e88
22031461 volume attachment failed
Qiang Strony Zhang <strony.zhang@oracle.com>
parents:
4937
diff
changeset
|
67 |
if line.startswith("OS Device Name:"): |
fa561e436e88
22031461 volume attachment failed
Qiang Strony Zhang <strony.zhang@oracle.com>
parents:
4937
diff
changeset
|
68 |
dev_path = line.split()[-1] |
fa561e436e88
22031461 volume attachment failed
Qiang Strony Zhang <strony.zhang@oracle.com>
parents:
4937
diff
changeset
|
69 |
return dev_path |
fa561e436e88
22031461 volume attachment failed
Qiang Strony Zhang <strony.zhang@oracle.com>
parents:
4937
diff
changeset
|
70 |
elif line.startswith("LUN:"): |
fa561e436e88
22031461 volume attachment failed
Qiang Strony Zhang <strony.zhang@oracle.com>
parents:
4937
diff
changeset
|
71 |
found = False |
fa561e436e88
22031461 volume attachment failed
Qiang Strony Zhang <strony.zhang@oracle.com>
parents:
4937
diff
changeset
|
72 |
|
fa561e436e88
22031461 volume attachment failed
Qiang Strony Zhang <strony.zhang@oracle.com>
parents:
4937
diff
changeset
|
73 |
if not found: |
fa561e436e88
22031461 volume attachment failed
Qiang Strony Zhang <strony.zhang@oracle.com>
parents:
4937
diff
changeset
|
74 |
LOG.error(_("No device is found for the target %s LUN %s.") % |
fa561e436e88
22031461 volume attachment failed
Qiang Strony Zhang <strony.zhang@oracle.com>
parents:
4937
diff
changeset
|
75 |
(connection_properties['target_iqn'], |
fa561e436e88
22031461 volume attachment failed
Qiang Strony Zhang <strony.zhang@oracle.com>
parents:
4937
diff
changeset
|
76 |
connection_properties['target_lun'])) |
4072
db0cec748ec0
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
77 |
raise |
db0cec748ec0
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
78 |
|
db0cec748ec0
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
79 |
def get_initiator(self): |
db0cec748ec0
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
80 |
"""Return the iSCSI initiator node name IQN""" |
db0cec748ec0
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
81 |
out, err = self.execute('/usr/sbin/iscsiadm', 'list', 'initiator-node') |
db0cec748ec0
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
82 |
|
db0cec748ec0
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
83 |
# Sample first line of command output: |
db0cec748ec0
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
84 |
# Initiator node name: iqn.1986-03.com.sun:01:e00000000000.4f757217 |
db0cec748ec0
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
85 |
initiator_name_line = out.splitlines()[0] |
db0cec748ec0
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
86 |
return initiator_name_line.rsplit(' ', 1)[1] |
db0cec748ec0
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
87 |
|
db0cec748ec0
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
88 |
def _connect_to_iscsi_portal(self, connection_properties): |
db0cec748ec0
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
89 |
# TODO(Strony): handle the CHAP authentication |
db0cec748ec0
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
90 |
target_ip = connection_properties['target_portal'].split(":")[0] |
db0cec748ec0
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
91 |
self.execute('/usr/sbin/iscsiadm', 'add', 'discovery-address', |
db0cec748ec0
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
92 |
target_ip) |
db0cec748ec0
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
93 |
self.execute('/usr/sbin/iscsiadm', 'modify', 'discovery', |
db0cec748ec0
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
94 |
'--sendtargets', 'enable') |
db0cec748ec0
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
95 |
(out, _err) = self.execute('/usr/sbin/iscsiadm', 'list', |
db0cec748ec0
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
96 |
'discovery-address', '-v', |
db0cec748ec0
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
97 |
target_ip) |
db0cec748ec0
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
98 |
|
db0cec748ec0
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
99 |
lines = out.splitlines() |
db0cec748ec0
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
100 |
if not lines[0].strip().startswith('Discovery Address: ') or \ |
db0cec748ec0
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
101 |
lines[1].strip().startswith('Unable to get targets.'): |
db0cec748ec0
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
102 |
msg = _("No iSCSI target is found.") |
db0cec748ec0
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
103 |
LOG.error(msg) |
db0cec748ec0
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
104 |
raise |
db0cec748ec0
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
105 |
|
db0cec748ec0
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
106 |
target_iqn = connection_properties['target_iqn'] |
db0cec748ec0
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
107 |
for line in [l.strip() for l in lines]: |
db0cec748ec0
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
108 |
if line.startswith("Target name:") and \ |
db0cec748ec0
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
109 |
line.split()[-1] == target_iqn: |
db0cec748ec0
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
110 |
return |
db0cec748ec0
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
111 |
else: |
db0cec748ec0
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
112 |
LOG.error(_("No active session is found for the target %s.") % |
db0cec748ec0
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
113 |
target_iqn) |
db0cec748ec0
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
114 |
raise |
db0cec748ec0
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
115 |
|
db0cec748ec0
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
116 |
def connect_volume(self, connection_properties, scan_tries): |
db0cec748ec0
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
117 |
"""Attach the volume to instance_name. |
db0cec748ec0
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
118 |
|
db0cec748ec0
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
119 |
connection_properties for iSCSI must include: |
db0cec748ec0
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
120 |
target_portal - ip and optional port |
db0cec748ec0
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
121 |
target_iqn - iSCSI Qualified Name |
db0cec748ec0
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
122 |
target_lun - LUN id of the volume |
db0cec748ec0
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
123 |
""" |
db0cec748ec0
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
124 |
device_info = {'type': 'block'} |
db0cec748ec0
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
125 |
|
db0cec748ec0
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
126 |
# TODO(Strony): support the iSCSI multipath on Solaris. |
db0cec748ec0
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
127 |
self._connect_to_iscsi_portal(connection_properties) |
db0cec748ec0
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
128 |
|
db0cec748ec0
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
129 |
host_device = self._get_device_path(connection_properties) |
db0cec748ec0
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
130 |
|
db0cec748ec0
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
131 |
# check if it is a valid device path. |
db0cec748ec0
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
132 |
for i in range(1, scan_tries): |
db0cec748ec0
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
133 |
if os.path.exists(host_device): |
db0cec748ec0
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
134 |
break |
db0cec748ec0
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
135 |
else: |
db0cec748ec0
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
136 |
time.sleep(i ** 2) |
db0cec748ec0
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
137 |
else: |
db0cec748ec0
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
138 |
raise exception.VolumeDeviceNotFound(device=host_device) |
db0cec748ec0
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
139 |
|
4937
8f0976d7e40e
PSARC 2015/289 OpenStack Cinder Enhancements
Qiang Strony Zhang <strony.zhang@oracle.com>
parents:
4072
diff
changeset
|
140 |
# Set the label EFI to the disk on SPARC before it is accessed and |
8f0976d7e40e
PSARC 2015/289 OpenStack Cinder Enhancements
Qiang Strony Zhang <strony.zhang@oracle.com>
parents:
4072
diff
changeset
|
141 |
# make sure the correct device path with slice 0 |
8f0976d7e40e
PSARC 2015/289 OpenStack Cinder Enhancements
Qiang Strony Zhang <strony.zhang@oracle.com>
parents:
4072
diff
changeset
|
142 |
# (like '/dev/rdsk/c0t600xxxd0s0'). |
8f0976d7e40e
PSARC 2015/289 OpenStack Cinder Enhancements
Qiang Strony Zhang <strony.zhang@oracle.com>
parents:
4072
diff
changeset
|
143 |
if platform.processor() == 'sparc': |
8f0976d7e40e
PSARC 2015/289 OpenStack Cinder Enhancements
Qiang Strony Zhang <strony.zhang@oracle.com>
parents:
4072
diff
changeset
|
144 |
tmp_dev_name = host_device.rsplit('s', 1) |
8f0976d7e40e
PSARC 2015/289 OpenStack Cinder Enhancements
Qiang Strony Zhang <strony.zhang@oracle.com>
parents:
4072
diff
changeset
|
145 |
disk_name = tmp_dev_name[0].split('/')[-1] |
8f0976d7e40e
PSARC 2015/289 OpenStack Cinder Enhancements
Qiang Strony Zhang <strony.zhang@oracle.com>
parents:
4072
diff
changeset
|
146 |
(out, _err) = self.execute('/usr/sbin/format', '-L', 'efi', '-d', |
8f0976d7e40e
PSARC 2015/289 OpenStack Cinder Enhancements
Qiang Strony Zhang <strony.zhang@oracle.com>
parents:
4072
diff
changeset
|
147 |
disk_name) |
8f0976d7e40e
PSARC 2015/289 OpenStack Cinder Enhancements
Qiang Strony Zhang <strony.zhang@oracle.com>
parents:
4072
diff
changeset
|
148 |
host_device = '%ss0' % tmp_dev_name[0] |
8f0976d7e40e
PSARC 2015/289 OpenStack Cinder Enhancements
Qiang Strony Zhang <strony.zhang@oracle.com>
parents:
4072
diff
changeset
|
149 |
|
4072
db0cec748ec0
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
150 |
device_info['path'] = host_device |
db0cec748ec0
PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
151 |
return device_info |