Add config for IBM FlashSystem

Modify config in attributes/default.rb, recipes/cinder-common.rb,
spec/volume_spec.rb, spec/cinder_common_spec.rb and
templates/default/cinder.conf.erb with SAN login and password.
It has been merged in Kilo. iSCSI code is on the way.

Change-Id: I784f69424a5f1b20f99ba5faccc85b3066e23de3
This commit is contained in:
Edwin Wang 2014-12-31 13:45:36 +08:00
parent 3d566f0146
commit ab7c43d8ef
7 changed files with 104 additions and 2 deletions

View File

@ -161,6 +161,13 @@ Cinder attributes
* `openstack['block-storage']['storwize']['storwize_svc_multipath_enabled'] - Connect with multipath (FC only; iSCSI multipath is controlled by Nova)
* `openstack['block-storage']['storwize']['storwize_svc_multihostmap_enabled'] - Allows vdisk to multi host mapping
### FlashSystem attributes ###
* `openstack['block-storage']['san']['san_ip'] - IP address of FlashSystem Cluster node
* `openstack['block-storage']['san']['san_login'] - Username for FlashSystem Cluster node
* `openstack['block-storage']['flashsystem']['flashsystem_connection_protocol'] - The connection protocol for FlashSystem data path (FC)
* `openstack['block-storage']['flashsystem']['flashsystem_multipath_enabled'] - The multipath enablement flag (FC only)
* `openstack['block-storage']['flashsystem']['flashsystem_multihostmap_enabled'] - Enable vdisk to multi-host mapping
### VMware attributes ###
* `openstack['block-storage']['vmware']['secret_name']` - VMware databag secret name
* `openstack['block-storage']['vmware']['vmware_host_ip']` - IP address for connecting to VMware ESX/VC server. (string value)
@ -242,12 +249,13 @@ License and Author
| **Author** | Chen Zhiwei (<zhiwchen@cn.ibm.com>) |
| **Author** | Mark Vanderwiel (<vanderwl@us.ibm.com>) |
| **Author** | Eric Zhou (<zyouzhou@cn.ibm.com>) |
| **Author** | Edwin Wang (<edwin.wang@cn.ibm.com>) |
| | |
| **Copyright** | Copyright (c) 2012, Rackspace US, Inc. |
| **Copyright** | Copyright (c) 2012-2013, AT&T Services, Inc. |
| **Copyright** | Copyright (c) 2013, Opscode, Inc. |
| **Copyright** | Copyright (c) 2013-2014, SUSE Linux GmbH |
| **Copyright** | Copyright (c) 2013-2014, IBM, Corp. |
| **Copyright** | Copyright (c) 2013-2015, IBM, Corp. |
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.

View File

@ -186,6 +186,16 @@ default['openstack']['block-storage']['solidfire']['san_login'] = node['openstac
default['openstack']['block-storage']['solidfire']['sf_emulate'] = 'False'
default['openstack']['block-storage']['solidfire']['iscsi_ip_prefix'] = nil
# FlashSystem Support
default['openstack']['block-storage']['flashsystem']['san_ip'] = node['openstack']['block-storage']['san']['san_ip']
default['openstack']['block-storage']['flashsystem']['san_login'] = node['openstack']['block-storage']['san']['san_login']
# The connection protocol for FlashSystem data path (FC only, will introduce iSCSI in Liberty)
default['openstack']['block-storage']['flashsystem']['flashsystem_connection_protocol'] = 'FC'
# The multipath enablement flag (FC only, iSCSI multipath will be controlled by Nova)
default['openstack']['block-storage']['flashsystem']['flashsystem_multipath_enabled'] = false
# Enable vdisk to multi-host mapping
default['openstack']['block-storage']['flashsystem']['flashsystem_multihostmap_enabled'] = true
# EMC VMAX/VNX tSupport
# The EmcUserName user's password is stored in an encrypted databag and
# accessed with openstack-common cookbook library's "get_password" routeine. You
@ -322,6 +332,7 @@ when 'fedora', 'rhel' # :pragma-foodcritic: ~FC024 - won't fix this
'cinder_nfs_packages' => ['nfs-utils', 'nfs-utils-lib'],
'cinder_emc_packages' => ['pywbem'],
'cinder_svc_packages' => ['sysfsutils'],
'cinder_flashsystem_packages' => ['sysfsutils'],
'package_overrides' => ''
}
when 'suse'
@ -342,7 +353,8 @@ when 'suse'
'cinder_iscsitarget_service' => 'tgtd',
'cinder_nfs_packages' => ['nfs-utils'],
'cinder_emc_packages' => ['python-pywbem'],
'cinder_svc_packages' => ['sysfsutils']
'cinder_svc_packages' => ['sysfsutils'],
'cinder_flashsystem_packages' => ['sysfsutils']
}
when 'debian'
# operating system user and group names
@ -363,6 +375,7 @@ when 'debian'
'cinder_nfs_packages' => ['nfs-common'],
'cinder_emc_packages' => ['python-pywbem'],
'cinder_svc_packages' => ['sysfsutils'],
'cinder_flashsystem_packages' => ['sysfsutils'],
'package_overrides' => "-o Dpkg::Options::='--force-confold' -o Dpkg::Options::='--force-confdef'"
}
end

View File

@ -52,6 +52,8 @@ when 'cinder.volume.drivers.ibm.storwize_svc.StorwizeSVCDriver'
end
when 'cinder.volume.drivers.solidfire.SolidFire'
solidfire_pass = get_password 'user', node['openstack']['block-storage']['solidfire']['san_login']
when 'cinder.volume.drivers.ibm.flashsystem.FlashSystemDriver'
flashsystem_pass = get_password 'user', node['openstack']['block-storage']['flashsystem']['san_login']
when 'cinder.volume.drivers.ibm.ibmnas.IBMNAS_NFSDriver'
ibmnas_pass = get_password 'user', node['openstack']['block-storage']['ibmnas']['nas_login']
when 'cinder.volume.drivers.vmware.vmdk.VMwareVcVmdkDriver'
@ -105,6 +107,7 @@ template '/etc/cinder/cinder.conf' do
glance_port: glance_api_endpoint.port,
ibmnas_pass: ibmnas_pass,
solidfire_pass: solidfire_pass,
flashsystem_pass: flashsystem_pass,
storwize_pass: storwize_pass,
volume_api_bind_address: cinder_api_bind.host,
volume_api_bind_port: cinder_api_bind.port,

View File

@ -119,6 +119,14 @@ when 'cinder.volume.drivers.ibm.storwize_svc.StorwizeSVCDriver'
end
end
when 'cinder.volume.drivers.ibm.flashsystem.FlashSystemDriver'
platform_options['cinder_flashsystem_packages'].each do |pkg|
package pkg do
options platform_options['package_overrides']
action :upgrade
end
end
when 'cinder.volume.drivers.ibm.gpfs.GPFSDriver'
directory node['openstack']['block-storage']['gpfs']['gpfs_mount_point_base'] do
mode '0755'

View File

@ -683,6 +683,44 @@ describe 'openstack-block-storage::cinder-common' do
end
end
context 'flashsystem settings' do
before do
node.set['openstack']['block-storage']['volume']['driver'] = 'cinder.volume.drivers.ibm.flashsystem.FlashSystemDriver'
end
it 'has flashsystem password' do
expect(chef_run).to render_config_file(file.name).with_section_content('DEFAULT', /^san_password=test_pass$/)
end
it 'has a default attribute' do
%w(san_ip=127.0.0.1
flashsystem_connection_protocol=FC
flashsystem_multihostmap_enabled=true).each do |attr|
expect(chef_run).to render_config_file(file.name).with_section_content('DEFAULT', /^#{attr}$/)
end
end
it 'has a overridden attribute' do
%w(san_ip
flashsystem_connection_protocol
flashsystem_multihostmap_enabled).each do |attr|
node.set['openstack']['block-storage']['flashsystem'][attr] = "flashsystem_#{attr}_value"
expect(chef_run).to render_config_file(file.name).with_section_content('DEFAULT', /^#{attr}=flashsystem_#{attr}_value$/)
end
end
context 'FlashSystem with FC connection protocol' do
before do
node.set['openstack']['block-storage']['storwize']['flashsystem_connection_protocol'] = 'FC'
end
it 'has a multipath enabled attribute' do
node.set['openstack']['block-storage']['flashsystem']['flashsystem_multipath_enabled'] = 'flashsystem_multipath_enabled_value'
expect(chef_run).to render_config_file(file.name).with_section_content('DEFAULT', /^flashsystem_multipath_enabled=flashsystem_multipath_enabled_value$/)
end
end
end
context 'emc settings' do
before do
node.set['openstack']['block-storage']['volume']['driver'] = 'cinder.volume.drivers.emc.emc_smis_iscsi.EMCSMISISCSIDriver'

View File

@ -201,6 +201,16 @@ describe 'openstack-block-storage::volume' do
end
end
context 'FlashSystem Driver' do
before do
node.set['openstack']['block-storage']['volume']['driver'] = 'cinder.volume.drivers.ibm.flashsystem.FlashSystemDriver'
end
it 'upgrades sysfsutils package' do
expect(chef_run).to upgrade_package 'sysfsutils'
end
end
describe 'targets.conf' do
let(:file) { chef_run.template('/etc/tgt/targets.conf') }

View File

@ -800,6 +800,28 @@ iscsi_ip_prefix=<%= node["openstack"]["block-storage"]["solidfire"]["iscsi_ip_pr
<% end %>
<% end %>
<% if @enabled_drivers.include?("cinder.volume.drivers.ibm.flashsystem.FlashSystemDriver") -%>
######## defined in cinder.volume.drivers.ibm.flashsystem.FlashSystemDriver ########
san_ip=<%= node["openstack"]["block-storage"]["flashsystem"]["san_ip"] %>
#### (StrOpt) IP address of FlashSystem Cluster Node
san_login=<%= node["openstack"]["block-storage"]["flashsystem"]["san_login"] %>
#### (StrOpt) Username for FlashSystem Cluster Admin
san_password=<%= @flashsystem_pass %>
#### (StrOpt) Password for FlashSystem Cluster Admin
flashsystem_connection_protocol=<%= node["openstack"]["block-storage"]["flashsystem"]["flashsystem_connection_protocol"] %>
#### (StrOpt) Connection protocol (FC only)
flashsystem_multipath_enabled=<%= node["openstack"]["block-storage"]["flashsystem"]["flashsystem_multipath_enabled"] %>
#### (BoolOpt) Multipath flag (FC only)
flashsystem_multihostmap_enabled=<%= node["openstack"]["block-storage"]["flashsystem"]["flashsystem_multihostmap_enabled"] %>
#### (BoolOpt) Multi host mapping flag
<% end -%>
#### (BoolOpt) Allow tenants to specify QOS on create
<% if @enabled_drivers.include?("cinder.volume.drivers.ibm.storwize_svc.StorwizeSVCDriver") %>
######## defined in cinder.volume.storwize_svc ########