These drivers depend upon DotHill Cinder drivers.
Using inheritance, we are able to reuse a lot of
DotHill cinder drivers source code.
Change-Id: Ica8631d6954898dbd90a71cc78625bb2aa3b5632
Co-Authored-By: Gauvain Pocentek<gauvain.pocentek@objectif-libre.com>
Implements: blueprint lenovo-fc-iscsi-cinder-driver
--- /dev/null
+# 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 LenovoClient(dothill_client.DotHillClient):
+
+ def __init__(self, host, login, password, protocol):
+ super(LenovoClient, self).__init__(host, login, password, protocol)
--- /dev/null
+# 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.lenovo import lenovo_client
+
+common_opt = [
+ cfg.StrOpt('lenovo_backend_name',
+ default='OpenStack',
+ help="VDisk or Pool name to use for volume creation."),
+ cfg.StrOpt('lenovo_backend_type',
+ choices=['linear', 'realstor'],
+ help="linear (for VDisk) or realstor (for Pool)."),
+ cfg.StrOpt('lenovo_wbi_protocol',
+ choices=['http', 'https'],
+ help="Lenovo web interface protocol."),
+]
+
+iscsi_opt = [
+ cfg.ListOpt('lenovo_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 LenovoCommon(dothill_common.DotHillCommon):
+ VERSION = "1.0"
+
+ def __init__(self, config):
+ self.config = config
+ self.vendor_name = "Lenovo"
+ self.backend_name = self.config.lenovo_backend_name
+ self.backend_type = self.config.lenovo_backend_type
+ self.wbi_protocol = self.config.lenovo_wbi_protocol
+ self.client = lenovo_client.LenovoClient(self.config.san_ip,
+ self.config.san_login,
+ self.config.san_password,
+ self.wbi_protocol)
--- /dev/null
+# 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.lenovo import lenovo_common
+
+
+class LenovoFCDriver(dothill_fc.DotHillFCDriver):
+ """OpenStack Fibre Channel cinder drivers for Lenovo Storage arrays.
+
+ Version history:
+ 1.0 - Inheriting from DotHill cinder drivers.
+
+ """
+
+ VERSION = "1.0"
+
+ def __init__(self, *args, **kwargs):
+ super(LenovoFCDriver, self).__init__(*args, **kwargs)
+ self.configuration.append_config_values(lenovo_common.common_opt)
+
+ def _init_common(self):
+ return lenovo_common.LenovoCommon(self.configuration)
--- /dev/null
+# 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.lenovo import lenovo_common
+
+
+class LenovoISCSIDriver(dothill_iscsi.DotHillISCSIDriver):
+ """OpenStack iSCSI cinder drivers for Lenovo Storage arrays.
+
+ Version history:
+ 1.0 - Inheriting from DotHill cinder drivers.
+
+ """
+
+ VERSION = "1.0"
+
+ def __init__(self, *args, **kwargs):
+ super(LenovoISCSIDriver, self).__init__(*args, **kwargs)
+ self.configuration.append_config_values(lenovo_common.common_opt)
+ self.configuration.append_config_values(lenovo_common.iscsi_opt)
+ self.iscsi_ips = self.configuration.lenovo_iscsi_ips
+
+ def _init_common(self):
+ return lenovo_common.LenovoCommon(self.configuration)