Rebrand and move EQLX driver to dell_emc folder

Rebrand and organize the EqualLogic driver under the dell_emc
volume driver folder. The EqualLogic product has gone by PS
Series for some time, so this also changes the name to match.

Config options are kept with the eqlx_ prefix since changing
that would add little value and just create additional work for
operators.

Change-Id: I16bd0ba7755ddfcd5a4edd3e11077725093c4d3d
This commit is contained in:
Sean McGinnis 2016-12-28 19:32:25 -06:00
parent 6932b2b517
commit 4e5c2be01d
5 changed files with 35 additions and 25 deletions

View File

@ -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,

View File

@ -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)

View File

@ -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."""

View File

@ -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',
}

View File

@ -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.