Fix cacheable capability
When using the LVM cinder driver the cacheable capability is not being reported by the backend to the scheduler when the transport protocol is NVMe-oF (nvmet target driver), but it is properly reported if it's the LIO target driver. This also happens with other drivers that should be reporting that they are cacheable. This happens because even if the volume manager correctly uses the "storage_protocol" reported by the drivers on their stats to add the "cacheable" capability for iSCSI, FC, and NVMe-oF protocols, it isn't taking into account all the variants these have: - FC, fc, fibre_channel - iSCSI, iscsi - NVMe-oF, nvmeof, NVMeOF Same thing happens for the shared_targets of the volumes, which are not missing an iSCSI variant. This patch creates constants for the different storge protocols to try to avoid these variants (as agreed on the PTG) and also makes the cacheable and shared_targets check against all the existing variants. This change facilitates identifying NVMe-oF drivers (for bug 1961102) for the shared_targets part. Closes-Bug: #1969366 Related-Bug: #1961102 Change-Id: I1333b0471974e94eb2b3b79ea70a06e0afe28cd9
This commit is contained in:
parent
6d4a6aa978
commit
68311a0794
@ -29,3 +29,33 @@ LOG_BINARIES = (SCHEDULER_BINARY, VOLUME_BINARY, BACKUP_BINARY, API_BINARY)
|
||||
|
||||
# The encryption key ID used by the legacy fixed-key ConfKeyMgr
|
||||
FIXED_KEY_ID = '00000000-0000-0000-0000-000000000000'
|
||||
|
||||
# Storage protocol constants
|
||||
CEPH = 'ceph'
|
||||
DRBD = 'DRBD'
|
||||
FC = 'FC'
|
||||
FC_VARIANT_1 = 'fibre_channel'
|
||||
FC_VARIANT_2 = 'fc'
|
||||
FILE = 'file'
|
||||
ISCSI = 'iSCSI'
|
||||
ISCSI_VARIANT = 'iscsi'
|
||||
ISER = 'iSER'
|
||||
LIGHTOS = 'lightos'
|
||||
NFS = 'NFS'
|
||||
NFS_VARIANT = 'nfs'
|
||||
NVMEOF = 'NVMe-oF'
|
||||
NVMEOF_VARIANT_1 = 'NVMeOF'
|
||||
NVMEOF_VARIANT_2 = 'nvmeof'
|
||||
SCALEIO = 'scaleio'
|
||||
SCSI = 'SCSI'
|
||||
STORPOOL = 'storpool'
|
||||
VMDK = 'vmdk'
|
||||
VSTORAGE = 'vstorageobject'
|
||||
|
||||
# These must be strings, because there are places that check specific type
|
||||
ISCSI_VARIANTS = [ISCSI, ISCSI_VARIANT]
|
||||
FC_VARIANTS = [FC, FC_VARIANT_1, FC_VARIANT_2]
|
||||
NFS_VARIANTS = [NFS, NFS_VARIANT]
|
||||
NVMEOF_VARIANTS = [NVMEOF, NVMEOF_VARIANT_1, NVMEOF_VARIANT_2]
|
||||
|
||||
CACHEABLE_PROTOCOLS = FC_VARIANTS + ISCSI_VARIANTS + NVMEOF_VARIANTS
|
||||
|
@ -25,6 +25,7 @@ from oslo_config import types
|
||||
from oslo_log import log as logging
|
||||
from oslo_utils import excutils
|
||||
|
||||
from cinder.common import constants
|
||||
from cinder import db
|
||||
from cinder import exception
|
||||
from cinder.i18n import _
|
||||
@ -221,8 +222,8 @@ volume_opts = [
|
||||
'directly, it will only notify that it can be used.'),
|
||||
cfg.StrOpt('storage_protocol',
|
||||
ignore_case=True,
|
||||
default='iscsi',
|
||||
choices=['iscsi', 'fc'],
|
||||
default=constants.ISCSI,
|
||||
choices=[constants.ISCSI, constants.FC],
|
||||
help='Protocol for transferring data between host and '
|
||||
'storage back-end.'),
|
||||
cfg.BoolOpt('enable_unsupported_driver',
|
||||
@ -2805,7 +2806,7 @@ class ISCSIDriver(VolumeDriver):
|
||||
data["volume_backend_name"] = backend_name or 'Generic_iSCSI'
|
||||
data["vendor_name"] = 'Open Source'
|
||||
data["driver_version"] = '1.0'
|
||||
data["storage_protocol"] = 'iSCSI'
|
||||
data["storage_protocol"] = constants.ISCSI
|
||||
data["pools"] = []
|
||||
data["replication_enabled"] = False
|
||||
|
||||
@ -2874,7 +2875,7 @@ class ISERDriver(ISCSIDriver):
|
||||
data["volume_backend_name"] = backend_name or 'Generic_iSER'
|
||||
data["vendor_name"] = 'Open Source'
|
||||
data["driver_version"] = '1.0'
|
||||
data["storage_protocol"] = 'iSER'
|
||||
data["storage_protocol"] = constants.ISER
|
||||
data["pools"] = []
|
||||
|
||||
self._update_pools_and_stats(data)
|
||||
@ -2950,7 +2951,7 @@ class FibreChannelDriver(VolumeDriver):
|
||||
data["volume_backend_name"] = backend_name or 'Generic_FC'
|
||||
data["vendor_name"] = 'Open Source'
|
||||
data["driver_version"] = '1.0'
|
||||
data["storage_protocol"] = 'FC'
|
||||
data["storage_protocol"] = constants.FC
|
||||
data["pools"] = []
|
||||
|
||||
self._update_pools_and_stats(data)
|
||||
|
@ -17,6 +17,7 @@ from oslo_config import cfg
|
||||
from oslo_log import log as logging
|
||||
from oslo_utils import netutils
|
||||
|
||||
from cinder.common import constants
|
||||
from cinder import exception
|
||||
from cinder.i18n import _
|
||||
from cinder import interface
|
||||
@ -72,7 +73,7 @@ class RBDISCSIDriver(rbd.RBDDriver):
|
||||
|
||||
SUPPORTS_ACTIVE_ACTIVE = True
|
||||
|
||||
STORAGE_PROTOCOL = 'iSCSI'
|
||||
STORAGE_PROTOCOL = constants.ISCSI
|
||||
CHAP_LENGTH = 16
|
||||
|
||||
# The target IQN to use for creating all exports
|
||||
|
@ -28,6 +28,7 @@ from oslo_utils import importutils
|
||||
from oslo_utils import units
|
||||
import six
|
||||
|
||||
from cinder.common import constants
|
||||
from cinder import exception
|
||||
from cinder.i18n import _
|
||||
from cinder.image import image_utils
|
||||
@ -975,7 +976,7 @@ class DateraApi(object):
|
||||
'volume_backend_name': self.backend_name,
|
||||
'vendor_name': 'Datera',
|
||||
'driver_version': self.VERSION,
|
||||
'storage_protocol': 'iSCSI',
|
||||
'storage_protocol': constants.ISCSI,
|
||||
'total_capacity_gb': (
|
||||
int(results.total_capacity) / units.Gi),
|
||||
'free_capacity_gb': (
|
||||
|
@ -28,6 +28,7 @@ from oslo_utils import importutils
|
||||
from oslo_utils import units
|
||||
import six
|
||||
|
||||
from cinder.common import constants
|
||||
from cinder import exception
|
||||
from cinder.i18n import _
|
||||
from cinder.image import image_utils
|
||||
@ -1026,7 +1027,7 @@ class DateraApi(object):
|
||||
'volume_backend_name': self.backend_name,
|
||||
'vendor_name': 'Datera',
|
||||
'driver_version': self.VERSION,
|
||||
'storage_protocol': 'iSCSI',
|
||||
'storage_protocol': constants.ISCSI,
|
||||
'total_capacity_gb': (
|
||||
int(results.total_capacity) / units.Gi),
|
||||
'free_capacity_gb': (
|
||||
|
@ -29,6 +29,7 @@ from oslo_utils import units
|
||||
import six
|
||||
from six.moves import http_client
|
||||
|
||||
from cinder.common import constants
|
||||
from cinder import context
|
||||
from cinder import exception
|
||||
from cinder.i18n import _
|
||||
@ -956,7 +957,7 @@ class PowerFlexDriver(driver.VolumeDriver):
|
||||
stats["volume_backend_name"] = backend_name or "powerflex"
|
||||
stats["vendor_name"] = "Dell EMC"
|
||||
stats["driver_version"] = self.VERSION
|
||||
stats["storage_protocol"] = "scaleio"
|
||||
stats["storage_protocol"] = constants.SCALEIO
|
||||
stats["reserved_percentage"] = 0
|
||||
stats["QoS_support"] = True
|
||||
stats["consistent_group_snapshot_enabled"] = True
|
||||
|
@ -17,6 +17,7 @@ import ast
|
||||
|
||||
from oslo_log import log as logging
|
||||
|
||||
from cinder.common import constants
|
||||
from cinder import exception
|
||||
from cinder import interface
|
||||
from cinder.volume import driver
|
||||
@ -538,7 +539,7 @@ class PowerMaxFCDriver(san.SanDriver, driver.FibreChannelDriver):
|
||||
"""Retrieve stats info from volume group."""
|
||||
LOG.debug("Updating volume stats")
|
||||
data = self.common.update_volume_stats()
|
||||
data['storage_protocol'] = 'FC'
|
||||
data['storage_protocol'] = constants.FC
|
||||
data['driver_version'] = self.VERSION
|
||||
self._stats = data
|
||||
|
||||
|
@ -22,6 +22,7 @@ from oslo_log import log as logging
|
||||
from oslo_utils import strutils
|
||||
import six
|
||||
|
||||
from cinder.common import constants
|
||||
from cinder import exception
|
||||
from cinder.i18n import _
|
||||
from cinder import interface
|
||||
@ -452,7 +453,7 @@ class PowerMaxISCSIDriver(san.SanISCSIDriver):
|
||||
"""Retrieve stats info from volume group."""
|
||||
LOG.debug("Updating volume stats")
|
||||
data = self.common.update_volume_stats()
|
||||
data['storage_protocol'] = 'iSCSI'
|
||||
data['storage_protocol'] = constants.ISCSI
|
||||
data['driver_version'] = self.VERSION
|
||||
self._stats = data
|
||||
|
||||
|
@ -18,6 +18,7 @@
|
||||
from oslo_log import log as logging
|
||||
from oslo_utils import strutils
|
||||
|
||||
from cinder.common import constants
|
||||
from cinder import coordination
|
||||
from cinder import exception
|
||||
from cinder.i18n import _
|
||||
@ -31,8 +32,8 @@ from cinder.volume import volume_utils
|
||||
|
||||
|
||||
LOG = logging.getLogger(__name__)
|
||||
PROTOCOL_FC = "FC"
|
||||
PROTOCOL_ISCSI = "iSCSI"
|
||||
PROTOCOL_FC = constants.FC
|
||||
PROTOCOL_ISCSI = constants.ISCSI
|
||||
CHAP_MODE_SINGLE = "Single"
|
||||
|
||||
|
||||
|
@ -24,6 +24,7 @@ import requests
|
||||
import six
|
||||
from six.moves import http_client
|
||||
|
||||
from cinder.common import constants
|
||||
from cinder import exception
|
||||
from cinder.i18n import _
|
||||
from cinder import utils
|
||||
@ -373,7 +374,7 @@ class SCApiHelper(object):
|
||||
connection.excluded_domain_ips))
|
||||
# Our primary SSN doesn't change
|
||||
connection.primaryssn = self.primaryssn
|
||||
if self.storage_protocol == 'FC':
|
||||
if self.storage_protocol == constants.FC:
|
||||
connection.protocol = 'FibreChannel'
|
||||
# Set appropriate ssn and failover state.
|
||||
if self.active_backend_id:
|
||||
|
@ -19,6 +19,7 @@ from oslo_log import log as logging
|
||||
from oslo_utils import excutils
|
||||
import six
|
||||
|
||||
from cinder.common import constants
|
||||
from cinder import exception
|
||||
from cinder.i18n import _
|
||||
from cinder.objects import fields
|
||||
@ -112,7 +113,7 @@ class SCCommonDriver(driver.ManageableVD,
|
||||
LOG.info('Loading %(name)s: Failover state is %(state)r',
|
||||
{'name': self.backend_name,
|
||||
'state': self.failed_over})
|
||||
self.storage_protocol = 'iSCSI'
|
||||
self.storage_protocol = constants.ISCSI
|
||||
self.failback_timeout = 60
|
||||
|
||||
@staticmethod
|
||||
|
@ -17,6 +17,7 @@
|
||||
from oslo_log import log as logging
|
||||
from oslo_utils import excutils
|
||||
|
||||
from cinder.common import constants
|
||||
from cinder import exception
|
||||
from cinder.i18n import _
|
||||
from cinder import interface
|
||||
@ -77,7 +78,7 @@ class SCFCDriver(storagecenter_common.SCCommonDriver,
|
||||
super(SCFCDriver, self).__init__(*args, **kwargs)
|
||||
self.backend_name =\
|
||||
self.configuration.safe_get('volume_backend_name') or 'Dell-FC'
|
||||
self.storage_protocol = 'FC'
|
||||
self.storage_protocol = constants.FC
|
||||
|
||||
def validate_connector(self, connector):
|
||||
"""Fail if connector doesn't contain all the data needed by driver.
|
||||
|
@ -24,6 +24,7 @@ from oslo_log import log as logging
|
||||
from oslo_utils import excutils
|
||||
from oslo_utils import importutils
|
||||
|
||||
from cinder.common import constants
|
||||
from cinder import exception
|
||||
from cinder.i18n import _
|
||||
from cinder.objects import fields
|
||||
@ -44,8 +45,8 @@ else:
|
||||
|
||||
LOG = logging.getLogger(__name__)
|
||||
|
||||
PROTOCOL_FC = 'FC'
|
||||
PROTOCOL_ISCSI = 'iSCSI'
|
||||
PROTOCOL_FC = constants.FC
|
||||
PROTOCOL_ISCSI = constants.ISCSI
|
||||
|
||||
|
||||
class VolumeParams(object):
|
||||
|
@ -49,6 +49,7 @@ import requests
|
||||
import six
|
||||
from six.moves import http_client
|
||||
|
||||
from cinder.common import constants
|
||||
from cinder import context
|
||||
from cinder import exception
|
||||
from cinder.i18n import _
|
||||
@ -1101,7 +1102,7 @@ class XtremIOISCSIDriver(XtremIOVolumeDriver, driver.ISCSIDriver):
|
||||
|
||||
def __init__(self, *args, **kwargs):
|
||||
super(XtremIOISCSIDriver, self).__init__(*args, **kwargs)
|
||||
self.protocol = 'iSCSI'
|
||||
self.protocol = constants.ISCSI
|
||||
|
||||
def _add_auth(self, data, login_chap, discovery_chap):
|
||||
login_passwd, discovery_passwd = None, None
|
||||
@ -1240,7 +1241,7 @@ class XtremIOFCDriver(XtremIOVolumeDriver,
|
||||
|
||||
def __init__(self, *args, **kwargs):
|
||||
super(XtremIOFCDriver, self).__init__(*args, **kwargs)
|
||||
self.protocol = 'FC'
|
||||
self.protocol = constants.FC
|
||||
self._targets = None
|
||||
|
||||
def get_targets(self):
|
||||
|
@ -22,6 +22,7 @@ FibreChannel Cinder Volume driver for Fujitsu ETERNUS DX S3 series.
|
||||
from oslo_log import log as logging
|
||||
import six
|
||||
|
||||
from cinder.common import constants
|
||||
from cinder import interface
|
||||
from cinder.volume import driver
|
||||
from cinder.volume.drivers.fujitsu.eternus_dx import eternus_dx_common
|
||||
@ -202,7 +203,7 @@ class FJDXFCDriver(driver.FibreChannelDriver):
|
||||
data, pool_name = self.common.update_volume_stats()
|
||||
backend_name = self.configuration.safe_get('volume_backend_name')
|
||||
data['volume_backend_name'] = backend_name or 'FJDXFCDriver'
|
||||
data['storage_protocol'] = 'FC'
|
||||
data['storage_protocol'] = constants.FC
|
||||
self._stats = data
|
||||
|
||||
LOG.debug('get_volume_stats, '
|
||||
|
@ -20,6 +20,7 @@
|
||||
from oslo_log import log as logging
|
||||
import six
|
||||
|
||||
from cinder.common import constants
|
||||
from cinder import interface
|
||||
from cinder.volume import driver
|
||||
from cinder.volume.drivers.fujitsu.eternus_dx import eternus_dx_common
|
||||
@ -192,7 +193,7 @@ class FJDXISCSIDriver(driver.ISCSIDriver):
|
||||
data, pool_name = self.common.update_volume_stats()
|
||||
backend_name = self.configuration.safe_get('volume_backend_name')
|
||||
data['volume_backend_name'] = backend_name or 'FJDXISCSIDriver'
|
||||
data['storage_protocol'] = 'iSCSI'
|
||||
data['storage_protocol'] = constants.ISCSI
|
||||
self._stats = data
|
||||
|
||||
LOG.debug('get_volume_stats, '
|
||||
|
@ -19,6 +19,7 @@ from oslo_config import cfg
|
||||
from oslo_log import log as logging
|
||||
from oslo_utils import units
|
||||
|
||||
from cinder.common import constants
|
||||
from cinder import exception
|
||||
from cinder.i18n import _
|
||||
from cinder import interface
|
||||
@ -159,7 +160,7 @@ class DSWAREDriver(driver.VolumeDriver):
|
||||
"thin_provisioning_support": False,
|
||||
"pools": [],
|
||||
"vendor_name": "Huawei",
|
||||
"storage_protocol": "SCSI",
|
||||
"storage_protocol": constants.SCSI,
|
||||
}
|
||||
all_pools = self.client.query_pool_info()
|
||||
|
||||
|
@ -24,6 +24,7 @@ from oslo_log import log as logging
|
||||
from oslo_utils import strutils
|
||||
from oslo_utils import units
|
||||
|
||||
from cinder.common import constants
|
||||
from cinder import exception
|
||||
from cinder.i18n import _
|
||||
from cinder import interface
|
||||
@ -97,7 +98,7 @@ class HedvigISCSIDriver(driver.ISCSIDriver, san.SanDriver):
|
||||
stats["volume_backend_name"] = "hedvig"
|
||||
stats["vendor_name"] = "Hedvig Inc"
|
||||
stats["driver_version"] = self.VERSION
|
||||
stats["storage_protocol"] = "iSCSI"
|
||||
stats["storage_protocol"] = constants.ISCSI
|
||||
stats["total_capacity_gb"] = total_capacity
|
||||
stats["free_capacity_gb"] = free_capacity
|
||||
stats["QoS_support"] = True
|
||||
|
@ -37,6 +37,7 @@ except ImportError:
|
||||
from oslo_log import log as logging
|
||||
from oslo_utils.excutils import save_and_reraise_exception
|
||||
|
||||
from cinder.common import constants
|
||||
from cinder import coordination
|
||||
from cinder import interface
|
||||
from cinder.volume.drivers.hpe import hpe_3par_base as hpebasedriver
|
||||
@ -125,7 +126,7 @@ class HPE3PARFCDriver(hpebasedriver.HPE3PARDriverBase):
|
||||
def __init__(self, *args, **kwargs):
|
||||
super(HPE3PARFCDriver, self).__init__(*args, **kwargs)
|
||||
self.lookup_service = fczm_utils.create_lookup_service()
|
||||
self.protocol = 'FC'
|
||||
self.protocol = constants.FC
|
||||
|
||||
def _initialize_connection_common(self, volume, connector, common, host,
|
||||
target_wwns, init_targ_map, numPaths,
|
||||
|
@ -38,6 +38,7 @@ except ImportError:
|
||||
from oslo_log import log as logging
|
||||
from oslo_utils.excutils import save_and_reraise_exception
|
||||
|
||||
from cinder.common import constants
|
||||
from cinder import coordination
|
||||
from cinder import exception
|
||||
from cinder.i18n import _
|
||||
@ -138,7 +139,7 @@ class HPE3PARISCSIDriver(hpebasedriver.HPE3PARDriverBase):
|
||||
|
||||
def __init__(self, *args, **kwargs):
|
||||
super(HPE3PARISCSIDriver, self).__init__(*args, **kwargs)
|
||||
self.protocol = 'iSCSI'
|
||||
self.protocol = constants.ISCSI
|
||||
|
||||
def _do_setup(self, common):
|
||||
client_obj = common.client
|
||||
|
@ -34,6 +34,7 @@ from oslo_utils import units
|
||||
import requests
|
||||
import six
|
||||
|
||||
from cinder.common import constants
|
||||
from cinder import exception
|
||||
from cinder.i18n import _
|
||||
from cinder import interface
|
||||
@ -586,7 +587,7 @@ class NimbleBaseVolumeDriver(san.SanDriver):
|
||||
password=self.configuration.san_password,
|
||||
ip=self.configuration.san_ip,
|
||||
verify=self.verify)
|
||||
if self._storage_protocol == "iSCSI":
|
||||
if self._storage_protocol == constants.ISCSI:
|
||||
group_info = self.APIExecutor.get_group_info()
|
||||
self._enable_group_scoped_target(group_info)
|
||||
except Exception:
|
||||
@ -670,10 +671,10 @@ class NimbleBaseVolumeDriver(san.SanDriver):
|
||||
LOG.info('Creating initiator group %(grp)s '
|
||||
'with initiator %(iname)s',
|
||||
{'grp': igrp_name, 'iname': initiator_name})
|
||||
if self._storage_protocol == "iSCSI":
|
||||
if self._storage_protocol == constants.ISCSI:
|
||||
self.APIExecutor.create_initiator_group(igrp_name)
|
||||
self.APIExecutor.add_initiator_to_igroup(igrp_name, initiator_name)
|
||||
elif self._storage_protocol == "FC":
|
||||
elif self._storage_protocol == constants.FC:
|
||||
self.APIExecutor.create_initiator_group_fc(igrp_name)
|
||||
for wwpn in wwpns:
|
||||
self.APIExecutor.add_initiator_to_igroup_fc(igrp_name, wwpn)
|
||||
@ -952,7 +953,7 @@ class NimbleISCSIDriver(NimbleBaseVolumeDriver, san.SanISCSIDriver):
|
||||
|
||||
def __init__(self, *args, **kwargs):
|
||||
super(NimbleISCSIDriver, self).__init__(*args, **kwargs)
|
||||
self._storage_protocol = "iSCSI"
|
||||
self._storage_protocol = constants.ISCSI
|
||||
self._group_target_name = None
|
||||
|
||||
def _set_gst_for_group(self):
|
||||
@ -1126,7 +1127,7 @@ class NimbleFCDriver(NimbleBaseVolumeDriver, driver.FibreChannelDriver):
|
||||
|
||||
def __init__(self, *args, **kwargs):
|
||||
super(NimbleFCDriver, self).__init__(*args, **kwargs)
|
||||
self._storage_protocol = "FC"
|
||||
self._storage_protocol = constants.FC
|
||||
self._lookup_service = fczm_utils.create_lookup_service()
|
||||
|
||||
def _get_provider_location(self, volume_name):
|
||||
@ -1545,7 +1546,7 @@ class NimbleRestAPIExecutor(object):
|
||||
'perfpolicy_id': perf_policy_id,
|
||||
'encryption_cipher': cipher}}
|
||||
|
||||
if protocol == "iSCSI":
|
||||
if protocol == constants.ISCSI:
|
||||
data['data']['multi_initiator'] = multi_initiator
|
||||
|
||||
if dedupe.lower() == 'true':
|
||||
@ -2012,7 +2013,7 @@ class NimbleRestAPIExecutor(object):
|
||||
"encryption_cipher": cipher
|
||||
}
|
||||
}
|
||||
if protocol == "iSCSI":
|
||||
if protocol == constants.ISCSI:
|
||||
data['data']['multi_initiator'] = multi_initiator
|
||||
|
||||
folder_id = None
|
||||
|
@ -18,6 +18,7 @@ import json
|
||||
from oslo_log import log as logging
|
||||
from oslo_utils import strutils
|
||||
|
||||
from cinder.common import constants as cinder_constants
|
||||
from cinder import coordination
|
||||
from cinder import exception
|
||||
from cinder.i18n import _
|
||||
@ -72,7 +73,7 @@ class HuaweiISCSIDriver(common.HuaweiBaseDriver, driver.ISCSIDriver):
|
||||
def get_volume_stats(self, refresh=False):
|
||||
"""Get volume status."""
|
||||
data = self._get_volume_stats(refresh=False)
|
||||
data['storage_protocol'] = 'iSCSI'
|
||||
data['storage_protocol'] = cinder_constants.ISCSI
|
||||
data['driver_version'] = self.VERSION
|
||||
return data
|
||||
|
||||
@ -264,7 +265,7 @@ class HuaweiFCDriver(common.HuaweiBaseDriver, driver.FibreChannelDriver):
|
||||
def get_volume_stats(self, refresh=False):
|
||||
"""Get volume status."""
|
||||
data = self._get_volume_stats(refresh=False)
|
||||
data['storage_protocol'] = 'FC'
|
||||
data['storage_protocol'] = cinder_constants.FC
|
||||
data['driver_version'] = self.VERSION
|
||||
return data
|
||||
|
||||
|
@ -28,6 +28,7 @@ from oslo_utils import units
|
||||
import paramiko
|
||||
import six
|
||||
|
||||
from cinder.common import constants
|
||||
from cinder import context
|
||||
from cinder import exception
|
||||
from cinder.i18n import _
|
||||
@ -856,7 +857,7 @@ class GPFSDriver(driver.CloneableImageVD,
|
||||
data["volume_backend_name"] = backend_name or 'GPFS'
|
||||
data["vendor_name"] = 'IBM'
|
||||
data["driver_version"] = self.VERSION
|
||||
data["storage_protocol"] = 'file'
|
||||
data["storage_protocol"] = constants.FILE
|
||||
free, capacity = self._get_available_capacity(self.configuration.
|
||||
gpfs_mount_point_base)
|
||||
data['total_capacity_gb'] = math.ceil(capacity / units.Gi)
|
||||
@ -1561,7 +1562,7 @@ class GPFSNFSDriver(GPFSDriver, nfs.NfsDriver, san.SanDriver):
|
||||
data['volume_backend_name'] = backend_name or 'GPFSNFS'
|
||||
data['vendor_name'] = 'IBM'
|
||||
data['driver_version'] = self.get_version()
|
||||
data['storage_protocol'] = 'file'
|
||||
data['storage_protocol'] = constants.FILE
|
||||
|
||||
self._ensure_shares_mounted()
|
||||
|
||||
|
@ -39,6 +39,7 @@ from oslo_log import log as logging
|
||||
from oslo_utils import excutils
|
||||
from oslo_utils import strutils
|
||||
|
||||
from cinder.common import constants
|
||||
from cinder import coordination
|
||||
from cinder import exception
|
||||
from cinder.i18n import _
|
||||
@ -104,7 +105,7 @@ class StorwizeSVCISCSIDriver(storwize_common.StorwizeSVCCommonDriver):
|
||||
|
||||
def __init__(self, *args, **kwargs):
|
||||
super(StorwizeSVCISCSIDriver, self).__init__(*args, **kwargs)
|
||||
self.protocol = 'iSCSI'
|
||||
self.protocol = constants.ISCSI
|
||||
self.configuration.append_config_values(
|
||||
storwize_svc_iscsi_opts)
|
||||
|
||||
|
@ -24,6 +24,7 @@ from oslo_config import cfg
|
||||
from oslo_log import log as logging
|
||||
from oslo_utils import units
|
||||
|
||||
from cinder.common import constants
|
||||
from cinder import coordination
|
||||
from cinder import exception
|
||||
from cinder.i18n import _
|
||||
@ -164,12 +165,12 @@ class InfiniboxVolumeDriver(san.SanISCSIDriver):
|
||||
self._backend_name = backend_name or self.__class__.__name__
|
||||
self._volume_stats = None
|
||||
if self.configuration.infinidat_storage_protocol.lower() == 'iscsi':
|
||||
self._protocol = 'iSCSI'
|
||||
self._protocol = constants.ISCSI
|
||||
if len(self.configuration.infinidat_iscsi_netspaces) == 0:
|
||||
msg = _('No iSCSI network spaces configured')
|
||||
raise exception.VolumeDriverException(message=msg)
|
||||
else:
|
||||
self._protocol = 'FC'
|
||||
self._protocol = constants.FC
|
||||
if (self.configuration.infinidat_use_compression and
|
||||
not self._system.compat.has_compression()):
|
||||
# InfiniBox systems support compression only from v3.0 and up
|
||||
@ -182,7 +183,8 @@ class InfiniboxVolumeDriver(san.SanISCSIDriver):
|
||||
LOG.debug('setup complete')
|
||||
|
||||
def validate_connector(self, connector):
|
||||
required = 'initiator' if self._protocol == 'iSCSI' else 'wwpns'
|
||||
required = ('initiator' if self._protocol == constants.ISCSI
|
||||
else 'wwpns')
|
||||
if required not in connector:
|
||||
LOG.error('The volume driver requires %(data)s '
|
||||
'in the connector.', {'data': required})
|
||||
@ -419,7 +421,7 @@ class InfiniboxVolumeDriver(san.SanISCSIDriver):
|
||||
if connector is None:
|
||||
# If no connector was provided it is a force-detach - remove all
|
||||
# host connections for the volume
|
||||
if self._protocol == 'FC':
|
||||
if self._protocol == constants.FC:
|
||||
port_cls = wwn.WWN
|
||||
else:
|
||||
port_cls = iqn.IQN
|
||||
@ -429,7 +431,7 @@ class InfiniboxVolumeDriver(san.SanISCSIDriver):
|
||||
host_ports = [port for port in host_ports
|
||||
if isinstance(port, port_cls)]
|
||||
ports.extend(host_ports)
|
||||
elif self._protocol == 'FC':
|
||||
elif self._protocol == constants.FC:
|
||||
ports = [wwn.WWN(wwpn) for wwpn in connector['wwpns']]
|
||||
else:
|
||||
ports = [iqn.IQN(connector['initiator'])]
|
||||
@ -439,7 +441,7 @@ class InfiniboxVolumeDriver(san.SanISCSIDriver):
|
||||
@coordination.synchronized('infinidat-{self.management_address}-lock')
|
||||
def initialize_connection(self, volume, connector):
|
||||
"""Map an InfiniBox volume to the host"""
|
||||
if self._protocol == 'FC':
|
||||
if self._protocol == constants.FC:
|
||||
return self._initialize_connection_fc(volume, connector)
|
||||
else:
|
||||
return self._initialize_connection_iscsi(volume, connector)
|
||||
@ -449,7 +451,7 @@ class InfiniboxVolumeDriver(san.SanISCSIDriver):
|
||||
def terminate_connection(self, volume, connector, **kwargs):
|
||||
"""Unmap an InfiniBox volume from the host"""
|
||||
infinidat_volume = self._get_infinidat_volume(volume)
|
||||
if self._protocol == 'FC':
|
||||
if self._protocol == constants.FC:
|
||||
volume_type = 'fibre_channel'
|
||||
else:
|
||||
volume_type = 'iscsi'
|
||||
@ -469,7 +471,7 @@ class InfiniboxVolumeDriver(san.SanISCSIDriver):
|
||||
# check if the host now doesn't have mappings
|
||||
if host is not None and len(host.get_luns()) == 0:
|
||||
host.safe_delete()
|
||||
if self._protocol == 'FC' and connector is not None:
|
||||
if self._protocol == constants.FC and connector is not None:
|
||||
# Create initiator-target mapping to delete host entry
|
||||
# this is only relevant for regular (specific host) detach
|
||||
target_wwpns = list(self._get_online_fc_ports())
|
||||
@ -480,7 +482,7 @@ class InfiniboxVolumeDriver(san.SanISCSIDriver):
|
||||
initiator_target_map=target_map)
|
||||
conn_info = dict(driver_volume_type=volume_type,
|
||||
data=result_data)
|
||||
if self._protocol == 'FC':
|
||||
if self._protocol == constants.FC:
|
||||
fczm_utils.remove_fc_zone(conn_info)
|
||||
return conn_info
|
||||
|
||||
|
@ -29,6 +29,7 @@ from oslo_log import log as logging
|
||||
from oslo_utils import units
|
||||
import requests
|
||||
|
||||
from cinder.common import constants
|
||||
from cinder import exception
|
||||
from cinder.i18n import _
|
||||
from cinder import interface
|
||||
@ -176,7 +177,6 @@ class AS13000Driver(san.SanISCSIDriver):
|
||||
|
||||
VENDOR = 'INSPUR'
|
||||
VERSION = '1.0.0'
|
||||
PROTOCOL = 'iSCSI'
|
||||
|
||||
# ThirdPartySystems wiki page
|
||||
CI_WIKI_NAME = 'Inspur_CI'
|
||||
@ -474,7 +474,7 @@ class AS13000Driver(san.SanISCSIDriver):
|
||||
backend_name = self.configuration.safe_get('volume_backend_name')
|
||||
data['vendor_name'] = self.VENDOR
|
||||
data['driver_version'] = self.VERSION
|
||||
data['storage_protocol'] = self.PROTOCOL
|
||||
data['storage_protocol'] = constants.ISCSI
|
||||
data['volume_backend_name'] = backend_name
|
||||
data['pools'] = self._get_pools_stats()
|
||||
|
||||
|
@ -32,6 +32,7 @@ from oslo_utils import units
|
||||
import paramiko
|
||||
import six
|
||||
|
||||
from cinder.common import constants
|
||||
from cinder import context
|
||||
from cinder import exception
|
||||
from cinder.i18n import _
|
||||
@ -212,11 +213,11 @@ class InStorageMCSCommonDriver(driver.VolumeDriver, san.SanDriver):
|
||||
for k, node in self._state['storage_nodes'].items():
|
||||
if ((len(node['ipv4']) or len(node['ipv6'])) and
|
||||
len(node['iscsi_name'])):
|
||||
node['enabled_protocols'].append('iSCSI')
|
||||
self._state['enabled_protocols'].add('iSCSI')
|
||||
node['enabled_protocols'].append(constants.ISCSI)
|
||||
self._state['enabled_protocols'].add(constants.ISCSI)
|
||||
if len(node['WWPN']):
|
||||
node['enabled_protocols'].append('FC')
|
||||
self._state['enabled_protocols'].add('FC')
|
||||
node['enabled_protocols'].append(constants.FC)
|
||||
self._state['enabled_protocols'].add(constants.FC)
|
||||
if not len(node['enabled_protocols']):
|
||||
to_delete.append(k)
|
||||
for delkey in to_delete:
|
||||
|
@ -15,6 +15,7 @@
|
||||
"""Volume driver for Kaminario K2 all-flash arrays."""
|
||||
from oslo_log import log as logging
|
||||
|
||||
from cinder.common import constants
|
||||
from cinder import coordination
|
||||
from cinder.i18n import _
|
||||
from cinder.objects import fields
|
||||
@ -45,7 +46,7 @@ class KaminarioFCDriver(common.KaminarioCinderDriver):
|
||||
@volume_utils.trace
|
||||
def __init__(self, *args, **kwargs):
|
||||
super(KaminarioFCDriver, self).__init__(*args, **kwargs)
|
||||
self._protocol = 'FC'
|
||||
self._protocol = constants.FC
|
||||
self.lookup_service = fczm_utils.create_lookup_service()
|
||||
|
||||
@volume_utils.trace
|
||||
|
@ -15,6 +15,7 @@
|
||||
"""Volume driver for Kaminario K2 all-flash arrays."""
|
||||
from oslo_log import log as logging
|
||||
|
||||
from cinder.common import constants
|
||||
from cinder import coordination
|
||||
from cinder.i18n import _
|
||||
from cinder import interface
|
||||
@ -50,7 +51,7 @@ class KaminarioISCSIDriver(common.KaminarioCinderDriver):
|
||||
@volume_utils.trace
|
||||
def __init__(self, *args, **kwargs):
|
||||
super(KaminarioISCSIDriver, self).__init__(*args, **kwargs)
|
||||
self._protocol = 'iSCSI'
|
||||
self._protocol = constants.ISCSI
|
||||
|
||||
@volume_utils.trace
|
||||
@coordination.synchronized('{self.k2_lock_name}')
|
||||
|
@ -19,6 +19,7 @@ from oslo_config import cfg
|
||||
from oslo_log import log as logging
|
||||
from oslo_utils.secretutils import md5
|
||||
|
||||
from cinder.common import constants
|
||||
from cinder import exception
|
||||
from cinder.i18n import _
|
||||
from cinder import interface
|
||||
@ -414,7 +415,7 @@ class KumoScaleBaseVolumeDriver(driver.BaseVD):
|
||||
volume_backend_name=self._backend_name,
|
||||
vendor_name='KIOXIA',
|
||||
driver_version=self.VERSION,
|
||||
storage_protocol='NVMeOF',
|
||||
storage_protocol=constants.NVMEOF_VARIANT_1,
|
||||
)
|
||||
data['total_capacity_gb'] = 'unknown'
|
||||
data['free_capacity_gb'] = 'unknown'
|
||||
|
@ -28,6 +28,7 @@ from oslo_utils import units
|
||||
import requests
|
||||
import urllib3
|
||||
|
||||
from cinder.common import constants
|
||||
from cinder import coordination
|
||||
from cinder import exception
|
||||
from cinder.i18n import _
|
||||
@ -980,7 +981,6 @@ class LightOSVolumeDriver(driver.VolumeDriver):
|
||||
|
||||
backend_name = self.configuration.safe_get('volume_backend_name')
|
||||
res_percentage = self.configuration.safe_get('reserved_percentage')
|
||||
storage_protocol = 'lightos'
|
||||
# as a tenant we dont have access to cluster stats
|
||||
# in the future we might expose this per project via get_project API
|
||||
# currently we remove this stats call.
|
||||
@ -989,7 +989,7 @@ class LightOSVolumeDriver(driver.VolumeDriver):
|
||||
data = {'vendor_name': 'LightOS Storage',
|
||||
'volume_backend_name': backend_name or self.__class__.__name__,
|
||||
'driver_version': self.VERSION,
|
||||
'storage_protocol': storage_protocol,
|
||||
'storage_protocol': constants.LIGHTOS,
|
||||
'reserved_percentage': res_percentage,
|
||||
'QoS_support': False,
|
||||
'online_extend_support': True,
|
||||
|
@ -27,6 +27,7 @@ from oslo_log import log as logging
|
||||
from oslo_utils import importutils
|
||||
from oslo_utils import units
|
||||
|
||||
from cinder.common import constants
|
||||
from cinder import exception
|
||||
from cinder.i18n import _
|
||||
from cinder.image import image_utils
|
||||
@ -1027,7 +1028,7 @@ class LinstorIscsiDriver(LinstorBaseDriver):
|
||||
|
||||
def get_volume_stats(self, refresh=False):
|
||||
data = self._get_volume_stats()
|
||||
data["storage_protocol"] = 'iSCSI'
|
||||
data["storage_protocol"] = constants.ISCSI
|
||||
data["pools"][0]["location_info"] = (
|
||||
'LinstorIscsiDriver:' + data["pools"][0]["location_info"])
|
||||
|
||||
@ -1097,7 +1098,7 @@ class LinstorDrbdDriver(LinstorBaseDriver):
|
||||
|
||||
def get_volume_stats(self, refresh=False):
|
||||
data = self._get_volume_stats()
|
||||
data["storage_protocol"] = 'DRBD'
|
||||
data["storage_protocol"] = constants.DRBD
|
||||
data["pools"][0]["location_info"] = 'LinstorDrbdDriver:{}'.format(
|
||||
data["pools"][0]["location_info"])
|
||||
|
||||
|
@ -27,6 +27,7 @@ from oslo_utils import excutils
|
||||
from oslo_utils import strutils
|
||||
from oslo_utils import timeutils
|
||||
|
||||
from cinder.common import constants
|
||||
from cinder import context
|
||||
from cinder.coordination import synchronized
|
||||
from cinder import exception
|
||||
@ -1023,7 +1024,7 @@ class MacroSANISCSIDriver(MacroSANBaseDriver, driver.ISCSIDriver):
|
||||
def __init__(self, *args, **kwargs):
|
||||
"""Initialize the driver."""
|
||||
super(MacroSANISCSIDriver, self).__init__(*args, **kwargs)
|
||||
self.storage_protocol = 'iSCSI'
|
||||
self.storage_protocol = constants.ISCSI
|
||||
|
||||
def _do_setup(self):
|
||||
ports = self.client.get_iscsi_ports()
|
||||
@ -1224,7 +1225,7 @@ class MacroSANFCDriver(MacroSANBaseDriver, driver.FibreChannelDriver):
|
||||
def __init__(self, *args, **kwargs):
|
||||
"""Initialize the driver."""
|
||||
super(MacroSANFCDriver, self).__init__(*args, **kwargs)
|
||||
self.storage_protocol = 'FC'
|
||||
self.storage_protocol = constants.FC
|
||||
self.fcsan_lookup_service = None
|
||||
self.use_sp_port_nr = self.configuration.macrosan_fc_use_sp_port_nr
|
||||
self.keep_mapped_ports = \
|
||||
|
@ -21,6 +21,7 @@ from oslo_log import log as logging
|
||||
from oslo_utils import excutils
|
||||
from oslo_utils import units
|
||||
|
||||
from cinder.common import constants
|
||||
from cinder import coordination
|
||||
from cinder import exception
|
||||
from cinder.i18n import _
|
||||
@ -1467,7 +1468,7 @@ class MStorageDriver(volume_common.MStorageVolumeCommon):
|
||||
"""
|
||||
if refresh:
|
||||
self._stats = self._update_volume_status()
|
||||
self._stats['storage_protocol'] = 'iSCSI'
|
||||
self._stats['storage_protocol'] = constants.ISCSI
|
||||
LOG.debug('data=%(data)s, config_group=%(group)s',
|
||||
{'data': self._stats, 'group': self._config_group})
|
||||
|
||||
@ -1481,7 +1482,7 @@ class MStorageDriver(volume_common.MStorageVolumeCommon):
|
||||
|
||||
if refresh:
|
||||
self._stats = self._update_volume_status()
|
||||
self._stats['storage_protocol'] = 'FC'
|
||||
self._stats['storage_protocol'] = constants.FC
|
||||
LOG.debug('data=%(data)s, config_group=%(group)s',
|
||||
{'data': self._stats, 'group': self._config_group})
|
||||
|
||||
|
@ -30,6 +30,7 @@ from oslo_utils import excutils
|
||||
from oslo_utils import units
|
||||
import six
|
||||
|
||||
from cinder.common import constants
|
||||
from cinder import exception
|
||||
from cinder.i18n import _
|
||||
from cinder.image import image_utils
|
||||
@ -327,7 +328,7 @@ class NetAppCmodeNfsDriver(nfs_base.NetAppNfsDriver,
|
||||
data['volume_backend_name'] = backend_name or self.driver_name
|
||||
data['vendor_name'] = 'NetApp'
|
||||
data['driver_version'] = self.VERSION
|
||||
data['storage_protocol'] = 'nfs'
|
||||
data['storage_protocol'] = constants.NFS_VARIANT
|
||||
data['pools'] = self._get_pool_stats(
|
||||
filter_function=self.get_filter_function(),
|
||||
goodness_function=self.get_goodness_function())
|
||||
|
@ -16,6 +16,7 @@ from oslo_log import log as logging
|
||||
from oslo_utils import excutils
|
||||
import six
|
||||
|
||||
from cinder.common import constants
|
||||
from cinder import exception
|
||||
from cinder.i18n import _
|
||||
from cinder import interface
|
||||
@ -664,7 +665,7 @@ class NexentaISCSIDriver(driver.ISCSIDriver):
|
||||
'compression': self.volume_compression,
|
||||
'description': self.volume_description,
|
||||
'driver_version': self.VERSION,
|
||||
'storage_protocol': 'iSCSI',
|
||||
'storage_protocol': constants.ISCSI,
|
||||
'total_capacity_gb': total_amount,
|
||||
'free_capacity_gb': free_amount,
|
||||
'reserved_percentage': self.configuration.reserved_percentage,
|
||||
|
@ -23,6 +23,7 @@ from oslo_utils.secretutils import md5
|
||||
from oslo_utils import units
|
||||
import six
|
||||
|
||||
from cinder.common import constants
|
||||
from cinder import context
|
||||
from cinder import db
|
||||
from cinder import exception
|
||||
@ -823,7 +824,7 @@ class NexentaNfsDriver(nfs.NfsDriver): # pylint: disable=R0921
|
||||
'nms_url': nms_url,
|
||||
'ns_shares': self.shares_with_capacities,
|
||||
'driver_version': self.VERSION,
|
||||
'storage_protocol': 'NFS',
|
||||
'storage_protocol': constants.NFS,
|
||||
'total_capacity_gb': total_space,
|
||||
'free_capacity_gb': free_space,
|
||||
'reserved_percentage': self.configuration.reserved_percentage,
|
||||
|
@ -22,6 +22,7 @@ from oslo_log import log as logging
|
||||
from oslo_utils import units
|
||||
import six
|
||||
|
||||
from cinder.common import constants
|
||||
from cinder import context
|
||||
from cinder import coordination
|
||||
from cinder.i18n import _
|
||||
@ -77,7 +78,7 @@ class NexentaISCSIDriver(driver.ISCSIDriver):
|
||||
|
||||
vendor_name = 'Nexenta'
|
||||
product_name = 'NexentaStor5'
|
||||
storage_protocol = 'iSCSI'
|
||||
storage_protocol = constants.ISCSI
|
||||
driver_volume_type = 'iscsi'
|
||||
|
||||
def __init__(self, *args, **kwargs):
|
||||
|
@ -23,6 +23,7 @@ from oslo_utils.secretutils import md5
|
||||
from oslo_utils import units
|
||||
import six
|
||||
|
||||
from cinder.common import constants
|
||||
from cinder import context
|
||||
from cinder import coordination
|
||||
from cinder.i18n import _
|
||||
@ -88,7 +89,7 @@ class NexentaNfsDriver(nfs.NfsDriver):
|
||||
|
||||
vendor_name = 'Nexenta'
|
||||
product_name = 'NexentaStor5'
|
||||
storage_protocol = 'NFS'
|
||||
storage_protocol = constants.NFS
|
||||
driver_volume_type = 'nfs'
|
||||
|
||||
def __init__(self, *args, **kwargs):
|
||||
|
@ -20,6 +20,7 @@ import string
|
||||
from oslo_log import log as logging
|
||||
from oslo_utils import units as o_units
|
||||
|
||||
from cinder.common import constants
|
||||
from cinder import exception
|
||||
from cinder.i18n import _
|
||||
from cinder import interface
|
||||
@ -743,7 +744,7 @@ class JovianISCSIDriver(driver.ISCSIDriver):
|
||||
self._stats = {
|
||||
'vendor_name': 'Open-E',
|
||||
'driver_version': self.VERSION,
|
||||
'storage_protocol': 'iSCSI',
|
||||
'storage_protocol': constants.ISCSI,
|
||||
'total_capacity_gb': total_capacity,
|
||||
'free_capacity_gb': free_capacity,
|
||||
'reserved_percentage': int(reserved_percentage),
|
||||
|
@ -17,6 +17,7 @@ import errno
|
||||
|
||||
from oslo_log import log as logging
|
||||
|
||||
from cinder.common import constants
|
||||
from cinder import exception
|
||||
from cinder.i18n import _
|
||||
from cinder import interface
|
||||
@ -389,7 +390,7 @@ class DPLFCDriver(dplcommon.DPLCOMMONDriver,
|
||||
if refresh:
|
||||
data = super(DPLFCDriver, self).get_volume_stats(refresh)
|
||||
if data:
|
||||
data['storage_protocol'] = 'FC'
|
||||
data['storage_protocol'] = constants.FC
|
||||
backend_name = \
|
||||
self.configuration.safe_get('volume_backend_name')
|
||||
data['volume_backend_name'] = (backend_name or 'DPLFCDriver')
|
||||
|
@ -17,6 +17,7 @@ import errno
|
||||
|
||||
from oslo_log import log as logging
|
||||
|
||||
from cinder.common import constants
|
||||
from cinder import exception
|
||||
from cinder.i18n import _
|
||||
from cinder import interface
|
||||
@ -144,7 +145,7 @@ class DPLISCSIDriver(dplcommon.DPLCOMMONDriver,
|
||||
try:
|
||||
data = super(DPLISCSIDriver, self).get_volume_stats(refresh)
|
||||
if data:
|
||||
data['storage_protocol'] = 'iSCSI'
|
||||
data['storage_protocol'] = constants.ISCSI
|
||||
backend_name = \
|
||||
self.configuration.safe_get('volume_backend_name')
|
||||
data['volume_backend_name'] = \
|
||||
|
@ -34,6 +34,7 @@ import requests
|
||||
import six
|
||||
from six.moves import http_client
|
||||
|
||||
from cinder.common import constants
|
||||
from cinder import exception
|
||||
from cinder.i18n import _
|
||||
from cinder import objects
|
||||
@ -1455,7 +1456,7 @@ class DPLCOMMONDriver(driver.CloneableImageVD,
|
||||
if ret == 0:
|
||||
data['vendor_name'] = output['metadata']['vendor']
|
||||
data['driver_version'] = output['metadata']['version']
|
||||
data['storage_protocol'] = 'iSCSI'
|
||||
data['storage_protocol'] = constants.ISCSI
|
||||
data['location_info'] = location_info
|
||||
data['consistencygroup_support'] = True
|
||||
data['consistent_group_snapshot_enabled'] = True
|
||||
|
@ -35,6 +35,7 @@ try:
|
||||
except ImportError:
|
||||
purestorage = None
|
||||
|
||||
from cinder.common import constants
|
||||
from cinder import context
|
||||
from cinder import exception
|
||||
from cinder.i18n import _
|
||||
@ -2526,7 +2527,7 @@ class PureISCSIDriver(PureBaseVolumeDriver, san.SanISCSIDriver):
|
||||
def __init__(self, *args, **kwargs):
|
||||
execute = kwargs.pop("execute", utils.execute)
|
||||
super(PureISCSIDriver, self).__init__(execute=execute, *args, **kwargs)
|
||||
self._storage_protocol = "iSCSI"
|
||||
self._storage_protocol = constants.ISCSI
|
||||
|
||||
def _get_host(self, array, connector, remote=False):
|
||||
"""Return dict describing existing Purity host object or None."""
|
||||
@ -2748,7 +2749,7 @@ class PureFCDriver(PureBaseVolumeDriver, driver.FibreChannelDriver):
|
||||
def __init__(self, *args, **kwargs):
|
||||
execute = kwargs.pop("execute", utils.execute)
|
||||
super(PureFCDriver, self).__init__(execute=execute, *args, **kwargs)
|
||||
self._storage_protocol = "FC"
|
||||
self._storage_protocol = constants.FC
|
||||
self._lookup_service = fczm_utils.create_lookup_service()
|
||||
|
||||
def _get_host(self, array, connector, remote=False):
|
||||
|
@ -35,6 +35,7 @@ import requests
|
||||
import six
|
||||
from six.moves import urllib
|
||||
|
||||
from cinder.common import constants
|
||||
from cinder import exception
|
||||
from cinder.i18n import _
|
||||
from cinder import interface
|
||||
@ -51,7 +52,7 @@ qnap_opts = [
|
||||
cfg.StrOpt('qnap_poolname',
|
||||
help='The pool name in the QNAP Storage'),
|
||||
cfg.StrOpt('qnap_storage_protocol',
|
||||
default='iscsi',
|
||||
default=constants.ISCSI,
|
||||
help='Communication protocol to access QNAP storage')
|
||||
]
|
||||
|
||||
|
@ -40,6 +40,7 @@ except ImportError:
|
||||
rados = None
|
||||
rbd = None
|
||||
|
||||
from cinder.common import constants
|
||||
from cinder import context
|
||||
from cinder import exception
|
||||
from cinder.i18n import _
|
||||
@ -243,7 +244,7 @@ class RBDDriver(driver.CloneableImageVD, driver.MigrateVD,
|
||||
RBD_FEATURE_OBJECT_MAP = 8
|
||||
RBD_FEATURE_FAST_DIFF = 16
|
||||
RBD_FEATURE_JOURNALING = 64
|
||||
STORAGE_PROTOCOL = 'ceph'
|
||||
STORAGE_PROTOCOL = constants.CEPH
|
||||
|
||||
def __init__(self,
|
||||
active_backend_id: str = None,
|
||||
@ -2065,7 +2066,7 @@ class RBDDriver(driver.CloneableImageVD, driver.MigrateVD,
|
||||
'migration.')
|
||||
return refuse_to_migrate
|
||||
|
||||
if (host['capabilities']['storage_protocol'] != 'ceph'):
|
||||
if (host['capabilities']['storage_protocol'] != self.STORAGE_PROTOCOL):
|
||||
LOG.debug('Source and destination drivers need to be RBD '
|
||||
'to use backend assisted migration. Falling back to '
|
||||
'generic migration.')
|
||||
|
@ -26,6 +26,7 @@ except ImportError:
|
||||
RSDLib = None
|
||||
sushy_exceptions = None
|
||||
|
||||
from cinder.common import constants
|
||||
from cinder import exception
|
||||
from cinder.i18n import _
|
||||
from cinder import interface
|
||||
@ -594,7 +595,7 @@ class RSDDriver(driver.VolumeDriver):
|
||||
self._stats['volume_backend_name'] = backend_name
|
||||
self._stats['vendor_name'] = 'Intel'
|
||||
self._stats['driver_version'] = self.VERSION
|
||||
self._stats['storage_protocol'] = 'nvmeof'
|
||||
self._stats['storage_protocol'] = constants.NVMEOF_VARIANT_2
|
||||
# SinglePool
|
||||
self._stats['pools'] = [spool]
|
||||
|
||||
|
@ -18,6 +18,7 @@ from oslo_config import cfg
|
||||
from oslo_log import log as logging
|
||||
from oslo_utils import units
|
||||
|
||||
from cinder.common import constants
|
||||
from cinder import exception
|
||||
from cinder.i18n import _
|
||||
from cinder import interface
|
||||
@ -334,7 +335,7 @@ class SdsISCSIDriver(SdsBaseDriver, driver.ISCSIDriver):
|
||||
data = SdsBaseDriver.get_volume_stats(self, refresh)
|
||||
backend_name = self.configuration.safe_get('volume_backend_name')
|
||||
data['volume_backend_name'] = backend_name or self.__class__.__name__
|
||||
data['storage_protocol'] = 'iSCSI'
|
||||
data['storage_protocol'] = constants.ISCSI
|
||||
data['driver_version'] = self.VERSION
|
||||
data['vendor_name'] = 'SandStone USP'
|
||||
return data
|
||||
|
@ -31,6 +31,7 @@ from oslo_utils import units
|
||||
import requests
|
||||
import six
|
||||
|
||||
from cinder.common import constants
|
||||
from cinder import context
|
||||
from cinder import exception
|
||||
from cinder.i18n import _
|
||||
@ -2163,7 +2164,7 @@ class SolidFireDriver(san.SanISCSIDriver):
|
||||
data["volume_backend_name"] = backend_name or self.__class__.__name__
|
||||
data["vendor_name"] = 'SolidFire Inc'
|
||||
data["driver_version"] = self.VERSION
|
||||
data["storage_protocol"] = 'iSCSI'
|
||||
data["storage_protocol"] = constants.ISCSI
|
||||
data['consistencygroup_support'] = True
|
||||
data['consistent_group_snapshot_enabled'] = True
|
||||
data['replication_enabled'] = self.replication_enabled
|
||||
|
@ -19,6 +19,7 @@ from oslo_utils import importutils
|
||||
from oslo_utils import units
|
||||
import requests
|
||||
|
||||
from cinder.common import constants
|
||||
from cinder import context
|
||||
from cinder import exception
|
||||
from cinder.i18n import _
|
||||
@ -91,7 +92,7 @@ class SPDKDriver(driver.VolumeDriver):
|
||||
status = {'volume_backend_name': 'SPDK',
|
||||
'vendor_name': 'Open Source',
|
||||
'driver_version': self.VERSION,
|
||||
'storage_protocol': 'NVMe-oF'}
|
||||
'storage_protocol': constants.NVMEOF}
|
||||
pools_status = []
|
||||
self.lvs = []
|
||||
|
||||
@ -109,7 +110,7 @@ class SPDKDriver(driver.VolumeDriver):
|
||||
pool["volume_backend_name"] = 'SPDK'
|
||||
pool["vendor_name"] = 'Open Source'
|
||||
pool["driver_version"] = self.VERSION
|
||||
pool["storage_protocol"] = 'NVMe-oF'
|
||||
pool["storage_protocol"] = constants.NVMEOF
|
||||
pool["total_capacity_gb"] = total_size
|
||||
pool["free_capacity_gb"] = free_size
|
||||
pool["pool_name"] = lvs['name']
|
||||
|
@ -23,6 +23,7 @@ from oslo_utils import importutils
|
||||
from oslo_utils import units
|
||||
import six
|
||||
|
||||
from cinder.common import constants
|
||||
from cinder import exception
|
||||
from cinder.i18n import _
|
||||
from cinder import interface
|
||||
@ -305,7 +306,7 @@ class StorPoolDriver(driver.VolumeDriver):
|
||||
'volume_backend_name') or 'storpool',
|
||||
'vendor_name': 'StorPool',
|
||||
'driver_version': self.VERSION,
|
||||
'storage_protocol': 'storpool',
|
||||
'storage_protocol': constants.STORPOOL,
|
||||
|
||||
'sparse_copy_volume': True,
|
||||
|
||||
|
@ -15,6 +15,7 @@
|
||||
# under the License.
|
||||
#
|
||||
|
||||
from cinder.common import constants
|
||||
import cinder.volume.driver
|
||||
import cinder.volume.drivers.san.san as san
|
||||
import cinder.volume.drivers.stx.common as common
|
||||
@ -146,7 +147,7 @@ class STXFCDriver(cinder.volume.driver.FibreChannelDriver):
|
||||
|
||||
def get_volume_stats(self, refresh=False):
|
||||
stats = self.common.get_volume_stats(refresh)
|
||||
stats['storage_protocol'] = 'FC'
|
||||
stats['storage_protocol'] = constants.FC
|
||||
stats['driver_version'] = self.VERSION
|
||||
backend_name = self.configuration.safe_get('volume_backend_name')
|
||||
stats['volume_backend_name'] = (backend_name or
|
||||
|
@ -17,6 +17,7 @@
|
||||
|
||||
from oslo_log import log as logging
|
||||
|
||||
from cinder.common import constants
|
||||
from cinder import exception
|
||||
from cinder.i18n import _
|
||||
import cinder.volume.driver
|
||||
@ -161,7 +162,7 @@ class STXISCSIDriver(cinder.volume.driver.ISCSIDriver):
|
||||
|
||||
def get_volume_stats(self, refresh=False):
|
||||
stats = self.common.get_volume_stats(refresh)
|
||||
stats['storage_protocol'] = 'iSCSI'
|
||||
stats['storage_protocol'] = constants.ISCSI
|
||||
stats['driver_version'] = self.VERSION
|
||||
backend_name = self.configuration.safe_get('volume_backend_name')
|
||||
stats['volume_backend_name'] = (backend_name or
|
||||
|
@ -30,6 +30,7 @@ from oslo_utils import excutils
|
||||
from oslo_utils import units
|
||||
import paramiko
|
||||
|
||||
from cinder.common import constants
|
||||
from cinder import coordination
|
||||
from cinder import exception
|
||||
from cinder.i18n import _
|
||||
@ -355,7 +356,7 @@ class Acs5000CommonDriver(san.SanDriver,
|
||||
self._state.update(self._cmd.get_system())
|
||||
|
||||
self._state['controller'] = self._cmd.ls_controller()
|
||||
if self.protocol == 'FC':
|
||||
if self.protocol == constants.FC:
|
||||
ports = self._cmd.ls_fc()
|
||||
else:
|
||||
ports = self._cmd.ls_iscsi()
|
||||
|
@ -19,6 +19,7 @@ acs5000 FC driver
|
||||
|
||||
from oslo_log import log as logging
|
||||
|
||||
from cinder.common import constants
|
||||
from cinder import exception
|
||||
from cinder.i18n import _
|
||||
from cinder import interface
|
||||
@ -42,7 +43,7 @@ class Acs5000FCDriver(acs5000_common.Acs5000CommonDriver):
|
||||
|
||||
VENDOR = 'TOYOU'
|
||||
VERSION = '1.0.0'
|
||||
PROTOCOL = 'FC'
|
||||
PROTOCOL = constants.FC
|
||||
|
||||
# ThirdPartySystems wiki page
|
||||
CI_WIKI_NAME = 'TOYOU_ACS5000_CI'
|
||||
|
@ -19,6 +19,7 @@ acs5000 iSCSI driver
|
||||
|
||||
from oslo_log import log as logging
|
||||
|
||||
from cinder.common import constants
|
||||
from cinder import exception
|
||||
from cinder.i18n import _
|
||||
from cinder import interface
|
||||
@ -41,7 +42,7 @@ class Acs5000ISCSIDriver(acs5000_common.Acs5000CommonDriver):
|
||||
|
||||
VENDOR = 'TOYOU'
|
||||
VERSION = '1.0.0'
|
||||
PROTOCOL = 'iSCSI'
|
||||
PROTOCOL = constants.ISCSI
|
||||
|
||||
# ThirdPartySystems wiki page
|
||||
CI_WIKI_NAME = 'TOYOU_ACS5000_CI'
|
||||
|
@ -31,6 +31,7 @@ import requests
|
||||
import requests.auth
|
||||
from six.moves import http_client
|
||||
|
||||
from cinder.common import constants
|
||||
from cinder import exception
|
||||
from cinder.i18n import _
|
||||
from cinder import interface
|
||||
@ -85,7 +86,6 @@ class ACCESSIscsiDriver(driver.ISCSIDriver):
|
||||
VERSION = "1.0"
|
||||
# ThirdPartySytems wiki page
|
||||
CI_WIKI_NAME = "Veritas_Access_CI"
|
||||
DRIVER_VOLUME_TYPE = 'iSCSI'
|
||||
LUN_FOUND_INTERVAL = 30 # seconds
|
||||
|
||||
# TODO(jsbryant) Remove driver in the 'U' release if CI is not fixed.
|
||||
@ -892,7 +892,7 @@ class ACCESSIscsiDriver(driver.ISCSIDriver):
|
||||
self._stats["vendor_name"] = 'Veritas'
|
||||
self._stats["reserved_percentage"] = res_percentage or 0
|
||||
self._stats["driver_version"] = self.VERSION
|
||||
self._stats["storage_protocol"] = self.DRIVER_VOLUME_TYPE
|
||||
self._stats["storage_protocol"] = constants.ISCSI
|
||||
self._stats['total_capacity_gb'] = total_capacity
|
||||
self._stats['free_capacity_gb'] = free_capacity
|
||||
self._stats['thin_provisioning_support'] = True
|
||||
|
@ -18,6 +18,7 @@ import os
|
||||
from oslo_log import log as logging
|
||||
from oslo_utils import excutils
|
||||
|
||||
from cinder.common import constants
|
||||
from cinder import exception
|
||||
from cinder.i18n import _
|
||||
from cinder import interface
|
||||
@ -52,7 +53,7 @@ class VeritasCNFSDriver(nfs.NfsDriver):
|
||||
VERSION = "1.0.3"
|
||||
# ThirdPartySytems wiki page
|
||||
CI_WIKI_NAME = "Veritas_Access_CI"
|
||||
DRIVER_VOLUME_TYPE = 'nfs'
|
||||
DRIVER_VOLUME_TYPE = constants.NFS_VARIANT
|
||||
|
||||
# TODO(jsbryant) Remove driver in the 'V' release if CI is not fixed.
|
||||
SUPPORTED = False
|
||||
|
@ -27,6 +27,7 @@ from oslo_vmware import image_transfer
|
||||
from oslo_vmware.objects import datastore
|
||||
from oslo_vmware import vim_util
|
||||
|
||||
from cinder.common import constants
|
||||
from cinder import exception
|
||||
from cinder.i18n import _
|
||||
from cinder import interface
|
||||
@ -55,7 +56,7 @@ class VMwareVStorageObjectDriver(vmdk.VMwareVcVmdkDriver):
|
||||
# minimum supported vCenter version
|
||||
MIN_SUPPORTED_VC_VERSION = '6.5'
|
||||
|
||||
STORAGE_TYPE = 'vstorageobject'
|
||||
STORAGE_TYPE = constants.VSTORAGE
|
||||
|
||||
def do_setup(self, context):
|
||||
"""Any initialization the volume driver needs to do while starting.
|
||||
|
@ -37,6 +37,7 @@ from oslo_vmware import image_transfer
|
||||
from oslo_vmware import pbm
|
||||
from oslo_vmware import vim_util
|
||||
|
||||
from cinder.common import constants
|
||||
from cinder import exception
|
||||
from cinder.i18n import _
|
||||
from cinder.image import image_utils
|
||||
@ -369,7 +370,7 @@ class VMwareVcVmdkDriver(driver.VolumeDriver):
|
||||
data = {'volume_backend_name': backend_name,
|
||||
'vendor_name': 'VMware',
|
||||
'driver_version': self.VERSION,
|
||||
'storage_protocol': 'vmdk',
|
||||
'storage_protocol': constants.VMDK,
|
||||
'reserved_percentage': self.configuration.reserved_percentage,
|
||||
'shared_targets': False}
|
||||
ds_summaries = self._get_datastore_summaries()
|
||||
|
@ -29,6 +29,7 @@ from oslo_utils import fileutils
|
||||
from oslo_utils import units
|
||||
from oslo_utils import uuidutils
|
||||
|
||||
from cinder.common import constants
|
||||
from cinder import exception
|
||||
from cinder.image import image_utils
|
||||
from cinder import interface
|
||||
@ -334,7 +335,7 @@ class WindowsISCSIDriver(driver.ISCSIDriver):
|
||||
data["volume_backend_name"] = backend_name or self.__class__.__name__
|
||||
data["vendor_name"] = 'Microsoft'
|
||||
data["driver_version"] = self.VERSION
|
||||
data["storage_protocol"] = 'iSCSI'
|
||||
data["storage_protocol"] = constants.ISCSI
|
||||
data['total_capacity_gb'] = total_gb
|
||||
data['free_capacity_gb'] = free_gb
|
||||
data['reserved_percentage'] = self.configuration.reserved_percentage
|
||||
|
@ -22,6 +22,7 @@ from oslo_log import log as logging
|
||||
from oslo_utils import strutils
|
||||
import six
|
||||
|
||||
from cinder.common import constants
|
||||
from cinder import exception as cinder_exception
|
||||
from cinder.i18n import _
|
||||
from cinder import interface
|
||||
@ -709,9 +710,9 @@ class ZadaraVPSAISCSIDriver(driver.ISCSIDriver):
|
||||
"""Retrieve stats info from volume group."""
|
||||
LOG.debug("Updating volume stats")
|
||||
backend_name = self.configuration.safe_get('volume_backend_name')
|
||||
storage_protocol = ('iSER' if
|
||||
storage_protocol = (constants.ISER if
|
||||
(self.configuration.safe_get('zadara_use_iser'))
|
||||
else 'iSCSI')
|
||||
else constants.ISCSI)
|
||||
pool_name = self.configuration.zadara_vpsa_poolname
|
||||
(total, free, provisioned) = self.vpsa._get_pool_capacity(pool_name)
|
||||
data = dict(
|
||||
|
@ -844,9 +844,10 @@ class VolumeManager(manager.CleanableManager,
|
||||
|
||||
# Shared targets is only relevant for iSCSI connections.
|
||||
# We default to True to be on the safe side.
|
||||
capabilities = self.driver.capabilities
|
||||
volume.shared_targets = (
|
||||
self.driver.capabilities.get('storage_protocol') == 'iSCSI' and
|
||||
self.driver.capabilities.get('shared_targets', True))
|
||||
capabilities.get('storage_protocol') in constants.ISCSI_VARIANTS
|
||||
and capabilities.get('shared_targets', True))
|
||||
# TODO(geguileo): service_uuid won't be enough on Active/Active
|
||||
# deployments. There can be 2 services handling volumes from the same
|
||||
# backend.
|
||||
@ -2761,8 +2762,8 @@ class VolumeManager(manager.CleanableManager,
|
||||
|
||||
# Append cacheable flag for iSCSI/FC/NVMe-oF and only when
|
||||
# cacheable is not set in driver level
|
||||
if volume_stats.get('storage_protocol') in [
|
||||
'iSCSI', 'FC', 'NVMe-oF']:
|
||||
if (volume_stats.get('storage_protocol')
|
||||
in constants.CACHEABLE_PROTOCOLS):
|
||||
if volume_stats.get('pools'):
|
||||
for pool in volume_stats.get('pools'):
|
||||
if pool.get('cacheable') is None:
|
||||
|
@ -15,6 +15,7 @@ import abc
|
||||
from oslo_concurrency import processutils
|
||||
from oslo_log import log as logging
|
||||
|
||||
from cinder.common import constants
|
||||
from cinder import exception
|
||||
from cinder.i18n import _
|
||||
from cinder import utils
|
||||
@ -37,7 +38,7 @@ class ISCSITarget(driver.Target):
|
||||
super(ISCSITarget, self).__init__(*args, **kwargs)
|
||||
self.iscsi_target_prefix = self.configuration.safe_get('target_prefix')
|
||||
self.iscsi_protocol = self.configuration.safe_get('target_protocol')
|
||||
self.protocol = 'iSCSI'
|
||||
self.protocol = constants.ISCSI
|
||||
self.volumes_dir = self.configuration.safe_get('volumes_dir')
|
||||
|
||||
def _get_iscsi_properties(self, volume, multipath=False):
|
||||
|
@ -14,6 +14,7 @@ import abc
|
||||
|
||||
from oslo_log import log as logging
|
||||
|
||||
from cinder.common import constants
|
||||
from cinder import exception
|
||||
from cinder.i18n import _
|
||||
from cinder.volume.targets import driver
|
||||
@ -31,7 +32,7 @@ class NVMeOF(driver.Target):
|
||||
|
||||
"""Target object for block storage devices with RDMA transport."""
|
||||
|
||||
protocol = 'nvmeof'
|
||||
protocol = constants.NVMEOF_VARIANT_2
|
||||
target_protocol_map = {
|
||||
'nvmet_rdma': 'rdma',
|
||||
'nvmet_tcp': 'tcp',
|
||||
|
@ -0,0 +1,5 @@
|
||||
---
|
||||
fixes:
|
||||
- |
|
||||
`Bug #1969366 <https://bugs.launchpad.net/cinder/+bug/1969366>`_: Fixed
|
||||
reporting of cacheable capability by drivers.
|
Loading…
Reference in New Issue
Block a user