apt::setting: Parse type and name from title.
Instead of having two additional parameters, `base_name` and `setting_type` simply parse it from `title`. We need to prefix most resources with `list-`, `conf-`, or `pref-` any way to avoid duplicate resources so we might as well leverage that.
This commit is contained in:
parent
e588ab622b
commit
d261d8f11b
7 changed files with 35 additions and 71 deletions
|
@ -5,8 +5,6 @@ define apt::conf (
|
|||
) {
|
||||
apt::setting { "conf-${name}":
|
||||
ensure => $ensure,
|
||||
base_name => $name,
|
||||
setting_type => 'conf',
|
||||
priority => $priority,
|
||||
content => template('apt/_header.erb', 'apt/conf.erb'),
|
||||
}
|
||||
|
|
|
@ -31,8 +31,6 @@ class apt(
|
|||
}
|
||||
|
||||
apt::setting { 'conf-update-stamp':
|
||||
base_name => 'update-stamp',
|
||||
setting_type => 'conf',
|
||||
priority => 15,
|
||||
content => template('apt/_header.erb', 'apt/15update-stamp.erb'),
|
||||
}
|
||||
|
|
|
@ -63,8 +63,6 @@ define apt::pin(
|
|||
|
||||
apt::setting { "pref-${file_name}":
|
||||
ensure => $ensure,
|
||||
base_name => $file_name,
|
||||
setting_type => 'pref',
|
||||
priority => $order,
|
||||
content => template('apt/_header.erb', 'apt/pin.pref.erb'),
|
||||
}
|
||||
|
|
|
@ -1,6 +1,4 @@
|
|||
define apt::setting (
|
||||
$setting_type,
|
||||
$base_name = $title,
|
||||
$priority = 50,
|
||||
$ensure = file,
|
||||
$source = undef,
|
||||
|
@ -18,13 +16,17 @@ define apt::setting (
|
|||
fail('apt::setting needs either of content or source')
|
||||
}
|
||||
|
||||
validate_re($setting_type, ['conf', 'pref', 'list'])
|
||||
validate_re($ensure, ['file', 'present', 'absent'])
|
||||
validate_string($base_name)
|
||||
|
||||
$title_array = split($title, '-')
|
||||
$setting_type = $title_array[0]
|
||||
$base_name = join(delete_at($title_array, 0), '-')
|
||||
|
||||
validate_re($setting_type, ['\Aconf\z', '\Apref\z', '\Alist\z'], "apt::setting resource name/title must start with either 'conf-', 'pref-' or 'list-'")
|
||||
|
||||
unless is_integer($priority) {
|
||||
# need this to allow zero-padded priority.
|
||||
validate_re($priority, '^\d+$', 'apt::setting priority must be an integer or a zero-padded integer.')
|
||||
validate_re($priority, '^\d+$', 'apt::setting priority must be an integer or a zero-padded integer')
|
||||
}
|
||||
|
||||
if $source {
|
||||
|
|
|
@ -25,8 +25,6 @@ define apt::source(
|
|||
|
||||
apt::setting { "list-${name}":
|
||||
ensure => $ensure,
|
||||
base_name => $name,
|
||||
setting_type => 'list',
|
||||
content => template('apt/_header.erb', 'apt/source.list.erb'),
|
||||
notify => Exec['apt_update'],
|
||||
}
|
||||
|
|
|
@ -8,11 +8,7 @@ describe 'apt::pin', :type => :define do
|
|||
|
||||
context 'defaults' do
|
||||
it { is_expected.to contain_apt__setting("pref-my_pin").with_content(/Explanation: : my_pin\nPackage: \*\nPin: release a=my_pin\nPin-Priority: 0\n/)}
|
||||
it { is_expected.to contain_apt__setting("pref-my_pin").with({
|
||||
'setting_type' => 'pref',
|
||||
'base_name' => 'my_pin',
|
||||
})
|
||||
}
|
||||
it { is_expected.to contain_apt__setting("pref-my_pin") }
|
||||
end
|
||||
|
||||
context 'set version' do
|
||||
|
@ -23,11 +19,7 @@ describe 'apt::pin', :type => :define do
|
|||
}
|
||||
end
|
||||
it { is_expected.to contain_apt__setting("pref-my_pin").with_content(/Explanation: : my_pin\nPackage: vim\nPin: version 1\nPin-Priority: 0\n/)}
|
||||
it { is_expected.to contain_apt__setting("pref-my_pin").with({
|
||||
'setting_type' => 'pref',
|
||||
'base_name' => 'my_pin',
|
||||
})
|
||||
}
|
||||
it { is_expected.to contain_apt__setting("pref-my_pin") }
|
||||
end
|
||||
|
||||
context 'set origin' do
|
||||
|
@ -38,11 +30,7 @@ describe 'apt::pin', :type => :define do
|
|||
}
|
||||
end
|
||||
it { is_expected.to contain_apt__setting("pref-my_pin").with_content(/Explanation: : my_pin\nPackage: vim\nPin: origin test\nPin-Priority: 0\n/)}
|
||||
it { is_expected.to contain_apt__setting("pref-my_pin").with({
|
||||
'setting_type' => 'pref',
|
||||
'base_name' => 'my_pin',
|
||||
})
|
||||
}
|
||||
it { is_expected.to contain_apt__setting("pref-my_pin") }
|
||||
end
|
||||
|
||||
context 'not defaults' do
|
||||
|
@ -61,8 +49,6 @@ describe 'apt::pin', :type => :define do
|
|||
end
|
||||
it { is_expected.to contain_apt__setting("pref-my_pin").with_content(/Explanation: foo\nPackage: \*\nPin: release a=1, n=bar, v=2, c=baz, o=foobar, l=foobaz\nPin-Priority: 10\n/) }
|
||||
it { is_expected.to contain_apt__setting("pref-my_pin").with({
|
||||
'setting_type' => 'pref',
|
||||
'base_name' => 'my_pin',
|
||||
'priority' => 99,
|
||||
})
|
||||
}
|
||||
|
|
|
@ -3,41 +3,36 @@ require 'spec_helper'
|
|||
describe 'apt::setting' do
|
||||
let(:pre_condition) { 'class { "apt": }' }
|
||||
let(:facts) { { :lsbdistid => 'Debian', :osfamily => 'Debian' } }
|
||||
let(:title) { 'teddybear' }
|
||||
let(:title) { 'conf-teddybear' }
|
||||
|
||||
let(:default_params) { { :setting_type => 'conf', :content => 'di' } }
|
||||
let(:default_params) { { :content => 'di' } }
|
||||
|
||||
describe 'when using the defaults' do
|
||||
context 'without setting_type' do
|
||||
it do
|
||||
expect { is_expected.to compile }.to raise_error(Puppet::Error, /Must pass setting_type /)
|
||||
end
|
||||
end
|
||||
|
||||
context 'without source or content' do
|
||||
let(:params) { { :setting_type => 'conf' } }
|
||||
it do
|
||||
expect { is_expected.to compile }.to raise_error(Puppet::Error, /needs either of /)
|
||||
end
|
||||
end
|
||||
|
||||
context 'with setting_type=conf' do
|
||||
context 'with title=conf-teddybear ' do
|
||||
let(:params) { default_params }
|
||||
it { is_expected.to contain_file('/etc/apt/apt.conf.d/50teddybear') }
|
||||
end
|
||||
|
||||
context 'with setting_type=pref' do
|
||||
let(:params) { { :setting_type => 'pref', :content => 'di' } }
|
||||
context 'with title=pref-teddybear' do
|
||||
let(:title) { 'pref-teddybear' }
|
||||
let(:params) { default_params }
|
||||
it { is_expected.to contain_file('/etc/apt/preferences.d/50teddybear') }
|
||||
end
|
||||
|
||||
context 'with setting_type=list' do
|
||||
let(:params) { { :setting_type => 'list', :content => 'di' } }
|
||||
context 'with title=list-teddybear' do
|
||||
let(:title) { 'list-teddybear' }
|
||||
let(:params) { default_params }
|
||||
it { is_expected.to contain_file('/etc/apt/sources.list.d/teddybear.list') }
|
||||
end
|
||||
|
||||
context 'with source' do
|
||||
let(:params) { { :setting_type => 'conf', :source => 'puppet:///la/die/dah' } }
|
||||
let(:params) { { :source => 'puppet:///la/die/dah' } }
|
||||
it {
|
||||
is_expected.to contain_file('/etc/apt/apt.conf.d/50teddybear').with({
|
||||
:ensure => 'file',
|
||||
|
@ -68,10 +63,11 @@ describe 'apt::setting' do
|
|||
end
|
||||
end
|
||||
|
||||
context 'with setting_type=ext' do
|
||||
let(:params) { default_params.merge({ :setting_type => 'ext' }) }
|
||||
context 'with title=ext-teddybear' do
|
||||
let(:title) { 'ext-teddybear' }
|
||||
let(:params) { default_params }
|
||||
it do
|
||||
expect { is_expected.to compile }.to raise_error(Puppet::Error, /"ext" does not /)
|
||||
expect { is_expected.to compile }.to raise_error(Puppet::Error, /must start with /)
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -95,18 +91,6 @@ describe 'apt::setting' do
|
|||
it { is_expected.to contain_file('/etc/apt/apt.conf.d/100teddybear') }
|
||||
end
|
||||
|
||||
describe 'with base_name=puppy' do
|
||||
let(:params) { default_params.merge({ :base_name => 'puppy' }) }
|
||||
it { should contain_file('/etc/apt/apt.conf.d/50puppy') }
|
||||
end
|
||||
|
||||
describe 'with base_name=true' do
|
||||
let(:params) { default_params.merge({ :base_name => true }) }
|
||||
it do
|
||||
expect { should compile }.to raise_error(Puppet::Error, /not a string/)
|
||||
end
|
||||
end
|
||||
|
||||
describe 'with ensure=absent' do
|
||||
let(:params) { default_params.merge({ :ensure => 'absent' }) }
|
||||
it { is_expected.to contain_file('/etc/apt/apt.conf.d/50teddybear').with({
|
||||
|
|
Loading…
Reference in a new issue