HPE 3PAR: Adding driver capability
Added 3par capability which can be used for setting properties of volume type. DocImpact Change-Id: I29eb8ccd1f6853b30f236fec46f06b446e6b87ae
This commit is contained in:
parent
ae7355c1f8
commit
9e46d6e1a6
@ -5451,6 +5451,26 @@ class TestHPE3PARDriverBase(HPE3PARBaseDriver):
|
|||||||
expected)
|
expected)
|
||||||
self.assertTrue(common._replication_enabled)
|
self.assertTrue(common._replication_enabled)
|
||||||
|
|
||||||
|
def test_init_vendor_properties(self):
|
||||||
|
conf = self.setup_configuration()
|
||||||
|
mock_client = self.setup_driver(config=conf)
|
||||||
|
|
||||||
|
with mock.patch.object(
|
||||||
|
hpecommon.HPE3PARCommon,
|
||||||
|
'_create_client') as mock_create_client:
|
||||||
|
mock_create_client.return_value = mock_client
|
||||||
|
with mock.patch.object(self.driver,
|
||||||
|
'get_volume_stats') as stats:
|
||||||
|
stats.return_value = {}
|
||||||
|
# calling vendor properties from driver.
|
||||||
|
self.driver.init_capabilities()
|
||||||
|
# calling vendor properties from specific 3par driver.
|
||||||
|
properties, vendor_name = self.driver._init_vendor_properties()
|
||||||
|
for key in self.driver.capabilities['properties']:
|
||||||
|
new_key = key.replace('_', ':')
|
||||||
|
if 'HP:3PAR' in new_key:
|
||||||
|
self.assertIn(new_key, properties)
|
||||||
|
|
||||||
|
|
||||||
class TestHPE3PARFCDriver(HPE3PARBaseDriver):
|
class TestHPE3PARFCDriver(HPE3PARBaseDriver):
|
||||||
|
|
||||||
|
@ -54,10 +54,11 @@ class HPE3PARDriverBase(driver.ManageableVD,
|
|||||||
|
|
||||||
1.0.0 - Initial base driver
|
1.0.0 - Initial base driver
|
||||||
1.0.1 - Adds consistency group capability in generic volume groups.
|
1.0.1 - Adds consistency group capability in generic volume groups.
|
||||||
|
1.0.2 - Adds capability.
|
||||||
|
|
||||||
"""
|
"""
|
||||||
|
|
||||||
VERSION = "1.0.1"
|
VERSION = "1.0.2"
|
||||||
|
|
||||||
def __init__(self, *args, **kwargs):
|
def __init__(self, *args, **kwargs):
|
||||||
super(HPE3PARDriverBase, self).__init__(*args, **kwargs)
|
super(HPE3PARDriverBase, self).__init__(*args, **kwargs)
|
||||||
@ -381,3 +382,217 @@ class HPE3PARDriverBase(driver.ManageableVD,
|
|||||||
|
|
||||||
def initialize_connection(self, volume, connector):
|
def initialize_connection(self, volume, connector):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
@utils.trace
|
||||||
|
def _init_vendor_properties(self):
|
||||||
|
"""Create a dictionary of vendor unique properties.
|
||||||
|
|
||||||
|
This method creates a dictionary of vendor unique properties
|
||||||
|
and returns both created dictionary and vendor name.
|
||||||
|
Returned vendor name is used to check for name of vendor
|
||||||
|
unique properties.
|
||||||
|
|
||||||
|
- Vendor name shouldn't include colon(:) because of the separator
|
||||||
|
and it is automatically replaced by underscore(_).
|
||||||
|
ex. abc:d -> abc_d
|
||||||
|
- Vendor prefix is equal to vendor name.
|
||||||
|
ex. abcd
|
||||||
|
- Vendor unique properties must start with vendor prefix + ':'.
|
||||||
|
ex. abcd:maxIOPS
|
||||||
|
|
||||||
|
Each backend driver needs to override this method to expose
|
||||||
|
its own properties using _set_property() like this:
|
||||||
|
|
||||||
|
self._set_property(
|
||||||
|
properties,
|
||||||
|
"vendorPrefix:specific_property",
|
||||||
|
"Title of property",
|
||||||
|
_("Description of property"),
|
||||||
|
"type")
|
||||||
|
|
||||||
|
: return dictionary of vendor unique properties
|
||||||
|
: return vendor name
|
||||||
|
|
||||||
|
prefix: HPE:3PAR --> HPE_3PAR
|
||||||
|
"""
|
||||||
|
|
||||||
|
properties = {}
|
||||||
|
valid_prov_values = ['thin', 'full', 'dedup']
|
||||||
|
valid_persona_values = ['2 - Generic-ALUA',
|
||||||
|
'1 - Generic',
|
||||||
|
'3 - Generic-legacy',
|
||||||
|
'4 - HPEUX-legacy',
|
||||||
|
'5 - AIX-legacy',
|
||||||
|
'6 - EGENERA',
|
||||||
|
'7 - ONTAP-legacy',
|
||||||
|
'8 - VMware',
|
||||||
|
'9 - OpenVMS',
|
||||||
|
'10 - HPEUX',
|
||||||
|
'11 - WindowsServer']
|
||||||
|
|
||||||
|
self._set_property(
|
||||||
|
properties,
|
||||||
|
"HPE:3PAR:hpe3par:snap_cpg",
|
||||||
|
"Snap CPG Extra-specs.",
|
||||||
|
_("Specifies the Snap CPG for a volume type. It overrides the "
|
||||||
|
"hpe3par_cpg_snap setting. Defaults to the hpe3par_cpg_snap "
|
||||||
|
"setting in the cinder.conf file. If hpe3par_cpg_snap is not "
|
||||||
|
"set, it defaults to the hpe3par_cpg setting."),
|
||||||
|
"string")
|
||||||
|
|
||||||
|
self._set_property(
|
||||||
|
properties,
|
||||||
|
"HPE:3PAR:hpe3par:persona",
|
||||||
|
"Host Persona Extra-specs.",
|
||||||
|
_("Specifies the host persona property for a volume type. It "
|
||||||
|
"overrides the hpe3par_cpg_snap setting. Defaults to the "
|
||||||
|
"hpe3par_cpg_snap setting in the cinder.conf file. "
|
||||||
|
"If hpe3par_cpg_snap is not set, "
|
||||||
|
"it defaults to the hpe3par_cpg setting."),
|
||||||
|
"string",
|
||||||
|
enum=valid_persona_values,
|
||||||
|
default="2 - Generic-ALUA")
|
||||||
|
|
||||||
|
self._set_property(
|
||||||
|
properties,
|
||||||
|
"HPE:3PAR:hpe3par:vvs",
|
||||||
|
"Virtual Volume Set Extra-specs.",
|
||||||
|
_("The virtual volume set name that has been set up by the "
|
||||||
|
"administrator that would have predefined QoS rules "
|
||||||
|
"associated with it. If you specify extra_specs "
|
||||||
|
"hpe3par:vvs, the qos_specs minIOPS, maxIOPS, minBWS, "
|
||||||
|
"and maxBWS settings are ignored."),
|
||||||
|
"string")
|
||||||
|
|
||||||
|
self._set_property(
|
||||||
|
properties,
|
||||||
|
"HPE:3PAR:hpe3par:flash_cache",
|
||||||
|
"Flash cache Extra-specs.",
|
||||||
|
_("Enables Flash cache setting for a volume type."),
|
||||||
|
"boolean",
|
||||||
|
default=False)
|
||||||
|
|
||||||
|
self._set_property(
|
||||||
|
properties,
|
||||||
|
"HPE:3PAR:hpe3par:provisioning",
|
||||||
|
"Storage Provisioning Extra-specs.",
|
||||||
|
_("Specifies the provisioning for a volume type."),
|
||||||
|
"string",
|
||||||
|
enum=valid_prov_values,
|
||||||
|
default="thin")
|
||||||
|
|
||||||
|
self._set_property(
|
||||||
|
properties,
|
||||||
|
"HPE:3PAR:hpe3par:compression",
|
||||||
|
"Storage Provisioning Extra-specs.",
|
||||||
|
_("Enables compression for a volume type. "
|
||||||
|
"Minimum requirement of 3par OS version is 3.3.1 "
|
||||||
|
"with SSD drives only. "
|
||||||
|
"Volume size must have > 16 GB to enable "
|
||||||
|
"compression on volume. "
|
||||||
|
"A full provisioned volume cannot be compressed."),
|
||||||
|
"boolean",
|
||||||
|
default=False)
|
||||||
|
|
||||||
|
self._set_property(
|
||||||
|
properties,
|
||||||
|
"HPE:3PAR:replication_enabled",
|
||||||
|
"Volume Replication Extra-specs.",
|
||||||
|
_("The valid value is: <is> True "
|
||||||
|
"If True, the volume is to be replicated, if supported, "
|
||||||
|
"by the backend driver. If the option is not specified or "
|
||||||
|
"false, then replication is not enabled. This option is "
|
||||||
|
"required to enable replication."),
|
||||||
|
"string",
|
||||||
|
enum=["<is> True"],
|
||||||
|
default=False)
|
||||||
|
|
||||||
|
self._set_property(
|
||||||
|
properties,
|
||||||
|
"HPE:3PAR:replication:mode",
|
||||||
|
"Replication Mode Extra-specs.",
|
||||||
|
_("Sets the replication mode for 3par."),
|
||||||
|
"string",
|
||||||
|
enum=["sync", "periodic"],
|
||||||
|
default="periodic")
|
||||||
|
|
||||||
|
self._set_property(
|
||||||
|
properties,
|
||||||
|
"HPE:3PAR:replication:sync_period",
|
||||||
|
"Sync Period for Volume Replication Extra-specs.",
|
||||||
|
_("Sets the time interval for synchronization. "
|
||||||
|
"Only needed if replication:mode is periodic."),
|
||||||
|
"integer",
|
||||||
|
default=900)
|
||||||
|
|
||||||
|
self._set_property(
|
||||||
|
properties,
|
||||||
|
"HPE:3PAR:replication:retention_count",
|
||||||
|
"Retention Count for Replication Extra-specs.",
|
||||||
|
_("Sets the number of snapshots that will be "
|
||||||
|
"saved on the primary array."),
|
||||||
|
"integer",
|
||||||
|
default=5)
|
||||||
|
|
||||||
|
self._set_property(
|
||||||
|
properties,
|
||||||
|
"HPE:3PAR:replication:remote_retention_count",
|
||||||
|
"Remote Retention Count for Replication Extra-specs.",
|
||||||
|
_("Sets the number of snapshots that will be "
|
||||||
|
"saved on the secondary array."),
|
||||||
|
"integer",
|
||||||
|
default=5)
|
||||||
|
|
||||||
|
# ###### QoS Settings ###### #
|
||||||
|
|
||||||
|
self._set_property(
|
||||||
|
properties,
|
||||||
|
"HPE:3PAR:minIOPS",
|
||||||
|
"Minimum IOPS QoS.",
|
||||||
|
_("Sets the QoS, I/O issue count minimum goal. "
|
||||||
|
"If not specified, there is no limit on I/O issue count."),
|
||||||
|
"integer")
|
||||||
|
|
||||||
|
self._set_property(
|
||||||
|
properties,
|
||||||
|
"HPE:3PAR:maxIOPS",
|
||||||
|
"Maximum IOPS QoS.",
|
||||||
|
_("Sets the QoS, I/O issue count rate limit. "
|
||||||
|
"If not specified, there is no limit on I/O issue count."),
|
||||||
|
"integer")
|
||||||
|
|
||||||
|
self._set_property(
|
||||||
|
properties,
|
||||||
|
"HPE:3PAR:minBWS",
|
||||||
|
"Minimum Bandwidth QoS.",
|
||||||
|
_("Sets the QoS, I/O issue bandwidth minimum goal. "
|
||||||
|
"If not specified, there is no limit on "
|
||||||
|
"I/O issue bandwidth rate."),
|
||||||
|
"integer")
|
||||||
|
|
||||||
|
self._set_property(
|
||||||
|
properties,
|
||||||
|
"HPE:3PAR:maxBWS",
|
||||||
|
"Maximum Bandwidth QoS.",
|
||||||
|
_("Sets the QoS, I/O issue bandwidth rate limit. "
|
||||||
|
"If not specified, there is no limit on I/O issue "
|
||||||
|
"bandwidth rate."),
|
||||||
|
"integer")
|
||||||
|
|
||||||
|
self._set_property(
|
||||||
|
properties,
|
||||||
|
"HPE:3PAR:latency",
|
||||||
|
"Latency QoS.",
|
||||||
|
_("Sets the latency goal in milliseconds."),
|
||||||
|
"integer")
|
||||||
|
|
||||||
|
self._set_property(
|
||||||
|
properties,
|
||||||
|
"HPE:3PAR:priority",
|
||||||
|
"Priority QoS.",
|
||||||
|
_("Sets the priority of the QoS rule over other rules."),
|
||||||
|
"string",
|
||||||
|
enum=["low", "normal", "high"],
|
||||||
|
default="normal")
|
||||||
|
|
||||||
|
return properties, 'HPE:3PAR'
|
||||||
|
@ -0,0 +1,4 @@
|
|||||||
|
---
|
||||||
|
features:
|
||||||
|
- |
|
||||||
|
Added get capability feature for HPE-3PAR.
|
Loading…
Reference in New Issue
Block a user