diff --git a/.gitignore b/.gitignore deleted file mode 100644 index a4dd1d0..0000000 --- a/.gitignore +++ /dev/null @@ -1,4 +0,0 @@ -.build/ -emc_vnx*.noarch.rpm -repositories/centos/*.rpm -repositories/ubuntu/*.deb diff --git a/LICENSE b/LICENSE deleted file mode 100644 index 68c771a..0000000 --- a/LICENSE +++ /dev/null @@ -1,176 +0,0 @@ - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - diff --git a/README.md b/README.md deleted file mode 100644 index 6433e7b..0000000 --- a/README.md +++ /dev/null @@ -1,88 +0,0 @@ -EMC VNX Plugin for Fuel -======================= - -EMC VNX plugin --------------- - -EMC VNX plugin for Fuel extends Mirantis OpenStack functionality by adding -support for EMC VNX arrays in Cinder using iSCSI protocol. It replaces Cinder -LVM driver which is the default volume backend that uses local volumes -managed by LVM. - -Requirements ------------- - -| Requirement | Version/Comment | -|:---------------------------------|:----------------| -| Mirantis OpenStack compatibility | 9.0 | - -Limitations ------------ - -Since only one storage network is available in Fuel 6.x on OpenStack nodes, -multipath will bind all storage paths from EMC on one network interface. -In case this NIC fails, the communication with storage is lost. - -Installation Guide -================== - - -EMC VNX configuration ---------------------- - -Before starting a deployment you have to preconfigure EMC VNX array and connect -it properly to the environment. Both EMC SP IPs and all iSCSI ports should be -available over storage interface from OpenStack nodes. To learn more about -EMC VNX configuration, see -[the official EMC VNX series documentation](https://mydocuments.emc.com/DynDispatcher?prod=VNX&page=ConfigGroups_VNX) - -EMC VNX configuration checklist: -1. create username/password -2. create at least one storage pool -3. configure network for A and B Service Processors -4. configure network for all iSCSI ports - -EMC VNX plugin installation ---------------------------- - -To install EMC VNX plugin, follow these steps: - -1. Download the plugin from - [Fuel Plugins Catalog](https://software.mirantis.com/fuel-plugins) - -2. Copy the plugin on already installed Fuel Master node; ssh can be used for - that. If you do not have the Fuel Master node yet, see - [Quick Start Guide](https://software.mirantis.com/quick-start/): - - # scp emc_vnx-4.0-4.0.0-0.noarch.rpm root@:/tmp - -3. Log into the Fuel Master node. Install the plugin: - - # cd /tmp - # fuel plugins --install emc_vnx-4.0-4.0.0-0.noarch.rpm - -4. Check if the plugin was installed successfully: - - # fuel plugins - id | name | version | package_version - ---|---------|---------|---------------- - 1 | emc_vnx | 4.0.0 | 4.0.0 - -EMC VNX plugin configuration ----------------------------- - -1. Create an environment with the default backend for Cinder. -2. Enable the plugin on the Settings tab of the Fuel web UI and fill in form - fields: - * username/password - access credentials configured on EMC VNX - * SP A/B IP - IP addresses of the EMC VNX Service Processors - * pool name (optional) - a name of the EMC VNX storage pool on which all - Cinder volumes will be created. Provided storage pool must be available on - EMC VNX. If pool name is not provided then EMC VNX driver will use a random - storage pool available on EMC VNX. You can also use a Volume Type OpenStack - feature to create a volume on a specific storage pool. - For more information, see - [Multiple pools support](https://github.com/emc-openstack/vnx-direct-driver - /blob/master/README_ISCSI.md#multiple-pools-support) -3. Deploy the environment without a Cinder node. All required Cinder services - are run on Controller nodes. diff --git a/README.rst b/README.rst new file mode 100644 index 0000000..86e34d6 --- /dev/null +++ b/README.rst @@ -0,0 +1,10 @@ +This project is no longer maintained. + +The contents of this repository are still available in the Git +source code management system. To see the contents of this +repository before it reached its end of life, please check out the +previous commit with "git checkout HEAD^1". + +For any further questions, please email +openstack-discuss@lists.openstack.org or join #openstack-dev on +Freenode. diff --git a/components.yaml b/components.yaml deleted file mode 100644 index 5532c83..0000000 --- a/components.yaml +++ /dev/null @@ -1,8 +0,0 @@ -- name: 'storage:block:emc' - label: 'EMC' - description: 'EMC Driver for Cinder' - compatible: - - name: 'hypervisor:libvirt:*' - incompatible: - - name: 'storage:block:ceph' - - name: 'storage:block:lvm' diff --git a/deployment_scripts/puppet/manifests/compute.pp b/deployment_scripts/puppet/manifests/compute.pp deleted file mode 100644 index 7eec25e..0000000 --- a/deployment_scripts/puppet/manifests/compute.pp +++ /dev/null @@ -1,17 +0,0 @@ -# -# Copyright 2015 Mirantis, Inc. -# -# 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. -# -notice('MODULAR: emc/compute.pp') -include plugin_emc_vnx::compute diff --git a/deployment_scripts/puppet/manifests/controller.pp b/deployment_scripts/puppet/manifests/controller.pp deleted file mode 100644 index 30376d8..0000000 --- a/deployment_scripts/puppet/manifests/controller.pp +++ /dev/null @@ -1,17 +0,0 @@ -# -# Copyright 2015 Mirantis, Inc. -# -# 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. -# -notice('MODULAR: emc/controller.pp') -include plugin_emc_vnx::controller diff --git a/deployment_scripts/puppet/modules/plugin_emc_vnx/files/iscsid.conf b/deployment_scripts/puppet/modules/plugin_emc_vnx/files/iscsid.conf deleted file mode 100644 index 1362819..0000000 --- a/deployment_scripts/puppet/modules/plugin_emc_vnx/files/iscsid.conf +++ /dev/null @@ -1,265 +0,0 @@ -# -# Open-iSCSI default configuration. -# Could be located at /etc/iscsi/iscsid.conf or ~/.iscsid.conf -# -# Note: To set any of these values for a specific node/session run -# the iscsiadm --mode node --op command for the value. See the README -# and man page for iscsiadm for details on the --op command. -# - -################ -# iSNS settings -################ -# Address of iSNS server -#isns.address = 192.168.0.1 -#isns.port = 3205 - -############################# -# NIC/HBA and driver settings -############################# -# open-iscsi can create a session and bind it to a NIC/HBA. -# To set this up see the example iface config file. - -#***************** -# Startup settings -#***************** - -# To request that the iscsi initd scripts startup a session set to "automatic". -# node.startup = automatic -# -# To manually startup the session set to "manual". The default is manual. -node.startup = manual - -# ************* -# CHAP Settings -# ************* - -# To enable CHAP authentication set node.session.auth.authmethod -# to CHAP. The default is None. -#node.session.auth.authmethod = CHAP - -# To set a CHAP username and password for initiator -# authentication by the target(s), uncomment the following lines: -#node.session.auth.username = username -#node.session.auth.password = password - -# To set a CHAP username and password for target(s) -# authentication by the initiator, uncomment the following lines: -#node.session.auth.username_in = username_in -#node.session.auth.password_in = password_in - -# To enable CHAP authentication for a discovery session to the target -# set discovery.sendtargets.auth.authmethod to CHAP. The default is None. -#discovery.sendtargets.auth.authmethod = CHAP - -# To set a discovery session CHAP username and password for the initiator -# authentication by the target(s), uncomment the following lines: -#discovery.sendtargets.auth.username = username -#discovery.sendtargets.auth.password = password - -# To set a discovery session CHAP username and password for target(s) -# authentication by the initiator, uncomment the following lines: -#discovery.sendtargets.auth.username_in = username_in -#discovery.sendtargets.auth.password_in = password_in - -# ******** -# Timeouts -# ******** -# -# See the iSCSI REAME's Advanced Configuration section for tips -# on setting timeouts when using multipath or doing root over iSCSI. -# -# To specify the length of time to wait for session re-establishment -# before failing SCSI commands back to the application when running -# the Linux SCSI Layer error handler, edit the line. -# The value is in seconds and the default is 120 seconds. -node.session.timeo.replacement_timeout = 5 - -# To specify the time to wait for login to complete, edit the line. -# The value is in seconds and the default is 15 seconds. -node.conn[0].timeo.login_timeout = 5 - -# To specify the time to wait for logout to complete, edit the line. -# The value is in seconds and the default is 15 seconds. -node.conn[0].timeo.logout_timeout = 5 - -# Time interval to wait for on connection before sending a ping. -node.conn[0].timeo.noop_out_interval = 3 - -# To specify the time to wait for a Nop-out response before failing -# the connection, edit this line. Failing the connection will -# cause IO to be failed back to the SCSI layer. If using dm-multipath -# this will cause the IO to be failed to the multipath layer. -node.conn[0].timeo.noop_out_timeout = 3 - -# To specify the time to wait for abort response before -# failing the operation and trying a logical unit reset edit the line. -# The value is in seconds and the default is 15 seconds. -node.session.err_timeo.abort_timeout = 15 - -# To specify the time to wait for a logical unit response -# before failing the operation and trying session re-establishment -# edit the line. -# The value is in seconds and the default is 30 seconds. -node.session.err_timeo.lu_reset_timeout = 20 - -#****** -# Retry -#****** - -# To specify the number of times iscsid should retry a login -# if the login attempt fails due to the node.conn[0].timeo.login_timeout -# expiring modify the following line. Note that if the login fails -# quickly (before node.conn[0].timeo.login_timeout fires) because the network -# layer or the target returns an error, iscsid may retry the login more than -# node.session.initial_login_retry_max times. -# -# This retry count along with node.conn[0].timeo.login_timeout -# determines the maximum amount of time iscsid will try to -# establish the initial login. node.session.initial_login_retry_max is -# multiplied by the node.conn[0].timeo.login_timeout to determine the -# maximum amount. -# -# The default node.session.initial_login_retry_max is 8 and -# node.conn[0].timeo.login_timeout is 15 so we have: -# -# node.conn[0].timeo.login_timeout * node.session.initial_login_retry_max = -# 120 seconds -# -# Valid values are any integer value. This only -# affects the initial login. Setting it to a high value can slow -# down the iscsi service startup. Setting it to a low value can -# cause a session to not get logged into, if there are distuptions -# during startup or if the network is not ready at that time. -node.session.initial_login_retry_max = 8 - -################################ -# session and device queue depth -################################ - -# To control how many commands the session will queue set -# node.session.cmds_max to an integer between 2 and 2048 that is also -# a power of 2. The default is 128. -node.session.cmds_max = 128 - -# To control the device's queue depth set node.session.queue_depth -# to a value between 1 and 1024. The default is 32. -node.session.queue_depth = 32 - -################################## -# MISC SYSTEM PERFORMANCE SETTINGS -################################## - -# For software iscsi (iscsi_tcp) and iser (ib_iser) each session -# has a thread used to transmit or queue data to the hardware. For -# cxgb3i you will get a thread per host. -# -# Setting the thread's priority to a lower value can lead to higher throughput -# and lower latencies. The lowest value is -20. Setting the priority to -# a higher value, can lead to reduced IO performance, but if you are seeing -# the iscsi or scsi threads dominate the use of the CPU then you may want -# to set this value higher. -# -# Note: For cxgb3i you must set all sessions to the same value, or the -# behavior is not defined. -# -# The default value is -20. The setting must be between -20 and 20. -node.session.xmit_thread_priority = -20 - - -#*************** -# iSCSI settings -#*************** - -# To enable R2T flow control (i.e., the initiator must wait for an R2T -# command before sending any data), uncomment the following line: -# -#node.session.iscsi.InitialR2T = Yes -# -# To disable R2T flow control (i.e., the initiator has an implied -# initial R2T of "FirstBurstLength" at offset 0), uncomment the following line: -# -# The defaults is No. -node.session.iscsi.InitialR2T = No - -# -# To disable immediate data (i.e., the initiator does not send -# unsolicited data with the iSCSI command PDU), uncomment the following line: -# -#node.session.iscsi.ImmediateData = No -# -# To enable immediate data (i.e., the initiator sends unsolicited data -# with the iSCSI command packet), uncomment the following line: -# -# The default is Yes -node.session.iscsi.ImmediateData = Yes - -# To specify the maximum number of unsolicited data bytes the initiator -# can send in an iSCSI PDU to a target, edit the following line. -# -# The value is the number of bytes in the range of 512 to (2^24-1) and -# the default is 262144 -node.session.iscsi.FirstBurstLength = 262144 - -# To specify the maximum SCSI payload that the initiator will negotiate -# with the target for, edit the following line. -# -# The value is the number of bytes in the range of 512 to (2^24-1) and -# the defauls it 16776192 -node.session.iscsi.MaxBurstLength = 16776192 - -# To specify the maximum number of data bytes the initiator can receive -# in an iSCSI PDU from a target, edit the following line. -# -# The value is the number of bytes in the range of 512 to (2^24-1) and -# the default is 262144 -node.conn[0].iscsi.MaxRecvDataSegmentLength = 262144 - -# To specify the maximum number of data bytes the initiator can receive -# in an iSCSI PDU from a target during a discovery session, edit the -# following line. -# -# The value is the number of bytes in the range of 512 to (2^24-1) and -# the default is 32768 -discovery.sendtargets.iscsi.MaxRecvDataSegmentLength = 32768 - -# To allow the targets to control the setting of the digest checking, -# with the initiator requesting a preference of enabling the checking, uncomment# one or both of the following lines: -#node.conn[0].iscsi.HeaderDigest = CRC32C,None -#node.conn[0].iscsi.DataDigest = CRC32C,None -# -# To allow the targets to control the setting of the digest checking, -# with the initiator requesting a preference of disabling the checking, -# uncomment one or both of the following lines: -#node.conn[0].iscsi.HeaderDigest = None,CRC32C -#node.conn[0].iscsi.DataDigest = None,CRC32C -# -# To enable CRC32C digest checking for the header and/or data part of -# iSCSI PDUs, uncomment one or both of the following lines: -#node.conn[0].iscsi.HeaderDigest = CRC32C -#node.conn[0].iscsi.DataDigest = CRC32C -# -# To disable digest checking for the header and/or data part of -# iSCSI PDUs, uncomment one or both of the following lines: -#node.conn[0].iscsi.HeaderDigest = None -#node.conn[0].iscsi.DataDigest = None -# -# The default is to never use DataDigests or HeaderDigests. -# - - -#************ -# Workarounds -#************ - -# Some targets like IET prefer after an initiator has sent a task -# management function like an ABORT TASK or LOGICAL UNIT RESET, that -# it does not respond to PDUs like R2Ts. To enable this behavior uncomment -# the following line (The default behavior is Yes): -node.session.iscsi.FastAbort = Yes - -# Some targets like Equalogic prefer that after an initiator has sent -# a task management function like an ABORT TASK or LOGICAL UNIT RESET, that -# it continue to respond to R2Ts. To enable this uncomment this line -# node.session.iscsi.FastAbort = No - diff --git a/deployment_scripts/puppet/modules/plugin_emc_vnx/files/iscsid.conf-centos b/deployment_scripts/puppet/modules/plugin_emc_vnx/files/iscsid.conf-centos deleted file mode 100644 index 747d285..0000000 --- a/deployment_scripts/puppet/modules/plugin_emc_vnx/files/iscsid.conf-centos +++ /dev/null @@ -1,302 +0,0 @@ -# -# Open-iSCSI default configuration. -# Could be located at /etc/iscsi/iscsid.conf or ~/.iscsid.conf -# -# Note: To set any of these values for a specific node/session run -# the iscsiadm --mode node --op command for the value. See the README -# and man page for iscsiadm for details on the --op command. -# - -###################### -# iscsid daemon config -###################### -# If you want iscsid to start the first time a iscsi tool -# needs to access it, instead of starting it when the init -# scripts run, set the iscsid startup command here. This -# should normally only need to be done by distro package -# maintainers. -# -# Default for Fedora and RHEL. (uncomment to activate). -iscsid.startup = /etc/rc.d/init.d/iscsid force-start - -# Default for upstream open-iscsi scripts (uncomment to activate). -# iscsid.startup = /sbin/iscsid - - -############################# -# NIC/HBA and driver settings -############################# -# open-iscsi can create a session and bind it to a NIC/HBA. -# To set this up see the example iface config file. - -#***************** -# Startup settings -#***************** - -# To request that the iscsi initd scripts startup a session set to "automatic". -# node.startup = automatic -# -# To manually startup the session set to "manual". The default is automatic. -node.startup = automatic - -# For "automatic" startup nodes, setting this to "Yes" will try logins on each -# available iface until one succeeds, and then stop. The default "No" will try -# logins on all availble ifaces simultaneously. -node.leading_login = No - -# ************* -# CHAP Settings -# ************* - -# To enable CHAP authentication set node.session.auth.authmethod -# to CHAP. The default is None. -#node.session.auth.authmethod = CHAP - -# To set a CHAP username and password for initiator -# authentication by the target(s), uncomment the following lines: -#node.session.auth.username = username -#node.session.auth.password = password - -# To set a CHAP username and password for target(s) -# authentication by the initiator, uncomment the following lines: -#node.session.auth.username_in = username_in -#node.session.auth.password_in = password_in - -# To enable CHAP authentication for a discovery session to the target -# set discovery.sendtargets.auth.authmethod to CHAP. The default is None. -#discovery.sendtargets.auth.authmethod = CHAP - -# To set a discovery session CHAP username and password for the initiator -# authentication by the target(s), uncomment the following lines: -#discovery.sendtargets.auth.username = username -#discovery.sendtargets.auth.password = password - -# To set a discovery session CHAP username and password for target(s) -# authentication by the initiator, uncomment the following lines: -#discovery.sendtargets.auth.username_in = username_in -#discovery.sendtargets.auth.password_in = password_in - -# ******** -# Timeouts -# ******** -# -# See the iSCSI REAME's Advanced Configuration section for tips -# on setting timeouts when using multipath or doing root over iSCSI. -# -# To specify the length of time to wait for session re-establishment -# before failing SCSI commands back to the application when running -# the Linux SCSI Layer error handler, edit the line. -# The value is in seconds and the default is 120 seconds. -# Special values: -# - If the value is 0, IO will be failed immediately. -# - If the value is less than 0, IO will remain queued until the session -# is logged back in, or until the user runs the logout command. -node.session.timeo.replacement_timeout = 5 - -# To specify the time to wait for login to complete, edit the line. -# The value is in seconds and the default is 15 seconds. -node.conn[0].timeo.login_timeout = 5 - -# To specify the time to wait for logout to complete, edit the line. -# The value is in seconds and the default is 15 seconds. -node.conn[0].timeo.logout_timeout = 5 - -# Time interval to wait for on connection before sending a ping. -node.conn[0].timeo.noop_out_interval = 3 - -# To specify the time to wait for a Nop-out response before failing -# the connection, edit this line. Failing the connection will -# cause IO to be failed back to the SCSI layer. If using dm-multipath -# this will cause the IO to be failed to the multipath layer. -node.conn[0].timeo.noop_out_timeout = 3 - -# To specify the time to wait for abort response before -# failing the operation and trying a logical unit reset edit the line. -# The value is in seconds and the default is 15 seconds. -node.session.err_timeo.abort_timeout = 15 - -# To specify the time to wait for a logical unit response -# before failing the operation and trying session re-establishment -# edit the line. -# The value is in seconds and the default is 30 seconds. -node.session.err_timeo.lu_reset_timeout = 20 - -# To specify the time to wait for a target response -# before failing the operation and trying session re-establishment -# edit the line. -# The value is in seconds and the default is 30 seconds. -node.session.err_timeo.tgt_reset_timeout = 20 - - -#****** -# Retry -#****** - -# To specify the number of times iscsid should retry a login -# if the login attempt fails due to the node.conn[0].timeo.login_timeout -# expiring modify the following line. Note that if the login fails -# quickly (before node.conn[0].timeo.login_timeout fires) because the network -# layer or the target returns an error, iscsid may retry the login more than -# node.session.initial_login_retry_max times. -# -# This retry count along with node.conn[0].timeo.login_timeout -# determines the maximum amount of time iscsid will try to -# establish the initial login. node.session.initial_login_retry_max is -# multiplied by the node.conn[0].timeo.login_timeout to determine the -# maximum amount. -# -# The default node.session.initial_login_retry_max is 8 and -# node.conn[0].timeo.login_timeout is 15 so we have: -# -# node.conn[0].timeo.login_timeout * node.session.initial_login_retry_max = -# 120 seconds -# -# Valid values are any integer value. This only -# affects the initial login. Setting it to a high value can slow -# down the iscsi service startup. Setting it to a low value can -# cause a session to not get logged into, if there are distuptions -# during startup or if the network is not ready at that time. -node.session.initial_login_retry_max = 8 - -################################ -# session and device queue depth -################################ - -# To control how many commands the session will queue set -# node.session.cmds_max to an integer between 2 and 2048 that is also -# a power of 2. The default is 128. -node.session.cmds_max = 128 - -# To control the device's queue depth set node.session.queue_depth -# to a value between 1 and 1024. The default is 32. -node.session.queue_depth = 32 - -################################## -# MISC SYSTEM PERFORMANCE SETTINGS -################################## - -# For software iscsi (iscsi_tcp) and iser (ib_iser) each session -# has a thread used to transmit or queue data to the hardware. For -# cxgb3i you will get a thread per host. -# -# Setting the thread's priority to a lower value can lead to higher throughput -# and lower latencies. The lowest value is -20. Setting the priority to -# a higher value, can lead to reduced IO performance, but if you are seeing -# the iscsi or scsi threads dominate the use of the CPU then you may want -# to set this value higher. -# -# Note: For cxgb3i you must set all sessions to the same value, or the -# behavior is not defined. -# -# The default value is -20. The setting must be between -20 and 20. -node.session.xmit_thread_priority = -20 - - -#*************** -# iSCSI settings -#*************** - -# To enable R2T flow control (i.e., the initiator must wait for an R2T -# command before sending any data), uncomment the following line: -# -#node.session.iscsi.InitialR2T = Yes -# -# To disable R2T flow control (i.e., the initiator has an implied -# initial R2T of "FirstBurstLength" at offset 0), uncomment the following line: -# -# The defaults is No. -node.session.iscsi.InitialR2T = No - -# -# To disable immediate data (i.e., the initiator does not send -# unsolicited data with the iSCSI command PDU), uncomment the following line: -# -#node.session.iscsi.ImmediateData = No -# -# To enable immediate data (i.e., the initiator sends unsolicited data -# with the iSCSI command packet), uncomment the following line: -# -# The default is Yes -node.session.iscsi.ImmediateData = Yes - -# To specify the maximum number of unsolicited data bytes the initiator -# can send in an iSCSI PDU to a target, edit the following line. -# -# The value is the number of bytes in the range of 512 to (2^24-1) and -# the default is 262144 -node.session.iscsi.FirstBurstLength = 262144 - -# To specify the maximum SCSI payload that the initiator will negotiate -# with the target for, edit the following line. -# -# The value is the number of bytes in the range of 512 to (2^24-1) and -# the defauls it 16776192 -node.session.iscsi.MaxBurstLength = 16776192 - -# To specify the maximum number of data bytes the initiator can receive -# in an iSCSI PDU from a target, edit the following line. -# -# The value is the number of bytes in the range of 512 to (2^24-1) and -# the default is 262144 -node.conn[0].iscsi.MaxRecvDataSegmentLength = 262144 - -# To specify the maximum number of data bytes the initiator will send -# in an iSCSI PDU to the target, edit the following line. -# -# The value is the number of bytes in the range of 512 to (2^24-1). -# Zero is a special case. If set to zero, the initiator will use -# the target's MaxRecvDataSegmentLength for the MaxXmitDataSegmentLength. -# The default is 0. -node.conn[0].iscsi.MaxXmitDataSegmentLength = 0 - -# To specify the maximum number of data bytes the initiator can receive -# in an iSCSI PDU from a target during a discovery session, edit the -# following line. -# -# The value is the number of bytes in the range of 512 to (2^24-1) and -# the default is 32768 -discovery.sendtargets.iscsi.MaxRecvDataSegmentLength = 32768 - -# To allow the targets to control the setting of the digest checking, -# with the initiator requesting a preference of enabling the checking, uncomment -# the following lines (Data digests are not supported.): -#node.conn[0].iscsi.HeaderDigest = CRC32C,None - -# -# To allow the targets to control the setting of the digest checking, -# with the initiator requesting a preference of disabling the checking, -# uncomment the following line: -#node.conn[0].iscsi.HeaderDigest = None,CRC32C -# -# To enable CRC32C digest checking for the header and/or data part of -# iSCSI PDUs, uncomment the following line: -#node.conn[0].iscsi.HeaderDigest = CRC32C -# -# To disable digest checking for the header and/or data part of -# iSCSI PDUs, uncomment the following line: -#node.conn[0].iscsi.HeaderDigest = None -# -# The default is to never use DataDigests or HeaderDigests. -# -node.conn[0].iscsi.HeaderDigest = None - -# For multipath configurations, you may want more than one session to be -# created on each iface record. If node.session.nr_sessions is greater -# than 1, performing a 'login' for that node will ensure that the -# appropriate number of sessions is created. -node.session.nr_sessions = 1 - -#************ -# Workarounds -#************ - -# Some targets like IET prefer after an initiator has sent a task -# management function like an ABORT TASK or LOGICAL UNIT RESET, that -# it does not respond to PDUs like R2Ts. To enable this behavior uncomment -# the following line (The default behavior is Yes): -node.session.iscsi.FastAbort = Yes - -# Some targets like Equalogic prefer that after an initiator has sent -# a task management function like an ABORT TASK or LOGICAL UNIT RESET, that -# it continue to respond to R2Ts. To enable this uncomment this line -# node.session.iscsi.FastAbort = No diff --git a/deployment_scripts/puppet/modules/plugin_emc_vnx/files/multipath.conf b/deployment_scripts/puppet/modules/plugin_emc_vnx/files/multipath.conf deleted file mode 100644 index 16193ef..0000000 --- a/deployment_scripts/puppet/modules/plugin_emc_vnx/files/multipath.conf +++ /dev/null @@ -1,49 +0,0 @@ -blacklist { - devnode "^(ram|raw|loop|fd|md|dm-|sr|scd|st)[0-9]*" - devnode "^hd[a-z][0-9]*" - devnode "^cciss!c[0-9]d[0-9]*[p[0-9]*]" - device { - vendor "DGC" - product "LUNZ" - } - device { - vendor "HP" - product "LOGICAL VOLUME" - } - device { - vendor "HP iLO" - product "Internal SD-CARD" - } -} -defaults { - path_grouping_policy multibus - failback immediate -} -devices { - device { - vendor "HP" - product "LOGICAL VOLUME.*" - path_grouping_policy multibus - getuid_callout "/lib/udev/scsi_id --whitelisted --device=/dev/%n" - path_selector "round-robin 0" - path_checker directio - } - device { - vendor "HP iLO" - product "Internal SD-CARD" - # generate a fake path id for a SD-CARD because scsi_id does not work: - getuid_callout "/bin/echo 111111111111111111111111111111111" - } - device { - vendor "DGC" - product ".*" - path_grouping_policy group_by_prio - getuid_callout "/lib/udev/scsi_id --whitelisted --device=/dev/%n" - path_checker emc_clariion - path_selector "round-robin 0" - no_path_retry fail - hardware_handler "1 emc" - prio emc - failback immediate - } -} diff --git a/deployment_scripts/puppet/modules/plugin_emc_vnx/files/ocf/cinder-volume b/deployment_scripts/puppet/modules/plugin_emc_vnx/files/ocf/cinder-volume deleted file mode 100644 index c1fdf12..0000000 --- a/deployment_scripts/puppet/modules/plugin_emc_vnx/files/ocf/cinder-volume +++ /dev/null @@ -1,351 +0,0 @@ -#!/bin/sh -# -# -# OpenStack Cinder Volume (cinder-volume) -# -# Description: Manages an OpenStack Volumes (cinder-volume) process as an HA resource -# -# Authors: Sébastien Han -# Mainly inspired by the Glance API resource agent written by Martin Gerhard Loschwitz from Hastexo: http://goo.gl/whLpr -# -# Support: openstack@lists.launchpad.net -# License: Apache Software License (ASL) 2.0 -# -# -# See usage() function below for more details ... -# -# OCF instance parameters: -# OCF_RESKEY_binary -# OCF_RESKEY_config -# OCF_RESKEY_user -# OCF_RESKEY_pid -# OCF_RESKEY_amqp_server_port -# OCF_RESKEY_additional_parameters -####################################################################### -# Initialization: - -: ${OCF_FUNCTIONS_DIR=${OCF_ROOT}/lib/heartbeat} -. ${OCF_FUNCTIONS_DIR}/ocf-shellfuncs - -####################################################################### - -# Fill in some defaults if no values are specified - -OCF_RESKEY_binary_default="cinder-volume" -OCF_RESKEY_config_default="/etc/cinder/cinder.conf" -OCF_RESKEY_user_default="cinder" -OCF_RESKEY_pid_default="$HA_RSCTMP/$OCF_RESOURCE_INSTANCE.pid" -OCF_RESKEY_amqp_server_port_default="5672" -OCF_RESKEY_multibackend_default="false" - -: ${OCF_RESKEY_binary=${OCF_RESKEY_binary_default}} -: ${OCF_RESKEY_config=${OCF_RESKEY_config_default}} -: ${OCF_RESKEY_user=${OCF_RESKEY_user_default}} -: ${OCF_RESKEY_pid=${OCF_RESKEY_pid_default}} -: ${OCF_RESKEY_amqp_server_port=${OCF_RESKEY_amqp_server_port_default}} -: ${OCF_RESKEY_multibackend=${OCF_RESKEY_multibackend_default}} - -####################################################################### - -usage() { - cat < - - -1.0 - - -Resource agent for the OpenStack Cinder Volume (cinder-volume) -May manage a cinder-volume instance or a clone set that -creates a distributed cinder-volume cluster. - -Manages the OpenStack Cinder Volume (cinder-volume) - - - - -Location of the OpenStack Cinder Volume server binary (cinder-volume) - -OpenStack Cinder Volume server binary (cinder-volume) - - - - - -Location of the OpenStack Cinder Volume (cinder-volume) configuration file - -OpenStack Cinder Volume (cinder-volume) config file - - - - - -User running OpenStack Cinder Volume (cinder-volume) - -OpenStack Cinder Volume (cinder-volume) user - - - - - -The pid file to use for this OpenStack Cinder Volume (cinder-volume) instance - -OpenStack Cinder Volume (cinder-volume) pid file - - - - - -The listening port number of the AMQP server. Mandatory to perform a monitor check - -AMQP listening port - - - - - -If the multi-backend is enabled, the monitor check is slightly different since cinder-volume spawns one thread for each backend. - -Multi Backend usage - - - - - -Additional parameters to pass on to the OpenStack Cinder Volume (cinder-volume) - -Additional parameters for cinder-volume - - - - - - - - - - - - - - -END -} - -####################################################################### -# Functions invoked by resource manager actions - -cinder_volume_validate() { - local rc - - check_binary $OCF_RESKEY_binary - check_binary netstat - - # A config file on shared storage that is not available - # during probes is OK. - if [ ! -f $OCF_RESKEY_config ]; then - if ! ocf_is_probe; then - ocf_log err "Config $OCF_RESKEY_config doesn't exist" - return $OCF_ERR_INSTALLED - fi - ocf_log_warn "Config $OCF_RESKEY_config not available during a probe" - fi - - getent passwd $OCF_RESKEY_user >/dev/null 2>&1 - rc=$? - if [ $rc -ne 0 ]; then - ocf_log err "User $OCF_RESKEY_user doesn't exist" - return $OCF_ERR_INSTALLED - fi - - true -} - -cinder_volume_status() { - local pid - local rc - - if [ ! -f $OCF_RESKEY_pid ]; then - ocf_log info "OpenStack Cinder Volume (cinder-volume) is not running" - return $OCF_NOT_RUNNING - else - pid=`cat $OCF_RESKEY_pid` - fi - - ocf_run -warn kill -s 0 $pid - rc=$? - if [ $rc -eq 0 ]; then - return $OCF_SUCCESS - else - ocf_log info "Old PID file found, but OpenStack Cinder Volume (cinder-volume) is not running" - return $OCF_NOT_RUNNING - fi -} - -cinder_volume_monitor() { - local rc - local pid - local volume_amqp_check - - cinder_volume_status - rc=$? - - # If status returned anything but success, return that immediately - if [ $rc -ne $OCF_SUCCESS ]; then - return $rc - fi - - # Grab cinder-volume PID - pid=`cat $OCF_RESKEY_pid` - - if ocf_is_true "$OCF_RESKEY_multibackend"; then - # Grab the child's PIDs - for i in `ps -o pid --no-headers --ppid $pid` - do - volume_amqp_check=`netstat -punt | grep -s "$OCF_RESKEY_amqp_server_port" | grep -s "$i" | grep -qs "ESTABLISHED"` - rc=$? - if [ $rc -ne 0 ]; then - ocf_log err "This child process from Cinder Volume is not connected to the AMQP server: $rc" - return $OCF_NOT_RUNNING - fi - done - else - # Check the connections according to the PID - # We are sure to hit the scheduler process and not other nova process with the same connection behavior (for example nova-cert) - # check the connections according to the PID - volume_amqp_check=`netstat -punt | grep -s "$OCF_RESKEY_amqp_server_port" | grep -s "$pid" | grep -qs "ESTABLISHED"` - rc=$? - if [ $rc -ne 0 ]; then - ocf_log err "Cinder Volume is not connected to the AMQP server: $rc" - return $OCF_NOT_RUNNING - fi - fi - - ocf_log debug "OpenStack Cinder Volume (cinder-volume) monitor succeeded" - return $OCF_SUCCESS -} - -cinder_volume_start() { - local rc - - cinder_volume_status - rc=$? - if [ $rc -eq $OCF_SUCCESS ]; then - ocf_log info "OpenStack Cinder Volume (cinder-volume) already running" - return $OCF_SUCCESS - fi - - # run the actual cinder-volume daemon. Don't use ocf_run as we're sending the tool's output - # straight to /dev/null anyway and using ocf_run would break stdout-redirection here. - su ${OCF_RESKEY_user} -s /bin/sh -c "${OCF_RESKEY_binary} --config-file=$OCF_RESKEY_config \ - $OCF_RESKEY_additional_parameters"' >> /dev/null 2>&1 & echo $!' > $OCF_RESKEY_pid - - # Spin waiting for the server to come up. - # Let the CRM/LRM time us out if required - while true; do - cinder_volume_monitor - rc=$? - [ $rc -eq $OCF_SUCCESS ] && break - if [ $rc -ne $OCF_NOT_RUNNING ]; then - ocf_log err "OpenStack Cinder Volume (cinder-volume) start failed" - exit $OCF_ERR_GENERIC - fi - sleep 1 - done - - ocf_log info "OpenStack Cinder Volume (cinder-volume) started" - return $OCF_SUCCESS -} - -cinder_volume_stop() { - local rc - local pid - - cinder_volume_status - rc=$? - if [ $rc -eq $OCF_NOT_RUNNING ]; then - ocf_log info "OpenStack Cinder Volume (cinder-volume) already stopped" - return $OCF_SUCCESS - fi - - # Try SIGTERM - pid=`cat $OCF_RESKEY_pid` - ocf_run kill -s TERM $pid - rc=$? - if [ $rc -ne 0 ]; then - ocf_log err "OpenStack Cinder Volume (cinder-volume) couldn't be stopped" - exit $OCF_ERR_GENERIC - fi - - # stop waiting - shutdown_timeout=15 - if [ -n "$OCF_RESKEY_CRM_meta_timeout" ]; then - shutdown_timeout=$((($OCF_RESKEY_CRM_meta_timeout/1000)-5)) - fi - count=0 - while [ $count -lt $shutdown_timeout ]; do - cinder_volume_status - rc=$? - if [ $rc -eq $OCF_NOT_RUNNING ]; then - break - fi - count=`expr $count + 1` - sleep 1 - ocf_log debug "OpenStack Cinder Volume (cinder-volume) still hasn't stopped yet. Waiting ..." - done - - cinder_volume_status - rc=$? - if [ $rc -ne $OCF_NOT_RUNNING ]; then - # SIGTERM didn't help either, try SIGKILL - ocf_log info "OpenStack Cinder Volume (cinder-volume) failed to stop after ${shutdown_timeout}s \ - using SIGTERM. Trying SIGKILL ..." - ocf_run kill -s KILL $pid - fi - - ocf_log info "OpenStack Cinder Volume (cinder-volume) stopped" - - rm -f $OCF_RESKEY_pid - - return $OCF_SUCCESS -} - -####################################################################### - -case "$1" in - meta-data) meta_data - exit $OCF_SUCCESS;; - usage|help) usage - exit $OCF_SUCCESS;; -esac - -# Anything except meta-data and help must pass validation -cinder_volume_validate || exit $? - -# What kind of method was invoked? -case "$1" in - start) cinder_volume_start;; - stop) cinder_volume_stop;; - status) cinder_volume_status;; - monitor) cinder_volume_monitor;; - validate-all) ;; - *) usage - exit $OCF_ERR_UNIMPLEMENTED;; -esac - diff --git a/deployment_scripts/puppet/modules/plugin_emc_vnx/manifests/common.pp b/deployment_scripts/puppet/modules/plugin_emc_vnx/manifests/common.pp deleted file mode 100644 index 1eaee36..0000000 --- a/deployment_scripts/puppet/modules/plugin_emc_vnx/manifests/common.pp +++ /dev/null @@ -1,76 +0,0 @@ -# -# Copyright 2015 Mirantis, Inc. -# -# 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. -# -class plugin_emc_vnx::common { - - include plugin_emc_vnx::params - - package {$plugin_emc_vnx::params::iscsi_package_name: - ensure => 'installed' - } - case $::osfamily { - 'Debian': { - service {$plugin_emc_vnx::params::iscsi_service_name: - ensure => 'running', - enable => true, - hasrestart => true, - require => Package[$plugin_emc_vnx::params::iscsi_package_name], - } - file {'iscsid.conf': - path => '/etc/iscsi/iscsid.conf', - mode => '0644', - owner => root, - group => root, - source => 'puppet:///modules/plugin_emc_vnx/iscsid.conf', - require => Package[$plugin_emc_vnx::params::iscsi_package_name], - notify => Service[$plugin_emc_vnx::params::iscsi_service_name], - } - } - 'RedHat': { - file {'iscsid.conf': - path => '/etc/iscsi/iscsid.conf', - mode => '0644', - owner => root, - group => root, - source => 'puppet:///modules/plugin_emc_vnx/iscsid.conf-centos', - require => Package[$plugin_emc_vnx::params::iscsi_package_name], - } - } - default: { - fail("unsuported osfamily ${::osfamily}, currently Debian and Redhat are the only supported platforms") - } - } - package {$plugin_emc_vnx::params::multipath_package_name: - ensure => 'installed' - } - service {$plugin_emc_vnx::params::multipath_service_name: - ensure => 'running', - enable => true, - hasrestart => true, - hasstatus => false, - status => 'pgrep multipathd', - require => Package[$plugin_emc_vnx::params::multipath_package_name], - } - file {'multipath.conf': - path => '/etc/multipath.conf', - mode => '0644', - owner => root, - group => root, - source => 'puppet:///modules/plugin_emc_vnx/multipath.conf', - require => Package[$plugin_emc_vnx::params::multipath_package_name], - notify => Service[$plugin_emc_vnx::params::multipath_service_name], - } - -} diff --git a/deployment_scripts/puppet/modules/plugin_emc_vnx/manifests/compute.pp b/deployment_scripts/puppet/modules/plugin_emc_vnx/manifests/compute.pp deleted file mode 100644 index 2bf3ea0..0000000 --- a/deployment_scripts/puppet/modules/plugin_emc_vnx/manifests/compute.pp +++ /dev/null @@ -1,33 +0,0 @@ -# -# Copyright 2015 Mirantis, Inc. -# -# 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. -# -class plugin_emc_vnx::compute { - - include plugin_emc_vnx::common - include ::nova::params - - service { 'nova-compute': - ensure => 'running', - name => $::nova::params::compute_service_name, - enable => true, - hasstatus => true, - hasrestart => true, - } - - nova_config { 'libvirt/iscsi_use_multipath': value => 'True' } - - Nova_config<||> ~> Service['nova-compute'] - -} diff --git a/deployment_scripts/puppet/modules/plugin_emc_vnx/manifests/controller.pp b/deployment_scripts/puppet/modules/plugin_emc_vnx/manifests/controller.pp deleted file mode 100644 index b6f0d03..0000000 --- a/deployment_scripts/puppet/modules/plugin_emc_vnx/manifests/controller.pp +++ /dev/null @@ -1,127 +0,0 @@ -# -# Copyright 2015 Mirantis, Inc. -# -# 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. -# -class plugin_emc_vnx::controller { - - include plugin_emc_vnx::common - include ::cinder::params - - $plugin_settings = hiera('emc_vnx') - $service_name = $::cinder::params::volume_service - - $metadata = { - 'resource-stickiness' => '100', - } - - $operations = { - 'monitor' => { - 'interval' => '20', - 'timeout' => '10', - }, - 'start' => { - 'interval' => '0', - 'timeout' => '60', - }, - 'stop' => { - 'interval' => '0', - 'timeout' => '60', - } - } - - $primitive_type = 'cinder-volume' - - $parameters = { - 'amqp_server_port' => hiera('amqp_port'), - 'multibackend' => true, - } - - if $::cinder::params::volume_package { - package { $::cinder::params::volume_package: - ensure => present, - } - Package[$::cinder::params::volume_package] -> Cinder_config<||> - } - - case $plugin_settings['emc_driver'] { - FC: { cinder_config { - 'DEFAULT/volume_driver': value => 'cinder.volume.drivers.emc.emc_cli_fc.EMCCLIFCDriver'; - } - } - ISCSI: { cinder_config { - 'DEFAULT/volume_driver': value => 'cinder.volume.drivers.emc.emc_cli_iscsi.EMCCLIISCSIDriver'; - } - } - default: { cinder_config { - 'DEFAULT/volume_driver': value => 'cinder.volume.drivers.emc.emc_cli_iscsi.EMCCLIISCSIDriver'; - } - } - } - - cinder_config { - 'DEFAULT/san_ip': value => $plugin_settings['emc_sp_a_ip']; - 'DEFAULT/san_secondary_ip': value => $plugin_settings['emc_sp_b_ip']; - 'DEFAULT/san_login': value => $plugin_settings['emc_username']; - 'DEFAULT/san_password': value => $plugin_settings['emc_password']; - 'DEFAULT/storage_vnx_authentication_type': value => 'global'; - 'DEFAULT/destroy_empty_storage_group': value => 'False'; - 'DEFAULT/attach_detach_batch_interval': value => '-1'; - 'DEFAULT/naviseccli_path': value => '/opt/Navisphere/bin/naviseccli'; - 'DEFAULT/initiator_auto_registration': value => 'True'; - 'DEFAULT/default_timeout': value => '10'; - 'DEFAULT/use_multipath_for_image_xfer': value => 'True'; - 'DEFAULT/host': value => 'cinder'; - } - - if $plugin_settings['emc_pool_name'] { - cinder_config { - 'DEFAULT/storage_vnx_pool_name': value => $plugin_settings['emc_pool_name']; - } - } - - Cinder_config<||> ~> Service[$service_name] - - package {$::plugin_emc_vnx::params::navicli_package_name: - ensure => present, - } - - file {'cinder-volume-agent-ocf': - path =>'/usr/lib/ocf/resource.d/fuel/cinder-volume', - mode => '0755', - owner => root, - group => root, - source => 'puppet:///modules/plugin_emc_vnx/ocf/cinder-volume', - } - - pacemaker::service { $service_name : - primitive_type => $primitive_type, - metadata => $metadata, - parameters => $parameters, - operations => $operations, - require => File['cinder-volume-agent-ocf'], - } - - service { 'cinder-volume': - ensure => running, - name => $service_name, - enable => true, - hasstatus => true, - hasrestart => true, - require => Package[$::plugin_emc_vnx::params::navicli_package_name], - } - - Pcmk_resource["p_${service_name}"] -> - Service[$service_name] - -} diff --git a/deployment_scripts/puppet/modules/plugin_emc_vnx/manifests/init.pp b/deployment_scripts/puppet/modules/plugin_emc_vnx/manifests/init.pp deleted file mode 100644 index 4fee880..0000000 --- a/deployment_scripts/puppet/modules/plugin_emc_vnx/manifests/init.pp +++ /dev/null @@ -1,16 +0,0 @@ -# -# Copyright 2015 Mirantis, Inc. -# -# 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. -# -class plugin_emc_vnx {} diff --git a/deployment_scripts/puppet/modules/plugin_emc_vnx/manifests/params.pp b/deployment_scripts/puppet/modules/plugin_emc_vnx/manifests/params.pp deleted file mode 100644 index 2147b00..0000000 --- a/deployment_scripts/puppet/modules/plugin_emc_vnx/manifests/params.pp +++ /dev/null @@ -1,37 +0,0 @@ -# -# Copyright 2015 Mirantis, Inc. -# -# 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. -# -class plugin_emc_vnx::params { - - case $::osfamily { - 'Debian': { - $navicli_package_name = 'navicli-linux-64-x86-en-us' - $iscsi_package_name = 'open-iscsi' - $iscsi_service_name = 'open-iscsi' - $multipath_package_name = 'multipath-tools' - $multipath_service_name = 'multipath-tools' - } - 'RedHat': { - $navicli_package_name = 'NaviCLI-Linux-64-x86-en_US' - $iscsi_package_name = 'iscsi-initiator-utils' - $iscsi_service_name = false - $multipath_package_name = 'device-mapper-multipath' - $multipath_service_name = 'multipathd' - } - default: { - fail("unsuported osfamily ${::osfamily}, currently Debian and Redhat are the only supported platforms") - } - } -} diff --git a/deployment_tasks.yaml b/deployment_tasks.yaml deleted file mode 100644 index b56bdec..0000000 --- a/deployment_tasks.yaml +++ /dev/null @@ -1,27 +0,0 @@ -- id: emc-controller - groups: ['primary-controller','controller'] - type: puppet - version: 2.0.0 - parameters: - puppet_manifest: puppet/manifests/controller.pp - puppet_modules: puppet/modules:/etc/puppet/modules - timeout: 360 - strategy: - type: parallel - amount: 1 - required_for: [deploy_end] - requires: [controller_remaining_tasks] - -- id: emc-compute - role: ['compute'] - type: puppet - version: 2.0.0 - parameters: - puppet_manifest: puppet/manifests/compute.pp - puppet_modules: puppet/modules:/etc/puppet/modules - timeout: 360 - strategy: - type: parallel - amount: 10 - requires: [top-role-compute, enable_nova_compute_service] - required_for: [deploy_end] diff --git a/doc/.gitignore b/doc/.gitignore deleted file mode 100644 index 567609b..0000000 --- a/doc/.gitignore +++ /dev/null @@ -1 +0,0 @@ -build/ diff --git a/doc/Makefile b/doc/Makefile deleted file mode 100644 index f618008..0000000 --- a/doc/Makefile +++ /dev/null @@ -1,197 +0,0 @@ -# Makefile for Sphinx documentation -# - -# You can set these variables from the command line. -SPHINXOPTS = -SPHINXBUILD = sphinx-build -PAPER = -BUILDDIR = build - -# User-friendly check for sphinx-build -ifeq ($(shell which $(SPHINXBUILD) >/dev/null 2>&1; echo $$?), 1) -$(error The '$(SPHINXBUILD)' command was not found. Make sure you have Sphinx installed, then set the SPHINXBUILD environment variable to point to the full path of the '$(SPHINXBUILD)' executable. Alternatively you can add the directory with the executable to your PATH. If you don't have Sphinx installed, grab it from http://sphinx-doc.org/) -endif - -# Internal variables. -PAPEROPT_a4 = -D latex_paper_size=a4 -PAPEROPT_letter = -D latex_paper_size=letter -ALLSPHINXOPTS = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) source -# the i18n builder cannot share the environment and doctrees with the others -I18NSPHINXOPTS = $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) source -# SVG to PDF conversion -SVG2PDF = inkscape -SVG2PDF_FLAGS = -# Build a list of SVG files to convert to PDF -PDF_FILES := $(foreach dir, images, $(patsubst %.svg,%.pdf,$(wildcard $(dir)/*.svg))) - -.PHONY: help clean html dirhtml singlehtml pickle json htmlhelp qthelp devhelp epub latex latexpdf text man changes linkcheck doctest coverage gettext - -help: - @echo "Please use \`make ' where is one of" - @echo " html to make standalone HTML files" - @echo " dirhtml to make HTML files named index.html in directories" - @echo " singlehtml to make a single large HTML file" - @echo " pickle to make pickle files" - @echo " json to make JSON files" - @echo " htmlhelp to make HTML files and a HTML help project" - @echo " qthelp to make HTML files and a qthelp project" - @echo " applehelp to make an Apple Help Book" - @echo " devhelp to make HTML files and a Devhelp project" - @echo " epub to make an epub" - @echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter" - @echo " latexpdf to make LaTeX files and run them through pdflatex" - @echo " latexpdfja to make LaTeX files and run them through platex/dvipdfmx" - @echo " text to make text files" - @echo " man to make manual pages" - @echo " texinfo to make Texinfo files" - @echo " info to make Texinfo files and run them through makeinfo" - @echo " gettext to make PO message catalogs" - @echo " changes to make an overview of all changed/added/deprecated items" - @echo " xml to make Docutils-native XML files" - @echo " pseudoxml to make pseudoxml-XML files for display purposes" - @echo " linkcheck to check all external links for integrity" - @echo " doctest to run all doctests embedded in the documentation (if enabled)" - @echo " coverage to run coverage check of the documentation (if enabled)" - -clean: - rm -rf $(BUILDDIR)/* - -html: - $(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html - @echo - @echo "Build finished. The HTML pages are in $(BUILDDIR)/html." - -dirhtml: - $(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) $(BUILDDIR)/dirhtml - @echo - @echo "Build finished. The HTML pages are in $(BUILDDIR)/dirhtml." - -singlehtml: - $(SPHINXBUILD) -b singlehtml $(ALLSPHINXOPTS) $(BUILDDIR)/singlehtml - @echo - @echo "Build finished. The HTML page is in $(BUILDDIR)/singlehtml." - -pickle: - $(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) $(BUILDDIR)/pickle - @echo - @echo "Build finished; now you can process the pickle files." - -json: - $(SPHINXBUILD) -b json $(ALLSPHINXOPTS) $(BUILDDIR)/json - @echo - @echo "Build finished; now you can process the JSON files." - -htmlhelp: - $(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) $(BUILDDIR)/htmlhelp - @echo - @echo "Build finished; now you can run HTML Help Workshop with the" \ - ".hhp project file in $(BUILDDIR)/htmlhelp." - -qthelp: - $(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) $(BUILDDIR)/qthelp - @echo - @echo "Build finished; now you can run "qcollectiongenerator" with the" \ - ".qhcp project file in $(BUILDDIR)/qthelp, like this:" - @echo "# qcollectiongenerator $(BUILDDIR)/qthelp/EMCpluginforFuel.qhcp" - @echo "To view the help file:" - @echo "# assistant -collectionFile $(BUILDDIR)/qthelp/EMCpluginforFuel.qhc" - -applehelp: - $(SPHINXBUILD) -b applehelp $(ALLSPHINXOPTS) $(BUILDDIR)/applehelp - @echo - @echo "Build finished. The help book is in $(BUILDDIR)/applehelp." - @echo "N.B. You won't be able to view it unless you put it in" \ - "~/Library/Documentation/Help or install it in your application" \ - "bundle." - -devhelp: - $(SPHINXBUILD) -b devhelp $(ALLSPHINXOPTS) $(BUILDDIR)/devhelp - @echo - @echo "Build finished." - @echo "To view the help file:" - @echo "# mkdir -p $$HOME/.local/share/devhelp/EMCpluginforFuel" - @echo "# ln -s $(BUILDDIR)/devhelp $$HOME/.local/share/devhelp/EMCpluginforFuel" - @echo "# devhelp" - -epub: - $(SPHINXBUILD) -b epub $(ALLSPHINXOPTS) $(BUILDDIR)/epub - @echo - @echo "Build finished. The epub file is in $(BUILDDIR)/epub." - -latex: - $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex - @echo - @echo "Build finished; the LaTeX files are in $(BUILDDIR)/latex." - @echo "Run \`make' in that directory to run these through (pdf)latex" \ - "(use \`make latexpdf' here to do that automatically)." - -latexpdf: - $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex - @echo "Running LaTeX files through pdflatex..." - $(MAKE) -C $(BUILDDIR)/latex all-pdf - @echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex." - -latexpdfja: - $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex - @echo "Running LaTeX files through platex and dvipdfmx..." - $(MAKE) -C $(BUILDDIR)/latex all-pdf-ja - @echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex." - -text: - $(SPHINXBUILD) -b text $(ALLSPHINXOPTS) $(BUILDDIR)/text - @echo - @echo "Build finished. The text files are in $(BUILDDIR)/text." - -man: - $(SPHINXBUILD) -b man $(ALLSPHINXOPTS) $(BUILDDIR)/man - @echo - @echo "Build finished. The manual pages are in $(BUILDDIR)/man." - -texinfo: - $(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo - @echo - @echo "Build finished. The Texinfo files are in $(BUILDDIR)/texinfo." - @echo "Run \`make' in that directory to run these through makeinfo" \ - "(use \`make info' here to do that automatically)." - -info: - $(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo - @echo "Running Texinfo files through makeinfo..." - make -C $(BUILDDIR)/texinfo info - @echo "makeinfo finished; the Info files are in $(BUILDDIR)/texinfo." - -gettext: - $(SPHINXBUILD) -b gettext $(I18NSPHINXOPTS) $(BUILDDIR)/locale - @echo - @echo "Build finished. The message catalogs are in $(BUILDDIR)/locale." - -changes: - $(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) $(BUILDDIR)/changes - @echo - @echo "The overview file is in $(BUILDDIR)/changes." - -linkcheck: - $(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) $(BUILDDIR)/linkcheck - @echo - @echo "Link check complete; look for any errors in the above output " \ - "or in $(BUILDDIR)/linkcheck/output.txt." - -doctest: - $(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) $(BUILDDIR)/doctest - @echo "Testing of doctests in the sources finished, look at the " \ - "results in $(BUILDDIR)/doctest/output.txt." - -coverage: - $(SPHINXBUILD) -b coverage $(ALLSPHINXOPTS) $(BUILDDIR)/coverage - @echo "Testing of coverage in the sources finished, look at the " \ - "results in $(BUILDDIR)/coverage/python.txt." - -xml: - $(SPHINXBUILD) -b xml $(ALLSPHINXOPTS) $(BUILDDIR)/xml - @echo - @echo "Build finished. The XML files are in $(BUILDDIR)/xml." - -pseudoxml: - $(SPHINXBUILD) -b pseudoxml $(ALLSPHINXOPTS) $(BUILDDIR)/pseudoxml - @echo - @echo "Build finished. The pseudo-XML files are in $(BUILDDIR)/pseudoxml." diff --git a/doc/source/conf.py b/doc/source/conf.py deleted file mode 100644 index 66e1f2d..0000000 --- a/doc/source/conf.py +++ /dev/null @@ -1,35 +0,0 @@ -from distutils.version import LooseVersion -from sphinx import __version__ as sphinx_version - -source_suffix = '.rst' -master_doc = 'index' - -project = u'EMC VNX plugin for Fuel' -copyright = u'2016, Mirantis Inc.' - -version = '4.0' -release = '4.0-4.0.0-1' - -pygments_style = 'sphinx' - -latex_documents = [ - ('index','fuel-plugin-external-emc-doc.tex', - u'Fuel EMC VNX plugin documentation', - u'Mirantis Inc.', 'manual') -] - -# Configuration for the latex/pdf docs. -latex_elements = { - 'papersize': 'a4paper', - 'pointsize': '11pt', - # remove blank pages - 'classoptions': ',openany,oneside', - 'babel': '\\usepackage[english]{babel}', -} - -if LooseVersion(sphinx_version) >= LooseVersion('1.3.1'): - html_theme = "sphinx_rtd_theme" - -html_add_permalinks = "" -html_show_copyright = False -highlight_language = 'none' diff --git a/doc/source/configuration.rst b/doc/source/configuration.rst deleted file mode 100644 index 836f0b3..0000000 --- a/doc/source/configuration.rst +++ /dev/null @@ -1,50 +0,0 @@ -.. _configure_env: - -Configure EMC VNX plugin for an environment -=========================================== - -To configure the EMC VNX plugin during a Mirantis OpenStack environment -deployment: - -#. Using the Fuel web UI, - `create a new environment `_. - - #. In the :guilabel:`Storage Backends` tab, leave the default - :guilabel:`LVM over iSCSI` back end for Cinder. - #. Do not add the :guilabel:`Cinder` role to any node, since all the Cinder - services will be run on controller nodes. - -#. In the Fuel web UI, open your new environment and click - :menuselection:`Settings -> Other`. - -#. Select the :guilabel:`EMX VNX driver for Cinder` check box: - - .. image:: images/settings.png - :width: 90% - -#. Fill in the :guilabel:`EMX VNX driver for Cinder` form fields: - - .. list-table:: - :header-rows: 1 - - * - Field - - Description/Comment - * - Username and password - - Access credentials configured on EMC VNX. - * - SP A and B IPs - - IP addresses of the EMC VNX Service Processors. - * - Pool name (optional) - - The name of the EMC VNX storage pool on which all Cinder volumes - will be created. The provided storage pool must be available on - EMC VNX. If pool name is not provided, then the EMC VNX driver will - use a random storage pool available on EMC VNX. - -#. Make additional `configuration adjustments `_ - as required. - -#. Proceed to the `environment deployment `_. -#. Complete the :ref:`environment verification steps `. - -.. raw:: latex - - \pagebreak diff --git a/doc/source/images/create.png b/doc/source/images/create.png deleted file mode 100755 index 72a58c9..0000000 Binary files a/doc/source/images/create.png and /dev/null differ diff --git a/doc/source/images/glance.png b/doc/source/images/glance.png deleted file mode 100755 index bcd1e6b..0000000 Binary files a/doc/source/images/glance.png and /dev/null differ diff --git a/doc/source/images/hba.png b/doc/source/images/hba.png deleted file mode 100755 index d66675a..0000000 Binary files a/doc/source/images/hba.png and /dev/null differ diff --git a/doc/source/images/iscsiadmin.png b/doc/source/images/iscsiadmin.png deleted file mode 100755 index 6817b7c..0000000 Binary files a/doc/source/images/iscsiadmin.png and /dev/null differ diff --git a/doc/source/images/lunid.png b/doc/source/images/lunid.png deleted file mode 100755 index 6035907..0000000 Binary files a/doc/source/images/lunid.png and /dev/null differ diff --git a/doc/source/images/novaShow.png b/doc/source/images/novaShow.png deleted file mode 100755 index 0ea8538..0000000 Binary files a/doc/source/images/novaShow.png and /dev/null differ diff --git a/doc/source/images/settings.png b/doc/source/images/settings.png deleted file mode 100755 index afa9f63..0000000 Binary files a/doc/source/images/settings.png and /dev/null differ diff --git a/doc/source/images/storagegroup.png b/doc/source/images/storagegroup.png deleted file mode 100755 index 630689b..0000000 Binary files a/doc/source/images/storagegroup.png and /dev/null differ diff --git a/doc/source/images/volumeAttach.png b/doc/source/images/volumeAttach.png deleted file mode 100755 index 1d60826..0000000 Binary files a/doc/source/images/volumeAttach.png and /dev/null differ diff --git a/doc/source/index.rst b/doc/source/index.rst deleted file mode 100644 index 644cd65..0000000 --- a/doc/source/index.rst +++ /dev/null @@ -1,38 +0,0 @@ -.. _fuel-plugin-external-emc: - -================================================= -Welcome to the Fuel EMC VNX plugin documentation! -================================================= - -Overview -======== - -.. toctree:: - :maxdepth: 1 - - intro.rst - zabbix-versions.rst - limitations.rst - release-notes.rst - licenses.rst - references.rst - -Installing and configuring Fuel EMC VNX plugin -============================================== - -.. toctree:: - :maxdepth: 1 - - installation.rst - configuration.rst - verification.rst - removal.rst - -Using Fuel EMC VNX plugin -========================= - -.. toctree:: - :maxdepth: 1 - - user.rst - troubleshooting.rst diff --git a/doc/source/installation.rst b/doc/source/installation.rst deleted file mode 100644 index 13f12d7..0000000 --- a/doc/source/installation.rst +++ /dev/null @@ -1,106 +0,0 @@ -.. _install: - -Requirements -============ - -The EMC VNX plugin for Fuel has the following requirements: - -.. list-table:: - :widths: 10 25 - :header-rows: 1 - - * - Requirement - - Version - * - Fuel - - 9.0 - * - EMC VNX array - - VNX Operational Environment for Block 5.32 or higher - -.. seealso:: - * :ref:`limit` - * :ref:`zabbix` - -.. _prereqs: - -Prerequisites -============= - -Before you install and start using the Fuel EMC VNX plugin, complete the -following steps: - -#. Install and set up `Fuel 9.0 for Mitaka `_. - For details, see `Fuel Installation Guide `_. -#. Activate the VNX Snapshot and Thin Provisioning license. -#. Configure and deploy the EMC VNX array. -#. Verify that the EMC VNX array is reachable through one of the Mirantis - OpenStack networks. Both EMC SP IPs and all iSCSI ports should be available - over the storage interface from OpenStack nodes. -#. Configure the EMC VNX back end. For details, see - `Openstack Configuration Reference `_. - -For details on EMC VNX configuration, see the -`official EMC VNX series documentation `_. - -EMC VNX configuration checklist: - -+------------------------------------+-------------------------+ -|Item to confirm | Status (tick if done) | -+====================================+=========================+ -|Create username/password. | | -+------------------------------------+-------------------------+ -|Create at least one storage pool. | | -+------------------------------------+-------------------------+ -|Configure network: | | -| - for A and B Service Processor | | -| - for all iSCSI ports | | -+------------------------------------+-------------------------+ -| Configure the EMC VNX back end. | | -+------------------------------------+-------------------------+ - -Install the plugin -================== - -Before you proceed with the Fuel EMC VNX plugin installation, verify that -you have completed the :ref:`prereqs` steps. - -To install the Fuel EMC VNX plugin: - -#. Go to the - `Fuel plugins' catalog `_. - -#. From the :guilabel:`Filter` drop-down menu, select the Mirantis OpenStack - version 8.0 and the :guilabel:`STORAGE` category. - -#. Find Fuel EMC VNX plugin in the plugins' list and download its ``.rpm`` - file. - -#. Copy the ``.rpm`` file to the Fuel Master node: - - .. code-block:: console - - # scp emc_vnx-4.0-4.0.0-1.noarch.rpm root@:/tmp - -#. Log into the Fuel Master node CLI as root. - -#. Install the plugin: - - .. code-block:: console - - # cd /tmp - # fuel plugins --install emc_vnx-4.0-4.0.0-1.noarch.rpm - -#. Verify that the plugin was installed successfully: - - .. code-block:: console - - # fuel plugins - - id | name | version | package_version - ---|---------|---------|---------------- - 1 | emc_vnx | 4.0.0 | 4.0.0 - -#. Proceed to :ref:`configure_env`. - -.. raw:: latex - - \pagebreak diff --git a/doc/source/intro.rst b/doc/source/intro.rst deleted file mode 100644 index 537a9be..0000000 --- a/doc/source/intro.rst +++ /dev/null @@ -1,41 +0,0 @@ -Introduction -============ - -This documentation provides instructions for installing, configuring, and -using the Fuel EMC VNX plugin version 4.0.0. - -The EMC VNX plugin for Fuel extends the Mirantis OpenStack functionality by -adding support for the EMC VNX arrays in Cinder using the iSCSI protocol. It -replaces Cinder LVM driver which is the default volume back end that uses -local volumes managed by LVM. Enabling EMC VNX plugin in Mirantis OpenStack -means that all the Cinder services are run on controller nodes. - -Key terms and abbreviations -=========================== - -The table below lists the key terms and abbreviations that are used in this -document. - -.. tabularcolumns:: |p{4cm}|p{12.5cm}| - -====================== ================================================ -**Term/abbreviation** **Definition** -====================== ================================================ -EMC VNX Unified, hybrid-flash storage used for virtual - applications and cloud-environments. -Cinder OpenStack Block Storage -iSCSI Internet Small Computer System Interface. An - Internet Protocol (IP)-based storage networking - standard for linking data storage facilities. - By carrying SCSI commands over IP networks, - iSCSI is used to facilitate data transfers over - intranets and to manage storage over long - distances. iSCSI can be used to transmit data - over local area networks (LANs), wide area - networks (WANs), or the Internet and can enable - location-independent data storage and retrieval. -LVM A logical volume manager for the Linux kernel - that manages disk drives and similar - mass-storage devices. -LUN Logical unit number -====================== ================================================ diff --git a/doc/source/licenses.rst b/doc/source/licenses.rst deleted file mode 100644 index ac7353f..0000000 --- a/doc/source/licenses.rst +++ /dev/null @@ -1,13 +0,0 @@ -Licenses -======== - -.. csv-table:: - :header: Package, Component, License - :widths: 2, 4, 4 - - ``.deb``, ``multipath-tools``, GPL-2.0 - ``.deb``, ``navicli-linux-64-x86-en-us``, EMC Freeware Software License - ``.rpm``, ``kpartx``, GPL+ - ``.rpm``, ``device-mapper-multipath``, GPL+ - ``.rpm``, ``device-mapper-multipath-libs``, GPL+ - ``.rpm``, ``NaviCLI-Linux-64-x86-en_US``, EMC Freeware Software License diff --git a/doc/source/limitations.rst b/doc/source/limitations.rst deleted file mode 100644 index 1cf7d6b..0000000 --- a/doc/source/limitations.rst +++ /dev/null @@ -1,16 +0,0 @@ -.. _limit: - -Limitations -============ - -The EMC VNX plugin has the following limitations: - -#. Since only one storage network is available in Fuel on OpenStack - nodes, multipath will bind all storage paths from EMC on one network - interface. In case this NIC fails, the communication with storage is - lost. -#. EMC VNX plugin cannot be used together with Cinder role and/or the - following OpenStack environment options: - :guilabel:`Cinder LVM over iSCSI for volumes`, - :guilabel:`Ceph RBD for volumes (Cinder)`. -#. Fibre Channel driver is not supported. diff --git a/doc/source/references.rst b/doc/source/references.rst deleted file mode 100644 index ee839ac..0000000 --- a/doc/source/references.rst +++ /dev/null @@ -1,9 +0,0 @@ -Useful links -============ - -- `GitHub project `_ -- `Launchpad project `_ -- `EMC VNX official documentation `_ -- `EMC VNX driver OpenStack documentation `_ -- `Fuel plugins management commands `_ -- `OpenStack CLI Reference `_ diff --git a/doc/source/release-notes.rst b/doc/source/release-notes.rst deleted file mode 100644 index e7ccb18..0000000 --- a/doc/source/release-notes.rst +++ /dev/null @@ -1,10 +0,0 @@ -Release notes -============= - -The EMC VNX plugin 4.0.0 contains the following updates: - -* Added support for Fuel 9.0. -* Added FC driver support -* Added support for task-based deployment. -* Enhanced the EMC VNX plugin overall performance. -* Improved the EMC VNX plugin documentation. diff --git a/doc/source/removal.rst b/doc/source/removal.rst deleted file mode 100644 index 5812037..0000000 --- a/doc/source/removal.rst +++ /dev/null @@ -1,55 +0,0 @@ -Uninstall EMC VNX plugin -======================== - -To uninstall the EMC VNX plugin, complete the following steps: - -#. Using the Fuel CLI, delete all the Mirantis OpenStack environments in - which the EMC VNX plugin has been enabled: - - .. code-block:: console - - # fuel --env env delete - -#. Uninstall the plugin: - - .. code-block:: console - - # fuel plugins --remove emc_vnx==4.0.0 - -#. Verify whether the VMware DVS plugin was uninstalled successfully: - - .. code-block:: console - - # fuel plugins - - The EMC VNX plugin should not appear in the output list. - -Uninstall Zabbix plugin -======================= - -To uninstall the Zabbix plugin, complete the following steps: - -#. Using the Fuel CLI, delete all the Mirantis OpenStack environments in - which the Zabbix plugin has been enabled: - - .. code-block:: console - - # fuel --env env delete - -#. Uninstall the plugin: - - .. code-block:: console - - # fuel plugins --remove zabbix_monitoring==2.5.0 - -#. Verify whether the Zabbix plugin was uninstalled successfully: - - .. code-block:: console - - # fuel plugins - - The Zabbix plugin should not appear in the output list. - -.. raw:: latex - - \pagebreak \ No newline at end of file diff --git a/doc/source/troubleshooting.rst b/doc/source/troubleshooting.rst deleted file mode 100644 index 684ef5f..0000000 --- a/doc/source/troubleshooting.rst +++ /dev/null @@ -1,32 +0,0 @@ -Troubleshooting -=============== - -Most Cinder errors are caused by incorrect volume configuration that -result in the volume creation failures. To resolve these failures, use the -Cinder logs. - -**To review the Cinder logs** - -If you have issues with Cinder, find and review the following Cinder logs on -controller nodes: - -#. The ``cinder-api`` log located at ``/var/log/cinder/api.log``. -#. The ``cinder-volume`` log located at ``/var/log/cinder/volume.log``. - -Check the ``cinder-api`` log to determine whether you have the endpoint or -connectivity issues. If, for example, the *create volume* request fails, -review the ``cinder-api`` log to check whether the request to -the Block Storage service succeeded. If the request is logged, and you see -no errors or tracebacks, check the ``cinder-volume`` log for errors or -tracebacks. - -**To verify the status of Cinder services** - -Cinder services are running as Pacemaker resources. To verify the status of -services, run the following command on one of controller nodes: - -.. code-block:: console - - # pcs resource show - -All Cinder services should be in the ``started`` mode. diff --git a/doc/source/user.rst b/doc/source/user.rst deleted file mode 100644 index 28afe13..0000000 --- a/doc/source/user.rst +++ /dev/null @@ -1,192 +0,0 @@ -.. _user: - -Create a Cinder volume -====================== - -Once you deploy an OpenStack environment with the EMC VNX plugin, you can -start creating Cinder volumes. The following example shows how to create a -10 GB volume and attach it to a VM. - -#. Login to a controller node. -#. Create a Cinder volume: - - .. code-block:: console - - # cinder create - - The output looks as follows: - - .. image:: images/create.png - :width: 90% - -#. Verify that the volume is created and is ready for use: - - .. code-block:: console - - # cinder list - - In the output, verify the ID and the ``available`` status of the volume - (see the screenshot above). - -#. Verify the volume on EMC VNX: - - #. Add the ``/opt/Navisphere/bin`` directory to the ``PATH`` environment - variable: - - .. code-block:: console - - # export PATH=$PATH:/opt/Navisphere/bin - - #. Save your EMC credentials to simplify syntax in succeeding the - :command:`naviseccli` commands: - - .. code-block:: console - - # naviseccli -addusersecurity -password -scope 0 \ - -user - - #. List LUNs created on EMC: - - .. code-block:: console - - # naviseccli -h lun -list - - .. image:: images/lunid.png - :width: 90% - - In the given example, there is one successfully created LUN with: - - * ID: ``0`` - * Name: ``volume-e1626d9e-82e8-4279-808e-5fcd18016720`` (naming schema is - ``volume-``) - * Current state: ``Ready`` - - The IP address of the EMC VNX SP: 192.168.200.30 - -.. raw:: latex - - \pagebreak - -5. Get the Glance image ID and the network ID: - - .. code-block:: console - - # glance image-list - # nova net-list - - .. image:: images/glance.png - :width: 90% - - The VM ID in the given example is ``48e70690-2590-45c7-b01d-6d69322991c3``. - -#. Create a new VM using the Glance image ID and the network ID: - - .. code-block:: console - - # nova --flavor 2 --image -- nic net-id= - -.. raw:: latex - - \pagebreak - -7. Check the ``STATUS`` of the new VM and on which node it has been created: - - .. code-block:: console - - # nova show - - In the example output, the VM is running on ``node-3`` and is active: - - .. image:: images/novaShow.png - :width: 90% - -#. Attach the Cinder volume to the VM and verify its state: - - .. code-block:: console - - # nova volume-attach - # cinder list - - The output looks as follows: - - .. image:: images/volumeAttach.png - :width: 90% - -.. raw:: latex - - \pagebreak - -9. List the storage groups configured on EMC VNX: - - .. code-block:: console - - # naviseccli -h storagegroup -list - - The output looks as follows: - - .. image:: images/storagegroup.png - :width: 90% - - In the example output, we have: - - * One storage group: ``node-3`` with one LUN attached. - * Four iSCSI ``HBA/SP Pairs`` - one pair per the SP-Port. - * The LUN that has the local ID ``0`` (``ALU Number``) and that is - available as LUN ``133`` (``HLU Number``) for the ``node-3``. - -.. raw:: latex - - \pagebreak - -10. You can also check whether the iSCSI sessions are active: - - .. code-block:: console - - # naviseccli -h port -list -hba - - The output looks as follows: - - .. image:: images/hba.png - :width: 90% - - Check the ``Logged In`` parameter of each port. In the example output, - all four sessions are active as they have ``Logged In: YES``. - -.. raw:: latex - - \pagebreak - -11. When you log in to ``node-3``, you can verify that: - - * The iSCSI sessions are active: - - .. code-block:: console - - # iscsiadm -m session - - * A multipath device has been created by the multipath daemon: - - .. code-block:: console - - # multipath -ll - - * The VM is using the multipath device: - - .. code-block:: console - - # lsof -n -p `pgrep -f ` | grep /dev/ - - .. image:: images/iscsiadmin.png - :width: 90% - - In the example output, we have the following: - - * There are four active sessions (the same as on the EMC). - * The multipath device ``dm-2`` has been created. - * The multipath device has four paths and all are running (one per iSCSI - session). - * QEMU is using the ``/dev/dm-2`` multipath device. - -.. raw:: latex - - \pagebreak diff --git a/doc/source/verification.rst b/doc/source/verification.rst deleted file mode 100644 index e17ba99..0000000 --- a/doc/source/verification.rst +++ /dev/null @@ -1,14 +0,0 @@ -.. _verify: - -Verify an environment deployed with EMC VNX plugin --------------------------------------------------- - -After you deploy an environment with the EMC VNX plugin, complete the -following verification steps: - -#. Log in to the Fuel web UI. -#. Click the :guilabel:`Health Check` tab. -#. Run necessary health tests. For details, see - `Post-deployment check `_. -#. Verify that EMC VNX plugin is properly configured by - :ref:`creating a Cinder volume `. diff --git a/doc/source/zabbix-versions.rst b/doc/source/zabbix-versions.rst deleted file mode 100644 index 36bbe14..0000000 --- a/doc/source/zabbix-versions.rst +++ /dev/null @@ -1,7 +0,0 @@ -.. _zabbix: - -Compatible monitoring plugins -============================= - -The following versions of Zabbix monitoring plugins are compatible with -the EMC VNX plugin: diff --git a/environment_config.yaml b/environment_config.yaml deleted file mode 100644 index 5699ef9..0000000 --- a/environment_config.yaml +++ /dev/null @@ -1,54 +0,0 @@ -attributes: - emc_driver: - type: "select" - weight: 65 - value: "ISCSI" - label: "Cinder Volume Driver" - description: "Driver type" - values: - - data: "FC" - label: "Fiber Channel" - - data: "ISCSI" - label: "ISCSI" - emc_username: - value: "username" - label: "EMC VNX username" - description: "EMC VNX username." - weight: 75 - type: "text" - regex: - source: '\S' - error: "Username field cannot be empty" - emc_password: - value: "password" - label: "EMC VNX password" - description: "EMC VNX password." - weight: 80 - type: "password" - regex: - source: '\S' - error: "Password field cannot be empty" - emc_sp_a_ip: - value: "" - label: "EMC VNX SP A IP" - description: "EMC VNX Service Processor A IP address." - weight: 90 - type: "text" - regex: - source: '^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$' - error: "Specify valid IPv4 address" - emc_sp_b_ip: - value: "" - label: "EMC VNX SP B IP" - description: "EMC VNX Service Processor B IP address." - weight: 90 - type: "text" - regex: - source: '^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$' - error: "Specify valid IPv4 address" - emc_pool_name: - value: "" - label: "EMC VNX pool name" - description: "EMC VNX pool name (optional)" - weight: 95 - type: "text" diff --git a/metadata.yaml b/metadata.yaml deleted file mode 100644 index 855a02c..0000000 --- a/metadata.yaml +++ /dev/null @@ -1,31 +0,0 @@ -# Plugin name -name: emc_vnx -title: EMC VNX driver for Cinder -# Plugin version -version: 4.0.0 -# Description -description: Enables EMC VNX driver in Cinder -# Required fuel version -fuel_version: ['9.0'] -# Groups -groups: ['storage::cinder'] -# Licenses -licenses: ['Apache License, Version 2.0'] -# Homepage -homepage: 'https://github.com/stackforge/fuel-plugin-external-emc' -# Authors -authors: ['Dmitry Klenov ', 'Piotr Misiak ', 'Szymon Banka ', 'Dmitry Kalashnik ', 'Oleksandr Martsyniuk "$REPO/$FILE" - shift - done -} - -download deb http://archive.ubuntu.com/ubuntu/pool/main/m/multipath-tools/multipath-tools_0.4.9-3ubuntu5_amd64.deb \ - http://fuel-repository.mirantis.com/fuel-plugins/emc/ubuntu/navicli-linux-64-x86-en-us_7.33.2.0.51-1_all.deb - -download rpm http://vault.centos.org/6.7/os/x86_64/Packages/device-mapper-multipath-0.4.9-87.el6.x86_64.rpm \ - http://vault.centos.org/6.7/os/x86_64/Packages/device-mapper-multipath-libs-0.4.9-87.el6.x86_64.rpm \ - http://vault.centos.org/6.7/os/x86_64/Packages/kpartx-0.4.9-87.el6.x86_64.rpm \ - http://fuel-repository.mirantis.com/fuel-plugins/emc/centos/NaviCLI-Linux-64-x86-en_US-7.33.3.0.72-1.x86_64.rpm - diff --git a/repositories/centos/.gitkeep b/repositories/centos/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/repositories/ubuntu/.gitkeep b/repositories/ubuntu/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/specs/emc-vnx-plugin-spec.rst b/specs/emc-vnx-plugin-spec.rst deleted file mode 100644 index 7ccf8df..0000000 --- a/specs/emc-vnx-plugin-spec.rst +++ /dev/null @@ -1,147 +0,0 @@ -.. - This work is licensed under the Apache License, Version 2.0. - - http://www.apache.org/licenses/LICENSE-2.0 - -================================================== -Fuel plugin for EMC VNX arrays as a Cinder backend -================================================== - -EMC VNX plugin for Fuel extends Mirantis OpenStack functionality by adding -support for EMC VNX arrays in Cinder using iSCSI protocol. -It replaces Cinder LVM driver which is the default volume backend that uses -local volumes managed by LVM. - -Problem description -=================== - -Currently, Fuel has no support for EMC VNX arrays as block storage for -OpenStack environments. EMC VNX plugin aims to provide support for it. - -Proposed change -=============== - -Implement a Fuel plugin that will install and configure the EMC VNX driver for -Cinder on all Controller nodes. Cinder volume service will be managed -by Pacemaker/Corosync to provide HA. Having all Cinder services run -on controllers no additional Cinder node is required in environment. - -Alternatives ------------- - -It might have been implemented as part of Fuel core but we decided to make it -as a plugin for several reasons: - -* This isn't something that all operators may want to deploy. -* Any new additional functionality makes the project's testing more difficult, - which is an additional risk for the Fuel release. - -Data model impact ------------------ - -None - -REST API impact ---------------- - -None - -Upgrade impact --------------- - -None - -Security impact ---------------- - -None - -Notifications impact --------------------- - -None - -Other end user impact ---------------------- - -None - -Performance Impact ------------------- - -The EMC VNX driver could be slow when it comes to EMC VNX array configuration. -All volume management commands (creating/deleting/attaching etc.) can take -longer than usual. For example, creation a volume from an image -(even very small like CirrOS) may take over 60 seconds. - -Other deployer impact ---------------------- - -The deployer has to preconfigure an EMC VNX array before it can be used with -the plugin. - -Developer impact ----------------- - -None - -Implementation -============== - -Plugin delivers packages with multipath daemon and EMC NaviSecCli (command line -toolkit for EMC VNX arrays management) because they are not included in -Mirantis OpenStack. -Plugin has three tasks. Each task per role. They are run in the following order: - -* The first task installs and configures cinder-volume on Primary Controller. -* The second task installs and configures cinder-volume on Controller nodes. -* THe third task configures Nova on Compute nodes. - -Cinder-volume service is installed on all Controller nodes and is managed by -Pacemaker. It runs in active/passive mode where only one instance is active. -Plugin installs a dedicated resource manager file (OCF) for this. -All instances of cinder-volume have the same “host” parameter in cinder.conf -file. This is required to achieve ability to manage all volumes in the -environment by any cinder-volume instance. -Plugin also installs multipathd daemon and iscsid daemon on all Controller -and Compute nodes and puts customized configuration files for them. -Finally, plugin enables multipath in Cinder and Nova config files. - -Assignee(s) ------------ - -| Dmitry Klenov (PM) -| Piotr Misiak (developer) -| Szymon Bańka (developer) -| Dmitry Kalashnik (QA engineer) - -Work Items ----------- - -* Implement the Fuel plugin. -* Implement the Puppet manifests. -* Testing. -* Write the documentation. - -Dependencies -============ - -* Fuel 6.1 and higher. - -Testing -======= - -* Prepare a test plan. -* Test the plugin by deploying environments with all Fuel deployment modes. - -Documentation Impact -==================== - -* Deployment Guide (how to install the storage backends, how to prepare an - environment for installation, how to install the plugin, how to deploy an - OpenStack environment with the plugin). -* User Guide (which features the plugin provides, how to use them in the - deployed OpenStack environment). -* Test Plan. -* Test Report. - diff --git a/tasks.yaml b/tasks.yaml deleted file mode 100644 index fe51488..0000000 --- a/tasks.yaml +++ /dev/null @@ -1 +0,0 @@ -[]