
Since Newton, the following options were incorrectly handled: max_luns_per_storage_group: this option was ignored, and implicitly set to 255 in storops, thus there is not way to set it to a larger number for admin. This commit will add this feature back. check_max_pool_luns_threshold: this option was obsoleted since driver can detect this value automatically. This commit will remove this option for driver code. Closes-bug: #1738681 Change-Id: If3ca0999a745e6977345f208fc6edd00c86ccea9
96 lines
2.7 KiB
Python
96 lines
2.7 KiB
Python
# Copyright (c) 2016 EMC Corporation, Inc.
|
|
# All Rights Reserved.
|
|
#
|
|
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
|
# not use this file except in compliance with the License. You may obtain
|
|
# a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
|
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
|
# License for the specific language governing permissions and limitations
|
|
# under the License.
|
|
|
|
|
|
from os import path
|
|
|
|
import mock
|
|
import six
|
|
import yaml
|
|
|
|
from cinder.volume.drivers.dell_emc.vnx import client
|
|
from cinder.volume.drivers.dell_emc.vnx import common
|
|
|
|
|
|
patch_sleep = mock.patch('time.sleep')
|
|
|
|
|
|
patch_vnxsystem = mock.patch('storops.VNXSystem')
|
|
|
|
|
|
patch_vnxstoragegroup = mock.patch('storops.vnx.resource.sg.VNXStorageGroup')
|
|
|
|
|
|
def load_yaml(file_name):
|
|
yaml_file = '{}/{}'.format(path.dirname(
|
|
path.abspath(__file__)), file_name)
|
|
with open(yaml_file) as f:
|
|
res = yaml.safe_load(f)
|
|
return res
|
|
|
|
|
|
def patch_extra_specs(specs):
|
|
return _build_patch_decorator(
|
|
'cinder.volume.volume_types.get_volume_type_extra_specs',
|
|
return_value=specs)
|
|
|
|
|
|
def patch_group_specs(specs):
|
|
return _build_patch_decorator(
|
|
'cinder.volume.group_types.get_group_type_specs',
|
|
return_value=specs)
|
|
|
|
|
|
def patch_extra_specs_validate(return_value=None, side_effect=None):
|
|
return _build_patch_decorator(
|
|
'cinder.volume.drivers.dell_emc.vnx.common.ExtraSpecs.validate',
|
|
return_value=return_value,
|
|
side_effect=side_effect)
|
|
|
|
|
|
def _build_patch_decorator(module_str, return_value=None, side_effect=None):
|
|
def _inner_mock(func):
|
|
@six.wraps(func)
|
|
def decorator(*args, **kwargs):
|
|
with mock.patch(
|
|
module_str,
|
|
return_value=return_value,
|
|
side_effect=side_effect):
|
|
return func(*args, **kwargs)
|
|
return decorator
|
|
return _inner_mock
|
|
|
|
|
|
def build_fake_mirror_view():
|
|
primary_client = mock.create_autospec(spec=client.Client)
|
|
secondary_client = mock.create_autospec(spec=client.Client)
|
|
|
|
mirror_view = mock.create_autospec(spec=common.VNXMirrorView)
|
|
mirror_view.primary_client = primary_client
|
|
mirror_view.secondary_client = secondary_client
|
|
return mirror_view
|
|
|
|
|
|
def get_replication_device():
|
|
return {
|
|
'backend_id': 'fake_serial',
|
|
'san_ip': '192.168.1.12',
|
|
'san_login': 'admin',
|
|
'san_password': 'admin',
|
|
'storage_vnx_authentication_type': 'global',
|
|
'storage_vnx_security_file_dir': None,
|
|
'pool_name': 'remote_pool',
|
|
}
|