Merge "Unity driver: check array OE version"

This commit is contained in:
Jenkins 2017-03-02 03:16:24 +00:00 committed by Gerrit Code Review
commit 91cb7fe204
4 changed files with 27 additions and 0 deletions

View File

@ -66,6 +66,9 @@ class MockDriver(object):
class MockClient(object):
def __init__(self):
self._system = test_client.MockSystem()
@staticmethod
def get_pools():
return test_client.MockResourceList(['pool0', 'pool1'])
@ -166,6 +169,10 @@ class MockClient(object):
def get_ethernet_ports():
return test_client.MockResourceList(ids=['spa_eth0', 'spb_eth0'])
@property
def system(self):
return self._system
class MockLookupService(object):
@staticmethod
@ -338,6 +345,14 @@ class CommonAdapterTest(unittest.TestCase):
self.assertFalse(self.adapter.array_cert_verify)
self.assertIsNone(self.adapter.array_ca_cert_path)
def test_do_setup_version_before_4_1(self):
def f():
with mock.patch('cinder.volume.drivers.dell_emc.unity.adapter.'
'CommonAdapter.validate_ports'):
self.adapter._client.system.system_version = '4.0.0'
self.adapter.do_setup(self.adapter.driver, MockConfig())
self.assertRaises(exception.VolumeBackendAPIException, f)
def test_verify_cert_false_path_none(self):
self.adapter.array_cert_verify = False
self.adapter.array_ca_cert_path = None

View File

@ -202,6 +202,7 @@ class MockResourceList(object):
class MockSystem(object):
def __init__(self):
self.serial_number = 'SYSTEM_SERIAL'
self.system_version = '4.1.0'
@staticmethod
def get_lun(_id=None, name=None):

View File

@ -74,6 +74,12 @@ class CommonAdapter(object):
self.array_cert_verify = False
self.array_ca_cert_path = self.config.driver_ssl_cert_path
sys_version = self.client.system.system_version
if utils.is_before_4_1(sys_version):
raise exception.VolumeBackendAPIException(
data=_('Unity driver does not support array OE version: %s. '
'Upgrade to 4.1 or later.') % sys_version)
self.storage_pools_map = self.get_managed_pools()
self.allowed_ports = self.validate_ports(self.config.unity_io_ports)

View File

@ -16,6 +16,7 @@
from __future__ import division
import contextlib
from distutils import version
import functools
from oslo_log import log as logging
from oslo_utils import fnmatch
@ -284,3 +285,7 @@ def match_any(full, patterns):
filter(lambda p: not any(fnmatch.fnmatchcase(x, p) for x in full),
patterns))
return matched, unmatched, unmatched_patterns
def is_before_4_1(ver):
return version.LooseVersion(ver) < version.LooseVersion('4.1')