Support more file backend parameters

This change improves coverage of the file backend parameters. Because
the filesystem_store_datadirs parameter is MultiStrOpt, support for
MultiStrOpt is also introduced to the glance_cache_config resource
type.

Change-Id: I5785605bf4224c0f189fd7700d5a9b05def058e8
This commit is contained in:
Takashi Kajinami 2022-02-13 00:57:03 +09:00
parent a221b72918
commit aaa352a3af
6 changed files with 112 additions and 19 deletions

View File

@ -1,6 +1,6 @@
Puppet::Type.type(:glance_cache_config).provide(
:ini_setting,
:parent => Puppet::Type.type(:openstack_config).provider(:ini_setting)
:openstackconfig,
:parent => Puppet::Type.type(:openstack_config).provider(:ruby)
) do
def self.file_path

View File

@ -7,14 +7,22 @@ Puppet::Type.newtype(:glance_cache_config) do
newvalues(/\S+\/\S+/)
end
newproperty(:value) do
newproperty(:value, :array_matching => :all) do
desc 'The value of the setting to be defined.'
def insync?(is)
return true if @should.empty?
return false unless is.is_a? Array
return false unless is.length == @should.length
return (
is & @should == is or
is & @should.map(&:to_s) == is
)
end
munge do |value|
value = value.to_s.strip
value.capitalize! if value =~ /^(true|false)$/i
value
end
newvalues(/^[\S ]*$/)
def is_to_s( currentvalue )
if resource.secret?

View File

@ -20,7 +20,26 @@
# === Parameters:
#
# [*filesystem_store_datadir*]
# Location where dist images are stored when the backend type is file.
# (optional) Directory where dist images are stored.
# Defaults to $::os_service_default.
#
# [*filesystem_store_datadirs*]
# (optional) List of directories where dist images are stored. When using
# multiple directoris, each directory can be given an optional priority,
# which is an integer that is concatenated to the directory path with
# a colon.
# Defaults to $::os_service_default.
#
# [*filesystem_store_metadata_file*]
# (optional) Filesystem store metadata file.
# Defaults to $::os_service_default.
#
# [*filesystem_store_file_perm*]
# (optional) File access permissions for the image files.
# Defaults to $::os_service_default.
#
# [*filesystem_store_chunk_size*]
# (optional) Chunk size, in bytes.
# Defaults to $::os_service_default.
#
# [*filesystem_thin_provisioning*]
@ -33,20 +52,33 @@
# Defaults to $::os_service_default.
#
define glance::backend::multistore::file(
$filesystem_store_datadir = $::os_service_default,
$filesystem_thin_provisioning = $::os_service_default,
$store_description = $::os_service_default,
$filesystem_store_datadir = $::os_service_default,
$filesystem_store_datadirs = $::os_service_default,
$filesystem_store_metadata_file = $::os_service_default,
$filesystem_store_file_perm = $::os_service_default,
$filesystem_store_chunk_size = $::os_service_default,
$filesystem_thin_provisioning = $::os_service_default,
$store_description = $::os_service_default,
) {
include glance::deps
if !is_service_default($filesystem_store_datadir) and !is_service_default($filesystem_store_datadirs) {
fail('filesystem_store_datadir and filesystem_store_datadirs are mutually exclusive.')
}
glance_api_config {
"${name}/filesystem_store_datadir": value => $filesystem_store_datadir;
"${name}/filesystem_thin_provisioning": value => $filesystem_thin_provisioning;
"${name}/store_description": value => $store_description;
"${name}/filesystem_store_datadir": value => $filesystem_store_datadir;
"${name}/filesystem_store_datadirs": value => $filesystem_store_datadirs;
"${name}/filesystem_store_metadata_file": value => $filesystem_store_metadata_file;
"${name}/filesystem_store_file_perm": value => $filesystem_store_file_perm;
"${name}/filesystem_store_chunk_size": value => $filesystem_store_chunk_size;
"${name}/filesystem_thin_provisioning": value => $filesystem_thin_provisioning;
"${name}/store_description": value => $store_description;
}
glance_cache_config {
"${name}/filesystem_store_datadir": value => $filesystem_store_datadir;
"${name}/filesystem_store_datadir": value => $filesystem_store_datadir;
"${name}/filesystem_store_datadirs": value => $filesystem_store_datadirs;
}
}

View File

@ -0,0 +1,11 @@
---
features:
- |
The ``glance::backend::multistore::file`` resource type now supports
the following parameters, to configure the same parameter for file backend.
- ``filesystem_store_datadirs``
- ``filesystem_store_metadata_file``
- ``filesystem_store_file_perm``
- ``filesystem_store_chunk_size``
- ``filesystem_thin_provisioning``

