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
This commit is contained in:
Yanis Guenane
2015-07-22 22:47:49 +02:00
parent ce641f2689
commit 2a2005d4e9
7 changed files with 28 additions and 18 deletions

View File

@@ -57,7 +57,7 @@ define nova::generic_service(
ensure => $ensure_package, ensure => $ensure_package,
name => $package_name, name => $package_name,
notify => Service[$nova_title], notify => Service[$nova_title],
tag => ['openstack'], tag => ['openstack', 'nova-package'],
} }
} }
@@ -85,6 +85,7 @@ define nova::generic_service(
enable => $enabled, enable => $enabled,
hasstatus => true, hasstatus => true,
require => [Package['nova-common']], require => [Package['nova-common']],
tag => 'nova-service',
} }
} }
} }

View File

@@ -438,7 +438,7 @@ class nova(
ensure => $ensure_package, ensure => $ensure_package,
name => $::nova::params::common_package_name, name => $::nova::params::common_package_name,
require => [Package['python-nova'], Anchor['nova-start']], require => [Package['python-nova'], Anchor['nova-start']],
tag => ['openstack'], tag => ['openstack', 'nova-package'],
} }
file { '/etc/nova/nova.conf': file { '/etc/nova/nova.conf':

View File

@@ -23,12 +23,13 @@ describe 'nova::api' do
:name => platform_params[:nova_api_service], :name => platform_params[:nova_api_service],
:ensure => 'running', :ensure => 'running',
:hasstatus => true, :hasstatus => true,
:enable => true :enable => true,
:tag => 'nova-service',
) )
is_expected.to contain_package('nova-api').with( is_expected.to contain_package('nova-api').with(
:name => platform_params[:nova_api_package], :name => platform_params[:nova_api_package],
:ensure => 'present', :ensure => 'present',
:tag => ['openstack'] :tag => ['openstack', 'nova-package'],
) )
is_expected.to contain_package('nova-api').that_notifies('Service[nova-api]') is_expected.to contain_package('nova-api').that_notifies('Service[nova-api]')
is_expected.to_not contain_exec('validate_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( is_expected.to contain_package('nova-api').with(
:name => platform_params[:nova_api_package], :name => platform_params[:nova_api_package],
:ensure => '2012.1-2', :ensure => '2012.1-2',
:tag => ['openstack'] :tag => ['openstack', 'nova-package'],
) )
is_expected.to contain_service('nova-api').with( is_expected.to contain_service('nova-api').with(
:name => platform_params[:nova_api_service], :name => platform_params[:nova_api_service],
:ensure => 'stopped', :ensure => 'stopped',
:hasstatus => true, :hasstatus => true,
:enable => false :enable => false,
:tag => 'nova-service',
) )
end end

View File

@@ -61,14 +61,15 @@ describe 'nova::cells' do
is_expected.to contain_package('nova-cells').with( is_expected.to contain_package('nova-cells').with(
:ensure => 'present', :ensure => 'present',
:name => platform_params[:cells_package_name], :name => platform_params[:cells_package_name],
:tag => ['openstack'] :tag => ['openstack', 'nova-package']
) )
end end
it 'configures nova-cells service' do it 'configures nova-cells service' do
is_expected.to contain_service('nova-cells').with( is_expected.to contain_service('nova-cells').with(
:ensure => 'running', :ensure => 'running',
:name => platform_params[:cells_service_name] :name => platform_params[:cells_service_name],
:tag => 'nova-service'
) )
end end

View File

@@ -15,11 +15,12 @@ describe 'nova::compute' do
:name => platform_params[:nova_compute_service], :name => platform_params[:nova_compute_service],
:ensure => 'running', :ensure => 'running',
:hasstatus => true, :hasstatus => true,
:enable => true :enable => true,
:tag => 'nova-service'
}) })
is_expected.to contain_package('nova-compute').with({ is_expected.to contain_package('nova-compute').with({
:name => platform_params[:nova_compute_package], :name => platform_params[:nova_compute_package],
:tag => ['openstack'] :tag => ['openstack', 'nova-package']
}) })
end end
@@ -67,12 +68,13 @@ describe 'nova::compute' do
:name => platform_params[:nova_compute_service], :name => platform_params[:nova_compute_service],
:ensure => 'stopped', :ensure => 'stopped',
:hasstatus => true, :hasstatus => true,
:enable => false :enable => false,
:tag => 'nova-service'
}) })
is_expected.to contain_package('nova-compute').with({ is_expected.to contain_package('nova-compute').with({
:name => platform_params[:nova_compute_package], :name => platform_params[:nova_compute_package],
:ensure => '2012.1-2', :ensure => '2012.1-2',
:tag => ['openstack'] :tag => ['openstack', 'nova-package']
}) })
end end

View File

@@ -12,12 +12,13 @@ describe 'nova' do
) )
is_expected.to contain_package('python-nova').with( is_expected.to contain_package('python-nova').with(
:ensure => 'present', :ensure => 'present',
:require => 'Package[python-greenlet]' :require => 'Package[python-greenlet]',
:tag => ['openstack']
) )
is_expected.to contain_package('nova-common').with( is_expected.to contain_package('nova-common').with(
:name => platform_params[:nova_common_package], :name => platform_params[:nova_common_package],
:ensure => 'present', :ensure => 'present',
:tag => ['openstack'] :tag => ['openstack', 'nova-package']
) )
end end

View File

@@ -12,13 +12,14 @@ shared_examples 'generic nova service' do |service|
:name => service[:package_name], :name => service[:package_name],
:ensure => 'present', :ensure => 'present',
:notify => "Service[#{service[:name]}]", :notify => "Service[#{service[:name]}]",
:tag => ['openstack'] :tag => ['openstack', 'nova-package'],
}) })
is_expected.to contain_service(service[:name]).with({ is_expected.to contain_service(service[:name]).with({
:name => service[:service_name], :name => service[:service_name],
:ensure => 'running', :ensure => 'running',
:hasstatus => true, :hasstatus => true,
:enable => true :enable => true,
:tag => 'nova-service',
}) })
end end
end end
@@ -33,13 +34,15 @@ shared_examples 'generic nova service' do |service|
is_expected.to contain_package(service[:name]).with({ is_expected.to contain_package(service[:name]).with({
:name => service[:package_name], :name => service[:package_name],
:ensure => '2012.1-2', :ensure => '2012.1-2',
:notify => "Service[#{service[:name]}]" :notify => "Service[#{service[:name]}]",
:tag => ['openstack', 'nova-package'],
}) })
is_expected.to contain_service(service[:name]).with({ is_expected.to contain_service(service[:name]).with({
:name => service[:service_name], :name => service[:service_name],
:ensure => 'stopped', :ensure => 'stopped',
:hasstatus => true, :hasstatus => true,
:enable => false :enable => false,
:tag => 'nova-service',
}) })
end end
end end