]> review.fuel-infra Code Review - puppet-modules/puppet-ceilometer.git/commitdiff
Configure compute params in config
authorPradeep Kilambi <pkilambi@redhat.com>
Mon, 16 Jan 2017 18:15:03 +0000 (13:15 -0500)
committerPradeep Kilambi <pkilambi@redhat.com>
Thu, 19 Jan 2017 18:29:03 +0000 (13:29 -0500)
Add a way to pass instance_discovery_method param to
override in the ceilo compute agent config.

Change-Id: Id7bd49510c0be76ed3f940c91108659beb440afb

manifests/agent/compute.pp
manifests/agent/polling.pp
releasenotes/notes/add-instance-discovery-methods-5d4dde0ebf4cec28.yaml [new file with mode: 0644]
spec/classes/ceilometer_agent_compute_spec.rb
spec/classes/ceilometer_agent_polling_spec.rb

index f4ce50c699545af3edfcf41bab9a40691804cedd..c7714a01bbb0a34029da86fbd302c5ef20ebd7b2 100644 (file)
 #   (Optional) ensure state for package.
 #   Defaults to 'present'.
 #
+# [*instance_discovery_method*]
+#   (Optional) method to discovery instances running on compute node
+#   Defaults to $::os_service_default
+#    * naive: poll nova to get all instances
+#    * workload_partitioning: poll nova to get instances of the compute
+#    * libvirt_metadata: get instances from libvirt metadata
+#      but without instance metadata (recommended for Gnocchi backend).
+#
 class ceilometer::agent::compute (
-  $manage_service   = true,
-  $enabled          = true,
-  $package_ensure   = 'present',
+  $manage_service            = true,
+  $enabled                   = true,
+  $package_ensure            = 'present',
+  $instance_discovery_method = $::os_service_default,
 ) inherits ceilometer {
 
   warning('This class is deprecated. Please use ceilometer::agent::polling with compute namespace instead.')
 
   include ::ceilometer::params
 
+  ceilometer_config {
+    'compute/instance_discovery_method': value => $instance_discovery_method,
+  }
+
   Ceilometer_config<||> ~> Service['ceilometer-agent-compute']
 
   Package['ceilometer-agent-compute'] -> Service['ceilometer-agent-compute']
index ae24c04e47f7560ae2a44a3cb77c2684ba7ae037..801de26b9d00d71ffed14f8eddf9c1af2c8ddb28 100644 (file)
 #   (Optional) The url to use for distributed group membership coordination.
 #   Defaults to undef.
 #
+# [*instance_discovery_method*]
+#   (Optional) method to discovery instances running on compute node
+#   Defaults to $::os_service_default
+#    * naive: poll nova to get all instances
+#    * workload_partitioning: poll nova to get instances of the compute
+#    * libvirt_metadata: get instances from libvirt metadata
+#      but without instance metadata (recommended for Gnocchi backend).
+#
 class ceilometer::agent::polling (
-  $manage_service    = true,
-  $enabled           = true,
-  $package_ensure    = 'present',
-  $central_namespace = true,
-  $compute_namespace = true,
-  $ipmi_namespace    = true,
-  $coordination_url  = undef,
+  $manage_service            = true,
+  $enabled                   = true,
+  $package_ensure            = 'present',
+  $central_namespace         = true,
+  $compute_namespace         = true,
+  $ipmi_namespace            = true,
+  $coordination_url          = undef,
+  $instance_discovery_method = $::os_service_default,
 ) inherits ceilometer {
 
   include ::ceilometer::deps
@@ -65,6 +74,10 @@ class ceilometer::agent::polling (
 
     Package <| title == 'ceilometer-common' |> -> User['ceilometer']
     Package <| title == 'nova-common' |> -> Package['ceilometer-common']
+
+    ceilometer_config {
+      'compute/instance_discovery_method': value => $instance_discovery_method,
+    }
   }
 
   if $ipmi_namespace {
diff --git a/releasenotes/notes/add-instance-discovery-methods-5d4dde0ebf4cec28.yaml b/releasenotes/notes/add-instance-discovery-methods-5d4dde0ebf4cec28.yaml
new file mode 100644 (file)
index 0000000..379c2bb
--- /dev/null
@@ -0,0 +1,9 @@
+---
+features:
+  - Add instance_discovery_method to ceilometer agent compute and polling
+    classes so this option is configurable.
+upgrade:
+  - When upgrading, ensure that you dont have both the agent compute as well
+    as the polling classes initialized as that would trigger a duplicate
+    declaration. Ceilometer::agent::compute is deprecated and will be removed
+    in pike release.
index 6824e3855de863d6b35f1da5f8fb5f6bc0110f8d..2aed15ac9d68275172c6f3582fcfdcafacc96cc6 100644 (file)
@@ -28,6 +28,10 @@ describe 'ceilometer::agent::compute' do
       )
     end
 
+    it 'configures agent compute default instance discovery' do
+      is_expected.to contain_ceilometer_config('compute/instance_discovery_method').with_value('<SERVICE DEFAULT>')
+    end
+
     it 'adds ceilometer user to nova group and, if required, to libvirt group' do
       if platform_params[:libvirt_group]
         is_expected.to contain_user('ceilometer').with_groups(['nova', "#{platform_params[:libvirt_group]}"])
@@ -68,6 +72,18 @@ describe 'ceilometer::agent::compute' do
       end
     end
 
+
+    context 'when setting instance_discovery_method' do
+      before do
+        params.merge!({ :instance_discovery_method   => 'naive' })
+      end
+
+      it 'configures agent compute instance discovery' do
+        is_expected.to contain_ceilometer_config('compute/instance_discovery_method').with_value('naive')
+      end
+    end
+
+
     context 'with disabled service managing' do
       before do
         params.merge!({
index 3848e5d8b2741850da8c98687308f503157172ff..cf236357ae285a1a530e8f0e9ca058e013da72c9 100644 (file)
@@ -38,6 +38,10 @@ describe 'ceilometer::agent::polling' do
               :before => /Package\[ceilometer-common\]/
           )
       end
+
+      it 'configures agent compute' do
+        is_expected.to contain_ceilometer_config('compute/instance_discovery_method').with_value('<SERVICE DEFAULT>')
+      end
     end
 
     it 'installs ceilometer-polling package' do
@@ -71,6 +75,17 @@ describe 'ceilometer::agent::polling' do
       end
     end
 
+
+    context 'when setting instance_discovery_method' do
+      before do
+        params.merge!({ :instance_discovery_method   => 'naive' })
+      end
+
+      it 'configures agent compute instance discovery' do
+        is_expected.to contain_ceilometer_config('compute/instance_discovery_method').with_value('naive')
+      end
+    end
+
     context 'with central and ipmi polling namespaces disabled' do
       before do
         params.merge!({