]> review.fuel-infra Code Review - puppet-modules/puppet-ceilometer.git/commitdiff
policy.json: Allow one to manage them from the puppet module
authorYanis Guenane <yanis.guenane@enovance.com>
Fri, 26 Sep 2014 23:07:49 +0000 (19:07 -0400)
committerYanis Guenane <yanis.guenane@enovance.com>
Wed, 22 Oct 2014 15:20:16 +0000 (11:20 -0400)
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

manifests/api.pp
manifests/policy.pp [new file with mode: 0644]
spec/classes/ceilometer_api_spec.rb
spec/classes/ceilometer_policy_spec.rb [new file with mode: 0644]

index 70e2bdf4a6ff2a0cd0cdb071b017261f3448b7bc..d66e665e7d6aae4d5081ead8de13c3f3c9cee80a 100644 (file)
@@ -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 (file)
index 0000000..31e9392
--- /dev/null
@@ -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,
+  }
+
+}
index 66a9c1815f248a0ce3218cb3f528b9dc93bca168..1ec07e59dc5967723b381cfaa415127a0c72226a 100644 (file)
@@ -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 (file)
index 0000000..ea223a9
--- /dev/null
@@ -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