]> review.fuel-infra Code Review - puppet-modules/puppet-ceilometer.git/commitdiff
Allow to configure the polling interval
authorMehdi Abaakouk <sileht@sileht.net>
Tue, 9 May 2017 10:51:31 +0000 (12:51 +0200)
committerMehdi Abaakouk <sileht@sileht.net>
Wed, 10 May 2017 12:28:41 +0000 (14:28 +0200)
This change allows the management of polling.yaml. This allow
to configure the polling interval.

Change-Id: I4e63d48e57700146ccfb6685cc1e3ad1c9e6102f

manifests/agent/polling.pp
manifests/params.pp
spec/classes/ceilometer_agent_polling_spec.rb
templates/polling.yaml.erb [new file with mode: 0644]

index 22eeefb26061cd6c7f2cc8781ae19d8b57c457be..4a2a42893b1267800f2171ed4776e76eb760ba50 100644 (file)
 #    * libvirt_metadata: get instances from libvirt metadata
 #      but without instance metadata (recommended for Gnocchi backend).
 #
+# [*manage_polling*]
+#   (Optional) Whether to manage polling.yaml
+#   Defaults to false
+#
+# [*polling_interval*]
+#   (Optional) Number of seconds between polling cycle
+#   Defaults to 600 seconds, used only if manage_polling is true.
+#
 class ceilometer::agent::polling (
   $manage_service            = true,
   $enabled                   = true,
@@ -49,6 +57,8 @@ class ceilometer::agent::polling (
   $ipmi_namespace            = true,
   $coordination_url          = undef,
   $instance_discovery_method = $::os_service_default,
+  $manage_polling            = false,
+  $polling_interval          = 600,
 ) inherits ceilometer {
 
   include ::ceilometer::deps
@@ -127,4 +137,13 @@ class ceilometer::agent::polling (
       'coordination/backend_url': value => $coordination_url
     }
   }
+
+  if $manage_polling {
+    file { 'polling':
+      ensure                  => present,
+      path                    => $::ceilometer::params::polling,
+      content                 => template('ceilometer/polling.yaml.erb'),
+      selinux_ignore_defaults => true,
+    }
+  }
 }
index 9a026a2b84fe4ce54db7c8788346caef5af45417..4550dbd65574bb7fd34dbb898b953aec982f16a9 100644 (file)
@@ -11,6 +11,7 @@ class ceilometer::params {
   $user                = 'ceilometer'
   $event_pipeline      = '/etc/ceilometer/event_pipeline.yaml'
   $pipeline            = '/etc/ceilometer/pipeline.yaml'
+  $polling             = '/etc/ceilometer/polling.yaml'
   $client_package_name = 'python-ceilometerclient'
 
   case $::osfamily {
index cf236357ae285a1a530e8f0e9ca058e013da72c9..306c69ba813a1275800f6c4eb82c3fec182d4a89 100644 (file)
@@ -117,6 +117,24 @@ describe 'ceilometer::agent::polling' do
       end
     end
 
+    context "with polling management enabled" do
+      before { params.merge!(
+        :manage_polling   => true
+      ) }
+
+      it { is_expected.to contain_file('polling').with(
+        'path' => '/etc/ceilometer/polling.yaml',
+      ) }
+    end
+
+    context "with polling management disabled" do
+      before { params.merge!(
+        :manage_polling   => false
+      ) }
+
+      it { is_expected.not_to contain_file('polling') }
+    end
+
     it 'configures central agent' do
       is_expected.to contain_ceilometer_config('coordination/backend_url').with_value( params[:coordination_url] )
     end
diff --git a/templates/polling.yaml.erb b/templates/polling.yaml.erb
new file mode 100644 (file)
index 0000000..1af34f7
--- /dev/null
@@ -0,0 +1,6 @@
+---
+sources:
+    - name: all_pollsters
+      interval: <%= @polling_interval %>
+      meters:
+          - "*"