Adding support for netapp NFS direct driver
This commit adds support for the 7mode NFS direct driver. Changed the 'if driver' to a case, somewhat based off the rcbops cinder-volume recipe. if the NFS driver is chosen, the volume recipe will install the nfs client package, setup a mountpoint a shares config file, and setups cinder.conf accordingly Change-Id: Ia8d4c31235426614a317729494569062a23a05bf
This commit is contained in:
parent
be498fa94c
commit
a05a53dfeb
13
README.md
13
README.md
|
@ -66,6 +66,19 @@ Attributes
|
|||
* `openstack["block-storage"]["policy"]["default"]` - default volume operations rule
|
||||
* `openstack["block-storage"]["policy"]["admin_or_owner"]` - Define an admin or owner
|
||||
* `openstack["block-storage"]["policy"]["admin_api"]` - Define api admin
|
||||
* `openstack["block-storage"]["netapp"]["protocol"]` - how are we talking to either dfm or filer, http or https
|
||||
* `openstack["block-storage"]["netapp"]["dfm_hostname"]` - Host or IP of your dfm server
|
||||
* `openstack["block-storage"]["netapp"]["dfm_login"]` - Username for dfm
|
||||
* `openstack["block-storage"]["netapp"]["dfm_password"]` - password for the dfm user
|
||||
* `openstack["block-storage"]["netapp"]["dfm_port"]` - default port for dfm
|
||||
* `openstack["block-storage"]["netapp"]["dfm_web_port"]` - web gui port for wsdl file download
|
||||
* `openstack["block-storage"]["netapp"]["storage_service"]` - name of the service in dfpm
|
||||
* `openstack["block-storage"]["netapp"]["netapp_server_port"]` - web admin port of the filer itself
|
||||
* `openstack["block-storage"]["netapp"]["netapp_server_hostname"]` - hostname of your filer, needs to be resolvable
|
||||
* `openstack["block-storage"]["netapp"]["netapp_server_login"]` - Username for netapp filer
|
||||
* `openstack["block-storage"]["netapp"]["netapp_server_password"]` - password for user above
|
||||
* `openstack["block-storage"]["nfs"]["shares_config"]` - file containing line by line entries of server:export
|
||||
* `openstack["block-storage"]["nfs"]["mount_point_base"]` - directory to mount NFS exported shares
|
||||
|
||||
Testing
|
||||
=====
|
||||
|
|
|
@ -94,6 +94,15 @@ default["openstack"]["block-storage"]["netapp"]["dfm_port"] = "8088"
|
|||
default["openstack"]["block-storage"]["netapp"]["dfm_web_port"] = "8080"
|
||||
default["openstack"]["block-storage"]["netapp"]["storage_service"] = "storage_service"
|
||||
|
||||
# Netapp direct NFS
|
||||
default["openstack"]["block-storage"]["netapp"]["netapp_server_port"] = "80"
|
||||
default["openstack"]["block-storage"]["netapp"]["netapp_server_hostname"] = nil
|
||||
default["openstack"]["block-storage"]["netapp"]["netapp_server_password"] = nil
|
||||
default["openstack"]["block-storage"]["netapp"]["netapp_server_login"] = nil
|
||||
default["openstack"]["block-storage"]["netapp"]["export"] = nil
|
||||
default["openstack"]["block-storage"]["nfs"]["shares_config"] = "/etc/cinder/shares.conf"
|
||||
default["openstack"]["block-storage"]["nfs"]["mount_point_base"] = "/mnt/cinder-volumes"
|
||||
|
||||
# logging attribute
|
||||
default["openstack"]["block-storage"]["syslog"]["use"] = false
|
||||
default["openstack"]["block-storage"]["syslog"]["facility"] = "LOG_LOCAL2"
|
||||
|
@ -129,6 +138,7 @@ when "fedora", "redhat", "centos" # :pragma-foodcritic: ~FC024 - won't fix this
|
|||
"cinder_scheduler_service" => "openstack-cinder-scheduler",
|
||||
"cinder_iscsitarget_packages" => ["scsi-target-utils"],
|
||||
"cinder_iscsitarget_service" => "tgtd",
|
||||
"cinder_nfs_packages" => ["nfs-utils", "nfs-utils-lib"],
|
||||
"package_overrides" => ""
|
||||
}
|
||||
when "ubuntu"
|
||||
|
@ -141,6 +151,7 @@ when "ubuntu"
|
|||
"cinder_scheduler_service" => "cinder-scheduler",
|
||||
"cinder_iscsitarget_packages" => ["tgt"],
|
||||
"cinder_iscsitarget_service" => "tgt",
|
||||
"cinder_nfs_packages" => ["nfs-common"],
|
||||
"package_overrides" => "-o Dpkg::Options::='--force-confold' -o Dpkg::Options::='--force-confdef'"
|
||||
}
|
||||
end
|
||||
|
|
|
@ -43,11 +43,41 @@ platform_options["cinder_iscsitarget_packages"].each do |pkg|
|
|||
end
|
||||
end
|
||||
|
||||
volume_driver = node["openstack"]["block-storage"]["volume"]["driver"]
|
||||
if volume_driver == "cinder.volume.drivers.netapp.NetAppISCSIDriver"
|
||||
node.override["openstack"]["block-storage"]["netapp"]["dfm_password"] = service_password "netapp"
|
||||
elsif volume_driver == 'cinder.volume.drivers.RBDDriver'
|
||||
node.override["openstack"]["block-storage"]["rbd_secret_uuid"] = service_password "rbd"
|
||||
case node["openstack"]["block-storage"]["volume"]["driver"]
|
||||
when "cinder.volume.drivers.netapp.iscsi.NetAppISCSIDriver"
|
||||
node.override["openstack"]["block-storage"]["netapp"]["dfm_password"] = service_password "netapp"
|
||||
|
||||
when "cinder.volume.drivers.RBDDriver"
|
||||
node.override["openstack"]["block-storage"]["rbd_secret_uuid"] = service_password "rbd"
|
||||
|
||||
when "cinder.volume.drivers.netapp.nfs.NetAppDirect7modeNfsDriver"
|
||||
node.override["openstack"]["block-storage"]["netapp"]["netapp_server_password"] = service_password "netapp-filer"
|
||||
|
||||
directory node["openstack"]["block-storage"]["nfs"]["mount_point_base"] do
|
||||
owner node["openstack"]["block-storage"]["user"]
|
||||
group node["openstack"]["block-storage"]["group"]
|
||||
action :create
|
||||
end
|
||||
|
||||
template node["openstack"]["block-storage"]["nfs"]["shares_config"] do
|
||||
source "shares.conf.erb"
|
||||
mode "0600"
|
||||
owner node["openstack"]["block-storage"]["user"]
|
||||
group node["openstack"]["block-storage"]["group"]
|
||||
variables(
|
||||
"host" => node["openstack"]["block-storage"]["netapp"]["netapp_server_hostname"],
|
||||
"export" => node["openstack"]["block-storage"]["netapp"]["export"]
|
||||
)
|
||||
notifies :restart, "service[cinder-volume]"
|
||||
end
|
||||
|
||||
platform_options["cinder_nfs_packages"].each do |pkg|
|
||||
package pkg do
|
||||
options platform_options["package_overrides"]
|
||||
|
||||
action :upgrade
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
service "cinder-volume" do
|
||||
|
|
|
@ -30,6 +30,16 @@ describe "openstack-block-storage::volume" do
|
|||
expect(@chef_run).to set_service_to_start_on_boot "tgtd"
|
||||
end
|
||||
|
||||
it "installs nfs packages" do
|
||||
chef_run = ::ChefSpec::ChefRunner.new ::REDHAT_OPTS do |n|
|
||||
n.set["openstack"]["block-storage"]["volume"]["driver"] = "cinder.volume.drivers.netapp.nfs.NetAppDirect7modeNfsDriver"
|
||||
end
|
||||
chef_run.converge "openstack-block-storage::volume"
|
||||
|
||||
expect(chef_run).to upgrade_package "nfs-utils"
|
||||
expect(chef_run).to upgrade_package "nfs-utils-lib"
|
||||
end
|
||||
|
||||
it "has redhat include" do
|
||||
file = "/etc/tgt/targets.conf"
|
||||
|
||||
|
|
|
@ -28,11 +28,29 @@ describe "openstack-block-storage::volume" do
|
|||
expect(@chef_run).to upgrade_package "tgt"
|
||||
end
|
||||
|
||||
it "installs nfs packages" do
|
||||
chef_run = ::ChefSpec::ChefRunner.new ::UBUNTU_OPTS do |n|
|
||||
n.set["openstack"]["block-storage"]["volume"]["driver"] = "cinder.volume.drivers.netapp.nfs.NetAppDirect7modeNfsDriver"
|
||||
end
|
||||
chef_run.converge "openstack-block-storage::volume"
|
||||
|
||||
expect(chef_run).to upgrade_package "nfs-common"
|
||||
end
|
||||
|
||||
it "creates the nfs mount point" do
|
||||
chef_run = ::ChefSpec::ChefRunner.new ::UBUNTU_OPTS do |n|
|
||||
n.set["openstack"]["block-storage"]["volume"]["driver"] = "cinder.volume.drivers.netapp.nfs.NetAppDirect7modeNfsDriver"
|
||||
end
|
||||
chef_run.converge "openstack-block-storage::volume"
|
||||
|
||||
expect(chef_run).to create_directory "/mnt/cinder-volumes"
|
||||
end
|
||||
|
||||
it "configures netapp dfm password" do
|
||||
::Chef::Recipe.any_instance.stub(:service_password).with("netapp").
|
||||
and_return "netapp-pass"
|
||||
chef_run = ::ChefSpec::ChefRunner.new ::UBUNTU_OPTS do |n|
|
||||
n.set["openstack"]["block-storage"]["volume"]["driver"] = "cinder.volume.drivers.netapp.NetAppISCSIDriver"
|
||||
n.set["openstack"]["block-storage"]["volume"]["driver"] = "cinder.volume.drivers.netapp.iscsi.NetAppISCSIDriver"
|
||||
end
|
||||
chef_run.converge "openstack-block-storage::volume"
|
||||
n = chef_run.node["openstack"]["block-storage"]["netapp"]["dfm_password"]
|
||||
|
|
|
@ -605,36 +605,18 @@ netapp_storage_service=<%= node["openstack"]["block-storage"]["netapp"]["storage
|
|||
<% end %>
|
||||
|
||||
######## defined in cinder.volume.netapp_nfs ########
|
||||
<% if node["openstack"]["block-storage"]["volume"]["driver"] == "cinder.volume.drivers.netapp.nfs.NetAppDirect7modeNfsDriver" %>
|
||||
|
||||
# synchronous_snapshot_create=0
|
||||
#### (IntOpt) Does snapshot creation call returns immediately
|
||||
|
||||
# netapp_wsdl_url=<None>
|
||||
#### (StrOpt) URL of the WSDL file for the DFM server
|
||||
|
||||
# netapp_login=<None>
|
||||
#### (StrOpt) User name for the DFM server
|
||||
|
||||
# netapp_password=<None>
|
||||
#### (StrOpt) Password for the DFM server
|
||||
|
||||
# netapp_server_hostname=<None>
|
||||
#### (StrOpt) Hostname for the DFM server
|
||||
|
||||
# netapp_server_port=8088
|
||||
#### (IntOpt) Port number for the DFM server
|
||||
|
||||
# netapp_storage_service=<None>
|
||||
#### (StrOpt) Storage service to use for provisioning (when
|
||||
#### volume_type=None)
|
||||
|
||||
# netapp_storage_service_prefix=<None>
|
||||
#### (StrOpt) Prefix of storage service name to use for provisioning
|
||||
#### (volume_type name will be appended)
|
||||
|
||||
# netapp_vfiler=<None>
|
||||
#### (StrOpt) Vfiler to use for provisioning
|
||||
nfs_mount_point_base=<%= node["openstack"]["block-storage"]["nfs"]["mount_point_base"] %>
|
||||
<% node["openstack"]["block-storage"]["netapp"]["netapp_server_hostname"].each do |h| %>
|
||||
netapp_server_hostname=<%= h %>
|
||||
<% end %>
|
||||
netapp_server_port=<%= node["openstack"]["block-storage"]["netapp"]["netapp_server_port"] %>
|
||||
netapp_login=<%= node["openstack"]["block-storage"]["netapp"]["netapp_server_login"] %>
|
||||
netapp_password=<%= node["openstack"]["block-storage"]["netapp"]["netapp_server_password"] %>
|
||||
nfs_share_config=<%= node["openstack"]["block-storage"]["nfs"]["shares_config"] %>
|
||||
|
||||
<% end %>
|
||||
|
||||
######## defined in cinder.volume.nexenta.volume ########
|
||||
|
||||
|
|
|
@ -0,0 +1,4 @@
|
|||
# Automatically generated by chef, changes will be overwritten
|
||||
<% node["openstack"]["block-storage"]["netapp"]["netapp_server_hostname"].each do |h| %>
|
||||
<%= h %>:<%= @nfs_export %>
|
||||
<% end %>
|
Loading…
Reference in New Issue