]> review.fuel-infra Code Review - puppet-modules/puppet-ceilometer.git/commitdiff
Add hooks for external install & svc management
authorZhongShengping <chdzsp@163.com>
Tue, 29 Nov 2016 01:21:48 +0000 (09:21 +0800)
committerZhongShengping <chdzsp@163.com>
Tue, 29 Nov 2016 09:32:37 +0000 (17:32 +0800)
This adds defined anchor points for external modules to hook into the
software install, config and service dependency chain.  This allows
external modules to manage software installation (virtualenv,
containers, etc) and service management (pacemaker) without needing rely
on resources that may change or be renamed.

Change-Id: I0d18ec6ffe6b54c85773a6dabb0ed7b6f59a12f4

31 files changed:
manifests/agent/auth.pp
manifests/agent/central.pp
manifests/agent/notification.pp
manifests/agent/polling.pp
manifests/api.pp
manifests/client.pp
manifests/collector.pp
manifests/config.pp
manifests/db.pp
manifests/db/mysql.pp
manifests/db/postgresql.pp
manifests/db/sync.pp
manifests/deps.pp [new file with mode: 0644]
manifests/dispatcher/gnocchi.pp
manifests/expirer.pp
manifests/init.pp
manifests/keystone/auth.pp
manifests/keystone/authtoken.pp
manifests/logging.pp
manifests/policy.pp
manifests/wsgi/apache.pp
releasenotes/notes/external_install_mgmt_hook-676123a45de9237f.yaml [new file with mode: 0644]
spec/classes/ceilometer_agent_central_spec.rb
spec/classes/ceilometer_agent_compute_spec.rb
spec/classes/ceilometer_agent_notification_spec.rb
spec/classes/ceilometer_agent_polling_spec.rb
spec/classes/ceilometer_api_spec.rb
spec/classes/ceilometer_client_spec.rb
spec/classes/ceilometer_db_sync_spec.rb
spec/classes/ceilometer_expirer_spec.rb
spec/classes/ceilometer_init_spec.rb

