]> review.fuel-infra Code Review - puppet-modules/puppet-ceilometer.git/commitdiff
Add manage_service feature
authorMartin Magr <mmagr@redhat.com>
Wed, 20 Aug 2014 13:57:55 +0000 (15:57 +0200)
committerMartin Mágr <mmagr@redhat.com>
Fri, 19 Sep 2014 10:29:53 +0000 (12:29 +0200)
puppet-ceilometer lacks of disabling service managing. This patch adds
$manage_service parameter to all relevant classes.

Closes-bug: #1359823
Change-Id: Iee545b46ef5d7cf92859356ae84b8103564bf047

14 files changed:
manifests/agent/central.pp
manifests/agent/compute.pp
manifests/agent/notification.pp
manifests/alarm/evaluator.pp
manifests/alarm/notifier.pp
manifests/api.pp
manifests/collector.pp
spec/classes/ceilometer_agent_central_spec.rb
spec/classes/ceilometer_agent_compute_spec.rb
spec/classes/ceilometer_agent_notification_spec.rb
spec/classes/ceilometer_alarm_evaluator_spec.rb
spec/classes/ceilometer_alarm_notifier_spec.rb
spec/classes/ceilometer_api_spec.rb
spec/classes/ceilometer_collector_spec.rb

index 0a078561393dee22bf53de5a3a213e43a5aafb29..7c17d8c114721822f526022b2a57af122966e6cf 100644 (file)
@@ -2,10 +2,16 @@
 #
 # == Parameters
 #  [*enabled*]
