Merge "Recognize Dell PowerMax Unisphere 10.x (x>0)" into stable/2023.1

This commit is contained in:
Zuul 2024-05-29 17:15:22 +00:00 committed by Gerrit Code Review
commit c37d8c320d
4 changed files with 106 additions and 40 deletions

View File

@ -2430,6 +2430,27 @@ class PowerMaxRestTest(test.TestCase):
request_count = mock_req.call_count
self.assertEqual(1, request_count)
def test_validate_unisphere_version_101(self):
version = 'T10.1.0.501'
returned_version = {'version': version}
with mock.patch.object(self.rest, "request",
return_value=(200,
returned_version)) as mock_req:
valid_version = self.rest.validate_unisphere_version()
self.assertTrue(valid_version)
self.assertEqual(self.rest.u4p_version, rest.U4P_100_VERSION)
request_count = mock_req.call_count
self.assertEqual(1, request_count)
def test_validate_unisphere_version_110(self):
version = 'T11.1.0.501'
returned_version = {'version': version}
with mock.patch.object(self.rest, "request",
return_value=(200,
returned_version)):
self.assertRaises(exception.InvalidConfigurationValue,
self.rest.validate_unisphere_version)
@mock.patch.object(rest.PowerMaxRest, '_build_uri_kwargs')
@mock.patch.object(rest.PowerMaxRest, '_build_uri_legacy_args')
def test_build_uri_legacy(self, mck_build_legacy, mck_build_kwargs):

View File

@ -36,6 +36,7 @@ LOG = logging.getLogger(__name__)
SLOPROVISIONING = 'sloprovisioning'
REPLICATION = 'replication'
SYSTEM = 'system'
U4P_110_VERSION = '110'
U4P_100_VERSION = '100'
MIN_U4P_100_VERSION = '10.0.0.0'
U4P_92_VERSION = '92'
@ -761,9 +762,11 @@ class PowerMaxRest(object):
version, major_version = None, None
response = self.get_unisphere_version()
if response and response.get('version'):
version = response['version']
version_list = version.split('.')
major_version = version_list[0][1:] + version_list[1]
regex = re.compile(r'^[a-zA-Z]\d+(.\d+){3}$')
if regex.match(response['version']):
version = response['version']
version_list = version.split('.')
major_version = version_list[0][1:] + version_list[1]
return version, major_version
def get_unisphere_version(self):
@ -3465,18 +3468,28 @@ class PowerMaxRest(object):
def validate_unisphere_version(self):
"""Validate that the running Unisphere version meets min requirement
:raises: InvalidConfigurationValue
:returns: unisphere_meets_min_req -- boolean
"""
running_version, major_version = self.get_uni_version()
if major_version == U4P_100_VERSION:
self.u4p_version = U4P_100_VERSION
minimum_version = MIN_U4P_100_VERSION
elif major_version:
self.u4p_version = U4P_92_VERSION
minimum_version = MIN_U4P_92_VERSION
unisphere_meets_min_req = False
self.u4p_version = U4P_92_VERSION
minimum_version = MIN_U4P_92_VERSION
running_version, major_version = self.get_uni_version()
if not running_version or not major_version:
LOG.warning("Unable to validate Unisphere instance meets minimum "
"requirements.")
else:
if int(major_version) >= int(U4P_110_VERSION):
msg = _("Unisphere version %(running_version)s "
"is not supported.") % {
'running_version': running_version}
LOG.error(msg)
raise exception.InvalidConfigurationValue(message=msg)
if int(major_version) >= int(U4P_100_VERSION):
self.u4p_version = U4P_100_VERSION
minimum_version = MIN_U4P_100_VERSION
if running_version and (running_version[0].isalpha()):
# remove leading letter
if running_version.lower()[0] == QUAL_CODE:
version = running_version[1:]
@ -3488,20 +3501,18 @@ class PowerMaxRest(object):
"Unisphere.", {'version': running_version})
return int(major_version) >= int(self.u4p_version)
if unisphere_meets_min_req:
LOG.info("Unisphere version %(running_version)s meets minimum "
"requirement of version %(minimum_version)s.",
{'running_version': running_version,
'minimum_version': minimum_version})
elif running_version:
LOG.error("Unisphere version %(running_version)s does not meet "
"minimum requirement for use with this release, please "
"upgrade to Unisphere %(minimum_version)s at minimum.",
{'running_version': running_version,
'minimum_version': minimum_version})
else:
LOG.warning("Unable to validate Unisphere instance meets minimum "
"requirements.")
if unisphere_meets_min_req:
LOG.info("Unisphere version %(running_version)s meets minimum "
"requirement of version %(minimum_version)s.",
{'running_version': running_version,
'minimum_version': minimum_version})
else:
LOG.error("Unisphere version %(running_version)s does "
"not meet minimum requirement for use with this "
"release, please upgrade to Unisphere "
"%(minimum_version)s at minimum.",
{'running_version': running_version,
'minimum_version': minimum_version})
return unisphere_meets_min_req

