From 2a2005d4e99e65c9b5d07bf68142e7ceb162f45d Mon Sep 17 00:00:00 2001 From: Yanis Guenane Date: Wed, 22 Jul 2015 22:47:49 +0200 Subject: [PATCH] Add tag to package and service resources In order to be able to take an action after all the packages of the module have been installed/updated or all the services have been started/restarted, we set a 'nova-package' and 'nova-service' tag for each package and service of this module. At the moment, there is a generic openstack tag that is not specific enough if one wants to take action upon a single module change. Use case : If an action needs to be taken after all the packages have been installed or updated : Package <| tag == 'nova-package' |> -> X Change-Id: I6a28ed68ba3b0cbdd14cc224e2cf0c253786064a --- manifests/generic_service.pp | 3 ++- manifests/init.pp | 2 +- spec/classes/nova_api_spec.rb | 10 ++++++---- spec/classes/nova_cells_spec.rb | 5 +++-- spec/classes/nova_compute_spec.rb | 10 ++++++---- spec/classes/nova_init_spec.rb | 5 +++-- spec/shared_examples.rb | 11 +++++++---- 7 files changed, 28 insertions(+), 18 deletions(-) diff --git a/manifests/generic_service.pp b/manifests/generic_service.pp index 8d193d3a3..c566acff1 100644 --- a/manifests/generic_service.pp +++ b/manifests/generic_service.pp @@ -57,7 +57,7 @@ define nova::generic_service( ensure => $ensure_package, name => $package_name, notify => Service[$nova_title], - tag => ['openstack'], + tag => ['openstack', 'nova-package'], } } @@ -85,6 +85,7 @@ define nova::generic_service( enable => $enabled, hasstatus => true, require => [Package['nova-common']], + tag => 'nova-service', } } } diff --git a/manifests/init.pp b/manifests/init.pp index 5750051a6..86798e0b5 100644 --- a/manifests/init.pp +++ b/manifests/init.pp @@ -438,7 +438,7 @@ class nova( ensure => $ensure_package, name => $::nova::params::common_package_name, require => [Package['python-nova'], Anchor['nova-start']], - tag => ['openstack'], + tag => ['openstack', 'nova-package'], } file { '/etc/nova/nova.conf': diff --git a/spec/classes/nova_api_spec.rb b/spec/classes/nova_api_spec.rb index fa81d1d28..dee645ff8 100644 --- a/spec/classes/nova_api_spec.rb +++ b/spec/classes/nova_api_spec.rb @@ -23,12 +23,13 @@ describe 'nova::api' do :name => platform_params[:nova_api_service], :ensure => 'running', :hasstatus => true, - :enable => true + :enable => true, + :tag => 'nova-service', ) is_expected.to contain_package('nova-api').with( :name => platform_params[:nova_api_package], :ensure => 'present', - :tag => ['openstack'] + :tag => ['openstack', 'nova-package'], ) is_expected.to contain_package('nova-api').that_notifies('Service[nova-api]') is_expected.to_not contain_exec('validate_nova_api') @@ -107,13 +108,14 @@ describe 'nova::api' do is_expected.to contain_package('nova-api').with( :name => platform_params[:nova_api_package], :ensure => '2012.1-2', - :tag => ['openstack'] + :tag => ['openstack', 'nova-package'], ) is_expected.to contain_service('nova-api').with( :name => platform_params[:nova_api_service], :ensure => 'stopped', :hasstatus => true, - :enable => false + :enable => false, + :tag => 'nova-service', ) end diff --git a/spec/classes/nova_cells_spec.rb b/spec/classes/nova_cells_spec.rb index 32013e3dd..a7307f6cd 100644 --- a/spec/classes/nova_cells_spec.rb +++ b/spec/classes/nova_cells_spec.rb @@ -61,14 +61,15 @@ describe 'nova::cells' do is_expected.to contain_package('nova-cells').with( :ensure => 'present', :name => platform_params[:cells_package_name], - :tag => ['openstack'] + :tag => ['openstack', 'nova-package'] ) end it 'configures nova-cells service' do is_expected.to contain_service('nova-cells').with( :ensure => 'running', - :name => platform_params[:cells_service_name] + :name => platform_params[:cells_service_name], + :tag => 'nova-service' ) end diff --git a/spec/classes/nova_compute_spec.rb b/spec/classes/nova_compute_spec.rb index a6778bfbd..01a4d484b 100644 --- a/spec/classes/nova_compute_spec.rb +++ b/spec/classes/nova_compute_spec.rb @@ -15,11 +15,12 @@ describe 'nova::compute' do :name => platform_params[:nova_compute_service], :ensure => 'running', :hasstatus => true, - :enable => true + :enable => true, + :tag => 'nova-service' }) is_expected.to contain_package('nova-compute').with({ :name => platform_params[:nova_compute_package], - :tag => ['openstack'] + :tag => ['openstack', 'nova-package'] }) end @@ -67,12 +68,13 @@ describe 'nova::compute' do :name => platform_params[:nova_compute_service], :ensure => 'stopped', :hasstatus => true, - :enable => false + :enable => false, + :tag => 'nova-service' }) is_expected.to contain_package('nova-compute').with({ :name => platform_params[:nova_compute_package], :ensure => '2012.1-2', - :tag => ['openstack'] + :tag => ['openstack', 'nova-package'] }) end diff --git a/spec/classes/nova_init_spec.rb b/spec/classes/nova_init_spec.rb index d73e5c3ca..0b911a1e0 100644 --- a/spec/classes/nova_init_spec.rb +++ b/spec/classes/nova_init_spec.rb @@ -12,12 +12,13 @@ describe 'nova' do ) is_expected.to contain_package('python-nova').with( :ensure => 'present', - :require => 'Package[python-greenlet]' + :require => 'Package[python-greenlet]', + :tag => ['openstack'] ) is_expected.to contain_package('nova-common').with( :name => platform_params[:nova_common_package], :ensure => 'present', - :tag => ['openstack'] + :tag => ['openstack', 'nova-package'] ) end diff --git a/spec/shared_examples.rb b/spec/shared_examples.rb index 16b2f3152..d4a8e85c2 100644 --- a/spec/shared_examples.rb +++ b/spec/shared_examples.rb @@ -12,13 +12,14 @@ shared_examples 'generic nova service' do |service| :name => service[:package_name], :ensure => 'present', :notify => "Service[#{service[:name]}]", - :tag => ['openstack'] + :tag => ['openstack', 'nova-package'], }) is_expected.to contain_service(service[:name]).with({ :name => service[:service_name], :ensure => 'running', :hasstatus => true, - :enable => true + :enable => true, + :tag => 'nova-service', }) end end @@ -33,13 +34,15 @@ shared_examples 'generic nova service' do |service| is_expected.to contain_package(service[:name]).with({ :name => service[:package_name], :ensure => '2012.1-2', - :notify => "Service[#{service[:name]}]" + :notify => "Service[#{service[:name]}]", + :tag => ['openstack', 'nova-package'], }) is_expected.to contain_service(service[:name]).with({ :name => service[:service_name], :ensure => 'stopped', :hasstatus => true, - :enable => false + :enable => false, + :tag => 'nova-service', }) end end