Files
puppet-cinder/spec/defines/cinder_backend_gpfs_spec.rb
Takashi Kajinami 6df226460e Extend support for gpfs volume driver
Allow using a different volume driver such as GPFSNFSDriver or
GPFSRemoteDriver. The options for the GPFSNFSDriver driver have been
supported but the driver could not be used previously.

Also add support for options used by GPFRemoteDriver.

Change-Id: Ib1b72291b2771db9a14a73797b1c3be6e1be1d47
Signed-off-by: Takashi Kajinami <kajinamit@oss.nttdata.com>
2025-09-04 14:37:07 +09:00

155 lines
5.1 KiB
Ruby

require 'spec_helper'
describe 'cinder::backend::gpfs' do
let (:title) { 'gpfs' }
let :params do
{
:gpfs_mount_point_base => '/opt/gpfs/cinder/volumes',
}
end
let :default_params do
{
:volume_driver => 'cinder.volume.drivers.ibm.gpfs.GPFSDriver',
:backend_availability_zone => '<SERVICE DEFAULT>',
:image_volume_cache_enabled => '<SERVICE DEFAULT>',
:image_volume_cache_max_size_gb => '<SERVICE DEFAULT>',
:image_volume_cache_max_count => '<SERVICE DEFAULT>',
:gpfs_max_clone_depth => '<SERVICE DEFAULT>',
:gpfs_sparse_volumes => '<SERVICE DEFAULT>',
:gpfs_storage_pool => '<SERVICE DEFAULT>',
:gpfs_images_dir => '<SERVICE DEFAULT>',
:gpfs_images_share_mode => '<SERVICE DEFAULT>',
:nas_host => '<SERVICE DEFAULT>',
:nas_login => '<SERVICE DEFAULT>',
:nas_password => '<SERVICE DEFAULT>',
:nas_private_key => '<SERVICE DEFAULT>',
:nas_ssh_port => '<SERVICE DEFAULT>',
:gpfs_hosts => '<SERVICE DEFAULT>',
:gpfs_user_login => '<SERVICE DEFAULT>',
:gpfs_user_password => '<SERVICE DEFAULT>',
:gpfs_private_key => '<SERVICE DEFAULT>',
:gpfs_ssh_port => '<SERVICE DEFAULT>',
:gpfs_hosts_key_file => '<SERVICE DEFAULT>',
:gpfs_strict_host_key_policy => '<SERVICE DEFAULT>',
}
end
let :custom_params do
{
:volume_driver => 'cinder.volume.drivers.ibm.gpfs.GPFSNFSDriver',
:backend_availability_zone => 'my_zone',
:image_volume_cache_enabled => true,
:image_volume_cache_max_size_gb => 100,
:image_volume_cache_max_count => 101,
:gpfs_max_clone_depth => 1,
:gpfs_sparse_volumes => false,
:gpfs_storage_pool => 'foo',
:nas_host => 'nas_host',
:nas_login => 'admin',
:nas_password => 'nas_password',
:nas_private_key => '/path/to/private_key',
:nas_ssh_port => '22',
:gpfs_hosts => 'localhost',
:gpfs_user_login => 'root',
:gpfs_user_password => 'rootpass',
:gpfs_private_key => '/path/to/private_key',
:gpfs_ssh_port => 22,
:gpfs_hosts_key_file => '/path/to/host_key',
:gpfs_strict_host_key_policy => false,
}
end
shared_examples 'gpfs volume driver' do
let :params_hash do
default_params.merge(params)
end
it { is_expected.to contain_cinder_config('gpfs/volume_backend_name').with_value('gpfs') }
it {
params_hash.each_pair do |config,value|
is_expected.to contain_cinder_config("gpfs/#{config}").with_value( value )
end
is_expected.to contain_cinder_config('gpfs/gpfs_user_password').with_secret(true)
}
end
shared_examples 'cinder::backend::gpfs' do
context 'with default parameters' do
it_behaves_like 'gpfs volume driver'
end
context 'with additional image parameters' do
before do
params.merge!({
:gpfs_images_dir => '/gpfs/glance/images',
:gpfs_images_share_mode => 'copy_on_write',
})
end
it_behaves_like 'gpfs volume driver'
end
context 'with custom parameters' do
before do
params.merge(custom_params)
end
it_behaves_like 'gpfs volume driver'
end
context 'with image share mode but without image path' do
before do
params.merge!({
:gpfs_images_share_mode => 'copy_on_write',
})
end
it { is_expected.to raise_error(Puppet::Error, /gpfs_images_share_mode only in conjunction with gpfs_images_dir/) }
end
context 'with wrong gpfs_images_share_mode' do
before do
params.merge!({
:gpfs_images_share_mode => 'foo',
})
end
it { is_expected.to raise_error(Puppet::Error, /gpfs_images_share_mode only support `copy` or `copy_on_write`/) }
end
context 'gpfs backend with cinder type' do
before do
params.merge!( :manage_volume_type => true )
end
it { is_expected.to contain_cinder_type('gpfs').with(
:ensure => 'present',
:properties => {'volume_backend_name' => 'gpfs'}
)}
end
context 'gpfs backend with additional configuration' do
before do
params.merge!( :extra_options => {'gpfs/param1' => { 'value' => 'value1' }} )
end
it { is_expected.to contain_cinder_config('gpfs/param1').with_value('value1') }
end
end
on_supported_os({
:supported_os => OSDefaults.get_supported_os
}).each do |os,facts|
context "on #{os}" do
let (:facts) do
facts.merge!(OSDefaults.get_facts())
end
it_behaves_like 'cinder::backend::gpfs'
end
end
end