Merge "Rebrand and move EQLX driver to dell_emc folder"
This commit is contained in:
commit
2db1f6bdef
@ -74,6 +74,8 @@ from cinder.volume.drivers.datera import datera_iscsi as \
|
||||
cinder_volume_drivers_datera_dateraiscsi
|
||||
from cinder.volume.drivers.dell import dell_storagecenter_common as \
|
||||
cinder_volume_drivers_dell_dellstoragecentercommon
|
||||
from cinder.volume.drivers.dell_emc import ps as \
|
||||
cinder_volume_drivers_dell_emc_ps
|
||||
from cinder.volume.drivers.dell_emc.scaleio import driver as \
|
||||
cinder_volume_drivers_dell_emc_scaleio_driver
|
||||
from cinder.volume.drivers.dell_emc.unity import driver as \
|
||||
@ -90,7 +92,6 @@ from cinder.volume.drivers.dothill import dothill_common as \
|
||||
cinder_volume_drivers_dothill_dothillcommon
|
||||
from cinder.volume.drivers import drbdmanagedrv as \
|
||||
cinder_volume_drivers_drbdmanagedrv
|
||||
from cinder.volume.drivers import eqlx as cinder_volume_drivers_eqlx
|
||||
from cinder.volume.drivers.falconstor import fss_common as \
|
||||
cinder_volume_drivers_falconstor_fsscommon
|
||||
from cinder.volume.drivers.fujitsu import eternus_dx_common as \
|
||||
@ -275,6 +276,7 @@ def list_opts():
|
||||
cinder_volume_drivers_datera_dateraiscsi.d_opts,
|
||||
cinder_volume_drivers_dell_dellstoragecentercommon.
|
||||
common_opts,
|
||||
cinder_volume_drivers_dell_emc_ps.eqlx_opts,
|
||||
cinder_volume_drivers_dell_emc_scaleio_driver.scaleio_opts,
|
||||
cinder_volume_drivers_dell_emc_unity_driver.UNITY_OPTS,
|
||||
cinder_volume_drivers_dell_emc_vmax_common.emc_opts,
|
||||
@ -284,7 +286,6 @@ def list_opts():
|
||||
cinder_volume_drivers_dothill_dothillcommon.common_opts,
|
||||
cinder_volume_drivers_dothill_dothillcommon.iscsi_opts,
|
||||
cinder_volume_drivers_drbdmanagedrv.drbd_opts,
|
||||
cinder_volume_drivers_eqlx.eqlx_opts,
|
||||
cinder_volume_drivers_falconstor_fsscommon.FSS_OPTS,
|
||||
cinder_volume_drivers_fujitsu_eternusdxcommon.
|
||||
FJ_ETERNUS_DX_OPT_opts,
|
||||
|
@ -1,4 +1,4 @@
|
||||
# Copyright (c) 2013 Dell Inc.
|
||||
# Copyright (c) 2013-2017 Dell Inc, or its subsidiaries.
|
||||
# Copyright 2013 OpenStack Foundation
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
||||
@ -28,13 +28,13 @@ from cinder import ssh_utils
|
||||
from cinder import test
|
||||
from cinder import utils
|
||||
from cinder.volume import configuration as conf
|
||||
from cinder.volume.drivers import eqlx
|
||||
from cinder.volume.drivers.dell_emc import ps
|
||||
|
||||
|
||||
class DellEQLSanISCSIDriverTestCase(test.TestCase):
|
||||
class PSSeriesISCSIDriverTestCase(test.TestCase):
|
||||
|
||||
def setUp(self):
|
||||
super(DellEQLSanISCSIDriverTestCase, self).setUp()
|
||||
super(PSSeriesISCSIDriverTestCase, self).setUp()
|
||||
self.configuration = mock.Mock(conf.Configuration)
|
||||
self.configuration.san_is_local = False
|
||||
self.configuration.san_ip = "10.0.0.1"
|
||||
@ -61,7 +61,7 @@ class DellEQLSanISCSIDriverTestCase(test.TestCase):
|
||||
'VolumeReserve: 80GB']
|
||||
self.cmd = 'this is dummy command'
|
||||
self._context = context.get_admin_context()
|
||||
self.driver = eqlx.DellEQLSanISCSIDriver(
|
||||
self.driver = ps.PSSeriesISCSIDriver(
|
||||
configuration=self.configuration)
|
||||
self.volume_name = "fakevolume"
|
||||
self.volid = "fakeid"
|
||||
@ -418,7 +418,7 @@ class DellEQLSanISCSIDriverTestCase(test.TestCase):
|
||||
self.assertEqual(thin_enabled, stats['thin_provisioning_support'])
|
||||
self.assertEqual(not thin_enabled,
|
||||
stats['thick_provisioning_support'])
|
||||
self.assertEqual('Dell', stats['vendor_name'])
|
||||
self.assertEqual('Dell EMC', stats['vendor_name'])
|
||||
self.assertTrue(stats['multiattach'])
|
||||
|
||||
def test_get_space_in_gb(self):
|
||||
@ -568,11 +568,11 @@ class DellEQLSanISCSIDriverTestCase(test.TestCase):
|
||||
|
||||
@unittest.skip("Skip until bug #1578986 is fixed")
|
||||
def test_with_timeout(self):
|
||||
@eqlx.with_timeout
|
||||
@ps.with_timeout
|
||||
def no_timeout(cmd, *args, **kwargs):
|
||||
return 'no timeout'
|
||||
|
||||
@eqlx.with_timeout
|
||||
@ps.with_timeout
|
||||
def w_timeout(cmd, *args, **kwargs):
|
||||
time.sleep(1)
|
||||
|
@ -1,4 +1,4 @@
|
||||
# Copyright (c) 2013 Dell Inc.
|
||||
# Copyright (c) 2013-2017 Dell Inc, or its subsidiaries.
|
||||
# Copyright 2013 OpenStack Foundation
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
||||
@ -13,7 +13,7 @@
|
||||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
"""Volume driver for Dell EqualLogic Storage."""
|
||||
"""Volume driver for Dell EMC PS Series Storage."""
|
||||
|
||||
import functools
|
||||
import math
|
||||
@ -79,11 +79,11 @@ def with_timeout(f):
|
||||
|
||||
|
||||
@interface.volumedriver
|
||||
class DellEQLSanISCSIDriver(san.SanISCSIDriver):
|
||||
"""Implements commands for Dell EqualLogic SAN ISCSI management.
|
||||
class PSSeriesISCSIDriver(san.SanISCSIDriver):
|
||||
"""Implements commands for Dell EMC PS Series ISCSI management.
|
||||
|
||||
To enable the driver add the following line to the cinder configuration:
|
||||
volume_driver=cinder.volume.drivers.eqlx.DellEQLSanISCSIDriver
|
||||
volume_driver=cinder.volume.drivers.dell_emc.ps.PSSeriesISCSIDriver
|
||||
|
||||
Driver's prerequisites are:
|
||||
- a separate volume group set up and running on the SAN
|
||||
@ -133,16 +133,17 @@ class DellEQLSanISCSIDriver(san.SanISCSIDriver):
|
||||
1.3.0 - Added support for manage/unmanage volume
|
||||
1.4.0 - Removed deprecated options eqlx_cli_timeout, eqlx_use_chap,
|
||||
eqlx_chap_login, and eqlx_chap_password.
|
||||
1.4.1 - Rebranded driver to Dell EMC.
|
||||
|
||||
"""
|
||||
|
||||
VERSION = "1.4.0"
|
||||
VERSION = "1.4.1"
|
||||
|
||||
# ThirdPartySytems wiki page
|
||||
CI_WIKI_NAME = "Dell_Storage_CI"
|
||||
|
||||
def __init__(self, *args, **kwargs):
|
||||
super(DellEQLSanISCSIDriver, self).__init__(*args, **kwargs)
|
||||
super(PSSeriesISCSIDriver, self).__init__(*args, **kwargs)
|
||||
self.configuration.append_config_values(eqlx_opts)
|
||||
self._group_ip = None
|
||||
self.sshpool = None
|
||||
@ -155,9 +156,9 @@ class DellEQLSanISCSIDriver(san.SanISCSIDriver):
|
||||
if len(ret) == 0:
|
||||
# According to paramiko.channel.Channel documentation, which
|
||||
# says "If a string of length zero is returned, the channel
|
||||
# stream has closed". So we can confirm that the EQL server
|
||||
# stream has closed". So we can confirm that the PS server
|
||||
# has closed the connection.
|
||||
msg = _("The EQL array has closed the connection.")
|
||||
msg = _("The PS array has closed the connection.")
|
||||
LOG.error(msg)
|
||||
raise exception.VolumeBackendAPIException(data=msg)
|
||||
out += ret
|
||||
@ -195,7 +196,7 @@ class DellEQLSanISCSIDriver(san.SanISCSIDriver):
|
||||
completed = True
|
||||
|
||||
if any(ln.startswith(('% Error', 'Error:')) for ln in out):
|
||||
desc = _("Error executing EQL command")
|
||||
desc = _("Error executing PS command")
|
||||
cmdout = '\n'.join(out)
|
||||
LOG.error(_LE("%s"), cmdout)
|
||||
raise processutils.ProcessExecutionError(
|
||||
@ -230,7 +231,7 @@ class DellEQLSanISCSIDriver(san.SanISCSIDriver):
|
||||
while attempts > 0:
|
||||
attempts -= 1
|
||||
try:
|
||||
LOG.info(_LI('EQL-driver: executing "%s".'), command)
|
||||
LOG.info(_LI('PS-driver: executing "%s".'), command)
|
||||
return self._ssh_execute(
|
||||
ssh, command,
|
||||
timeout=self.configuration.ssh_conn_timeout)
|
||||
@ -248,7 +249,7 @@ class DellEQLSanISCSIDriver(san.SanISCSIDriver):
|
||||
LOG.error(_LE('Error running SSH command: "%s".'), command)
|
||||
|
||||
def check_for_setup_error(self):
|
||||
super(DellEQLSanISCSIDriver, self).check_for_setup_error()
|
||||
super(PSSeriesISCSIDriver, self).check_for_setup_error()
|
||||
|
||||
def _eql_execute(self, *args, **kwargs):
|
||||
return self._run_ssh(
|
||||
@ -289,7 +290,7 @@ class DellEQLSanISCSIDriver(san.SanISCSIDriver):
|
||||
if self.configuration:
|
||||
backend_name = self.configuration.safe_get('volume_backend_name')
|
||||
data["volume_backend_name"] = backend_name or 'eqlx'
|
||||
data["vendor_name"] = 'Dell'
|
||||
data["vendor_name"] = 'Dell EMC'
|
||||
data["driver_version"] = self.VERSION
|
||||
data["storage_protocol"] = 'iSCSI'
|
||||
|
||||
@ -396,11 +397,11 @@ class DellEQLSanISCSIDriver(san.SanISCSIDriver):
|
||||
out_tup = line.rstrip().partition(' ')
|
||||
self._group_ip = out_tup[-1]
|
||||
|
||||
LOG.info(_LI('EQL-driver: Setup is complete, group IP is "%s".'),
|
||||
LOG.info(_LI('PS-driver: Setup is complete, group IP is "%s".'),
|
||||
self._group_ip)
|
||||
except Exception:
|
||||
with excutils.save_and_reraise_exception():
|
||||
LOG.error(_LE('Failed to setup the Dell EqualLogic driver.'))
|
||||
LOG.error(_LE('Failed to setup the Dell EMC PS driver.'))
|
||||
|
||||
def create_volume(self, volume):
|
||||
"""Create a volume."""
|
@ -169,6 +169,8 @@ MAPPING = {
|
||||
'cinder.volume.drivers.dell_emc.vmax.iscsi.VMAXISCSIDriver',
|
||||
'cinder.volume.drivers.emc.emc_vmax_fc.EMCVMAXFCDriver':
|
||||
'cinder.volume.drivers.dell_emc.vmax.fc.VMAXFCDriver',
|
||||
'cinder.volume.drivers.eqlx.DellEQLSanISCSIDriver':
|
||||
'cinder.volume.drivers.dell_emc.ps.PSSeriesISCSIDriver',
|
||||
}
|
||||
|
||||
|
||||
|
@ -0,0 +1,6 @@
|
||||
---
|
||||
upgrade:
|
||||
- The EqualLogic driver is moved to the dell_emc directory and has been
|
||||
rebranded to its current Dell EMC PS Series name. The volume_driver
|
||||
entry in cinder.conf needs to be changed to
|
||||
cinder.volume.drivers.dell_emc.ps.PSSeriesISCSIDriver.
|
Loading…
x
Reference in New Issue
Block a user