7b96a0bf1c
Horizon requires policy files placed in its own config directory to enable/disable some features according to policy rules. This change introduces capability to manage contents of each policy files so that users can inject customized rules. Change-Id: Id82f6fd416c0f563b181af66f541c850128a5778
84 lines
2.2 KiB
Puppet
84 lines
2.2 KiB
Puppet
# == Class horizon::policy
|
|
#
|
|
# Manage policy files for Horizon
|
|
#
|
|
# == Parameters
|
|
#
|
|
# [*file_mode*]
|
|
# (Optional) Permission mode for the policy file.
|
|
# Defaults to '0640'
|
|
#
|
|
# [*file_format*]
|
|
# (Optional) Format for file contents.
|
|
# Defaults to 'yaml'.
|
|
#
|
|
# [*purge_config*]
|
|
# (Optional) Whether to set only the specified policy rules in the policy
|
|
# file.
|
|
# Defaults to false.
|
|
#
|
|
# [*cinder_policies*]
|
|
# (Optional) Set of cinder policies to configure.
|
|
# Defaults to {}
|
|
#
|
|
# [*glance_policies*]
|
|
# (Optional) Set of glance policies to configure.
|
|
# Defaults to {}
|
|
#
|
|
# [*keystone_policies*]
|
|
# (Optional) Set of keystone policies to configure.
|
|
# Defaults to {}
|
|
#
|
|
# [*neutron_policies*]
|
|
# (Optional) Set of neutron policies to configure.
|
|
# Defaults to {}
|
|
#
|
|
# [*nova_policies*]
|
|
# (Optional) Set of nova policies to configure.
|
|
# Defaults to {}
|
|
#
|
|
class horizon::policy(
|
|
# common parameters
|
|
$file_mode = '0640',
|
|
$file_format = 'yaml',
|
|
$purge_config = false,
|
|
# service specific parameters
|
|
$cinder_policies = {},
|
|
$glance_policies = {},
|
|
$keystone_policies = {},
|
|
$neutron_policies = {},
|
|
$nova_policies = {},
|
|
) {
|
|
include horizon::deps
|
|
|
|
if !defined(Class[horizon]){
|
|
fail('The horizon class should be included in advance')
|
|
}
|
|
|
|
$policy_files = pick($::horizon::policy_files, {})
|
|
$policy_files_default = {
|
|
'identity' => 'keystone_policy.yaml',
|
|
'compute' => 'nova_policy.yaml',
|
|
'volume' => 'cinder_policy.yaml',
|
|
'image' => 'glance_policy.yaml',
|
|
'network' => 'neutron_policy.yaml',
|
|
}
|
|
$policy_files_real = merge($policy_files_default, $policy_files)
|
|
|
|
$policy_resources = {
|
|
$policy_files_real['volume'] => { 'policies' => $cinder_policies },
|
|
$policy_files_real['image'] => { 'policies' => $glance_policies },
|
|
$policy_files_real['identity'] => { 'policies' => $keystone_policies },
|
|
$policy_files_real['network'] => { 'policies' => $neutron_policies },
|
|
$policy_files_real['compute'] => { 'policies' => $nova_policies },
|
|
}
|
|
|
|
$policy_defaults = {
|
|
'file_mode' => $file_mode,
|
|
'file_format' => $file_format,
|
|
'purge_config' => $purge_config
|
|
}
|
|
|
|
create_resources('horizon::policy::base', $policy_resources, $policy_defaults)
|
|
}
|