-#    Should the service be enabled. Optional. Defauls to true
+#    (optional) Should the service be enabled.
+#    Defaults to true.
+#
+#  [*manage_service*]
+#    (optional)  Whether the service should be managed by Puppet.
+#    Defaults to true.
 #
 class ceilometer::agent::central (
-  $enabled          = true,
+  $manage_service = true,
+  $enabled        = true,
 ) {
 
   include ceilometer::params
@@ -18,10 +24,12 @@ class ceilometer::agent::central (
     name   => $::ceilometer::params::agent_central_package_name,
   }
 
-  if $enabled {
-    $service_ensure = 'running'
-  } else {
-    $service_ensure = 'stopped'
+  if $manage_service {
+    if $enabled {
+      $service_ensure = 'running'
+    } else {
+      $service_ensure = 'stopped'
+    }
   }
 
   Package['ceilometer-common'] -> Service['ceilometer-agent-central']
index fde3705d6add35251468ae88befbfb93d059413d..9a81e8c6841a11acc3b1b4ea792b74afe07ef103 100644 (file)
@@ -3,11 +3,16 @@
 #
 # == Parameters
 #  [*enabled*]
-#    should the service be started or not
-#    Optional. Defaults to true
+#    (optional) Should the service be enabled.
+#    Defaults to true.
+#
+#  [*manage_service*]
+#    (optional)  Whether the service should be managed by Puppet.
+#    Defaults to true.
 #
 class ceilometer::agent::compute (
-  $enabled          = true,
+  $manage_service = true,
+  $enabled        = true,
 ) inherits ceilometer {
 
   include ceilometer::params
@@ -30,10 +35,12 @@ class ceilometer::agent::compute (
     }
   }
 
-  if $enabled {
-    $service_ensure = 'running'
-  } else {
-    $service_ensure = 'stopped'
+  if $manage_service {
+    if $enabled {
+      $service_ensure = 'running'
+    } else {
+      $service_ensure = 'stopped'
+    }
   }
 
   Package['ceilometer-common'] -> Service['ceilometer-agent-compute']
index 29993622f20c3f66435deddee1248df23d1d7d63..f8c2631c8e166be485d1454dd8055e25495a776c 100644 (file)
 # file with the OVS plugin if both are on the same machine.
 #
 # === Parameters
-#
 # [*enabled*]
-#   (optional) Should the service be started or not
-#   Defaults to true
+#   (optional) Should the service be enabled.
+#   Defaults to true.
+#
+# [*manage_service*]
+#   (optional)  Whether the service should be managed by Puppet.
+#   Defaults to true.
 #
 # [*ack_on_event_error*]
 #   (optional) Acknowledge message when event persistence fails.
@@ -38,6 +41,7 @@
 #
 
 class ceilometer::agent::notification (
+  $manage_service     = true,
   $enabled            = true,
   $ack_on_event_error = true,
   $store_events       = false
@@ -50,10 +54,12 @@ class ceilometer::agent::notification (
   Package[$::ceilometer::params::agent_notification_package_name] -> Service['ceilometer-agent-notification']
   ensure_packages([$::ceilometer::params::agent_notification_package_name])
 
-  if $enabled {
-    $service_ensure = 'running'
-  } else {
-    $service_ensure = 'stopped'
+  if $manage_service {
+    if $enabled {
+      $service_ensure = 'running'
+    } else {
+      $service_ensure = 'stopped'
+    }
   }
 
   Package['ceilometer-common'] -> Service['ceilometer-agent-notification']
index 2621534910e28c6e6b09c48d55662d262bc49fd6..2b9ca643b494fda74d8694baee8c73bfe2a1cd2c 100644 (file)
@@ -2,18 +2,32 @@
 #
 # == Params
 #  [*enabled*]
-#    should the service be enabled
+#    (optional) Should the service be enabled.
+#    Defaults to true.
+#
+#  [*manage_service*]
+#    (optional) Whether the service should be managed by Puppet.
+#    Defaults to true.
+#
 #  [*evaluation_interval*]
-#    define the time interval for the alarm evaluator
+#    (optional) Define the time interval for the alarm evaluator
+#    Defaults to 60.
+#
 #  [*evaluation_service*]
-#    define which service use for the evaluator
+#    (optional) Define which service use for the evaluator
+#    Defaults to 'ceilometer.alarm.service.SingletonAlarmService'.
+#
 #  [*partition_rpc_topic*]
-#    define which topic the alarm evaluator should access
+#    (optional) Define which topic the alarm evaluator should access
+#    Defaults to 'alarm_partition_coordination'.
+#
 #  [*record_history*]
-#    Record alarm change events
+#    (optional) Record alarm change events
+#    Defaults to true.
 #
 class ceilometer::alarm::evaluator (
-  $enabled = true,
+  $manage_service      = true,
+  $enabled             = true,
   $evaluation_interval = 60,
   $evaluation_service  = 'ceilometer.alarm.service.SingletonAlarmService',
   $partition_rpc_topic = 'alarm_partition_coordination',
@@ -30,10 +44,12 @@ class ceilometer::alarm::evaluator (
   Package[$::ceilometer::params::alarm_package_name] -> Package<| title == 'ceilometer-alarm' |>
   ensure_packages($::ceilometer::params::alarm_package_name)
 
-  if $enabled {
-    $service_ensure = 'running'
-  } else {
-    $service_ensure = 'stopped'
+  if $manage_service {
+    if $enabled {
+      $service_ensure = 'running'
+    } else {
+      $service_ensure = 'stopped'
+    }
   }
 
   Package['ceilometer-common'] -> Service['ceilometer-alarm-evaluator']
index 1b09baaf18885704c6ad673d83eee910be6af8ef..4bad2210094fa026c26e54802f545ee40d0f10e1 100644 (file)
@@ -2,18 +2,31 @@
 #
 # == Params
 #  [*enabled*]
-#    should the service be enabled
+#    (optional) Should the service be enabled.
+#    Defaults to true.
+#
+#  [*manage_service*]
+#    (optional) Whether the service should be managed by Puppet.
+#    Defaults to true.
+#
 #  [*notifier_rpc_topic*]
-#    define on which topic the notifier will have
-#    access
+#    (optional) Define on which topic the notifier will have access.
+#    Defaults to undef.
+#
 #  [*rest_notifier_certificate_key*]
-#    define the certificate key for the rest service
+#    (optional) Define the certificate key for the rest service.
+#    Defaults to undef.
+#
 #  [*rest_notifier_certificate_file*]
-#    define the certificate file for the rest service
+#    (optional) Define the certificate file for the rest service.
+#    Defaults to undef.
+#
 #  [*rest_notifier_ssl_verify*]
-#    should the ssl verify parameter be enabled
+#    (optional) Should the ssl verify parameter be enabled.
+#    Defaults to true.
 #
 class ceilometer::alarm::notifier (
+  $manage_service                 = true,
   $enabled                        = true,
   $notifier_rpc_topic             = undef,
   $rest_notifier_certificate_key  = undef,
@@ -31,10 +44,12 @@ class ceilometer::alarm::notifier (
   Package[$::ceilometer::params::alarm_package_name] -> Package<| title == 'ceilometer-alarm' |>
   ensure_packages($::ceilometer::params::alarm_package_name)
 
-  if $enabled {
-    $service_ensure = 'running'
-  } else {
-    $service_ensure = 'stopped'
+  if $manage_service {
+    if $enabled {
+      $service_ensure = 'running'
+    } else {
+      $service_ensure = 'stopped'
+    }
   }
 
   Package['ceilometer-common'] -> Service['ceilometer-alarm-notifier']
index bdb0976f926451e5d3e2a029bf53f925fdee642d..70e2bdf4a6ff2a0cd0cdb071b017261f3448b7bc 100644 (file)
@@ -2,41 +2,54 @@
 #
 # == Parameters
 #  [*enabled*]
-#    should the service be enabled. Optional. Defaults to true
+#    (optional) Should the service be enabled.
+#    Defaults to true
+#
+#  [*manage_service*]
+#    (optional) Whether the service should be managed by Puppet.
+#    Defaults to true.
 #
 #  [*keystone_host*]
-#    keystone's admin endpoint IP/Host. Optional. Defaults to 127.0.0.1
+#    (optional) Keystone's admin endpoint IP/Host.
+#    Defaults to '127.0.0.1'
 #
 #  [*keystone_port*]
-#    keystone's admin endpoint port. Optional. Defaults to 35357
+#    (optional) Keystone's admin endpoint port.
+#    Defaults to 35357
 #
 #  [*keystone_auth_admin_prefix*]
-#    'path' to the keystone admin endpoint. Optional. Defaults to false (empty)
+#    (optional) 'path' to the keystone admin endpoint.
 #    Define to a path starting with a '/' and without trailing '/'.
 #    Eg.: '/keystone/admin' to match keystone::wsgi::apache default.
+#    Defaults to false (empty)
 #
-#  [*keystone_protocol*] http/https
-#    Optional. Defaults to https
+#  [*keystone_protocol*]
+#    (optional) 'http' or 'https'
+#    Defaults to 'https'.
 #
-#  [*keytone_user*] user to authenticate with
-#    Optional. Defaults to ceilometer
+#  [*keytone_user*]
+#    (optional) User to authenticate with.
+#    Defaults to 'ceilometer'.
 #
-#  [*keystone_tenant*] tenant to authenticate with
-#    Optional. Defaults to services
+#  [*keystone_tenant*]
+#    (optional) Tenant to authenticate with.
+#    Defaults to 'services'.
 #
-#  [*keystone_password*] password to authenticate with
+#  [*keystone_password*]
+#    Password to authenticate with.
 #    Mandatory.
 #
-# [*host*]
-#   (optional) The ceilometer api bind address
-#   Defaults to 0.0.0.0
+#  [*host*]
+#    (optional) The ceilometer api bind address.
+#    Defaults to 0.0.0.0
 #
-# [*port*]
-#   (optional) The ceilometer api port
-#   Defaults to 8777
+#  [*port*]
+#    (optional) The ceilometer api port.
+#    Defaults to 8777
 #
 
 class ceilometer::api (
+  $manage_service             = true,
   $enabled                    = true,
   $keystone_host              = '127.0.0.1',
   $keystone_port              = '35357',
@@ -63,10 +76,12 @@ class ceilometer::api (
     name   => $::ceilometer::params::api_package_name,
   }
 
-  if $enabled {
-    $service_ensure = 'running'
-  } else {
-    $service_ensure = 'stopped'
+  if $manage_service {
+    if $enabled {
+      $service_ensure = 'running'
+    } else {
+      $service_ensure = 'stopped'
+    }
   }
 
   Package['ceilometer-common'] -> Service['ceilometer-api']
index 2506efbe73cbf0ae69d653bf80b61059bd14bd86..8e1f6fcb20fd0116fef9422dfe2eef16d6a6d339 100644 (file)
@@ -2,10 +2,16 @@
 #
 # == Params
 #  [*enabled*]
-#    should the service be enabled
+#    (optional) Should the service be enabled.
+#    Defaults to true.
+#
+#  [*manage_service*]
+#    (optional)  Whether the service should be managed by Puppet.
+#    Defaults to true.
 #
 class ceilometer::collector (
-  $enabled = true,
+  $manage_service = true,
+  $enabled        = true,
 ) {
 
   include ceilometer::params
@@ -15,12 +21,14 @@ class ceilometer::collector (
   Package[$::ceilometer::params::collector_package_name] -> Service['ceilometer-collector']
   ensure_packages([$::ceilometer::params::collector_package_name])
 
-  if $enabled {
-    $service_ensure = 'running'
-    Class['ceilometer::db'] -> Service['ceilometer-collector']
-    Exec['ceilometer-dbsync'] ~> Service['ceilometer-collector']
-  } else {
-    $service_ensure = 'stopped'
+  if $manage_service {
+    if $enabled {
+      $service_ensure = 'running'
+      Class['ceilometer::db'] -> Service['ceilometer-collector']
+      Exec['ceilometer-dbsync'] ~> Service['ceilometer-collector']
+    } else {
+      $service_ensure = 'stopped'
+    }
   }
 
   Package['ceilometer-common'] -> Service['ceilometer-collector']
index 5fab4c924e75177c2172e170143d90a88bbb1ccc..8a45c35e1b6091d92d31eccdea8af269e43f2315 100644 (file)
@@ -7,7 +7,8 @@ describe 'ceilometer::agent::central' do
   end
 
   let :params do
-    { :enabled          => true }
+    { :enabled        => true,
+      :manage_service => true }
   end
 
   shared_examples_for 'ceilometer-agent-central' do
@@ -28,14 +29,40 @@ describe 'ceilometer::agent::central' do
       )
     end
 
-    it 'configures ceilometer-agent-central service' do
-      should contain_service('ceilometer-agent-central').with(
-        :ensure     => 'running',
-        :name       => platform_params[:agent_service_name],
-        :enable     => true,
-        :hasstatus  => true,
-        :hasrestart => true
-      )
+    [{:enabled => true}, {:enabled => false}].each do |param_hash|
+      context "when service should be #{param_hash[:enabled] ? 'enabled' : 'disabled'}" do
+        before do
+          params.merge!(param_hash)
+        end
+
+        it 'configures ceilometer-agent-central service' do
+          should contain_service('ceilometer-agent-central').with(
+            :ensure     => (params[:manage_service] && params[:enabled]) ? 'running' : 'stopped',
+            :name       => platform_params[:agent_service_name],
+            :enable     => params[:enabled],
+            :hasstatus  => true,
+            :hasrestart => true
+          )
+        end
+      end
+    end
+
+    context 'with disabled service managing' do
+      before do
+        params.merge!({
+          :manage_service => false,
+          :enabled        => false })
+      end
+
+      it 'configures ceilometer-agent-central service' do
+        should contain_service('ceilometer-agent-central').with(
+          :ensure     => nil,
+          :name       => platform_params[:agent_service_name],
+          :enable     => false,
+          :hasstatus  => true,
+          :hasrestart => true
+        )
+      end
     end
 
   end
index 16f19a0482e66629719a30deeb2d121c13fff1b2..d193bc1a733df48426b5872eb3a70fbe15d6cddc 100644 (file)
@@ -9,7 +9,8 @@ describe 'ceilometer::agent::compute' do
   end
 
   let :params do
-    { :enabled          => true }
+    { :enabled  => true,
+      :manage_service => true }
   end
 
   shared_examples_for 'ceilometer-agent-compute' do
@@ -38,16 +39,6 @@ describe 'ceilometer::agent::compute' do
       )
     end
 
-    it 'configures ceilometer-agent-compute service' do
-      should contain_service('ceilometer-agent-compute').with(
-        :ensure     => 'running',
-        :name       => platform_params[:agent_service_name],
-        :enable     => true,
-        :hasstatus  => true,
-        :hasrestart => true
-      )
-    end
-
     it 'configures nova notification driver' do
       should contain_file_line_after('nova-notification-driver-common').with(
         :line   => 'notification_driver=nova.openstack.common.notifier.rpc_notifier',
@@ -61,6 +52,43 @@ describe 'ceilometer::agent::compute' do
       )
     end
 
+    [{:enabled => true}, {:enabled => false}].each do |param_hash|
+      context "when service should be #{param_hash[:enabled] ? 'enabled' : 'disabled'}" do
+        before do
+          params.merge!(param_hash)
+        end
+
+        it 'configures ceilometer-agent-compute service' do
+
+          should contain_service('ceilometer-agent-compute').with(
+            :ensure     => (params[:manage_service] && params[:enabled]) ? 'running' : 'stopped',
+            :name       => platform_params[:agent_service_name],
+            :enable     => params[:enabled],
+            :hasstatus  => true,
+            :hasrestart => true
+          )
+        end
+      end
+    end
+
+    context 'with disabled service managing' do
+      before do
+        params.merge!({
+          :manage_service => false,
+          :enabled        => false })
+      end
+
+      it 'configures ceilometer-agent-compute service' do
+        should contain_service('ceilometer-agent-compute').with(
+          :ensure     => nil,
+          :name       => platform_params[:agent_service_name],
+          :enable     => false,
+          :hasstatus  => true,
+          :hasrestart => true
+        )
+      end
+    end
+
   end
 
   context 'on Debian platforms' do
index 227b6b6bd8cd559828cbc5cb833d572cc04db84c..8646c28e35d061674b8b26a4d2899861e6149038 100644 (file)
@@ -27,7 +27,9 @@ describe 'ceilometer::agent::notification' do
   end
 
   let :params do
-    { :ack_on_event_error => true,
+    { :manage_service     => true,
+      :enabled            => true,
+      :ack_on_event_error => true,
       :store_events       => false }
   end
 
@@ -39,21 +41,47 @@ describe 'ceilometer::agent::notification' do
       should contain_package(platform_params[:agent_notification_package_name])
     end
 
-    it 'configures ceilometer agent notification service' do
-      should contain_service('ceilometer-agent-notification').with(
-        :ensure     => 'running',
-        :name       => platform_params[:agent_notification_service_name],
-        :enable     => true,
-        :hasstatus  => true,
-        :hasrestart => true
-      )
-    end
-
     it 'configures notifications parameters in ceilometer.conf' do
       should contain_ceilometer_config('notification/ack_on_event_error').with_value( params[:ack_on_event_error] )
       should contain_ceilometer_config('notification/store_events').with_value( params[:store_events] )
     end
 
+    [{:enabled => true}, {:enabled => false}].each do |param_hash|
+      context "when service should be #{param_hash[:enabled] ? 'enabled' : 'disabled'}" do
+        before do
+          params.merge!(param_hash)
+        end
+
+        it 'configures ceilometer agent notification service' do
+          should contain_service('ceilometer-agent-notification').with(
+            :ensure     => (params[:manage_service] && params[:enabled]) ? 'running' : 'stopped',
+            :name       => platform_params[:agent_notification_service_name],
+            :enable     => params[:enabled],
+            :hasstatus  => true,
+            :hasrestart => true
+          )
+        end
+      end
+    end
+
+    context 'with disabled service managing' do
+      before do
+        params.merge!({
+          :manage_service => false,
+          :enabled        => false })
+      end
+
+      it 'configures ceilometer-agent-notification service' do
+        should contain_service('ceilometer-agent-notification').with(
+          :ensure     => nil,
+          :name       => platform_params[:agent_notification_service_name],
+          :enable     => false,
+          :hasstatus  => true,
+          :hasrestart => true
+        )
+      end
+    end
+
   end
 
   context 'on Debian platforms' do
index d017695e990020f1d3805e3725f0c05b879f8c88..b2c4c48b0732a2427d8c7df4285469f29c15b64a 100644 (file)
@@ -12,6 +12,7 @@ describe 'ceilometer::alarm::evaluator' do
       :partition_rpc_topic   => 'alarm_partition_coordination',
       :record_history        => true,
       :enabled               => true,
+      :manage_service        => true,
     }
   end
 
@@ -32,17 +33,6 @@ describe 'ceilometer::alarm::evaluator' do
       )
     end
 
-    it 'configures ceilometer-alarm-evaluator service' do
-      should contain_service('ceilometer-alarm-evaluator').with(
-        :ensure     => 'running',
-        :name       => platform_params[:alarm_evaluator_service_name],
-        :enable     => true,
-        :hasstatus  => true,
-        :hasrestart => true
-      )
-    end
-
-
     it 'configures alarm evaluator' do
       should contain_ceilometer_config('alarm/evaluation_interval').with_value( params[:evaluation_interval] )
       should contain_ceilometer_config('alarm/evaluation_service').with_value( params[:evaluation_service] )
@@ -63,14 +53,50 @@ describe 'ceilometer::alarm::evaluator' do
       it { should contain_ceilometer_config('alarm/partition_rpc_topic').with_value(params[:partition_rpc_topic])  }
     end
 
-      context 'when override the evaluation interval with a non numeric value' do
+    context 'when override the evaluation interval with a non numeric value' do
+      before do
+        params.merge!(:evaluation_interval => 'NaN')
+      end
+
+      it { expect { should contain_ceilometer_config('alarm/evaluation_interval') }.to\
+        raise_error(Puppet::Error, /validate_re\(\): .* does not match/) }
+    end
+
+    [{:enabled => true}, {:enabled => false}].each do |param_hash|
+      context "when service should be #{param_hash[:enabled] ? 'enabled' : 'disabled'}" do
         before do
-          params.merge!(:evaluation_interval => 'NaN')
+          params.merge!(param_hash)
         end
 
-        it { expect { should contain_ceilometer_config('alarm/evaluation_interval') }.to\
-          raise_error(Puppet::Error, /validate_re\(\): .* does not match/) }
+        it 'configures ceilometer-alarm-evaluator service' do
+          should contain_service('ceilometer-alarm-evaluator').with(
+            :ensure     => (params[:manage_service] && params[:enabled]) ? 'running' : 'stopped',
+            :name       => platform_params[:alarm_evaluator_service_name],
+            :enable     => params[:enabled],
+            :hasstatus  => true,
+            :hasrestart => true
+          )
+        end
+      end
+    end
+
+    context 'with disabled service managing' do
+      before do
+        params.merge!({
+          :manage_service => false,
+          :enabled        => false })
+      end
+
+      it 'configures ceilometer-alarm-evaluator service' do
+        should contain_service('ceilometer-alarm-evaluator').with(
+          :ensure     => nil,
+          :name       => platform_params[:alarm_evaluator_service_name],
+          :enable     => false,
+          :hasstatus  => true,
+          :hasrestart => true
+        )
       end
+    end
   end
 
   context 'on Debian platforms' do
index 6c40d433a019e6d262c9347b188bfde75bcbd7c0..d4e65a1e3af22a5effa633cea5f03852d2572ade 100644 (file)
@@ -13,6 +13,7 @@ describe 'ceilometer::alarm::notifier' do
       #:rest_notifier_certificate_file  => 'UNSET',
       #:rest_notifier_ssl_verify        => true,
       :enabled                         => true,
+      :manage_service                  => true,
     }
   end
 
@@ -33,17 +34,6 @@ describe 'ceilometer::alarm::notifier' do
       )
     end
 
-    it 'configures ceilometer-alarm-notifier service' do
-      should contain_service('ceilometer-alarm-notifier').with(
-        :ensure     => 'running',
-        :name       => platform_params[:alarm_notifier_service_name],
-        :enable     => true,
-        :hasstatus  => true,
-        :hasrestart => true
-      )
-    end
-
-
     it 'configures alarm notifier' do
       should_not contain_ceilometer_config('alarm/notifier_rpc_topic')
       should_not contain_ceilometer_config('alarm/rest_notifier_certificate_key')
@@ -64,6 +54,42 @@ describe 'ceilometer::alarm::notifier' do
       it { should contain_ceilometer_config('alarm/rest_notifier_ssl_verify').with_value(params[:rest_notifier_ssl_verify])  }
     end
 
+    [{:enabled => true}, {:enabled => false}].each do |param_hash|
+      context "when service should be #{param_hash[:enabled] ? 'enabled' : 'disabled'}" do
+        before do
+          params.merge!(param_hash)
+        end
+
+        it 'configures ceilometer-alarm-notifier service' do
+          should contain_service('ceilometer-alarm-notifier').with(
+            :ensure     => (params[:manage_service] && params[:enabled]) ? 'running' : 'stopped',
+            :name       => platform_params[:alarm_notifier_service_name],
+            :enable     => params[:enabled],
+            :hasstatus  => true,
+            :hasrestart => true
+          )
+        end
+      end
+    end
+
+    context 'with disabled service managing' do
+      before do
+        params.merge!({
+          :manage_service => false,
+          :enabled        => false })
+      end
+
+      it 'configures ceilometer-alarm-notifier service' do
+        should contain_service('ceilometer-alarm-notifier').with(
+          :ensure     => nil,
+          :name       => platform_params[:alarm_notifier_service_name],
+          :enable     => false,
+          :hasstatus  => true,
+          :hasrestart => true
+        )
+      end
+    end
+
   end
 
   context 'on Debian platforms' do
index 3075d29ceff957ec2c9223ee2ff99171dcaeae74..66a9c1815f248a0ce3218cb3f528b9dc93bca168 100644 (file)
@@ -8,6 +8,7 @@ describe 'ceilometer::api' do
 
   let :params do
     { :enabled           => true,
+      :manage_service    => true,
       :keystone_host     => '127.0.0.1',
       :keystone_port     => '35357',
       :keystone_protocol => 'http',
@@ -35,18 +36,6 @@ describe 'ceilometer::api' do
       )
     end
 
-    it 'configures ceilometer-api service' do
-      should contain_service('ceilometer-api').with(
-        :ensure     => 'running',
-        :name       => platform_params[:api_service_name],
-        :enable     => true,
-        :hasstatus  => true,
-        :hasrestart => true,
-        :require    => 'Class[Ceilometer::Db]',
-        :subscribe  => 'Exec[ceilometer-dbsync]'
-      )
-    end
-
     it 'configures keystone authentication middleware' do
       should contain_ceilometer_config('keystone_authtoken/auth_host').with_value( params[:keystone_host] )
       should contain_ceilometer_config('keystone_authtoken/auth_port').with_value( params[:keystone_port] )
@@ -83,6 +72,44 @@ describe 'ceilometer::api' do
         end
       end
     end
+
+    [{:enabled => true}, {:enabled => false}].each do |param_hash|
+      context "when service should be #{param_hash[:enabled] ? 'enabled' : 'disabled'}" do
+        before do
+          params.merge!(param_hash)
+        end
+
+        it 'configures ceilometer-api service' do
+          should contain_service('ceilometer-api').with(
+            :ensure     => (params[:manage_service] && params[:enabled]) ? 'running' : 'stopped',
+            :name       => platform_params[:api_service_name],
+            :enable     => params[:enabled],
+            :hasstatus  => true,
+            :hasrestart => true,
+            :require    => 'Class[Ceilometer::Db]',
+            :subscribe  => 'Exec[ceilometer-dbsync]'
+          )
+        end
+      end
+    end
+
+    context 'with disabled service managing' do
+      before do
+        params.merge!({
+          :manage_service => false,
+          :enabled        => false })
+      end
+
+      it 'configures ceilometer-api service' do
+        should contain_service('ceilometer-api').with(
+          :ensure     => nil,
+          :name       => platform_params[:api_service_name],
+          :enable     => false,
+          :hasstatus  => true,
+          :hasrestart => true
+        )
+      end
+    end
   end
 
   context 'on Debian platforms' do
index 25e6d650b11aebbc2e375454f8f486799db3de72..72f2510e5080396055f1acbe0c85affb60db5b76 100644 (file)
@@ -42,6 +42,33 @@ describe 'ceilometer::collector' do
 
       # Catalog compilation does not crash for lack of ceilometer::db
       it { should compile }
+
+      it 'configures ceilometer-collector service' do
+        should contain_service('ceilometer-collector').with(
+          :ensure     => 'stopped',
+          :name       => platform_params[:collector_service_name],
+          :enable     => false,
+          :hasstatus  => true,
+          :hasrestart => true
+        )
+      end
+    end
+
+    context 'when service management is disabled' do
+      let :params do
+        { :enabled        => false,
+          :manage_service => false }
+      end
+
+      it 'configures ceilometer-collector service' do
+        should contain_service('ceilometer-collector').with(
+          :ensure     => nil,
+          :name       => platform_params[:collector_service_name],
+          :enable     => false,
+          :hasstatus  => true,
+          :hasrestart => true
+        )
+      end
     end
   end