index db14d557dfc6959b00ba90397aaab46a737d1db5..14083fd1d24a6f8ee0c9c1e177d3b0f41ca5f1e3 100644 (file)
@@ -63,6 +63,8 @@ class ceilometer::agent::auth (
   $auth_type                = 'password',
 ) {
 
+  include ::ceilometer::deps
+
   if ! $auth_cacert {
     ceilometer_config { 'service_credentials/ca_file': ensure => absent }
   } else {
index 11c21489674a091ee74c632d4a5a7ae4913d6e91..3dd1568d953203658b2927ac05c192a9fb74224d 100644 (file)
@@ -28,11 +28,9 @@ class ceilometer::agent::central (
   $coordination_url = undef,
 ) {
 
+  include ::ceilometer::deps
   include ::ceilometer::params
 
-  Ceilometer_config<||> ~> Service['ceilometer-agent-central']
-
-  Package['ceilometer-agent-central'] -> Service['ceilometer-agent-central']
   package { 'ceilometer-agent-central':
     ensure => $package_ensure,
     name   => $::ceilometer::params::agent_central_package_name,
@@ -47,7 +45,6 @@ class ceilometer::agent::central (
     }
   }
 
-  Package['ceilometer-common'] -> Service['ceilometer-agent-central']
   service { 'ceilometer-agent-central':
     ensure     => $service_ensure,
     name       => $::ceilometer::params::agent_central_service_name,
index e13e676c4e76c67a5181f1e31cfb8d5f83071c47..50421e8eaf4c1e3a5a8683c73d14053df6ab362d 100644 (file)
@@ -80,17 +80,13 @@ class ceilometer::agent::notification (
   $event_pipeline_publishers = ['notifier://'],
 ) {
 
+  include ::ceilometer::deps
   include ::ceilometer::params
 
-  Ceilometer_config<||> ~> Service['ceilometer-agent-notification']
-
-  Package[$::ceilometer::params::agent_notification_package_name] ->
-  Service['ceilometer-agent-notification']
-
   ensure_resource('package', [$::ceilometer::params::agent_notification_package_name],
     {
       ensure => $package_ensure,
-      tag    => 'openstack'
+      tag    => ['openstack', 'ceilometer-package']
     }
   )
 
@@ -102,7 +98,6 @@ class ceilometer::agent::notification (
     }
   }
 
-  Package['ceilometer-common'] -> Service['ceilometer-agent-notification']
   service { 'ceilometer-agent-notification':
     ensure     => $service_ensure,
     name       => $::ceilometer::params::agent_notification_service_name,
@@ -119,11 +114,9 @@ class ceilometer::agent::notification (
       ensure                  => present,
       path                    => $::ceilometer::params::event_pipeline,
       content                 => template('ceilometer/event_pipeline.yaml.erb'),
-      selinux_ignore_defaults => true
+      selinux_ignore_defaults => true,
+      tag                     => 'event-pipeline',
     }
-
-    Package<| tag == 'ceilometer-package' |> -> File['event_pipeline']
-    File['event_pipeline'] ~> Service['ceilometer-agent-notification']
   }
 
   ceilometer_config {
index f98391d7ef4cc6b31e1d78052846c4abeedcd8ad..ae24c04e47f7560ae2a44a3cb77c2684ba7ae037 100644 (file)
@@ -42,6 +42,7 @@ class ceilometer::agent::polling (
   $coordination_url  = undef,
 ) inherits ceilometer {
 
+  include ::ceilometer::deps
   include ::ceilometer::params
 
   if $central_namespace {
@@ -93,10 +94,6 @@ class ceilometer::agent::polling (
     }
   }
 
-  Ceilometer_config<||> ~> Service['ceilometer-polling']
-  Package['ceilometer-polling'] -> Service['ceilometer-polling']
-  Package['ceilometer-common'] -> Service['ceilometer-polling']
-
   service { 'ceilometer-polling':
     ensure     => $service_ensure,
     name       => $::ceilometer::params::agent_polling_service_name,
index 830006e57f6405dd2aa4893b761d4027e7367853..125c1dd3985f7c63adb77df6aa855988a101d72d 100644 (file)
@@ -58,6 +58,7 @@ class ceilometer::api (
   $enable_proxy_headers_parsing = $::os_service_default,
 ) inherits ceilometer::params {
 
+  include ::ceilometer::deps
   include ::ceilometer::params
   include ::ceilometer::policy
 
@@ -65,11 +66,6 @@ class ceilometer::api (
     include ::ceilometer::keystone::authtoken
   }
 
-  Ceilometer_config<||> ~> Service[$service_name]
-  Class['ceilometer::policy'] ~> Service[$service_name]
-
-  Package['ceilometer-api'] -> Service[$service_name]
-  Package['ceilometer-api'] -> Class['ceilometer::policy']
   package { 'ceilometer-api':
     ensure => $package_ensure,
     name   => $::ceilometer::params::api_package_name,
@@ -84,8 +80,6 @@ class ceilometer::api (
     }
   }
 
-  Package['ceilometer-common'] -> Service[$service_name]
-
   if $service_name == $::ceilometer::params::api_service_name {
     service { 'ceilometer-api':
       ensure     => $service_ensure,
@@ -93,7 +87,6 @@ class ceilometer::api (
       enable     => $enabled,
       hasstatus  => true,
       hasrestart => true,
-      require    => Class['ceilometer::db'],
       tag        => 'ceilometer-service',
     }
   } elsif $service_name == 'httpd' {
@@ -104,7 +97,6 @@ class ceilometer::api (
       enable => false,
       tag    => 'ceilometer-service',
     }
-    Class['ceilometer::db'] -> Service[$service_name]
 
     # we need to make sure ceilometer-api/eventlet is stopped before trying to start apache
     Service['ceilometer-api'] -> Service[$service_name]
index 4e8425f7cb020227acb1efb319768a621a3a3391..9ee8136f89802c9ff335f6c255ca553331c614c4 100644 (file)
@@ -12,6 +12,7 @@ class ceilometer::client (
   $ensure = 'present'
 ) {
 
+  include ::ceilometer::deps
   include ::ceilometer::params
 
   package { 'python-ceilometerclient':
index 10d3d8a90f45d60649a9b00949ac565b827835ed..e6041eae0e660b6601274108be1d07aae918979b 100644 (file)
@@ -50,10 +50,9 @@ class ceilometer::collector (
   $event_dispatcher  = 'database',
 ) {
 
+  include ::ceilometer::deps
   include ::ceilometer::params
 
-  Ceilometer_config<||> ~> Service['ceilometer-collector']
-
   # We accept udp_address to be set to empty instead of the usual undef to stay
   # close to the "strange" upstream interface.
   if (is_ip_address($udp_address) != true and $udp_address != '' ){
@@ -64,13 +63,15 @@ class ceilometer::collector (
     'collector/udp_address':     value => $udp_address;
     'collector/udp_port':        value => $udp_port;
     'collector/workers':         value => $collector_workers;
-    'DEFAULT/meter_dispatchers':  value => join(any2array($meter_dispatcher), ',');
-    'DEFAULT/event_dispatchers':  value => join(any2array($event_dispatcher), ',');
+    'DEFAULT/meter_dispatchers': value => join(any2array($meter_dispatcher), ',');
+    'DEFAULT/event_dispatchers': value => join(any2array($event_dispatcher), ',');
   }
 
-  Package[$::ceilometer::params::collector_package_name] -> Service['ceilometer-collector']
   ensure_resource( 'package', [$::ceilometer::params::collector_package_name],
-    { ensure => $package_ensure }
+    {
+      ensure => $package_ensure,
+      tag    => ['openstack', 'ceilometer-package']
+    }
   )
 
   if $manage_service {
@@ -81,7 +82,6 @@ class ceilometer::collector (
     }
   }
 
-  Package['ceilometer-common'] -> Service['ceilometer-collector']
   service { 'ceilometer-collector':
     ensure     => $service_ensure,
     name       => $::ceilometer::params::collector_service_name,
index 255dab2084898c21a4f73a51a86d30250e2552e3..6635d95f41463e8fad4a98446d26069640e81564 100644 (file)
@@ -30,6 +30,8 @@ class ceilometer::config (
   $ceilometer_api_paste_ini    = {},
 ) {
 
+  include ::ceilometer::deps
+
   validate_hash($ceilometer_config)
   validate_hash($ceilometer_api_paste_ini)
 
index ed489aaac57851c51b6ad613618dc5e2a75e0dd2..1b299e4885e558b5b9084ce70326b3439cdc47ef 100644 (file)
@@ -56,7 +56,7 @@ class ceilometer::db (
   $sync_db                 = true,
 ) {
 
-  Package<| title == 'ceilometer-common' |> -> Class['ceilometer::db']
+  include ::ceilometer::deps
 
   oslo::db { 'ceilometer_config':
     db_max_retries => $database_db_max_retries,
index 9268c4a786a5f7db6a9740f08dc7ea53991fae36..a834e8ea4aea2eff4af4da07822d4c8b245e2e78 100644 (file)
@@ -42,6 +42,8 @@ class ceilometer::db::mysql(
   $collate       = 'utf8_general_ci',
 ) {
 
+  include ::ceilometer::deps
+
   validate_string($password)
 
   ::openstacklib::db::mysql { 'ceilometer':
@@ -54,5 +56,7 @@ class ceilometer::db::mysql(
     allowed_hosts => $allowed_hosts,
   }
 
-  ::Openstacklib::Db::Mysql['ceilometer'] ~> Exec<| title == 'ceilometer-dbsync' |>
+  Anchor['ceilometer::db::begin']
+  ~> Class['ceilometer::db::mysql']
+  ~> Anchor['ceilometer::db::end']
 }
index 851abdd8304a45e37228b145e5903e48a92ad5aa..fdca6d75a4cd9f4128fd7de1aa185eddf82bee3c 100644 (file)
@@ -32,6 +32,8 @@ class ceilometer::db::postgresql(
   $privileges = 'ALL',
 ) {
 
+  include ::ceilometer::deps
+
   ::openstacklib::db::postgresql { 'ceilometer':
     password_hash => postgresql_password($user, $password),
     dbname        => $dbname,
@@ -40,6 +42,7 @@ class ceilometer::db::postgresql(
     privileges    => $privileges,
   }
 
-  ::Openstacklib::Db::Postgresql['ceilometer']    ~> Exec<| title == 'ceilometer-dbsync' |>
-
+  Anchor['ceilometer::db::begin']
+  ~> Class['ceilometer::db::postgresql']
+  ~> Anchor['ceilometer::db::end']
 }
index af5b8bc2cc505fa1dda5793b190de5609cd198a5..e33e404dac9a52dfdac5f2a2d1a3b1b4773150f6 100644 (file)
@@ -13,14 +13,9 @@ class ceilometer::db::sync(
   $extra_params = undef,
 ) {
 
+  include ::ceilometer::deps
   include ::ceilometer::params
 
-  Package<| tag == 'ceilometer-package' |> ~> Exec['ceilometer-dbsync']
-  Exec['ceilometer-dbsync'] ~> Service <| tag == 'ceilometer-service' |>
-
-  Ceilometer_config<||> -> Exec['ceilometer-dbsync']
-  Ceilometer_config<| title == 'database/connection' |> ~> Exec['ceilometer-dbsync']
-
   exec { 'ceilometer-dbsync':
     command     => "${::ceilometer::params::dbsync_command} ${extra_params}",
     path        => '/usr/bin',
@@ -29,6 +24,12 @@ class ceilometer::db::sync(
     try_sleep   => 5,
     tries       => 10,
     logoutput   => on_failure,
+    subscribe   => [
+      Anchor['ceilometer::install::end'],
+      Anchor['ceilometer::config::end'],
+      Anchor['ceilometer::dbsync::begin']
+    ],
+    notify      => Anchor['ceilometer::dbsync::end'],
   }
 
 }
diff --git a/manifests/deps.pp b/manifests/deps.pp
new file mode 100644 (file)
index 0000000..b33b1e3
--- /dev/null
@@ -0,0 +1,40 @@
+# == Class: ceilometer::deps
+#
+#  Ceilometer anchors and dependency management
+#
+class ceilometer::deps {
+  # Setup anchors for install, config and service phases of the module.  These
+  # anchors allow external modules to hook the begin and end of any of these
+  # phases.  Package or service management can also be replaced by ensuring the
+  # package is absent or turning off service management and having the
+  # replacement depend on the appropriate anchors.  When applicable, end tags
+  # should be notified so that subscribers can determine if installation,
+  # config or service state changed and act on that if needed.
+  anchor { 'ceilometer::install::begin': }
+  -> Package<| tag == 'ceilometer-package'|>
+  ~> anchor { 'ceilometer::install::end': }
+  -> anchor { 'ceilometer::config::begin': }
+  -> Ceilometer_config<||>
+  ~> anchor { 'ceilometer::config::end': }
+  -> anchor { 'ceilometer::db::begin': }
+  -> anchor { 'ceilometer::db::end': }
+  ~> anchor { 'ceilometer::dbsync::begin': }
+  -> anchor { 'ceilometer::dbsync::end': }
+  ~> anchor { 'ceilometer::service::begin': }
+  ~> Service<| tag == 'ceilometer-service' |>
+  ~> anchor { 'ceilometer::service::end': }
+
+  # policy config should occur in the config block also.
+  Anchor['ceilometer::config::begin']
+  -> Openstacklib::Policy::Base<||>
+  ~> Anchor['ceilometer::config::end']
+
+  # Ensure files are modified in the config block
+  Anchor['ceilometer::config::begin']
+  -> File<| tag == 'event-pipeline' |>
+  ~> Anchor['ceilometer::config::end']
+
+  # Installation or config changes will always restart services.
+  Anchor['ceilometer::install::end'] ~> Anchor['ceilometer::service::begin']
+  Anchor['ceilometer::config::end']  ~> Anchor['ceilometer::service::begin']
+}
index 15e8d5061e78ca7c6f94f808f3c2578805b09aa2..546ff1de6a86c694f9d5b3127c03b6674c5e6495 100644 (file)
@@ -34,6 +34,8 @@ class ceilometer::dispatcher::gnocchi (
   $resources_definition_file = $::os_service_default,
 ) {
 
+  include ::ceilometer::deps
+
   ceilometer_config {
     'dispatcher_gnocchi/filter_service_activity':   value => $filter_service_activity;
     'dispatcher_gnocchi/filter_project':            value => $filter_project;
index 4e2ae5fda700adad268c2194024624a42e9f1f38..7ffd3140c43449b1a31372d2e42ad7daa04b2097 100644 (file)
@@ -40,7 +40,6 @@
 #  [*weekday*]
 #    (optional) Defaults to '*'.
 #
-
 class ceilometer::expirer (
   $enable_cron = true,
   $minute      = 1,
@@ -52,7 +51,7 @@ class ceilometer::expirer (
 
   include ::ceilometer::params
 
-  Package<| title == 'ceilometer-common' |> -> Class['ceilometer::expirer']
+  Anchor['ceilometer::install::end'] ~> Class['ceilometer::expirer']
 
   if $enable_cron {
     cron { 'ceilometer-expirer':
index 248da6d083f9d1830b70c67796ae38bed3fb3494..ea1fb696624d919c27fd77ff95e29a9746100f68 100644 (file)
@@ -285,6 +285,7 @@ class ceilometer(
   $rabbit_virtual_host                = $::os_service_default,
 ) {
 
+  include ::ceilometer::deps
   include ::ceilometer::logging
   include ::ceilometer::params
 
@@ -319,14 +320,14 @@ deprecated. Please use ceilometer::default_transport_url instead.")
 
   group { 'ceilometer':
     name    => 'ceilometer',
-    require => Package['ceilometer-common'],
+    require => Anchor['ceilometer::install::end'],
   }
 
   user { 'ceilometer':
     name    => 'ceilometer',
     gid     => 'ceilometer',
     system  => true,
-    require => Package['ceilometer-common'],
+    require => Anchor['ceilometer::install::end'],
   }
 
   package { 'ceilometer-common':
index ec0f170112cfaa88e0ea5fe676db63d3cb03d431..a9abe8c67f5455db77a1d98f5f7c68f3ee07cfc9 100644 (file)
@@ -87,6 +87,8 @@ class ceilometer::keystone::auth (
   $internal_url         = 'http://127.0.0.1:8777',
 ) {
 
+  include ::ceilometer::deps
+
   validate_string($password)
 
   ::keystone::resource::service_identity { 'ceilometer':
index 25eca69029ef9e918e0233bdf01fbe31a69d8324..3389bb3127150f3bfea9f143a651bbdbaa0e327a 100644 (file)
@@ -223,6 +223,8 @@ class ceilometer::keystone::authtoken(
   $token_cache_time               = $::os_service_default,
 ) {
 
+  include ::ceilometer::deps
+
   if is_service_default($password) {
     fail('Please set password for ceilometer service user')
   }
index 3eccc4a8752427a57065e8925f18bbdf5c0814bf..c8eb0cababcf879616f3f4332e561ff7af3fb866 100644 (file)
@@ -104,6 +104,8 @@ class ceilometer::logging(
   $log_date_format               = $::os_service_default,
 ) {
 
+  include ::ceilometer::deps
+
   # NOTE(spredzy): In order to keep backward compatibility we rely on the pick function
   # to use ceilometer::<myparam> first then ceilometer::logging::<myparam>.
   $use_syslog_real = pick($::ceilometer::use_syslog,$use_syslog)
index 7f33a63d8bc883ab5e9d7c2d3771a9c6a6cd2591..3756715c0da26c75141a9ba3ed60f994405f6eca 100644 (file)
@@ -21,6 +21,8 @@ class ceilometer::policy (
   $policy_path = '/etc/ceilometer/policy.json',
 ) {
 
+  include ::ceilometer::deps
+
   validate_hash($policies)
 
   Openstacklib::Policy::Base {
index a87458f76fb3d1bce3b11da5aa48a682e359034e..6dd0cb30e69477bbfc9251dab6b0906597cc909c 100644 (file)
@@ -96,6 +96,7 @@ class ceilometer::wsgi::apache (
   $priority      = '10',
 ) {
 
+  include ::ceilometer::deps
   include ::ceilometer::params
   include ::apache
   include ::apache::mod::wsgi
diff --git a/releasenotes/notes/external_install_mgmt_hook-676123a45de9237f.yaml b/releasenotes/notes/external_install_mgmt_hook-676123a45de9237f.yaml
new file mode 100644 (file)
index 0000000..eeb3c9b
--- /dev/null
@@ -0,0 +1,10 @@
+---
+prelude: >
+    Add hooks for external install & svc management.
+features:
+  - This adds defined anchor points for external modules to
+    hook into the software install, config and service dependency
+    chain. This allows external modules to manage software
+    installation (virtualenv, containers, etc) and service management
+    (pacemaker) without needing rely on resources that may change or
+    be renamed.
index b22024c2c2bf95abce4f750cbcc6623daab96755..a4760cb49d7b2129c9790e39d0939615d03647aa 100644 (file)
@@ -16,23 +16,17 @@ describe 'ceilometer::agent::central' do
 
   shared_examples_for 'ceilometer-agent-central' do
 
+    it { is_expected.to contain_class('ceilometer::deps') }
     it { is_expected.to contain_class('ceilometer::params') }
 
     it 'installs ceilometer-agent-central package' do
       is_expected.to contain_package('ceilometer-agent-central').with(
         :ensure => 'latest',
         :name   => platform_params[:agent_package_name],
-        :before => ['Service[ceilometer-agent-central]'],
         :tag    => ['openstack', 'ceilometer-package'],
       )
     end
 
-    it 'ensures ceilometer-common is installed before the service' do
-      is_expected.to contain_package('ceilometer-common').with(
-        :before => /Service\[ceilometer-agent-central\]/
-      )
-    end
-
     [{:enabled => true}, {:enabled => false}].each do |param_hash|
       context "when service should be #{param_hash[:enabled] ? 'enabled' : 'disabled'}" do
         before do
index 5dd6ad1fbd44e32170a0d763b50c8244c4113fbf..ca40829d58002d750d6035786208201001f4bea4 100644 (file)
@@ -16,6 +16,7 @@ describe 'ceilometer::agent::compute' do
 
   shared_examples_for 'ceilometer-agent-compute' do
 
+    it { is_expected.to contain_class('ceilometer::deps') }
     it { is_expected.to contain_class('ceilometer::params') }
 
     it 'installs ceilometer-agent-compute package' do
index f66858a6b47b3b0208a9a3ec263bb722c1795cd0..d5800a6ab0e262b05263b76626a6da5265e7fd7c 100644 (file)
@@ -35,12 +35,13 @@ describe 'ceilometer::agent::notification' do
 
   shared_examples_for 'ceilometer-agent-notification' do
 
+    it { is_expected.to contain_class('ceilometer::deps') }
     it { is_expected.to contain_class('ceilometer::params') }
 
     it 'installs ceilometer agent notification package' do
       is_expected.to contain_package(platform_params[:agent_notification_package_name]).with(
         :ensure => 'present',
-        :tag    => 'openstack'
+        :tag    => ['openstack', 'ceilometer-package'],
       )
     end
 
index 184685525c5df0f6ff5c1bfdc782e185e73f620e..71f24aff49a5ee75f28002cc189783b6e5f51d36 100644 (file)
@@ -21,6 +21,7 @@ describe 'ceilometer::agent::polling' do
 
   shared_examples_for 'ceilometer-polling' do
 
+    it { is_expected.to contain_class('ceilometer::deps') }
     it { is_expected.to contain_class('ceilometer::params') }
 
     context 'when compute_namespace => true' do
@@ -43,7 +44,6 @@ describe 'ceilometer::agent::polling' do
       is_expected.to contain_package('ceilometer-polling').with(
         :ensure => 'latest',
         :name   => platform_params[:agent_package_name],
-        :before => ['Service[ceilometer-polling]'],
         :tag    => ['openstack', 'ceilometer-package'],
       )
     end
@@ -52,12 +52,6 @@ describe 'ceilometer::agent::polling' do
       is_expected.to contain_ceilometer_config('DEFAULT/polling_namespaces').with_value('central,compute,ipmi')
     end
 
-    it 'ensures ceilometer-common is installed before the service' do
-      is_expected.to contain_package('ceilometer-common').with(
-        :before => /Service\[ceilometer-polling\]/
-      )
-    end
-
     [{:enabled => true}, {:enabled => false}].each do |param_hash|
       context "when service should be #{param_hash[:enabled] ? 'enabled' : 'disabled'}" do
         before do
index 76d7483a5b533e081d10ecfa44e316da3ebaf23b..67e43925e76d7d7a266071e0cabbcf0b592fd699 100644 (file)
@@ -21,6 +21,7 @@ describe 'ceilometer::api' do
 
   shared_examples_for 'ceilometer-api' do
 
+    it { is_expected.to contain_class('ceilometer::deps') }
     it { is_expected.to contain_class('ceilometer::params') }
     it { is_expected.to contain_class('ceilometer::policy') }
     it { is_expected.to contain_class('ceilometer::keystone::authtoken') }
@@ -53,10 +54,11 @@ describe 'ceilometer::api' do
             :enable     => params[:enabled],
             :hasstatus  => true,
             :hasrestart => true,
-            :require    => 'Class[Ceilometer::Db]',
             :tag        => 'ceilometer-service',
           )
         end
+        it { is_expected.to contain_service('ceilometer-api').that_subscribes_to('Anchor[ceilometer::service::begin]')}
+        it { is_expected.to contain_service('ceilometer-api').that_notifies('Anchor[ceilometer::service::end]')}
       end
     end
 
index ce4927e3cfb22637fa3b66a8d99baac4378dacc3..789d5e70177ca40ef53c4527fe8ef1c3f981d99e 100644 (file)
@@ -4,6 +4,7 @@ describe 'ceilometer::client' do
 
   shared_examples_for 'ceilometer client' do
 
+    it { is_expected.to contain_class('ceilometer::deps') }
     it { is_expected.to contain_class('ceilometer::params') }
 
     it 'installs ceilometer client package' do
index 6a9239fef65178e2811f39f8569334ac08f502aa..b2d3e56c7653f969d51484872d34a56efbd00cbe 100644 (file)
@@ -10,7 +10,11 @@ describe 'ceilometer::db::sync' do
         :path        => '/usr/bin',
         :refreshonly => 'true',
         :user        => 'ceilometer',
-        :logoutput   => 'on_failure'
+        :logoutput   => 'on_failure',
+        :subscribe   => ['Anchor[ceilometer::install::end]',
+                         'Anchor[ceilometer::config::end]',
+                         'Anchor[ceilometer::dbsync::begin]'],
+        :notify      => 'Anchor[ceilometer::dbsync::end]',
       )
     end
 
index 8c9b0a632aaab5bc43bd11bafc5644b5ac7b3cf3..bd1c5aef9e1af0a974ad8db6f5e01235d5ff9d7b 100644 (file)
@@ -32,6 +32,7 @@ describe 'ceilometer::expirer' do
 
   shared_examples_for 'ceilometer-expirer' do
 
+    it { is_expected.to contain_class('ceilometer::deps') }
     it { is_expected.to contain_class('ceilometer::params') }
 
     it 'installs ceilometer common package' do
index b5cd7e511beff8f0ef4bc64e2b97a9540e7c1848..caf70ea1039c6191dc395018908689aa5f8b2d5d 100644 (file)
@@ -85,7 +85,7 @@ describe 'ceilometer' do
     it 'configures ceilometer group' do
       is_expected.to contain_group('ceilometer').with(
         :name    => 'ceilometer',
-        :require => 'Package[ceilometer-common]'
+        :require => 'Anchor[ceilometer::install::end]'
       )
     end
 
@@ -94,7 +94,7 @@ describe 'ceilometer' do
         :name    => 'ceilometer',
         :gid     => 'ceilometer',
         :system  => true,
-        :require => 'Package[ceilometer-common]'
+        :require => 'Anchor[ceilometer::install::end]'
       )
     end