From 012eb0ec2e7d55db12d005d23f4f3c0cba8e245b Mon Sep 17 00:00:00 2001 From: Takashi Kajinami Date: Mon, 4 May 2020 00:59:51 +0900 Subject: [PATCH] Use anchor to require necessary packages ... so that correct packages are required without re-defining them in resource implementations. Change-Id: I30a506cd329c5764f695ef823b6a9b61208e2580 --- lib/puppet/type/barbican_api_paste_ini.rb | 8 +- lib/puppet/type/barbican_config.rb | 4 +- spec/unit/type/barbican_api_paste_ini_spec.rb | 76 +++---------------- spec/unit/type/barbican_config_spec.rb | 64 ++++++++++++++++ 4 files changed, 79 insertions(+), 73 deletions(-) create mode 100644 spec/unit/type/barbican_config_spec.rb diff --git a/lib/puppet/type/barbican_api_paste_ini.rb b/lib/puppet/type/barbican_api_paste_ini.rb index e25d9389..57c57472 100644 --- a/lib/puppet/type/barbican_api_paste_ini.rb +++ b/lib/puppet/type/barbican_api_paste_ini.rb @@ -62,12 +62,8 @@ Puppet::Type.newtype(:barbican_api_paste_ini) do defaultto('') end - autorequire(:package) do - if Facter.value(:osfamily) == 'Debian' - 'barbican-api' - elsif Facter.value(:osfamily) == 'RedHat' - 'openstack-barbican-api' - end + autorequire(:anchor) do + ['barbican::install::end'] end end diff --git a/lib/puppet/type/barbican_config.rb b/lib/puppet/type/barbican_config.rb index c7ceb10d..c26086d2 100644 --- a/lib/puppet/type/barbican_config.rb +++ b/lib/puppet/type/barbican_config.rb @@ -73,8 +73,8 @@ Puppet::Type.newtype(:barbican_config) do defaultto('') end - autorequire(:package) do - 'barbican' + autorequire(:anchor) do + ['barbican::install::end'] end end diff --git a/spec/unit/type/barbican_api_paste_ini_spec.rb b/spec/unit/type/barbican_api_paste_ini_spec.rb index 6bc5d4bc..9af6ec65 100644 --- a/spec/unit/type/barbican_api_paste_ini_spec.rb +++ b/spec/unit/type/barbican_api_paste_ini_spec.rb @@ -22,76 +22,22 @@ require 'puppet/type/barbican_api_paste_ini' describe 'Puppet::Type.type(:barbican_api_paste_ini)' do before :each do - Puppet::Type.rmtype(:barbican_api_paste_ini) - Facter.fact(:osfamily).stubs(:value).returns(platform_params[:osfamily]) @barbican_api_paste_ini = Puppet::Type.type(:barbican_api_paste_ini).new(:name => 'DEFAULT/foo', :value => 'bar') end - shared_examples_for 'barbican_api_paste_ini' do - - it 'should require a name' do - expect { - Puppet::Type.type(:barbican_api_paste_ini).new({}) - }.to raise_error(Puppet::Error, 'Title or name must be provided') - end - - it 'should not expect a name with whitespace' do - expect { - Puppet::Type.type(:barbican_api_paste_ini).new(:name => 'f oo') - }.to raise_error(Puppet::Error, /Parameter name failed/) - end - - it 'should fail when there is no section' do - expect { - Puppet::Type.type(:barbican_api_paste_ini).new(:name => 'foo') - }.to raise_error(Puppet::Error, /Parameter name failed/) - end - - it 'should not require a value when ensure is absent' do - Puppet::Type.type(:barbican_api_paste_ini).new(:name => 'DEFAULT/foo', :ensure => :absent) - end - - it 'should accept a valid value' do - @barbican_api_paste_ini[:value] = 'bar' - expect(@barbican_api_paste_ini[:value]).to eq('bar') - end - - it 'should not accept a value with whitespace' do - @barbican_api_paste_ini[:value] = 'b ar' - expect(@barbican_api_paste_ini[:value]).to eq('b ar') - end - - it 'should accept valid ensure values' do - @barbican_api_paste_ini[:ensure] = :present - expect(@barbican_api_paste_ini[:ensure]).to eq(:present) - @barbican_api_paste_ini[:ensure] = :absent - expect(@barbican_api_paste_ini[:ensure]).to eq(:absent) - end - - it 'should not accept invalid ensure values' do - expect { - @barbican_api_paste_ini[: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 => platform_params[:package_name]) - catalog.add_resource package, @barbican_api_paste_ini - dependency = @barbican_api_paste_ini.autorequire - expect(dependency.size).to eq(1) - expect(dependency[0].target).to eq(@barbican_api_paste_ini) - expect(dependency[0].source).to eq(package) - end + it 'should accept a valid value' do + @barbican_api_paste_ini[:value] = 'bar' + expect(@barbican_api_paste_ini[:value]).to eq('bar') end - context 'on RedHat platforms' do - let :platform_params do - { :package_name => 'openstack-barbican-api', - :osfamily => 'RedHat'} - end - - it_behaves_like 'barbican_api_paste_ini' + it 'should autorequire the package that install the file' do + catalog = Puppet::Resource::Catalog.new + anchor = Puppet::Type.type(:anchor).new(:name => 'barbican::install::end') + catalog.add_resource anchor, @barbican_api_paste_ini + dependency = @barbican_api_paste_ini.autorequire + expect(dependency.size).to eq(1) + expect(dependency[0].target).to eq(@barbican_api_paste_ini) + expect(dependency[0].source).to eq(anchor) end end diff --git a/spec/unit/type/barbican_config_spec.rb b/spec/unit/type/barbican_config_spec.rb new file mode 100644 index 00000000..19dd6604 --- /dev/null +++ b/spec/unit/type/barbican_config_spec.rb @@ -0,0 +1,64 @@ +require 'puppet' +require 'puppet/type/barbican_config' + +describe 'Puppet::Type.type(:barbican_config)' do + before :each do + @barbican_config = Puppet::Type.type(:barbican_config).new(:name => 'DEFAULT/foo', :value => 'bar') + end + + it 'should require a name' do + expect { + Puppet::Type.type(:barbican_config).new({}) + }.to raise_error(Puppet::Error, 'Title or name must be provided') + end + + it 'should not expect a name with whitespace' do + expect { + Puppet::Type.type(:barbican_config).new(:name => 'f oo') + }.to raise_error(Puppet::Error, /Parameter name failed/) + end + + it 'should fail when there is no section' do + expect { + Puppet::Type.type(:barbican_config).new(:name => 'foo') + }.to raise_error(Puppet::Error, /Parameter name failed/) + end + + it 'should not require a value when ensure is absent' do + Puppet::Type.type(:barbican_config).new(:name => 'DEFAULT/foo', :ensure => :absent) + end + + it 'should accept a valid value' do + @barbican_config[:value] = 'bar' + expect(@barbican_config[:value]).to eq(['bar']) + end + + it 'should not accept a value with whitespace' do + @barbican_config[:value] = 'b ar' + expect(@barbican_config[:value]).to eq(['b ar']) + end + + it 'should accept valid ensure values' do + @barbican_config[:ensure] = :present + expect(@barbican_config[:ensure]).to eq(:present) + @barbican_config[:ensure] = :absent + expect(@barbican_config[:ensure]).to eq(:absent) + end + + it 'should not accept invalid ensure values' do + expect { + @barbican_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 + anchor = Puppet::Type.type(:anchor).new(:name => 'barbican::install::end') + catalog.add_resource anchor, @barbican_config + dependency = @barbican_config.autorequire + expect(dependency.size).to eq(1) + expect(dependency[0].target).to eq(@barbican_config) + expect(dependency[0].source).to eq(anchor) + end + +end