# == 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}" |> }