From: Yanis Guenane Date: Fri, 26 Sep 2014 23:07:49 +0000 (-0400) Subject: policy.json: Allow one to manage them from the puppet module X-Git-Tag: 5.0.0~3^2 X-Git-Url: https://review.fuel-infra.org/gitweb?a=commitdiff_plain;h=d077ad297e7686574653d430c834bb16f4920f88;p=puppet-modules%2Fpuppet-ceilometer.git policy.json: Allow one to manage them from the puppet module This commit allow a deployer to manage the policies via this module It relies on augeas to change only the policy needed. The init takes a hash of policies and apply them. Change-Id: I413702d5baa0e96c43f9a599e1e06ed23ab23993 --- diff --git a/manifests/api.pp b/manifests/api.pp index 70e2bdf..d66e665 100644 --- a/manifests/api.pp +++ b/manifests/api.pp @@ -64,13 +64,16 @@ class ceilometer::api ( ) { include ceilometer::params + include ceilometer::policy validate_string($keystone_password) Ceilometer_config<||> ~> Service['ceilometer-api'] + Class['ceilometer::policy'] ~> Service['ceilometer-api'] Package['ceilometer-api'] -> Ceilometer_config<||> Package['ceilometer-api'] -> Service['ceilometer-api'] + Package['ceilometer-api'] -> Class['ceilometer::policy'] package { 'ceilometer-api': ensure => installed, name => $::ceilometer::params::api_package_name, diff --git a/manifests/policy.pp b/manifests/policy.pp new file mode 100644 index 0000000..31e9392 --- /dev/null +++ b/manifests/policy.pp @@ -0,0 +1,28 @@ +# == Class: ceilometer::policy +# +# Configure the ceilometer policies +# +# === Parameters +# +# [*policies*] +# (optional) Set of policies to configure for ceilometer +# Example : { 'ceilometer-context_is_admin' => {'context_is_admin' => 'true'}, 'ceilometer-default' => {'default' => 'rule:admin_or_owner'} } +# Defaults to empty hash. +# +# [*policy_path*] +# (optional) Path to the ceilometer policy.json file +# Defaults to /etc/ceilometer/policy.json +# +class ceilometer::policy ( + $policies = {}, + $policy_path = '/etc/ceilometer/policy.json', +) { + + Openstacklib::Policy::Base { + file_path => $policy_path, + } + class { 'openstacklib::policy' : + policies => $policies, + } + +} diff --git a/spec/classes/ceilometer_api_spec.rb b/spec/classes/ceilometer_api_spec.rb index 66a9c18..1ec07e5 100644 --- a/spec/classes/ceilometer_api_spec.rb +++ b/spec/classes/ceilometer_api_spec.rb @@ -28,6 +28,7 @@ describe 'ceilometer::api' do end it { should contain_class('ceilometer::params') } + it { should contain_class('ceilometer::policy') } it 'installs ceilometer-api package' do should contain_package('ceilometer-api').with( diff --git a/spec/classes/ceilometer_policy_spec.rb b/spec/classes/ceilometer_policy_spec.rb new file mode 100644 index 0000000..ea223a9 --- /dev/null +++ b/spec/classes/ceilometer_policy_spec.rb @@ -0,0 +1,40 @@ +require 'spec_helper' + +describe 'ceilometer::policy' do + + shared_examples_for 'ceilometer policies' do + let :params do + { + :policy_path => '/etc/ceilometer/policy.json', + :policies => { + 'context_is_admin' => { + 'key' => 'context_is_admin', + 'value' => 'foo:bar' + } + } + } + end + + it 'set up the policies' do + should contain_class('openstacklib::policy').with({ + :policies => params[:policies] + }) + end + end + + context 'on Debian platforms' do + let :facts do + { :osfamily => 'Debian' } + end + + it_configures 'ceilometer policies' + end + + context 'on RedHat platforms' do + let :facts do + { :osfamily => 'RedHat' } + end + + it_configures 'ceilometer policies' + end +end