Unity/VNX Driver: Rename driver options
- Never initialize the log by passing it in to `load_plugin`. Unity and VNX driver plugins initialize it in their implementation. - Move plugins specific options from framework to Unity and VNX plugins. - Rename driver options for Unity/VNX, the old ones are deprecated: emc_nas_pool_names -> unity_share_data_pools/vnx_share_data_pools, emc_nas_server_pool -> unity_server_meta_pool, emc_interface_ports -> unity_ethernet_ports/vnx_ethernet_ports, emc_nas_server_container -> unity_server_container/vnx_server_container. DocImpact Closes-Bug: 1652710 Change-Id: I8f1404de8dea9eeb09f1e5f6fc2538cefb0d63d9
This commit is contained in:
parent
8b9078080f
commit
01391527ed
manila
share/drivers/dell_emc
tests/share/drivers/dell_emc
releasenotes/notes
@ -21,13 +21,10 @@ to specify, which backend plugins to use.
|
||||
"""
|
||||
|
||||
from oslo_config import cfg
|
||||
from oslo_log import log
|
||||
|
||||
from manila.share import driver
|
||||
from manila.share.drivers.dell_emc import plugin_manager as manager
|
||||
|
||||
LOG = log.getLogger(__name__)
|
||||
|
||||
EMC_NAS_OPTS = [
|
||||
cfg.StrOpt('emc_nas_login',
|
||||
help='User name for the EMC server.'),
|
||||
@ -45,19 +42,8 @@ EMC_NAS_OPTS = [
|
||||
ignore_case=True,
|
||||
choices=['isilon', 'vnx', 'unity'],
|
||||
help='Share backend.'),
|
||||
cfg.StrOpt('emc_nas_server_container',
|
||||
help='Container of share servers.'),
|
||||
cfg.ListOpt('emc_nas_pool_names',
|
||||
deprecated_name='emc_nas_pool_name',
|
||||
help='EMC pool names.'),
|
||||
cfg.StrOpt('emc_nas_root_dir',
|
||||
help='The root directory where shares will be located.'),
|
||||
cfg.StrOpt('emc_nas_server_pool',
|
||||
help='Pool to persist the meta-data of NAS server.'),
|
||||
cfg.ListOpt('emc_interface_ports',
|
||||
help='Comma separated list specifying the ports that can be '
|
||||
'used for share server interfaces. Members of the list '
|
||||
'can be Unix-style glob expressions.'),
|
||||
help='The root directory where shares will be located.')
|
||||
]
|
||||
|
||||
CONF = cfg.CONF
|
||||
@ -78,7 +64,9 @@ class EMCShareDriver(driver.ShareDriver):
|
||||
self.backend_name = self.backend_name or 'EMC_NAS_Storage'
|
||||
self.plugin_manager = manager.EMCPluginManager(
|
||||
namespace='manila.share.drivers.dell_emc.plugins')
|
||||
self.plugin = self.plugin_manager.load_plugin(self.backend_name, LOG)
|
||||
self.plugin = self.plugin_manager.load_plugin(
|
||||
self.backend_name,
|
||||
configuration=self.configuration)
|
||||
super(EMCShareDriver, self).__init__(
|
||||
self.plugin.driver_handles_share_servers, *args, **kwargs)
|
||||
|
||||
|
@ -22,10 +22,10 @@ class EMCPluginManager(object):
|
||||
|
||||
self.extension_manager = extension.ExtensionManager(namespace)
|
||||
|
||||
def load_plugin(self, name, logger=None):
|
||||
def load_plugin(self, name, *args, **kwargs):
|
||||
for ext in self.extension_manager.extensions:
|
||||
if ext.name == name:
|
||||
storage_conn = ext.plugin(logger)
|
||||
storage_conn = ext.plugin(*args, **kwargs)
|
||||
return storage_conn
|
||||
|
||||
return None
|
||||
|
@ -23,8 +23,7 @@ import six
|
||||
class StorageConnection(object):
|
||||
"""Subclasses should implement storage backend specific functionality."""
|
||||
|
||||
def __init__(self, logger):
|
||||
self.logger = logger
|
||||
def __init__(self, *args, **kwargs):
|
||||
# NOTE(vponomaryov): redefine 'driver_handles_share_servers' within
|
||||
# plugin.
|
||||
self.driver_handles_share_servers = None
|
||||
|
@ -14,6 +14,7 @@
|
||||
# under the License.
|
||||
"""Unity backend for the EMC Manila driver."""
|
||||
|
||||
from oslo_config import cfg
|
||||
from oslo_log import log
|
||||
from oslo_utils import excutils
|
||||
from oslo_utils import importutils
|
||||
@ -39,6 +40,27 @@ VERSION = "1.0.0"
|
||||
LOG = log.getLogger(__name__)
|
||||
SUPPORTED_NETWORK_TYPES = (None, 'flat', 'vlan')
|
||||
|
||||
UNITY_OPTS = [
|
||||
cfg.StrOpt('unity_server_meta_pool',
|
||||
deprecated_name='emc_nas_server_pool',
|
||||
help='Pool to persist the meta-data of NAS server.'),
|
||||
cfg.StrOpt('unity_server_container',
|
||||
deprecated_name='emc_nas_server_container',
|
||||
help='Storage processor to host the NAS server.'),
|
||||
cfg.ListOpt('unity_share_data_pools',
|
||||
deprecated_name='emc_nas_pool_names',
|
||||
help='Comma separated list of pools that can be used to '
|
||||
'persist share data.'),
|
||||
cfg.ListOpt('unity_ethernet_ports',
|
||||
deprecated_name='emc_interface_ports',
|
||||
help='Comma separated list of ports that can be used for '
|
||||
'share server interfaces. Members of the list '
|
||||
'can be Unix-style glob expressions.')
|
||||
]
|
||||
|
||||
CONF = cfg.CONF
|
||||
CONF.register_opts(UNITY_OPTS)
|
||||
|
||||
|
||||
@emc_utils.decorate_all_methods(emc_utils.log_enter_exit,
|
||||
debug_only=True)
|
||||
@ -50,6 +72,9 @@ class UnityStorageConnection(driver.StorageConnection):
|
||||
@emc_utils.log_enter_exit
|
||||
def __init__(self, *args, **kwargs):
|
||||
super(UnityStorageConnection, self).__init__(*args, **kwargs)
|
||||
if 'configuration' in kwargs:
|
||||
kwargs['configuration'].append_config_values(UNITY_OPTS)
|
||||
|
||||
self.client = None
|
||||
self.pool_set = None
|
||||
self.port_set = None
|
||||
@ -67,11 +92,10 @@ class UnityStorageConnection(driver.StorageConnection):
|
||||
storage_ip = config.emc_nas_server
|
||||
username = config.emc_nas_login
|
||||
password = config.emc_nas_password
|
||||
sp_name = config.emc_nas_server_container
|
||||
sp_name = config.unity_server_container
|
||||
self.client = client.UnityClient(storage_ip, username, password)
|
||||
|
||||
pool_conf = config.safe_get(
|
||||
'emc_nas_pool_names')
|
||||
pool_conf = config.safe_get('unity_share_data_pools')
|
||||
self.pool_set = self._get_managed_pools(pool_conf)
|
||||
|
||||
self.reserved_percentage = config.safe_get(
|
||||
@ -84,12 +108,11 @@ class UnityStorageConnection(driver.StorageConnection):
|
||||
|
||||
self._config_sp(sp_name)
|
||||
|
||||
port_conf = config.safe_get(
|
||||
'emc_interface_ports')
|
||||
port_conf = config.safe_get('unity_ethernet_ports')
|
||||
self.port_set = self._get_managed_ports(
|
||||
port_conf, self.storage_processor)
|
||||
|
||||
pool_name = config.emc_nas_server_pool
|
||||
pool_name = config.unity_server_meta_pool
|
||||
self._config_pool(pool_name)
|
||||
|
||||
def check_for_setup_error(self):
|
||||
@ -489,7 +512,7 @@ class UnityStorageConnection(driver.StorageConnection):
|
||||
if not matched_ports:
|
||||
msg = (_("All the specified storage ports to be managed "
|
||||
"do not exist. Please check your configuration "
|
||||
"emc_interface_ports in manila.conf. "
|
||||
"unity_ethernet_ports in manila.conf. "
|
||||
"The available ports in the backend are %s") %
|
||||
",".join(real_ports))
|
||||
raise exception.BadConfigurationException(reason=msg)
|
||||
|
@ -17,6 +17,7 @@
|
||||
import copy
|
||||
import random
|
||||
|
||||
from oslo_config import cfg
|
||||
from oslo_log import log
|
||||
from oslo_utils import excutils
|
||||
from oslo_utils import units
|
||||
@ -35,6 +36,24 @@ VERSION = "2.0.0"
|
||||
|
||||
LOG = log.getLogger(__name__)
|
||||
|
||||
VNX_OPTS = [
|
||||
cfg.StrOpt('vnx_server_container',
|
||||
deprecated_name='emc_nas_server_container',
|
||||
help='Data mover to host the NAS server.'),
|
||||
cfg.ListOpt('vnx_share_data_pools',
|
||||
deprecated_name='emc_nas_pool_names',
|
||||
help='Comma separated list of pools that can be used to '
|
||||
'persist share data.'),
|
||||
cfg.ListOpt('vnx_ethernet_ports',
|
||||
deprecated_name='emc_interface_ports',
|
||||
help='Comma separated list of ports that can be used for '
|
||||
'share server interfaces. Members of the list '
|
||||
'can be Unix-style glob expressions.')
|
||||
]
|
||||
|
||||
CONF = cfg.CONF
|
||||
CONF.register_opts(VNX_OPTS)
|
||||
|
||||
|
||||
@vnx_utils.decorate_all_methods(vnx_utils.log_enter_exit,
|
||||
debug_only=True)
|
||||
@ -44,6 +63,9 @@ class VNXStorageConnection(driver.StorageConnection):
|
||||
@vnx_utils.log_enter_exit
|
||||
def __init__(self, *args, **kwargs):
|
||||
super(VNXStorageConnection, self).__init__(*args, **kwargs)
|
||||
if 'configuration' in kwargs:
|
||||
kwargs['configuration'].append_config_values(VNX_OPTS)
|
||||
|
||||
self.mover_name = None
|
||||
self.pools = None
|
||||
self.manager = None
|
||||
@ -518,7 +540,7 @@ class VNXStorageConnection(driver.StorageConnection):
|
||||
if not matched_pools:
|
||||
msg = (_("None of the specified storage pools to be managed "
|
||||
"exist. Please check your configuration "
|
||||
"emc_nas_pool_names in manila.conf. "
|
||||
"vnx_share_data_pools in manila.conf. "
|
||||
"The available pools in the backend are %s.") %
|
||||
",".join(real_pools))
|
||||
raise exception.InvalidParameterValue(err=msg)
|
||||
@ -532,22 +554,18 @@ class VNXStorageConnection(driver.StorageConnection):
|
||||
|
||||
def connect(self, emc_share_driver, context):
|
||||
"""Connect to VNX NAS server."""
|
||||
self.mover_name = (
|
||||
emc_share_driver.configuration.emc_nas_server_container)
|
||||
config = emc_share_driver.configuration
|
||||
config.append_config_values(VNX_OPTS)
|
||||
self.mover_name = config.vnx_server_container
|
||||
|
||||
self.pool_conf = emc_share_driver.configuration.safe_get(
|
||||
'emc_nas_pool_names')
|
||||
self.pool_conf = config.safe_get('vnx_share_data_pools')
|
||||
|
||||
self.reserved_percentage = emc_share_driver.configuration.safe_get(
|
||||
'reserved_share_percentage')
|
||||
self.reserved_percentage = config.safe_get('reserved_share_percentage')
|
||||
if self.reserved_percentage is None:
|
||||
self.reserved_percentage = 0
|
||||
|
||||
configuration = emc_share_driver.configuration
|
||||
|
||||
self.manager = manager.StorageObjectManager(configuration)
|
||||
self.port_conf = emc_share_driver.configuration.safe_get(
|
||||
'emc_interface_ports')
|
||||
self.manager = manager.StorageObjectManager(config)
|
||||
self.port_conf = config.safe_get('vnx_ethernet_ports')
|
||||
|
||||
def get_managed_ports(self):
|
||||
# Get the real ports(devices) list from the backend storage
|
||||
@ -563,7 +581,7 @@ class VNXStorageConnection(driver.StorageConnection):
|
||||
|
||||
if not matched_ports:
|
||||
msg = (_("None of the specified network ports exist. "
|
||||
"Please check your configuration emc_interface_ports "
|
||||
"Please check your configuration vnx_ethernet_ports "
|
||||
"in manila.conf. The available ports on the Data Mover "
|
||||
"are %s.") %
|
||||
",".join(real_ports))
|
||||
|
@ -87,12 +87,13 @@ class FakeEMCShareDriver(object):
|
||||
def __init__(self):
|
||||
self.configuration = conf.Configuration(None)
|
||||
self.configuration.emc_share_backend = 'unity'
|
||||
self.configuration.emc_nas_server_container = 'SPA'
|
||||
self.configuration.unity_server_container = 'SPA'
|
||||
self.configuration.emc_nas_server = '192.168.1.1'
|
||||
self.configuration.emc_nas_login = 'fake_user'
|
||||
self.configuration.emc_nas_password = 'fake_password'
|
||||
self.configuration.share_backend_name = 'EMC_NAS_Storage'
|
||||
self.configuration.emc_nas_server_pool = 'nas_server_pool'
|
||||
self.configuration.vnx_server_meta_pool = 'nas_server_pool'
|
||||
self.configuration.unity_server_meta_pool = 'nas_server_pool'
|
||||
self.configuration.local_conf.max_over_subscription_ratio = 20
|
||||
|
||||
|
||||
|
@ -1462,7 +1462,7 @@ class FakeEMCShareDriver(object):
|
||||
self.configuration = conf.Configuration(None)
|
||||
self.configuration.append_config_values = mock.Mock(return_value=0)
|
||||
self.configuration.emc_share_backend = FakeData.emc_share_backend
|
||||
self.configuration.emc_nas_server_container = FakeData.mover_name
|
||||
self.configuration.vnx_server_container = FakeData.mover_name
|
||||
self.configuration.emc_nas_server = FakeData.emc_nas_server
|
||||
self.configuration.emc_nas_login = FakeData.emc_nas_login
|
||||
self.configuration.emc_nas_password = FakeData.emc_nas_password
|
||||
|
@ -24,8 +24,8 @@ from manila import test
|
||||
|
||||
|
||||
class FakeConnection(base.StorageConnection):
|
||||
def __init__(self, logger):
|
||||
self.logger = logger
|
||||
def __init__(self, *args, **kwargs):
|
||||
pass
|
||||
|
||||
@property
|
||||
def driver_handles_share_servers(self):
|
||||
|
@ -0,0 +1,17 @@
|
||||
---
|
||||
upgrade:
|
||||
- For Dell EMC Unity Manila driver, replaced
|
||||
emc_nas_pool_names with unity_share_data_pools,
|
||||
emc_nas_server_pool with unity_server_meta_pool,
|
||||
emc_interface_ports with unity_ethernet_ports,
|
||||
emc_nas_server_container with unity_server_container.
|
||||
- For Dell EMC VNX Manila driver, replaced
|
||||
emc_nas_pool_names with vnx_share_data_pools,
|
||||
emc_interface_ports with vnx_ethernet_ports,
|
||||
emc_nas_server_container with vnx_server_container.
|
||||
deprecations:
|
||||
- For Dell EMC Unity Manila driver, options emc_nas_pool_names,
|
||||
emc_nas_server_pool, emc_interface_ports, emc_nas_server_container are
|
||||
deprecated.
|
||||
- For Dell EMC VNX Manila driver, options emc_nas_pool_names,
|
||||
emc_interface_ports, emc_nas_server_container are deprecated.
|
Loading…
x
Reference in New Issue
Block a user