]> review.fuel-infra Code Review - openstack-build/cinder-build.git/commitdiff
Adds FC and ISCSI Cinder drivers for HPMSA Storage Arrays
authornikeshm <Nikesh.Mahalaka@dothill.com>
Tue, 2 Jun 2015 17:18:46 +0000 (22:48 +0530)
committernikeshm <Nikesh.Mahalaka@dothill.com>
Tue, 16 Jun 2015 23:38:57 +0000 (05:08 +0530)
These drivers depend upon DotHill Cinder drivers.
Using inheritance, we are able to reuse a lot of
DotHill cinder drivers source code.

Implements: blueprint hp-msa-fc-iscsi-cinder-driver
Co-Authored-By: Gauvain Pocentek<gauvain.pocentek@objectif-libre.com>
Change-Id: I21184872d1eb3838adc47fe9027de12a1702465d

cinder/volume/drivers/san/hp/hpmsa_client.py [new file with mode: 0644]
cinder/volume/drivers/san/hp/hpmsa_common.py [new file with mode: 0644]
cinder/volume/drivers/san/hp/hpmsa_fc.py [new file with mode: 0644]
cinder/volume/drivers/san/hp/hpmsa_iscsi.py [new file with mode: 0644]

diff --git a/cinder/volume/drivers/san/hp/hpmsa_client.py b/cinder/volume/drivers/san/hp/hpmsa_client.py
new file mode 100644 (file)
index 0000000..4318552
--- /dev/null
@@ -0,0 +1,24 @@
+#    Copyright 2014 Objectif Libre
+#    Copyright 2015 DotHill Systems
+#
+#    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 cinder.volume.drivers.dothill import dothill_client
+
+
+class HPMSAClient(dothill_client.DotHillClient):
+
+    def __init__(self, host, login, password, protocol):
+        super(HPMSAClient, self).__init__(host, login, password,
+                                          protocol)
diff --git a/cinder/volume/drivers/san/hp/hpmsa_common.py b/cinder/volume/drivers/san/hp/hpmsa_common.py
new file mode 100644 (file)
index 0000000..051ae4b
--- /dev/null
@@ -0,0 +1,56 @@
+#    Copyright 2014 Objectif Libre
+#    Copyright 2015 DotHill Systems
+#
+#    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 oslo_config import cfg
+
+from cinder.volume.drivers.dothill import dothill_common
+from cinder.volume.drivers.san.hp import hpmsa_client
+
+common_opt = [
+    cfg.StrOpt('hpmsa_backend_name',
+               default='OpenStack',
+               help="VDisk or Pool name to use for volume creation."),
+    cfg.StrOpt('hpmsa_backend_type',
+               choices=['linear', 'realstor'],
+               help="linear (for VDisk) or realstor (for Pool)."),
+    cfg.StrOpt('hpmsa_wbi_protocol',
+               choices=['http', 'https'],
+               help="HPMSA web interface protocol."),
+]
+
+iscsi_opt = [
+    cfg.ListOpt('hpmsa_iscsi_ips',
+                default=[],
+                help="List of comma separated target iSCSI IP addresses."),
+]
+
+CONF = cfg.CONF
+CONF.register_opts(common_opt)
+CONF.register_opts(iscsi_opt)
+
+
+class HPMSACommon(dothill_common.DotHillCommon):
+    VERSION = "1.0"
+
+    def __init__(self, config):
+        self.config = config
+        self.vendor_name = "HPMSA"
+        self.backend_name = self.config.hpmsa_backend_name
+        self.backend_type = self.config.hpmsa_backend_type
+        self.client = hpmsa_client.HPMSAClient(self.config.san_ip,
+                                               self.config.san_login,
+                                               self.config.san_password,
+                                               self.config.hpmsa_wbi_protocol)
diff --git a/cinder/volume/drivers/san/hp/hpmsa_fc.py b/cinder/volume/drivers/san/hp/hpmsa_fc.py
new file mode 100644 (file)
index 0000000..8bcdf5f
--- /dev/null
@@ -0,0 +1,36 @@
+#    Copyright 2014 Objectif Libre
+#    Copyright 2015 DotHill Systems
+#
+#    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 cinder.volume.drivers.dothill import dothill_fc
+from cinder.volume.drivers.san.hp import hpmsa_common
+
+
+class HPMSAFCDriver(dothill_fc.DotHillFCDriver):
+    """OpenStack Fibre Channel cinder drivers for HPMSA arrays.
+
+    Version history:
+        1.0    - Inheriting from DotHill cinder drivers.
+
+    """
+
+    VERSION = "1.0"
+
+    def __init__(self, *args, **kwargs):
+        super(HPMSAFCDriver, self).__init__(*args, **kwargs)
+        self.configuration.append_config_values(hpmsa_common.common_opt)
+
+    def _init_common(self):
+        return hpmsa_common.HPMSACommon(self.configuration)
diff --git a/cinder/volume/drivers/san/hp/hpmsa_iscsi.py b/cinder/volume/drivers/san/hp/hpmsa_iscsi.py
new file mode 100644 (file)
index 0000000..051b0be
--- /dev/null
@@ -0,0 +1,38 @@
+#    Copyright 2014 Objectif Libre
+#    Copyright 2015 DotHill Systems
+#
+#    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 cinder.volume.drivers.dothill import dothill_iscsi
+from cinder.volume.drivers.san.hp import hpmsa_common
+
+
+class HPMSAISCSIDriver(dothill_iscsi.DotHillISCSIDriver):
+    """OpenStack iSCSI cinder drivers for HPMSA arrays.
+
+    Version history:
+        1.0    - Inheriting from DotHill cinder drivers.
+
+    """
+
+    VERSION = "1.0"
+
+    def __init__(self, *args, **kwargs):
+        super(HPMSAISCSIDriver, self).__init__(*args, **kwargs)
+        self.configuration.append_config_values(hpmsa_common.common_opt)
+        self.configuration.append_config_values(hpmsa_common.iscsi_opt)
+        self.iscsi_ips = self.configuration.hpmsa_iscsi_ips
+
+    def _init_common(self):
+        return hpmsa_common.HPMSACommon(self.configuration)