
The puppetlabs-stdlib module has provided the type to validate input for file mode since 4.22.0 . Use that type definition to validate inputs at parameter input layer, instead of internal implementation layer. Change-Id: I46df56b9cc25f0dfa0129b2c50546a2f1f7f6b3f
73 lines
2.1 KiB
Puppet
73 lines
2.1 KiB
Puppet
# == Definition: openstacklib::policy::base
|
|
#
|
|
# This resource configures the policy file for an OpenStack service
|
|
#
|
|
# == Parameters:
|
|
#
|
|
# [*file_path*]
|
|
# (required) Path to the policy file
|
|
#
|
|
# [*key*]
|
|
# (optional) The key to replace the value for
|
|
# Defaults to $name
|
|
#
|
|
# [*value*]
|
|
# (optional) The value to set
|
|
# Defaults to ''
|
|
#
|
|
# [*file_mode*]
|
|
# (optional) Permission mode for the policy file
|
|
# Defaults to '0640'
|
|
#
|
|
# [*file_user*]
|
|
# (optional) User for the policy file
|
|
# Defaults to undef
|
|
#
|
|
# [*file_group*]
|
|
# (optional) Group for the policy file
|
|
# Defaults to undef
|
|
#
|
|
# [*file_format*]
|
|
# (optional) Format for file contents. Valid value is 'yaml'
|
|
# Defaults to 'yaml'.
|
|
#
|
|
# [*purge_config*]
|
|
# (optional) Whether to set only the specified policy rules in the policy
|
|
# file.
|
|
# Defaults to false.
|
|
#
|
|
define openstacklib::policy::base (
|
|
Stdlib::Absolutepath $file_path,
|
|
String[1] $key = $name,
|
|
String $value = '',
|
|
Stdlib::Filemode $file_mode = '0640',
|
|
$file_user = undef,
|
|
$file_group = undef,
|
|
Enum['yaml'] $file_format = 'yaml',
|
|
Boolean $purge_config = false,
|
|
) {
|
|
|
|
ensure_resource('openstacklib::policy::default', $file_path, {
|
|
file_path => $file_path,
|
|
file_mode => $file_mode,
|
|
file_user => $file_user,
|
|
file_group => $file_group,
|
|
file_format => $file_format,
|
|
purge_config => $purge_config
|
|
})
|
|
|
|
# NOTE(tkajianm): Currently we use single quotes('') to quote the whole
|
|
# value, thus a single quote in value should be escaped
|
|
# by another single quote (which results in '')
|
|
# NOTE(tkajinam): Replace '' by ' first in case ' is already escaped
|
|
$value_real = regsubst(regsubst($value, '\'\'', '\'', 'G'), '\'', '\'\'', 'G')
|
|
|
|
file_line { "${file_path}-${key}" :
|
|
path => $file_path,
|
|
line => "'${key}': '${value_real}'",
|
|
match => "^['\"]?${key}(?!:)['\"]?\\s*:.+"
|
|
}
|
|
Openstacklib::Policy::Default<| title == $file_path |>
|
|
-> File_line<| title == "${file_path}-${key}" |>
|
|
}
|