From fc4a0fd5100128280703dbb3f8e109fb9393a2d0 Mon Sep 17 00:00:00 2001 From: ZhongShengping Date: Tue, 29 Nov 2016 09:21:48 +0800 Subject: [PATCH] Add hooks for external install & svc management 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 --- manifests/agent/auth.pp | 2 + manifests/agent/central.pp | 5 +-- manifests/agent/notification.pp | 15 ++----- manifests/agent/polling.pp | 5 +-- manifests/api.pp | 10 +---- manifests/client.pp | 1 + manifests/collector.pp | 14 +++---- manifests/config.pp | 2 + manifests/db.pp | 2 +- manifests/db/mysql.pp | 6 ++- manifests/db/postgresql.pp | 7 +++- manifests/db/sync.pp | 13 +++--- manifests/deps.pp | 40 +++++++++++++++++++ manifests/dispatcher/gnocchi.pp | 2 + manifests/expirer.pp | 3 +- manifests/init.pp | 5 ++- manifests/keystone/auth.pp | 2 + manifests/keystone/authtoken.pp | 2 + manifests/logging.pp | 2 + manifests/policy.pp | 2 + manifests/wsgi/apache.pp | 1 + ...al_install_mgmt_hook-676123a45de9237f.yaml | 10 +++++ spec/classes/ceilometer_agent_central_spec.rb | 8 +--- spec/classes/ceilometer_agent_compute_spec.rb | 1 + .../ceilometer_agent_notification_spec.rb | 3 +- spec/classes/ceilometer_agent_polling_spec.rb | 8 +--- spec/classes/ceilometer_api_spec.rb | 4 +- spec/classes/ceilometer_client_spec.rb | 1 + spec/classes/ceilometer_db_sync_spec.rb | 6 ++- spec/classes/ceilometer_expirer_spec.rb | 1 + spec/classes/ceilometer_init_spec.rb | 4 +- 31 files changed, 119 insertions(+), 68 deletions(-) create mode 100644 manifests/deps.pp create mode 100644 releasenotes/notes/external_install_mgmt_hook-676123a45de9237f.yaml diff --git a/manifests/agent/auth.pp b/manifests/agent/auth.pp index db14d55..14083fd 100644 --- a/manifests/agent/auth.pp +++ b/manifests/agent/auth.pp @@ -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 { diff --git a/manifests/agent/central.pp b/manifests/agent/central.pp index 11c2148..3dd1568 100644 --- a/manifests/agent/central.pp +++ b/manifests/agent/central.pp @@ -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, diff --git a/manifests/agent/notification.pp b/manifests/agent/notification.pp index e13e676..50421e8 100644 --- a/manifests/agent/notification.pp +++ b/manifests/agent/notification.pp @@ -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 { diff --git a/manifests/agent/polling.pp b/manifests/agent/polling.pp index f98391d..ae24c04 100644 --- a/manifests/agent/polling.pp +++ b/manifests/agent/polling.pp @@ -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, diff --git a/manifests/api.pp b/manifests/api.pp index 830006e..125c1dd 100644 --- a/manifests/api.pp +++ b/manifests/api.pp @@ -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] diff --git a/manifests/client.pp b/manifests/client.pp index 4e8425f..9ee8136 100644 --- a/manifests/client.pp +++ b/manifests/client.pp @@ -12,6 +12,7 @@ class ceilometer::client ( $ensure = 'present' ) { + include ::ceilometer::deps include ::ceilometer::params package { 'python-ceilometerclient': diff --git a/manifests/collector.pp b/manifests/collector.pp index 10d3d8a..e6041ea 100644 --- a/manifests/collector.pp +++ b/manifests/collector.pp @@ -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, diff --git a/manifests/config.pp b/manifests/config.pp index 255dab2..6635d95 100644 --- a/manifests/config.pp +++ b/manifests/config.pp @@ -30,6 +30,8 @@ class ceilometer::config ( $ceilometer_api_paste_ini = {}, ) { + include ::ceilometer::deps + validate_hash($ceilometer_config) validate_hash($ceilometer_api_paste_ini) diff --git a/manifests/db.pp b/manifests/db.pp index ed489aa..1b299e4 100644 --- a/manifests/db.pp +++ b/manifests/db.pp @@ -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, diff --git a/manifests/db/mysql.pp b/manifests/db/mysql.pp index 9268c4a..a834e8e 100644 --- a/manifests/db/mysql.pp +++ b/manifests/db/mysql.pp @@ -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'] } diff --git a/manifests/db/postgresql.pp b/manifests/db/postgresql.pp index 851abdd..fdca6d7 100644 --- a/manifests/db/postgresql.pp +++ b/manifests/db/postgresql.pp @@ -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'] } diff --git a/manifests/db/sync.pp b/manifests/db/sync.pp index af5b8bc..e33e404 100644 --- a/manifests/db/sync.pp +++ b/manifests/db/sync.pp @@ -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 index 0000000..b33b1e3 --- /dev/null +++ b/manifests/deps.pp @@ -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'] +} diff --git a/manifests/dispatcher/gnocchi.pp b/manifests/dispatcher/gnocchi.pp index 15e8d50..546ff1d 100644 --- a/manifests/dispatcher/gnocchi.pp +++ b/manifests/dispatcher/gnocchi.pp @@ -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; diff --git a/manifests/expirer.pp b/manifests/expirer.pp index 4e2ae5f..7ffd314 100644 --- a/manifests/expirer.pp +++ b/manifests/expirer.pp @@ -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': diff --git a/manifests/init.pp b/manifests/init.pp index 248da6d..ea1fb69 100644 --- a/manifests/init.pp +++ b/manifests/init.pp @@ -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': diff --git a/manifests/keystone/auth.pp b/manifests/keystone/auth.pp index ec0f170..a9abe8c 100644 --- a/manifests/keystone/auth.pp +++ b/manifests/keystone/auth.pp @@ -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': diff --git a/manifests/keystone/authtoken.pp b/manifests/keystone/authtoken.pp index 25eca69..3389bb3 100644 --- a/manifests/keystone/authtoken.pp +++ b/manifests/keystone/authtoken.pp @@ -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') } diff --git a/manifests/logging.pp b/manifests/logging.pp index 3eccc4a..c8eb0ca 100644 --- a/manifests/logging.pp +++ b/manifests/logging.pp @@ -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:: first then ceilometer::logging::. $use_syslog_real = pick($::ceilometer::use_syslog,$use_syslog) diff --git a/manifests/policy.pp b/manifests/policy.pp index 7f33a63..3756715 100644 --- a/manifests/policy.pp +++ b/manifests/policy.pp @@ -21,6 +21,8 @@ class ceilometer::policy ( $policy_path = '/etc/ceilometer/policy.json', ) { + include ::ceilometer::deps + validate_hash($policies) Openstacklib::Policy::Base { diff --git a/manifests/wsgi/apache.pp b/manifests/wsgi/apache.pp index a87458f..6dd0cb3 100644 --- a/manifests/wsgi/apache.pp +++ b/manifests/wsgi/apache.pp @@ -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 index 0000000..eeb3c9b --- /dev/null +++ b/releasenotes/notes/external_install_mgmt_hook-676123a45de9237f.yaml @@ -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. diff --git a/spec/classes/ceilometer_agent_central_spec.rb b/spec/classes/ceilometer_agent_central_spec.rb index b22024c..a4760cb 100644 --- a/spec/classes/ceilometer_agent_central_spec.rb +++ b/spec/classes/ceilometer_agent_central_spec.rb @@ -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 diff --git a/spec/classes/ceilometer_agent_compute_spec.rb b/spec/classes/ceilometer_agent_compute_spec.rb index 5dd6ad1..ca40829 100644 --- a/spec/classes/ceilometer_agent_compute_spec.rb +++ b/spec/classes/ceilometer_agent_compute_spec.rb @@ -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 diff --git a/spec/classes/ceilometer_agent_notification_spec.rb b/spec/classes/ceilometer_agent_notification_spec.rb index f66858a..d5800a6 100644 --- a/spec/classes/ceilometer_agent_notification_spec.rb +++ b/spec/classes/ceilometer_agent_notification_spec.rb @@ -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 diff --git a/spec/classes/ceilometer_agent_polling_spec.rb b/spec/classes/ceilometer_agent_polling_spec.rb index 1846855..71f24af 100644 --- a/spec/classes/ceilometer_agent_polling_spec.rb +++ b/spec/classes/ceilometer_agent_polling_spec.rb @@ -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 diff --git a/spec/classes/ceilometer_api_spec.rb b/spec/classes/ceilometer_api_spec.rb index 76d7483..67e4392 100644 --- a/spec/classes/ceilometer_api_spec.rb +++ b/spec/classes/ceilometer_api_spec.rb @@ -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 diff --git a/spec/classes/ceilometer_client_spec.rb b/spec/classes/ceilometer_client_spec.rb index ce4927e..789d5e7 100644 --- a/spec/classes/ceilometer_client_spec.rb +++ b/spec/classes/ceilometer_client_spec.rb @@ -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 diff --git a/spec/classes/ceilometer_db_sync_spec.rb b/spec/classes/ceilometer_db_sync_spec.rb index 6a9239f..b2d3e56 100644 --- a/spec/classes/ceilometer_db_sync_spec.rb +++ b/spec/classes/ceilometer_db_sync_spec.rb @@ -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 diff --git a/spec/classes/ceilometer_expirer_spec.rb b/spec/classes/ceilometer_expirer_spec.rb index 8c9b0a6..bd1c5ae 100644 --- a/spec/classes/ceilometer_expirer_spec.rb +++ b/spec/classes/ceilometer_expirer_spec.rb @@ -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 diff --git a/spec/classes/ceilometer_init_spec.rb b/spec/classes/ceilometer_init_spec.rb index b5cd7e5..caf70ea 100644 --- a/spec/classes/ceilometer_init_spec.rb +++ b/spec/classes/ceilometer_init_spec.rb @@ -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 -- 2.45.2