View File

@ -58,21 +58,47 @@ Guide` at the `Dell Support`_ site.
.. table:: PowerMax Management software and OS for OpenStack release
+-----------+------------------------+-------------+
| OpenStack | Unisphere for PowerMax | PowerMax OS |
+===========+========================+=============+
| Xena | 9.2.2 | 5978.711 |
+-----------+------------------------+-------------+
| Wallaby | 9.2.1 | 5978.711 |
+-----------+------------------------+-------------+
| Victoria | 9.2.x | 5978.669 |
+-----------+------------------------+-------------+
| Ussuri | 9.1.x | 5978.479 |
+-----------+------------------------+-------------+
| Train | 9.1.x | 5978.444 |
+-----------+------------------------+-------------+
| Stein | 9.0.x | 5978.221 |
+-----------+------------------------+-------------+
+-----------+--------------+-------------+--------------------------------+
| OpenStack | Unisphere | PowerMax OS | Supported Arrays |
| release | for PowerMax | | |
+===========+==============+=============+================================+
| Antelope | 10.0.1 | 10.0.1 | PowerMax 2500,8500 |
| | | (6079.175) | |
| | +-------------+--------------------------------+
| | | 5978.711 | PowerMax 2000,8000 |
| | | | VMAX 250F, 450F, 850F, 950F |
+-----------+--------------+-------------+--------------------------------+
| Zed | 9.2.2 | 5978.711 | PowerMax 2000,8000 |
| | | | VMAX 250F, 450F, 850F, 950F |
+-----------+--------------+-------------+--------------------------------+
| Yoga | 9.2.2 | 5978.711 | PowerMax 2000,8000 |
| | | | VMAX 250F, 450F, 850F, 950F |
| | | | VMAX 100K, 200K, 400K (Hybrid) |
+-----------+--------------+-------------+--------------------------------+
| Xena | 9.2.2 | 5978.711 | PowerMax 2000,8000 |
| | | | VMAX 250F, 450F, 850F, 950F |
| | | | VMAX 100K, 200K, 400K (Hybrid) |
+-----------+--------------+-------------+--------------------------------+
| Wallaby | 9.2.1 | 5978.711 | PowerMax 2000,8000 |
| | | | VMAX 250F, 450F, 850F, 950F |
| | | | VMAX 100K, 200K, 400K (Hybrid) |
+-----------+--------------+-------------+--------------------------------+
| Victoria | 9.2.0 | 5978.669 | PowerMax 2000,8000 |
| | | | VMAX 250F, 450F, 850F, 950F |
| | | | VMAX 100K, 200K, 400K (Hybrid) |
+-----------+--------------+-------------+--------------------------------+
| Ussuri | 9.1.x | 5978.479 | PowerMax 2000,8000 |
| | | | VMAX 250F, 450F, 850F, 950F |
| | | | VMAX 100K, 200K, 400K (Hybrid) |
+-----------+--------------+-------------+--------------------------------+
| Train | 9.1.x | 5978.444 | PowerMax 2000,8000 |
| | | | VMAX 250F, 450F, 850F, 950F |
| | | | VMAX 100K, 200K, 400K (Hybrid) |
+-----------+--------------+-------------+--------------------------------+
| Stein | 9.0.x | 5978.221 | PowerMax 2000,8000 |
| | | | VMAX 250F, 450F, 850F, 950F |
| | | | VMAX 100K, 200K, 400K (Hybrid) |
+-----------+--------------+-------------+--------------------------------+
.. note::

View File

@ -0,0 +1,8 @@
---
fixes:
- |
Dell PowerMax driver `bug #2051828
<https://bugs.launchpad.net/cinder/+bug/2051828>`_: The driver
only recognized 10.0 as being Unisphere 10 and would try to
use 9.2 for Unisphere 10.x (where x > 0), but now it correctly
recognizes 10.x as being Unisphere 10.