puppet-openstacklib/manifests/policy/default.pp

68 lines
1.8 KiB
Puppet

# == Definition: openstacklib::policy::default
#
# Create a default (empty) policy fie for an OpenStack service
#
# == Parameters:
#
# [*file_path*]
# (Optional) Path to the policy.json file
# Defaults to $name
#
# [*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 values
# are 'json' or 'yaml'.
# Defaults to 'json'.
#
# [*purge_config*]
# (Optional) Whether to set only the specified policy rules in the policy
# file.
# Defaults to false.
#
define openstacklib::policy::default (
Stdlib::Absolutepath $file_path = $name,
Stdlib::Filemode $file_mode = '0640',
Optional[String] $file_user = undef,
Optional[String] $file_group = undef,
Enum['json', 'yaml'] $file_format = 'json',
Boolean $purge_config = false,
) {
case $file_format {
'json': {
warning('Json format is deprecated and will be removed in a future release')
$content = '{}'
}
'yaml': {
if stdlib::extname($file_path) == '.json' {
# NOTE(tkajinam): It is likely that user is not aware of migration from
# policy.json to policy.yaml
fail("file_path: ${file_path} should be a yaml file instead of a json file")
}
$content = ''
}
default: {
fail("${file_format} is an unsupported policy file format. Choose 'json' or 'yaml'.")
}
}
ensure_resource('file', $file_path, {
mode => $file_mode,
owner => $file_user,
group => $file_group,
replace => $purge_config,
content => $content
})
}