From d6d5014bce0aac69346cbaeba31cb08fe8f4147c Mon Sep 17 00:00:00 2001 From: nikeshm Date: Tue, 2 Jun 2015 22:48:46 +0530 Subject: [PATCH] Adds FC and ISCSI Cinder drivers for HPMSA Storage Arrays 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 Change-Id: I21184872d1eb3838adc47fe9027de12a1702465d --- cinder/volume/drivers/san/hp/hpmsa_client.py | 24 +++++++++ cinder/volume/drivers/san/hp/hpmsa_common.py | 56 ++++++++++++++++++++ cinder/volume/drivers/san/hp/hpmsa_fc.py | 36 +++++++++++++ cinder/volume/drivers/san/hp/hpmsa_iscsi.py | 38 +++++++++++++ 4 files changed, 154 insertions(+) create mode 100644 cinder/volume/drivers/san/hp/hpmsa_client.py create mode 100644 cinder/volume/drivers/san/hp/hpmsa_common.py create mode 100644 cinder/volume/drivers/san/hp/hpmsa_fc.py create mode 100644 cinder/volume/drivers/san/hp/hpmsa_iscsi.py diff --git a/cinder/volume/drivers/san/hp/hpmsa_client.py b/cinder/volume/drivers/san/hp/hpmsa_client.py new file mode 100644 index 000000000..43185525b --- /dev/null +++ b/cinder/volume/drivers/san/hp/hpmsa_client.py @@ -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 index 000000000..051ae4b76 --- /dev/null +++ b/cinder/volume/drivers/san/hp/hpmsa_common.py @@ -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 index 000000000..8bcdf5f04 --- /dev/null +++ b/cinder/volume/drivers/san/hp/hpmsa_fc.py @@ -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 index 000000000..051b0bef6 --- /dev/null +++ b/cinder/volume/drivers/san/hp/hpmsa_iscsi.py @@ -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) -- 2.45.2