From 3631e9c27f04b48c3a1c737b90c01b5e82934928 Mon Sep 17 00:00:00 2001 From: Hamdy Khader Date: Tue, 3 Apr 2018 17:09:52 +0300 Subject: [PATCH] Add NVMeOF backend Change-Id: I8f8477a250e9335db690b94f29ea92d0cadbb49a --- manifests/backend/nvmeof.pp | 71 ++++++++++++++++++++++ spec/defines/cinder_backend_nvmeof_spec.rb | 45 ++++++++++++++ 2 files changed, 116 insertions(+) create mode 100644 manifests/backend/nvmeof.pp create mode 100644 spec/defines/cinder_backend_nvmeof_spec.rb diff --git a/manifests/backend/nvmeof.pp b/manifests/backend/nvmeof.pp new file mode 100644 index 00000000..4711be57 --- /dev/null +++ b/manifests/backend/nvmeof.pp @@ -0,0 +1,71 @@ +# +# Define: cinder::backend::nvmeof +# +# === Parameters: +# +# [*target_ip_address*] +# (Required) The IP address of NVMe target. +# +# [*target_port*] +# (Required) Port that NVMe target is listening on. +# +# [*target_helper*] +# (Required) Target user-land tool to use. +# +# [*target_protocol*] +# (Required) Target rotocol to use. +# +# [*target_prefix*] +# (Optional) Prefix for LVM volumes. +# Defaults to '$::cinder::params::target_prefix'. +# +# [*nvmet_port_id*] +# (Optional) Port id of the NVMe target. +# Defaults to '$::cinder::params::nvmet_port_id'. +# +# [*nvmet_ns_id*] +# (Optional) The namespace id associated with the subsystem. +# Defaults to '$::cinder::params::nvmet_ns_id'. +# +# [*volume_backend_name*] +# (optional) Allows for the volume_backend_name to be separate of $name. +# Defaults to: $name +# +# [*volume_driver*] +# (Optional) Driver to use for volume creation +# Defaults to 'cinder.volume.drivers.lvm.LVMVolumeDriver'. +# +# [*volume_group*] +# (Optional) Name for the VG that will contain exported volumes +# Defaults to $::os_service_default +# +define cinder::backend::nvmeof ( + $target_ip_address, + $target_port, + $target_helper, + $target_protocol, + $target_prefix = $::os_service_default, + $nvmet_port_id = '1', + $nvmet_ns_id = '10', + $volume_backend_name = $name, + $volume_driver = 'cinder.volume.drivers.lvm.LVMVolumeDriver', + $volume_group = $::os_service_default, +) { + + include ::cinder::deps + include ::cinder::params + + cinder_config { + "${name}/target_ip_address": value => $target_ip_address; + "${name}/target_port": value => $target_port; + "${name}/target_helper": value => $target_helper; + "${name}/target_protocol": value => $target_protocol; + "${name}/target_prefix": value => $target_prefix; + "${name}/nvmet_port_id": value => $nvmet_port_id; + "${name}/nvmet_ns_id": value => $nvmet_ns_id; + "${name}/volume_backend_name": value => $volume_backend_name; + "${name}/volume_driver": value => $volume_driver; + "${name}/volume_group": value => $volume_group; + } + +} diff --git a/spec/defines/cinder_backend_nvmeof_spec.rb b/spec/defines/cinder_backend_nvmeof_spec.rb new file mode 100644 index 00000000..b5d23173 --- /dev/null +++ b/spec/defines/cinder_backend_nvmeof_spec.rb @@ -0,0 +1,45 @@ +require 'spec_helper' + +describe 'cinder::backend::nvmeof' do + + let(:title) {'nvme-backend'} + + let :req_params do { + :target_ip_address => '127.0.0.2', + :target_port => '4420', + :target_helper => 'nvmet', + :target_protocol => 'nvmet_rdma', + } + end + + let :facts do + OSDefaults.get_facts({:osfamily => 'Debian'}) + end + + let :params do + req_params + end + + describe 'with default params' do + + it 'should configure nvmet target' do + is_expected.to contain_cinder_config('nvme-backend/target_ip_address').with( + :value => '127.0.0.2') + is_expected.to contain_cinder_config('nvme-backend/target_port').with( + :value => '4420') + is_expected.to contain_cinder_config('nvme-backend/target_helper').with( + :value => 'nvmet') + is_expected.to contain_cinder_config('nvme-backend/target_protocol').with( + :value => 'nvmet_rdma') + is_expected.to contain_cinder_config('nvme-backend/nvmet_port_id').with( + :value => '1') + is_expected.to contain_cinder_config('nvme-backend/nvmet_ns_id').with( + :value => '10') + is_expected.to contain_cinder_config('nvme-backend/volume_backend_name').with( + :value => 'nvme-backend') + is_expected.to contain_cinder_config('nvme-backend/volume_driver').with( + :value => 'cinder.volume.drivers.lvm.LVMVolumeDriver') + end + end + +end