diff --git a/lib/puppet/type/ironic_config.rb b/lib/puppet/type/ironic_config.rb index c5ea8eb0..a7873a2f 100644 --- a/lib/puppet/type/ironic_config.rb +++ b/lib/puppet/type/ironic_config.rb @@ -39,4 +39,9 @@ Puppet::Type.newtype(:ironic_config) do defaultto false end + + autorequire(:package) do + 'ironic-common' + end + end diff --git a/manifests/api.pp b/manifests/api.pp index 75c2e374..b648a155 100644 --- a/manifests/api.pp +++ b/manifests/api.pp @@ -119,7 +119,6 @@ class ironic::api ( if $::ironic::params::api_package { Package['ironic-api'] -> Class['ironic::policy'] Package['ironic-api'] -> Service['ironic-api'] - Package['ironic-api'] -> Ironic_config<||> package { 'ironic-api': ensure => $package_ensure, name => $::ironic::params::api_package, diff --git a/manifests/conductor.pp b/manifests/conductor.pp index 032d9163..31344640 100644 --- a/manifests/conductor.pp +++ b/manifests/conductor.pp @@ -58,7 +58,6 @@ class ironic::conductor ( # Install package if $::ironic::params::conductor_package { Package['ironic-conductor'] -> Service['ironic-conductor'] - Package['ironic-conductor'] -> Ironic_config<||> package { 'ironic-conductor': ensure => $package_ensure, name => $::ironic::params::conductor_package, diff --git a/manifests/init.pp b/manifests/init.pp index fb4f8dc3..e7a4daeb 100644 --- a/manifests/init.pp +++ b/manifests/init.pp @@ -239,8 +239,6 @@ class ironic ( $rabbit_user_real = $rabbit_userid } - Package['ironic-common'] -> Ironic_config<||> - file { '/etc/ironic': ensure => directory, require => Package['ironic-common'], diff --git a/spec/classes/ironic_api_spec.rb b/spec/classes/ironic_api_spec.rb index a8765d80..0c256f02 100644 --- a/spec/classes/ironic_api_spec.rb +++ b/spec/classes/ironic_api_spec.rb @@ -51,7 +51,6 @@ describe 'ironic::api' do :ensure => p[:package_ensure], :tag => ['openstack', 'ironic-package'], ) - is_expected.to contain_package('ironic-api').with_before(/Ironic_config\[.+\]/) is_expected.to contain_package('ironic-api').with_before(/Service\[ironic-api\]/) end end diff --git a/spec/classes/ironic_conductor_spec.rb b/spec/classes/ironic_conductor_spec.rb index a3098ae1..f93bf487 100644 --- a/spec/classes/ironic_conductor_spec.rb +++ b/spec/classes/ironic_conductor_spec.rb @@ -47,7 +47,6 @@ describe 'ironic::conductor' do :ensure => p[:package_ensure], :tag => ['openstack', 'ironic-package'], ) - is_expected.to contain_package('ironic-conductor').with_before(/Ironic_config\[.+\]/) is_expected.to contain_package('ironic-conductor').with_before(/Service\[ironic-conductor\]/) end end diff --git a/spec/unit/provider/ironic_config/ini_setting_spec.rb b/spec/unit/provider/ironic_config/ini_setting_spec.rb new file mode 100644 index 00000000..6a288beb --- /dev/null +++ b/spec/unit/provider/ironic_config/ini_setting_spec.rb @@ -0,0 +1,42 @@ +$LOAD_PATH.push( + File.join( + File.dirname(__FILE__), + '..', + '..', + '..', + 'fixtures', + 'modules', + 'inifile', + 'lib') +) + +require 'spec_helper' + +provider_class = Puppet::Type.type(:ironic_config).provider(:ini_setting) + +describe provider_class do + + it 'should default to the default setting when no other one is specified' do + resource = Puppet::Type::Ironic_config.new( + { + :name => 'DEFAULT/foo', + :value => 'bar' + } + ) + provider = provider_class.new(resource) + expect(provider.section).to eq('DEFAULT') + expect(provider.setting).to eq('foo') + end + + it 'should allow setting to be set explicitly' do + resource = Puppet::Type::Ironic_config.new( + { + :name => 'dude/foo', + :value => 'bar' + } + ) + provider = provider_class.new(resource) + expect(provider.section).to eq('dude') + expect(provider.setting).to eq('foo') + end +end diff --git a/spec/unit/type/ironic_config_spec.rb b/spec/unit/type/ironic_config_spec.rb new file mode 100644 index 00000000..7b7a3737 --- /dev/null +++ b/spec/unit/type/ironic_config_spec.rb @@ -0,0 +1,19 @@ +require 'puppet' +require 'puppet/type/ironic_config' + +describe 'Puppet::Type.type(:ironic_config)' do + before :each do + @ironic_config = Puppet::Type.type(:ironic_config).new(:name => 'DEFAULT/foo', :value => 'bar') + end + + it 'should autorequire the package that install the file' do + catalog = Puppet::Resource::Catalog.new + package = Puppet::Type.type(:package).new(:name => 'ironic-common') + catalog.add_resource package, @ironic_config + dependency = @ironic_config.autorequire + expect(dependency.size).to eq(1) + expect(dependency[0].target).to eq(@ironic_config) + expect(dependency[0].source).to eq(package) + end + +end