Currently we specify the ordering of config resources wherever it is
necessary based on the presence of the file it will write to, or the
presence of the package in charge of providing the file it will write
to.
Those kind of ordering can be specified directly at the resource level
using the autorequire mechanism. With this patch, any config resource
will make sure the package in charge of providing the file will be
installed first.
Change-Id: Ie99aec47f9bf334336e9cd87106c9f47d6e5abfa
defaultto false
end
+ autorequire(:package) do
+ 'ceilometer-common'
+ end
+
end
Ceilometer_config<||> ~> Service['ceilometer-api']
Class['ceilometer::policy'] ~> Service['ceilometer-api']
- Package['ceilometer-api'] -> Ceilometer_config<||>
Package['ceilometer-api'] -> Service['ceilometer-api']
Package['ceilometer-api'] -> Class['ceilometer::policy']
package { 'ceilometer-api':
tag => ['openstack', 'ceilometer-package'],
}
- Package['ceilometer-common'] -> Ceilometer_config<||>
-
# we keep "ceilometer.openstack.common.rpc.impl_kombu" for backward compatibility
if $rpc_backend == 'ceilometer.openstack.common.rpc.impl_kombu' or $rpc_backend == 'rabbit' {
@ceilometer_config[:ensure] = :latest
}.to raise_error(Puppet::Error, /Invalid value/)
end
+
+ it 'should autorequire the package that install the file' do
+ catalog = Puppet::Resource::Catalog.new
+ package = Puppet::Type.type(:package).new(:name => 'ceilometer-common')
+ catalog.add_resource package, @ceilometer_config
+ dependency = @ceilometer_config.autorequire
+ expect(dependency.size).to eq(1)
+ expect(dependency[0].target).to eq(@ceilometer_config)
+ expect(dependency[0].source).to eq(package)
+ end
+
end