Clean CONF out of brick initiator
This is part 1 of the work needed to remove CONF from the brick subproject. This patch removes the CONF usage completely from the initiator portion of brick. Change-Id: I62cf72214db9d4296ae4c5b09bd21fb53664c117 Partial-Bug: #1230066
This commit is contained in:
parent
a2673b0feb
commit
7018256578
@ -19,8 +19,6 @@ import os
|
|||||||
import socket
|
import socket
|
||||||
import time
|
import time
|
||||||
|
|
||||||
from oslo.config import cfg
|
|
||||||
|
|
||||||
from cinder.brick import exception
|
from cinder.brick import exception
|
||||||
from cinder.brick import executor
|
from cinder.brick import executor
|
||||||
from cinder.brick.initiator import host_driver
|
from cinder.brick.initiator import host_driver
|
||||||
@ -35,28 +33,18 @@ from cinder.openstack.common import processutils as putils
|
|||||||
|
|
||||||
LOG = logging.getLogger(__name__)
|
LOG = logging.getLogger(__name__)
|
||||||
|
|
||||||
connector_opts = [
|
|
||||||
cfg.IntOpt('num_volume_device_scan_tries',
|
|
||||||
deprecated_name='num_iscsi_scan_tries',
|
|
||||||
default=3,
|
|
||||||
help='The maximum number of times to rescan targets'
|
|
||||||
'to find volume'),
|
|
||||||
]
|
|
||||||
|
|
||||||
CONF = cfg.CONF
|
|
||||||
CONF.register_opts(connector_opts)
|
|
||||||
|
|
||||||
synchronized = lockutils.synchronized_with_prefix('brick-')
|
synchronized = lockutils.synchronized_with_prefix('brick-')
|
||||||
|
DEVICE_SCAN_ATTEMPTS_DEFAULT = 3
|
||||||
|
|
||||||
|
|
||||||
def get_connector_properties(root_helper):
|
def get_connector_properties(root_helper, my_ip):
|
||||||
"""Get the connection properties for all protocols."""
|
"""Get the connection properties for all protocols."""
|
||||||
|
|
||||||
iscsi = ISCSIConnector(root_helper=root_helper)
|
iscsi = ISCSIConnector(root_helper=root_helper)
|
||||||
fc = linuxfc.LinuxFibreChannel(root_helper=root_helper)
|
fc = linuxfc.LinuxFibreChannel(root_helper=root_helper)
|
||||||
|
|
||||||
props = {}
|
props = {}
|
||||||
props['ip'] = CONF.my_ip
|
props['ip'] = my_ip
|
||||||
props['host'] = socket.gethostname()
|
props['host'] = socket.gethostname()
|
||||||
initiator = iscsi.get_initiator()
|
initiator = iscsi.get_initiator()
|
||||||
if initiator:
|
if initiator:
|
||||||
@ -73,12 +61,15 @@ def get_connector_properties(root_helper):
|
|||||||
|
|
||||||
class InitiatorConnector(executor.Executor):
|
class InitiatorConnector(executor.Executor):
|
||||||
def __init__(self, root_helper, driver=None,
|
def __init__(self, root_helper, driver=None,
|
||||||
execute=putils.execute, *args, **kwargs):
|
execute=putils.execute,
|
||||||
|
device_scan_attempts=DEVICE_SCAN_ATTEMPTS_DEFAULT,
|
||||||
|
*args, **kwargs):
|
||||||
super(InitiatorConnector, self).__init__(root_helper, execute=execute,
|
super(InitiatorConnector, self).__init__(root_helper, execute=execute,
|
||||||
*args, **kwargs)
|
*args, **kwargs)
|
||||||
if not driver:
|
if not driver:
|
||||||
driver = host_driver.HostDriver()
|
driver = host_driver.HostDriver()
|
||||||
self.set_driver(driver)
|
self.set_driver(driver)
|
||||||
|
self.device_scan_attempts = device_scan_attempts
|
||||||
|
|
||||||
def set_driver(self, driver):
|
def set_driver(self, driver):
|
||||||
"""The driver is used to find used LUNs."""
|
"""The driver is used to find used LUNs."""
|
||||||
@ -87,7 +78,8 @@ class InitiatorConnector(executor.Executor):
|
|||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def factory(protocol, root_helper, driver=None,
|
def factory(protocol, root_helper, driver=None,
|
||||||
execute=putils.execute, use_multipath=False):
|
execute=putils.execute, use_multipath=False,
|
||||||
|
device_scan_attempts=DEVICE_SCAN_ATTEMPTS_DEFAULT):
|
||||||
"""Build a Connector object based upon protocol."""
|
"""Build a Connector object based upon protocol."""
|
||||||
LOG.debug("Factory for %s" % protocol)
|
LOG.debug("Factory for %s" % protocol)
|
||||||
protocol = protocol.upper()
|
protocol = protocol.upper()
|
||||||
@ -95,26 +87,31 @@ class InitiatorConnector(executor.Executor):
|
|||||||
return ISCSIConnector(root_helper=root_helper,
|
return ISCSIConnector(root_helper=root_helper,
|
||||||
driver=driver,
|
driver=driver,
|
||||||
execute=execute,
|
execute=execute,
|
||||||
use_multipath=use_multipath)
|
use_multipath=use_multipath,
|
||||||
|
device_scan_attempts=device_scan_attempts)
|
||||||
elif protocol == "FIBRE_CHANNEL":
|
elif protocol == "FIBRE_CHANNEL":
|
||||||
return FibreChannelConnector(root_helper=root_helper,
|
return FibreChannelConnector(root_helper=root_helper,
|
||||||
driver=driver,
|
driver=driver,
|
||||||
execute=execute,
|
execute=execute,
|
||||||
use_multipath=use_multipath)
|
use_multipath=use_multipath,
|
||||||
|
device_scan_attempts=
|
||||||
|
device_scan_attempts)
|
||||||
elif protocol == "AOE":
|
elif protocol == "AOE":
|
||||||
return AoEConnector(root_helper=root_helper,
|
return AoEConnector(root_helper=root_helper,
|
||||||
driver=driver,
|
driver=driver,
|
||||||
execute=execute)
|
execute=execute,
|
||||||
|
device_scan_attempts=device_scan_attempts)
|
||||||
elif protocol == "NFS" or protocol == "GLUSTERFS":
|
elif protocol == "NFS" or protocol == "GLUSTERFS":
|
||||||
return RemoteFsConnector(mount_type=protocol.lower(),
|
return RemoteFsConnector(mount_type=protocol.lower(),
|
||||||
root_helper=root_helper,
|
root_helper=root_helper,
|
||||||
driver=driver,
|
driver=driver,
|
||||||
execute=execute)
|
execute=execute,
|
||||||
|
device_scan_attempts=device_scan_attempts)
|
||||||
elif protocol == "LOCAL":
|
elif protocol == "LOCAL":
|
||||||
return LocalConnector(root_helper=root_helper,
|
return LocalConnector(root_helper=root_helper,
|
||||||
driver=driver,
|
driver=driver,
|
||||||
execute=execute)
|
execute=execute,
|
||||||
|
device_scan_attempts=device_scan_attempts)
|
||||||
else:
|
else:
|
||||||
msg = (_("Invalid InitiatorConnector protocol "
|
msg = (_("Invalid InitiatorConnector protocol "
|
||||||
"specified %(protocol)s") %
|
"specified %(protocol)s") %
|
||||||
@ -161,10 +158,14 @@ class ISCSIConnector(InitiatorConnector):
|
|||||||
|
|
||||||
def __init__(self, root_helper, driver=None,
|
def __init__(self, root_helper, driver=None,
|
||||||
execute=putils.execute, use_multipath=False,
|
execute=putils.execute, use_multipath=False,
|
||||||
|
device_scan_attempts=DEVICE_SCAN_ATTEMPTS_DEFAULT,
|
||||||
*args, **kwargs):
|
*args, **kwargs):
|
||||||
self._linuxscsi = linuxscsi.LinuxSCSI(root_helper, execute)
|
self._linuxscsi = linuxscsi.LinuxSCSI(root_helper, execute)
|
||||||
super(ISCSIConnector, self).__init__(root_helper, driver=driver,
|
super(ISCSIConnector, self).__init__(root_helper, driver=driver,
|
||||||
execute=execute, *args, **kwargs)
|
execute=execute,
|
||||||
|
device_scan_attempts=
|
||||||
|
device_scan_attempts,
|
||||||
|
*args, **kwargs)
|
||||||
self.use_multipath = use_multipath
|
self.use_multipath = use_multipath
|
||||||
|
|
||||||
def set_execute(self, execute):
|
def set_execute(self, execute):
|
||||||
@ -210,7 +211,7 @@ class ISCSIConnector(InitiatorConnector):
|
|||||||
# TODO(justinsb): This retry-with-delay is a pattern, move to utils?
|
# TODO(justinsb): This retry-with-delay is a pattern, move to utils?
|
||||||
tries = 0
|
tries = 0
|
||||||
while not os.path.exists(host_device):
|
while not os.path.exists(host_device):
|
||||||
if tries >= CONF.num_volume_device_scan_tries:
|
if tries >= self.device_scan_attempts:
|
||||||
raise exception.VolumeDeviceNotFound(device=host_device)
|
raise exception.VolumeDeviceNotFound(device=host_device)
|
||||||
|
|
||||||
LOG.warn(_("ISCSI volume not yet found at: %(host_device)s. "
|
LOG.warn(_("ISCSI volume not yet found at: %(host_device)s. "
|
||||||
@ -499,12 +500,15 @@ class FibreChannelConnector(InitiatorConnector):
|
|||||||
|
|
||||||
def __init__(self, root_helper, driver=None,
|
def __init__(self, root_helper, driver=None,
|
||||||
execute=putils.execute, use_multipath=False,
|
execute=putils.execute, use_multipath=False,
|
||||||
|
device_scan_attempts=DEVICE_SCAN_ATTEMPTS_DEFAULT,
|
||||||
*args, **kwargs):
|
*args, **kwargs):
|
||||||
self._linuxscsi = linuxscsi.LinuxSCSI(root_helper, execute)
|
self._linuxscsi = linuxscsi.LinuxSCSI(root_helper, execute)
|
||||||
self._linuxfc = linuxfc.LinuxFibreChannel(root_helper, execute)
|
self._linuxfc = linuxfc.LinuxFibreChannel(root_helper, execute)
|
||||||
super(FibreChannelConnector, self).__init__(root_helper, driver=driver,
|
super(FibreChannelConnector, self).__init__(root_helper, driver=driver,
|
||||||
execute=execute, *args,
|
execute=execute,
|
||||||
**kwargs)
|
device_scan_attempts=
|
||||||
|
device_scan_attempts,
|
||||||
|
*args, **kwargs)
|
||||||
self.use_multipath = use_multipath
|
self.use_multipath = use_multipath
|
||||||
|
|
||||||
def set_execute(self, execute):
|
def set_execute(self, execute):
|
||||||
@ -570,7 +574,7 @@ class FibreChannelConnector(InitiatorConnector):
|
|||||||
self.device_name = os.path.realpath(device)
|
self.device_name = os.path.realpath(device)
|
||||||
raise loopingcall.LoopingCallDone()
|
raise loopingcall.LoopingCallDone()
|
||||||
|
|
||||||
if self.tries >= CONF.num_volume_device_scan_tries:
|
if self.tries >= self.device_scan_attempts:
|
||||||
msg = _("Fibre Channel volume device not found.")
|
msg = _("Fibre Channel volume device not found.")
|
||||||
LOG.error(msg)
|
LOG.error(msg)
|
||||||
raise exception.NoFibreChannelVolumeDeviceFound()
|
raise exception.NoFibreChannelVolumeDeviceFound()
|
||||||
@ -670,9 +674,14 @@ class FibreChannelConnector(InitiatorConnector):
|
|||||||
class AoEConnector(InitiatorConnector):
|
class AoEConnector(InitiatorConnector):
|
||||||
"""Connector class to attach/detach AoE volumes."""
|
"""Connector class to attach/detach AoE volumes."""
|
||||||
def __init__(self, root_helper, driver=None,
|
def __init__(self, root_helper, driver=None,
|
||||||
execute=putils.execute, *args, **kwargs):
|
execute=putils.execute,
|
||||||
|
device_scan_attempts=DEVICE_SCAN_ATTEMPTS_DEFAULT,
|
||||||
|
*args, **kwargs):
|
||||||
super(AoEConnector, self).__init__(root_helper, driver=driver,
|
super(AoEConnector, self).__init__(root_helper, driver=driver,
|
||||||
execute=execute, *args, **kwargs)
|
execute=execute,
|
||||||
|
device_scan_attempts=
|
||||||
|
device_scan_attempts,
|
||||||
|
*args, **kwargs)
|
||||||
|
|
||||||
def _get_aoe_info(self, connection_properties):
|
def _get_aoe_info(self, connection_properties):
|
||||||
shelf = connection_properties['target_shelf']
|
shelf = connection_properties['target_shelf']
|
||||||
@ -710,7 +719,7 @@ class AoEConnector(InitiatorConnector):
|
|||||||
if os.path.exists(aoe_path):
|
if os.path.exists(aoe_path):
|
||||||
raise loopingcall.LoopingCallDone
|
raise loopingcall.LoopingCallDone
|
||||||
|
|
||||||
if waiting_status['tries'] >= CONF.num_volume_device_scan_tries:
|
if waiting_status['tries'] >= self.device_scan_attempts:
|
||||||
raise exception.VolumeDeviceNotFound(device=aoe_path)
|
raise exception.VolumeDeviceNotFound(device=aoe_path)
|
||||||
|
|
||||||
LOG.warn(_("AoE volume not yet found at: %(path)s. "
|
LOG.warn(_("AoE volume not yet found at: %(path)s. "
|
||||||
@ -779,12 +788,16 @@ class RemoteFsConnector(InitiatorConnector):
|
|||||||
"""Connector class to attach/detach NFS and GlusterFS volumes."""
|
"""Connector class to attach/detach NFS and GlusterFS volumes."""
|
||||||
|
|
||||||
def __init__(self, mount_type, root_helper, driver=None,
|
def __init__(self, mount_type, root_helper, driver=None,
|
||||||
execute=putils.execute, *args, **kwargs):
|
execute=putils.execute,
|
||||||
|
device_scan_attempts=DEVICE_SCAN_ATTEMPTS_DEFAULT,
|
||||||
|
*args, **kwargs):
|
||||||
self._remotefsclient = remotefs.RemoteFsClient(mount_type, root_helper,
|
self._remotefsclient = remotefs.RemoteFsClient(mount_type, root_helper,
|
||||||
execute=execute)
|
execute=execute)
|
||||||
super(RemoteFsConnector, self).__init__(root_helper, driver=driver,
|
super(RemoteFsConnector, self).__init__(root_helper, driver=driver,
|
||||||
execute=execute, *args,
|
execute=execute,
|
||||||
**kwargs)
|
device_scan_attempts=
|
||||||
|
device_scan_attempts,
|
||||||
|
*args, **kwargs)
|
||||||
|
|
||||||
def set_execute(self, execute):
|
def set_execute(self, execute):
|
||||||
super(RemoteFsConnector, self).set_execute(execute)
|
super(RemoteFsConnector, self).set_execute(execute)
|
||||||
|
@ -18,6 +18,7 @@
|
|||||||
import math
|
import math
|
||||||
|
|
||||||
import mox
|
import mox
|
||||||
|
from oslo.config import cfg
|
||||||
|
|
||||||
from cinder.brick.initiator import connector
|
from cinder.brick.initiator import connector
|
||||||
from cinder import exception
|
from cinder import exception
|
||||||
@ -32,6 +33,7 @@ from cinder.volume.drivers import coraid
|
|||||||
from cinder.volume import volume_types
|
from cinder.volume import volume_types
|
||||||
|
|
||||||
|
|
||||||
|
CONF = cfg.CONF
|
||||||
LOG = logging.getLogger(__name__)
|
LOG = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
@ -242,6 +244,7 @@ class CoraidDriverTestCase(test.TestCase):
|
|||||||
configuration.snapshot_name_template = "snapshot-%s"
|
configuration.snapshot_name_template = "snapshot-%s"
|
||||||
configuration.coraid_repository_key = fake_coraid_repository_key
|
configuration.coraid_repository_key = fake_coraid_repository_key
|
||||||
configuration.use_multipath_for_image_xfer = False
|
configuration.use_multipath_for_image_xfer = False
|
||||||
|
configuration.num_volume_device_scan_tries = 3
|
||||||
self.fake_rpc = FakeRpc()
|
self.fake_rpc = FakeRpc()
|
||||||
|
|
||||||
self.stubs.Set(coraid.CoraidRESTClient, 'rpc', self.fake_rpc)
|
self.stubs.Set(coraid.CoraidRESTClient, 'rpc', self.fake_rpc)
|
||||||
@ -774,7 +777,8 @@ class CoraidDriverImageTestCases(CoraidDriverTestCase):
|
|||||||
root_helper = 'sudo cinder-rootwrap /etc/cinder/rootwrap.conf'
|
root_helper = 'sudo cinder-rootwrap /etc/cinder/rootwrap.conf'
|
||||||
|
|
||||||
self.mox.StubOutWithMock(connector, 'get_connector_properties')
|
self.mox.StubOutWithMock(connector, 'get_connector_properties')
|
||||||
connector.get_connector_properties(root_helper).\
|
connector.get_connector_properties(root_helper,
|
||||||
|
CONF.my_ip).\
|
||||||
AndReturn({})
|
AndReturn({})
|
||||||
|
|
||||||
self.mox.StubOutWithMock(utils, 'brick_get_connector')
|
self.mox.StubOutWithMock(utils, 'brick_get_connector')
|
||||||
@ -782,6 +786,7 @@ class CoraidDriverImageTestCases(CoraidDriverTestCase):
|
|||||||
aoe_initiator = self.mox.CreateMockAnything()
|
aoe_initiator = self.mox.CreateMockAnything()
|
||||||
|
|
||||||
utils.brick_get_connector('aoe',
|
utils.brick_get_connector('aoe',
|
||||||
|
device_scan_attempts=3,
|
||||||
use_multipath=False).\
|
use_multipath=False).\
|
||||||
AndReturn(aoe_initiator)
|
AndReturn(aoe_initiator)
|
||||||
|
|
||||||
|
@ -791,23 +791,27 @@ class BrickUtils(test.TestCase):
|
|||||||
connector.ISCSIConnector(execute=putils.execute,
|
connector.ISCSIConnector(execute=putils.execute,
|
||||||
driver=None,
|
driver=None,
|
||||||
root_helper=root_helper,
|
root_helper=root_helper,
|
||||||
use_multipath=False)
|
use_multipath=False,
|
||||||
|
device_scan_attempts=3)
|
||||||
|
|
||||||
self.mox.StubOutClassWithMocks(connector, 'FibreChannelConnector')
|
self.mox.StubOutClassWithMocks(connector, 'FibreChannelConnector')
|
||||||
connector.FibreChannelConnector(execute=putils.execute,
|
connector.FibreChannelConnector(execute=putils.execute,
|
||||||
driver=None,
|
driver=None,
|
||||||
root_helper=root_helper,
|
root_helper=root_helper,
|
||||||
use_multipath=False)
|
use_multipath=False,
|
||||||
|
device_scan_attempts=3)
|
||||||
|
|
||||||
self.mox.StubOutClassWithMocks(connector, 'AoEConnector')
|
self.mox.StubOutClassWithMocks(connector, 'AoEConnector')
|
||||||
connector.AoEConnector(execute=putils.execute,
|
connector.AoEConnector(execute=putils.execute,
|
||||||
driver=None,
|
driver=None,
|
||||||
root_helper=root_helper)
|
root_helper=root_helper,
|
||||||
|
device_scan_attempts=3)
|
||||||
|
|
||||||
self.mox.StubOutClassWithMocks(connector, 'LocalConnector')
|
self.mox.StubOutClassWithMocks(connector, 'LocalConnector')
|
||||||
connector.LocalConnector(execute=putils.execute,
|
connector.LocalConnector(execute=putils.execute,
|
||||||
driver=None,
|
driver=None,
|
||||||
root_helper=root_helper)
|
root_helper=root_helper,
|
||||||
|
device_scan_attempts=3)
|
||||||
|
|
||||||
self.mox.ReplayAll()
|
self.mox.ReplayAll()
|
||||||
utils.brick_get_connector('iscsi')
|
utils.brick_get_connector('iscsi')
|
||||||
|
@ -2008,7 +2008,8 @@ class GenericVolumeDriverTestCase(DriverTestCase):
|
|||||||
self.volume.driver.db.volume_get(self.context, vol['id']).\
|
self.volume.driver.db.volume_get(self.context, vol['id']).\
|
||||||
AndReturn(vol)
|
AndReturn(vol)
|
||||||
cinder.brick.initiator.connector.\
|
cinder.brick.initiator.connector.\
|
||||||
get_connector_properties(root_helper).AndReturn(properties)
|
get_connector_properties(root_helper, CONF.my_ip).\
|
||||||
|
AndReturn(properties)
|
||||||
self.volume.driver._attach_volume(self.context, vol, properties).\
|
self.volume.driver._attach_volume(self.context, vol, properties).\
|
||||||
AndReturn(attach_info)
|
AndReturn(attach_info)
|
||||||
os.getuid()
|
os.getuid()
|
||||||
@ -2040,7 +2041,8 @@ class GenericVolumeDriverTestCase(DriverTestCase):
|
|||||||
self.mox.StubOutWithMock(self.volume.driver, 'terminate_connection')
|
self.mox.StubOutWithMock(self.volume.driver, 'terminate_connection')
|
||||||
|
|
||||||
cinder.brick.initiator.connector.\
|
cinder.brick.initiator.connector.\
|
||||||
get_connector_properties(root_helper).AndReturn(properties)
|
get_connector_properties(root_helper, CONF.my_ip).\
|
||||||
|
AndReturn(properties)
|
||||||
self.volume.driver._attach_volume(self.context, vol, properties).\
|
self.volume.driver._attach_volume(self.context, vol, properties).\
|
||||||
AndReturn(attach_info)
|
AndReturn(attach_info)
|
||||||
os.getuid()
|
os.getuid()
|
||||||
|
@ -776,12 +776,14 @@ def brick_get_connector_properties():
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
root_helper = get_root_helper()
|
root_helper = get_root_helper()
|
||||||
return connector.get_connector_properties(root_helper)
|
return connector.get_connector_properties(root_helper,
|
||||||
|
CONF.my_ip)
|
||||||
|
|
||||||
|
|
||||||
def brick_get_connector(protocol, driver=None,
|
def brick_get_connector(protocol, driver=None,
|
||||||
execute=processutils.execute,
|
execute=processutils.execute,
|
||||||
use_multipath=False):
|
use_multipath=False,
|
||||||
|
device_scan_attempts=3):
|
||||||
"""Wrapper to get a brick connector object.
|
"""Wrapper to get a brick connector object.
|
||||||
This automatically populates the required protocol as well
|
This automatically populates the required protocol as well
|
||||||
as the root_helper needed to execute commands.
|
as the root_helper needed to execute commands.
|
||||||
@ -791,7 +793,9 @@ def brick_get_connector(protocol, driver=None,
|
|||||||
return connector.InitiatorConnector.factory(protocol, root_helper,
|
return connector.InitiatorConnector.factory(protocol, root_helper,
|
||||||
driver=driver,
|
driver=driver,
|
||||||
execute=execute,
|
execute=execute,
|
||||||
use_multipath=use_multipath)
|
use_multipath=use_multipath,
|
||||||
|
device_scan_attempts=
|
||||||
|
device_scan_attempts)
|
||||||
|
|
||||||
|
|
||||||
def require_driver_initialized(func):
|
def require_driver_initialized(func):
|
||||||
|
@ -57,6 +57,11 @@ volume_opts = [
|
|||||||
cfg.IntOpt('iscsi_port',
|
cfg.IntOpt('iscsi_port',
|
||||||
default=3260,
|
default=3260,
|
||||||
help='The port that the iSCSI daemon is listening on'),
|
help='The port that the iSCSI daemon is listening on'),
|
||||||
|
cfg.IntOpt('num_volume_device_scan_tries',
|
||||||
|
deprecated_name='num_iscsi_scan_tries',
|
||||||
|
default=3,
|
||||||
|
help='The maximum number of times to rescan targets'
|
||||||
|
' to find volume'),
|
||||||
cfg.IntOpt('num_iser_scan_tries',
|
cfg.IntOpt('num_iser_scan_tries',
|
||||||
default=3,
|
default=3,
|
||||||
help='The maximum number of times to rescan iSER target'
|
help='The maximum number of times to rescan iSER target'
|
||||||
@ -341,9 +346,12 @@ class VolumeDriver(object):
|
|||||||
|
|
||||||
# Use Brick's code to do attach/detach
|
# Use Brick's code to do attach/detach
|
||||||
use_multipath = self.configuration.use_multipath_for_image_xfer
|
use_multipath = self.configuration.use_multipath_for_image_xfer
|
||||||
|
device_scan_attempts = self.configuration.num_volume_device_scan_tries
|
||||||
protocol = conn['driver_volume_type']
|
protocol = conn['driver_volume_type']
|
||||||
connector = utils.brick_get_connector(protocol,
|
connector = utils.brick_get_connector(protocol,
|
||||||
use_multipath=use_multipath)
|
use_multipath=use_multipath,
|
||||||
|
device_scan_attempts=
|
||||||
|
device_scan_attempts)
|
||||||
device = connector.connect_volume(conn['data'])
|
device = connector.connect_volume(conn['data'])
|
||||||
host_device = device['path']
|
host_device = device['path']
|
||||||
|
|
||||||
@ -386,8 +394,7 @@ class VolumeDriver(object):
|
|||||||
LOG.debug(_('Creating a new backup for volume %s.') %
|
LOG.debug(_('Creating a new backup for volume %s.') %
|
||||||
volume['name'])
|
volume['name'])
|
||||||
|
|
||||||
root_helper = 'sudo cinder-rootwrap %s' % CONF.rootwrap_config
|
properties = utils.brick_get_connector_properties()
|
||||||
properties = initiator.get_connector_properties(root_helper)
|
|
||||||
attach_info = self._attach_volume(context, volume, properties)
|
attach_info = self._attach_volume(context, volume, properties)
|
||||||
|
|
||||||
try:
|
try:
|
||||||
@ -407,8 +414,7 @@ class VolumeDriver(object):
|
|||||||
{'backup': backup['id'],
|
{'backup': backup['id'],
|
||||||
'volume': volume['name']})
|
'volume': volume['name']})
|
||||||
|
|
||||||
root_helper = 'sudo cinder-rootwrap %s' % CONF.rootwrap_config
|
properties = utils.brick_get_connector_properties()
|
||||||
properties = initiator.get_connector_properties(root_helper)
|
|
||||||
attach_info = self._attach_volume(context, volume, properties)
|
attach_info = self._attach_volume(context, volume, properties)
|
||||||
|
|
||||||
try:
|
try:
|
||||||
|
@ -234,15 +234,6 @@
|
|||||||
#backup_driver=cinder.backup.drivers.swift
|
#backup_driver=cinder.backup.drivers.swift
|
||||||
|
|
||||||
|
|
||||||
#
|
|
||||||
# Options defined in cinder.brick.initiator.connector
|
|
||||||
#
|
|
||||||
|
|
||||||
# The maximum number of times to rescan targetsto find volume
|
|
||||||
# (integer value)
|
|
||||||
#num_volume_device_scan_tries=3
|
|
||||||
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# Options defined in cinder.brick.iscsi.iscsi
|
# Options defined in cinder.brick.iscsi.iscsi
|
||||||
#
|
#
|
||||||
@ -1084,6 +1075,10 @@
|
|||||||
# value)
|
# value)
|
||||||
#iscsi_port=3260
|
#iscsi_port=3260
|
||||||
|
|
||||||
|
# The maximum number of times to rescan targets to find volume
|
||||||
|
# (integer value)
|
||||||
|
#num_volume_device_scan_tries=3
|
||||||
|
|
||||||
# The maximum number of times to rescan iSER targetto find
|
# The maximum number of times to rescan iSER targetto find
|
||||||
# volume (integer value)
|
# volume (integer value)
|
||||||
#num_iser_scan_tries=3
|
#num_iser_scan_tries=3
|
||||||
|
Loading…
x
Reference in New Issue
Block a user