diff --git a/README.md b/README.md index b090878..e6049fd 100644 --- a/README.md +++ b/README.md @@ -13,6 +13,7 @@ LVM is the default volume backend that uses local volumes managed by LVM. The plugin support following storage familly mode: - 7 Mode - Cluster Mode + - E-Series This repo contains all necessary files to build Cinder NetApp Fuel plugin. @@ -307,6 +308,11 @@ Here is a screenshot of the fields ![Cinder-netapp 7 Mode iscsi fields](./figures/cinder-netapp-7mode-iscsi-plugin.png "Cinder-netapp 7 Mode iscsi fields") + e) E-Series and iscsi + +Here is a screenshot of the fields +![Cinder-netapp E-Series iscsi fields](./figures/cinder-netapp-eseries-iscsi-plugin.png "Cinder-netapp E-Series iscsi fields") + 3) Assign Cinder role to one of the nodes 4) For more information on NetApp integration into Cinder, configuration and API issues, see [the Official Netapp Guide for Openstack](http://docs.openstack.org/juno/config-reference/content/netapp-volume-driver.html). @@ -325,6 +331,12 @@ None. Release Notes ------------- +**3.2.0** + +* add E-Series storage familly support + +* fix the plugin UI + **3.1.0** * add high availability of operations with Volumes diff --git a/deployment_scripts/puppet/manifests/site_cinder.pp b/deployment_scripts/puppet/manifests/site_cinder.pp index 01b3e8d..5cb7b64 100644 --- a/deployment_scripts/puppet/manifests/site_cinder.pp +++ b/deployment_scripts/puppet/manifests/site_cinder.pp @@ -1,2 +1,2 @@ -$fuel_settings = parseyaml(file('/etc/astute.yaml')) -class {'plugin_cinder_netapp::cinder': } +$fuel_settings = parseyaml($astute_settings_yaml) +class {'plugin_cinder_netapp::cinder': } diff --git a/deployment_scripts/puppet/manifests/site_compute.pp b/deployment_scripts/puppet/manifests/site_compute.pp index 7130674..005063f 100644 --- a/deployment_scripts/puppet/manifests/site_compute.pp +++ b/deployment_scripts/puppet/manifests/site_compute.pp @@ -1,2 +1,2 @@ -$fuel_settings = parseyaml(file('/etc/astute.yaml')) -class {'plugin_cinder_netapp::compute': } +$fuel_settings = parseyaml($astute_settings_yaml) +class {'plugin_cinder_netapp::compute': } diff --git a/deployment_scripts/puppet/modules/plugin_cinder_netapp/manifests/backend/netapp.pp b/deployment_scripts/puppet/modules/plugin_cinder_netapp/manifests/backend/netapp.pp index 64dcbe3..07dd5b7 100644 --- a/deployment_scripts/puppet/modules/plugin_cinder_netapp/manifests/backend/netapp.pp +++ b/deployment_scripts/puppet/modules/plugin_cinder_netapp/manifests/backend/netapp.pp @@ -11,36 +11,34 @@ # define plugin_cinder_netapp::backend::netapp ( $section = $name, - $backends ="", + $backends = "", $mutlibackends = false, - $cinder_node = false + $cinder_node = false ) { include cinder::client #Ensure that $ symbole is correctly escaped in netapp password $netapp_password = regsubst($::fuel_settings['cinder_netapp']['netapp_password'],'\$','$$','G') - $backend_name='cinder_netapp' + $backend_name = 'cinder_netapp' cinder::backend::netapp { "${backend_name}": + volume_backend_name => $section, netapp_login => $::fuel_settings['cinder_netapp']['netapp_login'], netapp_password => $netapp_password, netapp_server_hostname => $::fuel_settings['cinder_netapp']['netapp_server_hostname'], - volume_backend_name => $section, netapp_server_port => $::fuel_settings['cinder_netapp']['netapp_server_port'], - netapp_size_multiplier => $::fuel_settings['cinder_netapp']['netappsize_multiplier'], + netapp_transport_type => $::fuel_settings['cinder_netapp']['netapp_transport_type'], netapp_storage_family => $::fuel_settings['cinder_netapp']['netapp_storage_family'], netapp_storage_protocol => $::fuel_settings['cinder_netapp']['netapp_storage_protocol'], - netapp_transport_type => $::fuel_settings['cinder_netapp']['netapp_transport_type'], + netapp_vserver => $::fuel_settings['cinder_netapp']['netapp_vserver'], + netapp_controller_ips => $::fuel_settings['cinder_netapp']['netapp_controller_ips'], + netapp_sa_password => $::fuel_settings['cinder_netapp']['netapp_sa_password'], + netapp_storage_pools => $::fuel_settings['cinder_netapp']['netapp_storage_pools'], + netapp_size_multiplier => $::fuel_settings['cinder_netapp']['netapp_size_multiplier'], netapp_vfiler => $::fuel_settings['cinder_netapp']['netapp_vfiler'], netapp_volume_list => $::fuel_settings['cinder_netapp']['netapp_volume_list'], - netapp_vserver => $::fuel_settings['cinder_netapp']['netapp_vserver'], expiry_thres_minutes => $::fuel_settings['cinder_netapp']['expiry_thres_minutes'], thres_avl_size_perc_start => $::fuel_settings['cinder_netapp']['thres_avl_size_perc_start'], thres_avl_size_perc_stop => $::fuel_settings['cinder_netapp']['thres_avl_size_perc_stop'], - nfs_shares_config => "/etc/cinder/shares.conf", netapp_copyoffload_tool_path => $::fuel_settings['cinder_netapp']['netapp_copyoffload_tool_path'], - #netapp_controller_ips => '', - #netapp_sa_password => '', - #netapp_storage_pools => '', - #netapp_webservice_path => '/devmgr/v2', } $index = $::fuel_settings['cinder_netapp']['nb_share'] if $mutlibackends{ diff --git a/environment_config.yaml b/environment_config.yaml index 4304c0e..5b63298 100644 --- a/environment_config.yaml +++ b/environment_config.yaml @@ -6,18 +6,40 @@ attributes: weight: 35 type: "checkbox" +# Storage Type netapp_storage_family: value: "ontap_cluster" values: - data: "ontap_cluster" - label: "Ontap cluster" - description: "Clustered data ONTAP storage family" + label: "Ontap Cluster" + description: "Data ONTAP operating in Clustered storage family" - data: "ontap_7mode" - label: "Ontap 7 mode" - description: "Data ONTAP operating in 7_mode storage family" + label: "Ontap 7mode" + description: "Data ONTAP operating in 7Mode storage family" + - data: "eseries" + label: "E-Series" + description: "E-Series storage family" label: "Netapp storage family" weight: 40 type: "radio" + netapp_storage_protocol: + value: "iscsi" + values: + - data: "iscsi" + label: "iscsi" + description: "" + - data: "nfs" + label: "nfs" + description: "" + restrictions: + - condition: "settings:cinder_netapp.netapp_storage_family.value == 'eseries'" + action: "hide" + label: "Netapp storage protocol" + description: 'The storage protocol to be used on the data path with the storage system' + weight: 42 + type: "radio" + +# Authorisation netapp_login: value: '' label: 'Username' @@ -28,69 +50,22 @@ attributes: value: '' label: 'Password' description: 'Password for the administrative user account specified in the netapp_login option.' - weight: 45 + weight: 46 type: "password" + +# Connection netapp_server_hostname: value: '' label: 'NetApp Hostname/IP' description: 'The hostname (or IP address) for the storage system or proxy server.' weight: 55 type: "text" - nfs_server_ip: + netapp_server_port: value: '' - label: 'NetApp NFS server Hostname/IP' - description: 'The hostname (or IP address) for NFS server started on NetApp apliance' - weight: 65 + label: 'NetApp server port' + description: 'The TCP port to use for communication with the storage system or proxy server. If not specified, Data ONTAP drivers will use 80 for HTTP and 443 for HTTPS; E-Series will use 8080 for HTTP and 8443 for HTTPS.' + weight: 56 type: "text" - nb_share: - type: "select" - weight: 72 - value: "1" - label: "Number of Netapp NFS share" - description: "" - values: - - data: "1" - label: "1" - - data: "2" - label: "2" - - data: "3" - label: "3" - - data: "4" - label: "4" - nfs_server_share1: - value: '' - label: 'NetApp NFS share' - description: 'The NFS share path (e.g. /vol2)' - weight: 75 - type: "text" - nfs_server_share2: - value: '' - label: 'NetApp NFS share 2' - description: 'The NFS share path (e.g. /vol2)' - weight: 75 - type: "text" - restrictions: - - condition: "settings:cinder_netapp.nb_share.value != '2' and settings:cinder_netapp.nb_share.value != '3' and settings:cinder_netapp.nb_share.value != '4' " - - action: "hide" - nfs_server_share3: - value: '' - label: 'NetApp NFS share 3' - description: 'The NFS share path (e.g. /vol2)' - weight: 75 - type: "text" - restrictions: - - condition: "settings:cinder_netapp.nb_share.value != '3' and settings:cinder_netapp.nb_share.value != '4' " - action: "hide" - nfs_server_share4: - value: '' - label: 'NetApp NFS share 4' - description: 'The NFS share path (e.g. /vol2)' - weight: 75 - type: "text" - restrictions: - - condition: "settings:cinder_netapp.nb_share.value != '4' " - action: "hide" netapp_transport_type: value: "http" values: @@ -102,100 +77,179 @@ attributes: description: "" label: "Netapp transport type" description: 'The transport protocol used for communication with the storage system or proxy server' - weight: 76 - type: "radio" - netapp_server_port: - value: '80' - label: 'NetApp server port' - description: 'The TCP port to use for communication with the storage system or proxy server' - weight: 77 - type: "text" - netapp_storage_protocol: - value: "nfs" - values: - - data: "nfs" - label: "nfs" - description: "" - - data: "iscsi" - label: "iscsi" - description: "" - label: "Netapp storage protocol" - description: 'The storage protocol to be used on the data path with the storage system' - weight: 78 + weight: 57 type: "radio" - netapp_vserver: +# NFS + nfs_server_ip: value: '' - label: 'Vserver' - description: 'This option specifies the virtual storage server (Vserver) name on the storage cluster on which provisioning of block storage volumes should occur. (Cluster-Mode only and mandatory for NFS Storage protocol)' - weight: 75 - type: "text" - restrictions: - - condition: "settings:cinder_netapp.netapp_storage_family.value != 'ontap_cluster'" - action: "hide" - - expiry_thres_minutes: - value: '720' - label: 'Expiry thres minutes' - description: 'This option specifies the threshold for last access time for images in the NFS image cache (NFS protocol only)' - weight: 85 + label: 'NetApp NFS server' + description: 'The hostname (or IP address) for NFS server started on NetApp apliance' + weight: 70 type: "text" restrictions: - condition: "settings:cinder_netapp.netapp_storage_protocol.value != 'nfs'" action: "hide" - netapp_copyoffload_tool_path: + nb_share: + type: "select" + weight: 71 + value: "1" + label: "NFS shares" + description: "Number of Netapp NFS shares" + values: + - data: "1" + label: "1" + - data: "2" + label: "2" + - data: "3" + label: "3" + - data: "4" + label: "4" + restrictions: + - condition: "settings:cinder_netapp.netapp_storage_protocol.value != 'nfs'" + action: "hide" + nfs_server_share1: value: '' - label: 'NetApp copyoffload tool path' - description: '(Optionnal) This option specifies the path of the Netapp copy ofload tool binary (NFS protocol only)' - weight: 85 + label: 'NFS share' + description: 'The NFS share path (e.g. /vol2)' + weight: 72 + type: "text" + restrictions: + - condition: "settings:cinder_netapp.netapp_storage_protocol.value != 'nfs'" + action: "hide" + nfs_server_share2: + value: '' + label: 'NFS share 2' + description: 'The NFS share path (e.g. /vol2)' + weight: 73 + type: "text" + restrictions: + - condition: "settings:cinder_netapp.netapp_storage_protocol.value != 'nfs' or settings:cinder_netapp.nb_share.value != '2' and settings:cinder_netapp.nb_share.value != '3' and settings:cinder_netapp.nb_share.value != '4'" + action: "hide" + nfs_server_share3: + value: '' + label: 'NFS share 3' + description: 'The NFS share path (e.g. /vol2)' + weight: 74 + type: "text" + restrictions: + - condition: "settings:cinder_netapp.netapp_storage_protocol.value != 'nfs' or settings:cinder_netapp.nb_share.value != '3' and settings:cinder_netapp.nb_share.value != '4'" + action: "hide" + nfs_server_share4: + value: '' + label: 'NFS share 4' + description: 'The NFS share path (e.g. /vol2)' + weight: 75 + type: "text" + restrictions: + - condition: "settings:cinder_netapp.netapp_storage_protocol.value != 'nfs' or settings:cinder_netapp.nb_share.value != '4'" + action: "hide" + expiry_thres_minutes: + value: '720' + label: 'NFS expiry thres minutes' + description: 'This option specifies the threshold for last access time for images in the NFS image cache (NFS protocol only)' + weight: 76 type: "text" restrictions: - condition: "settings:cinder_netapp.netapp_storage_protocol.value != 'nfs'" action: "hide" thres_avil_size_perc_start: value: '20' - label: 'Thres avl size perc start' + label: 'NFS thres avl size perc start' description: 'The percentage of available space from which the NFS image cache will be cleaned (NFS protocol only)' - weight: 85 + weight: 77 type: "text" restrictions: - condition: "settings:cinder_netapp.netapp_storage_protocol.value != 'nfs'" action: "hide" thres_avil_size_perc_stop: value: '60' - label: 'Thres avl size perc stop' + label: 'NFS thres avl size perc stop' description: 'The percentage of available space from which the driver will stop cleaning the NFS image cache (NFS protocol only)' - weight: 85 + weight: 78 type: "text" restrictions: - condition: "settings:cinder_netapp.netapp_storage_protocol.value != 'nfs'" action: "hide" - netapp_size_multiplier: - value: '1.2' - label: 'NetApp size multiplier' - description: 'Mutiplication factor used to chack available space on the virtual storage server (iSCSI configuration only)' - weight: 90 +# Ontap Cluster + netapp_vserver: + value: '' + label: 'CMode vserver' + description: 'This option specifies the virtual storage server (Vserver) name on the storage cluster on which provisioning of block storage volumes should occur. (Cluster-Mode only and mandatory for NFS Storage protocol)' + weight: 80 type: "text" restrictions: - - condition: "settings:cinder_netapp.netapp_storage_protocol.value != 'iscsi'" + - condition: "settings:cinder_netapp.netapp_storage_family.value != 'ontap_cluster'" action: "hide" +# Ontap Cluster with NFS + netapp_copyoffload_tool_path: + value: '' + label: 'CMode copyoffload tool path' + description: '(Optionnal) This option specifies the path of the Netapp copy offload tool binary (NFS protocol only)' + weight: 81 + type: "text" + restrictions: + - condition: "settings:cinder_netapp.netapp_storage_protocol.value != 'nfs' or settings:cinder_netapp.netapp_storage_family.value != 'ontap_cluster'" + action: "hide" + +# Ontap 7Mode with iSCSI netapp_vfiler: value: '' - label: 'Netapp vfiler' + label: '7Mode vfiler' description: '(Optionnal) The vFiler unti on which provisioning of block storage volumes will be done (iSCSI configuration in 7-Mode only)' - weight: 90 + weight: 81 type: "text" restrictions: - condition: "settings:cinder_netapp.netapp_storage_protocol.value != 'iscsi' or settings:cinder_netapp.netapp_storage_family.value != 'ontap_7mode'" action: "hide" netapp_volume_list: value: '' - label: 'Netapp volume list' + label: '7Mode volume list' description: '(Optionnal) This option is used to restrict provisionning to the specified controller volumes (iSCSI configuration in 7-Mode only)' - weight: 90 + weight: 82 type: "text" restrictions: - condition: "settings:cinder_netapp.netapp_storage_protocol.value != 'iscsi' or settings:cinder_netapp.netapp_storage_family.value != 'ontap_7mode'" action: "hide" + +# Ontap Cluster or 7Mode with iSCSI + netapp_size_multiplier: + value: '1.2' + label: 'NetApp size multiplier' + description: 'Mutiplication factor used to chack available space on the virtual storage server (iSCSI configuration only)' + weight: 83 + type: "text" + restrictions: + - condition: "settings:cinder_netapp.netapp_storage_protocol.value != 'iscsi' or settings:cinder_netapp.netapp_storage_family.value == 'eseries'" + action: "hide" + +# E-Series + netapp_controller_ips: + value: '' + label: 'E-Series controller IPs' + description: 'This option is used to restrict provisioning to the specified controllers. Specify the value of this option to be a comma separated list of controller hostnames or IP addresses to be used for provisioning.' + weight: 80 + type: "text" + restrictions: + - condition: "settings:cinder_netapp.netapp_storage_family.value != 'eseries' or settings:cinder_netapp.netapp_storage_protocol.value != 'iscsi'" + action: "hide" + netapp_sa_password: + value: '' + label: 'E-Series storage array password' + description: 'Password for the NetApp E-Series storage array.' + weight: 81 + type: "password" + restrictions: + - condition: "settings:cinder_netapp.netapp_storage_family.value != 'eseries' or settings:cinder_netapp.netapp_storage_protocol.value != 'iscsi'" + action: "hide" + netapp_storage_pools: + value: '' + label: 'E-Series storage pools' + description: 'This option is used to restrict provisioning to the specified storage pools. Only dynamic disk pools are currently supported. Specify the value of this option to be a comma separated list of disk pool names to be used for provisioning.' + weight: 82 + type: "text" + restrictions: + - condition: "settings:cinder_netapp.netapp_storage_family.value != 'eseries' or settings:cinder_netapp.netapp_storage_protocol.value != 'iscsi'" + action: "hide" diff --git a/figures/cinder-netapp-7mode-iscsi-plugin.png b/figures/cinder-netapp-7mode-iscsi-plugin.png index 57bb8e8..22251ab 100644 Binary files a/figures/cinder-netapp-7mode-iscsi-plugin.png and b/figures/cinder-netapp-7mode-iscsi-plugin.png differ diff --git a/figures/cinder-netapp-7mode-nfs-plugin.png b/figures/cinder-netapp-7mode-nfs-plugin.png index e9606f8..e1e403f 100644 Binary files a/figures/cinder-netapp-7mode-nfs-plugin.png and b/figures/cinder-netapp-7mode-nfs-plugin.png differ diff --git a/figures/cinder-netapp-cmode-iscsi-plugin.png b/figures/cinder-netapp-cmode-iscsi-plugin.png index 6efc4bc..6ec7346 100644 Binary files a/figures/cinder-netapp-cmode-iscsi-plugin.png and b/figures/cinder-netapp-cmode-iscsi-plugin.png differ diff --git a/figures/cinder-netapp-cmode-nfs-plugin.png b/figures/cinder-netapp-cmode-nfs-plugin.png index 2634ff9..0a5866e 100644 Binary files a/figures/cinder-netapp-cmode-nfs-plugin.png and b/figures/cinder-netapp-cmode-nfs-plugin.png differ diff --git a/figures/cinder-netapp-eseries-iscsi-plugin.png b/figures/cinder-netapp-eseries-iscsi-plugin.png new file mode 100644 index 0000000..8a16a2a Binary files /dev/null and b/figures/cinder-netapp-eseries-iscsi-plugin.png differ diff --git a/metadata.yaml b/metadata.yaml index a42f4a8..f2f2c2e 100644 --- a/metadata.yaml +++ b/metadata.yaml @@ -3,7 +3,7 @@ name: cinder_netapp # Human-readable name for your plugin title: Cinder and NetApp integration # Plugin version -version: 3.1.0 +version: 3.2.0 # Description description: Enable to use NetApp nfs driver as a Cinder backend # Required fuel version