View File

@ -24,30 +24,72 @@ describe 'glance::backend::multistore::file' do
shared_examples_for 'glance::backend::multistore::file' do
it 'configures glance-api.conf' do
is_expected.to contain_glance_api_config('file/store_description').with_value('<SERVICE DEFAULT>')
is_expected.to contain_glance_api_config('file/filesystem_thin_provisioning').with_value('<SERVICE DEFAULT>')
is_expected.to contain_glance_api_config('file/filesystem_store_datadir').with_value('<SERVICE DEFAULT>')
is_expected.to contain_glance_api_config('file/filesystem_store_datadirs').with_value('<SERVICE DEFAULT>')
is_expected.to contain_glance_api_config('file/filesystem_store_metadata_file').with_value('<SERVICE DEFAULT>')
is_expected.to contain_glance_api_config('file/filesystem_store_file_perm').with_value('<SERVICE DEFAULT>')
is_expected.to contain_glance_api_config('file/filesystem_store_chunk_size').with_value('<SERVICE DEFAULT>')
is_expected.to contain_glance_api_config('file/filesystem_thin_provisioning').with_value('<SERVICE DEFAULT>')
end
it 'configures glance-cache.conf' do
is_expected.to_not contain_glance_cache_config('file/store_description')
is_expected.to contain_glance_cache_config('file/filesystem_store_datadir').with_value('<SERVICE DEFAULT>')
is_expected.to contain_glance_cache_config('file/filesystem_store_datadirs').with_value('<SERVICE DEFAULT>')
end
describe 'when overriding datadir' do
let :params do
{
:filesystem_store_datadir => '/tmp/',
:filesystem_thin_provisioning => 'true',
:filesystem_store_datadir => '/var/lib/glance/images',
:filesystem_store_metadata_file => '/var/lib/glance/metadata.json',
:filesystem_store_file_perm => 0,
:filesystem_store_chunk_size => 65536,
:filesystem_thin_provisioning => true,
}
end
it 'configures glance-api.conf' do
is_expected.to contain_glance_api_config('file/filesystem_store_datadir').with_value('/tmp/')
is_expected.to contain_glance_api_config('file/filesystem_thin_provisioning').with_value('true')
is_expected.to contain_glance_api_config('file/filesystem_store_datadir')\
.with_value('/var/lib/glance/images')
is_expected.to contain_glance_api_config('file/filesystem_store_datadirs')\
.with_value('<SERVICE DEFAULT>')
is_expected.to contain_glance_api_config('file/filesystem_store_metadata_file')\
.with_value('/var/lib/glance/metadata.json')
is_expected.to contain_glance_api_config('file/filesystem_store_file_perm')\
.with_value(0)
is_expected.to contain_glance_api_config('file/filesystem_store_chunk_size')\
.with_value(65536)
is_expected.to contain_glance_api_config('file/filesystem_thin_provisioning')\
.with_value(true)
end
it 'configures glance-cache.conf' do
is_expected.to contain_glance_cache_config('file/filesystem_store_datadir').with_value('/tmp/')
is_expected.to contain_glance_cache_config('file/filesystem_store_datadir')\
.with_value('/var/lib/glance/images')
is_expected.to contain_glance_cache_config('file/filesystem_store_datadirs')\
.with_value('<SERVICE DEFAULT>')
end
end
describe 'when filesystem_store_datadirs is set' do
let :params do
{
:filesystem_store_datadirs => ['/var/lib/glance/images', '/var/lib/gnance/images_alt']
}
end
it 'configures glance-api.conf' do
is_expected.to contain_glance_api_config('file/filesystem_store_datadir')\
.with_value('<SERVICE DEFAULT>')
is_expected.to contain_glance_api_config('file/filesystem_store_datadirs')\
.with_value(['/var/lib/glance/images', '/var/lib/gnance/images_alt'])
end
it 'configures glance-cache.conf' do
is_expected.to contain_glance_cache_config('file/filesystem_store_datadir')\
.with_value('<SERVICE DEFAULT>')
is_expected.to contain_glance_cache_config('file/filesystem_store_datadirs')\
.with_value(['/var/lib/glance/images', '/var/lib/gnance/images_alt'])
end
end
end

View File

@ -1,6 +1,6 @@
require 'spec_helper'
provider_class = Puppet::Type.type(:glance_cache_config).provider(:ini_setting)
provider_class = Puppet::Type.type(:glance_cache_config).provider(:openstackconfig)
describe provider_class do