Allow purging policy files
This change introduces the new purge_config parameter to the policy class so that any policy rules not managed by puppet manifests can be cleared. Co-Authored-By: Martin Schuppert <mschuppert@redhat.com> Depends-On: https://review.opendev.org/802305 Change-Id: I57fc7fe19cd0f856b3906b08118386ab62a067d8
This commit is contained in:
parent
7b1f7e614c
commit
8755b916b0
@ -36,12 +36,18 @@
|
||||
# (Optional) Path to the aodh policy folder
|
||||
# Defaults to $::os_service_default
|
||||
#
|
||||
# [*purge_config*]
|
||||
# (optional) Whether to set only the specified policy rules in the policy
|
||||
# file.
|
||||
# Defaults to false.
|
||||
#
|
||||
class aodh::policy (
|
||||
$enforce_scope = $::os_service_default,
|
||||
$enforce_new_defaults = $::os_service_default,
|
||||
$policies = {},
|
||||
$policy_path = '/etc/aodh/policy.yaml',
|
||||
$policy_dirs = $::os_service_default,
|
||||
$purge_config = false,
|
||||
) {
|
||||
|
||||
include aodh::deps
|
||||
@ -49,14 +55,16 @@ class aodh::policy (
|
||||
|
||||
validate_legacy(Hash, 'validate_hash', $policies)
|
||||
|
||||
Openstacklib::Policy::Base {
|
||||
file_path => $policy_path,
|
||||
file_user => 'root',
|
||||
file_group => $::aodh::params::group,
|
||||
file_format => 'yaml',
|
||||
$policy_parameters = {
|
||||
policies => $policies,
|
||||
policy_path => $policy_path,
|
||||
file_user => 'root',
|
||||
file_group => $::aodh::params::group,
|
||||
file_format => 'yaml',
|
||||
purge_config => $purge_config,
|
||||
}
|
||||
|
||||
create_resources('openstacklib::policy::base', $policies)
|
||||
create_resources('openstacklib::policy', { $policy_path => $policy_parameters })
|
||||
|
||||
oslo::policy { 'aodh_config':
|
||||
enforce_scope => $enforce_scope,
|
||||
|
@ -0,0 +1,6 @@
|
||||
---
|
||||
features:
|
||||
- |
|
||||
Adds new purge_config parameter. When set to true, the policy file is
|
||||
cleared during configuration process. This allows to remove any existing
|
||||
rules before applying them or clean the file when all policies got removed.
|
@ -2,35 +2,72 @@ require 'spec_helper'
|
||||
|
||||
describe 'aodh::policy' do
|
||||
shared_examples 'aodh::policy' do
|
||||
let :params do
|
||||
{
|
||||
:enforce_scope => false,
|
||||
:enforce_new_defaults => false,
|
||||
:policy_path => '/etc/aodh/policy.yaml',
|
||||
:policy_dirs => '/etc/aodh/policy.d',
|
||||
:policies => {
|
||||
'context_is_admin' => {
|
||||
'key' => 'context_is_admin',
|
||||
'value' => 'foo:bar'
|
||||
|
||||
context 'setup policy with parameters' do
|
||||
let :params do
|
||||
{
|
||||
:enforce_scope => false,
|
||||
:enforce_new_defaults => false,
|
||||
:policy_path => '/etc/aodh/policy.yaml',
|
||||
:policy_dirs => '/etc/aodh/policy.d',
|
||||
:policies => {
|
||||
'context_is_admin' => {
|
||||
'key' => 'context_is_admin',
|
||||
'value' => 'foo:bar'
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
end
|
||||
|
||||
it 'set up the policies' do
|
||||
is_expected.to contain_openstacklib__policy('/etc/aodh/policy.yaml').with(
|
||||
:policies => {
|
||||
'context_is_admin' => {
|
||||
'key' => 'context_is_admin',
|
||||
'value' => 'foo:bar'
|
||||
}
|
||||
},
|
||||
:policy_path => '/etc/aodh/policy.yaml',
|
||||
:file_user => 'root',
|
||||
:file_group => 'aodh',
|
||||
:file_format => 'yaml',
|
||||
:purge_config => false,
|
||||
)
|
||||
is_expected.to contain_oslo__policy('aodh_config').with(
|
||||
:enforce_scope => false,
|
||||
:enforce_new_defaults => false,
|
||||
:policy_file => '/etc/aodh/policy.yaml',
|
||||
:policy_dirs => '/etc/aodh/policy.d',
|
||||
)
|
||||
end
|
||||
end
|
||||
|
||||
it 'set up the policies' do
|
||||
is_expected.to contain_openstacklib__policy__base('context_is_admin').with({
|
||||
:key => 'context_is_admin',
|
||||
:value => 'foo:bar',
|
||||
:file_user => 'root',
|
||||
:file_group => 'aodh',
|
||||
:file_format => 'yaml',
|
||||
})
|
||||
is_expected.to contain_oslo__policy('aodh_config').with(
|
||||
:enforce_scope => false,
|
||||
:enforce_new_defaults => false,
|
||||
:policy_file => '/etc/aodh/policy.yaml',
|
||||
:policy_dirs => '/etc/aodh/policy.d',
|
||||
)
|
||||
context 'with empty policies and purge_config enabled' do
|
||||
let :params do
|
||||
{
|
||||
:enforce_scope => false,
|
||||
:enforce_new_defaults => false,
|
||||
:policy_path => '/etc/aodh/policy.yaml',
|
||||
:policies => {},
|
||||
:purge_config => true,
|
||||
}
|
||||
end
|
||||
|
||||
it 'set up the policies' do
|
||||
is_expected.to contain_openstacklib__policy('/etc/aodh/policy.yaml').with(
|
||||
:policies => {},
|
||||
:policy_path => '/etc/aodh/policy.yaml',
|
||||
:file_user => 'root',
|
||||
:file_group => 'aodh',
|
||||
:file_format => 'yaml',
|
||||
:purge_config => true,
|
||||
)
|
||||
is_expected.to contain_oslo__policy('aodh_config').with(
|
||||
:enforce_scope => false,
|
||||
:enforce_new_defaults => false,
|
||||
:policy_file => '/etc/aodh/policy.yaml',
|
||||
)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user