#
class apt(
+ $purge = {},
$proxy = {},
$always_apt_update = false,
$apt_update_frequency = 'reluctantly',
- $purge_sources_list = false,
- $purge_sources_list_d = false,
- $purge_preferences = false,
- $purge_preferences_d = false,
$update_timeout = undef,
$update_tries = undef,
$sources = undef,
$frequency_options = ['always','daily','weekly','reluctantly']
validate_re($apt_update_frequency, $frequency_options)
- validate_bool($purge_sources_list, $purge_sources_list_d,
- $purge_preferences, $purge_preferences_d)
+ validate_hash($purge)
+ if $purge['sources.list'] {
+ validate_bool($purge['sources.list'])
+ }
+ if $purge['sources.list.d'] {
+ validate_bool($purge['sources.list.d'])
+ }
+ if $purge['preferences'] {
+ validate_bool($purge['preferences'])
+ }
+ if $purge['preferences.d'] {
+ validate_bool($purge['preferences.d'])
+ }
+
+ $_purge = merge($::apt::purge_defaults, $purge)
validate_hash($proxy)
if $proxy['host'] {
}
}
- $sources_list_content = $purge_sources_list ? {
+ $sources_list_content = $_purge['sources.list'] ? {
false => undef,
true => "# Repos managed by puppet.\n",
}
+ $preferences_ensure = $_purge['preferences'] ? {
+ false => file,
+ true => absent,
+ }
+
if $always_apt_update == true {
Exec <| title=='apt_update' |> {
refreshonly => false,
}
file { 'sources.list':
- ensure => present,
+ ensure => file,
path => $::apt::sources_list,
owner => root,
group => root,
path => $::apt::sources_list_d,
owner => root,
group => root,
- purge => $purge_sources_list_d,
- recurse => $purge_sources_list_d,
+ mode => '0644',
+ purge => $_purge['sources.list.d'],
+ recurse => $_purge['sources.list.d'],
notify => Exec['apt_update'],
}
- if $purge_preferences {
- file { 'apt-preferences':
- ensure => absent,
- path => $::apt::preferences,
- }
+ file { 'preferences':
+ ensure => $preferences_ensure,
+ path => $::apt::preferences,
+ owner => root,
+ group => root,
+ mode => '0644',
+ notify => Exec['apt_update'],
}
file { 'preferences.d':
path => $::apt::preferences_d,
owner => root,
group => root,
- purge => $purge_preferences_d,
- recurse => $purge_preferences_d,
+ mode => '0644',
+ purge => $_purge['preferences.d'],
+ recurse => $_purge['preferences.d'],
+ notify => Exec['apt_update'],
}
# Need anchor to provide containment for dependencies.
context 'defaults' do
it { is_expected.to contain_file('sources.list').that_notifies('Exec[apt_update]').only_with({
- :ensure => 'present',
- :path => '/etc/apt/sources.list',
- :owner => 'root',
- :group => 'root',
- :mode => '0644',
- :notify => 'Exec[apt_update]',
+ :ensure => 'file',
+ :path => '/etc/apt/sources.list',
+ :owner => 'root',
+ :group => 'root',
+ :mode => '0644',
+ :content => "# Repos managed by puppet.\n",
+ :notify => 'Exec[apt_update]',
})}
it { is_expected.to contain_file('sources.list.d').that_notifies('Exec[apt_update]').only_with({
:path => '/etc/apt/sources.list.d',
:owner => 'root',
:group => 'root',
- :purge => false,
- :recurse => false,
+ :mode => '0644',
+ :purge => true,
+ :recurse => true,
:notify => 'Exec[apt_update]',
})}
- it { is_expected.to contain_file('preferences.d').only_with({
+ it { is_expected.to contain_file('preferences').that_notifies('Exec[apt_update]').only_with({
+ :ensure => 'absent',
+ :path => '/etc/apt/preferences',
+ :owner => 'root',
+ :group => 'root',
+ :mode => '0644',
+ :notify => 'Exec[apt_update]',
+ })}
+
+ it { is_expected.to contain_file('preferences.d').that_notifies('Exec[apt_update]').only_with({
:ensure => 'directory',
:path => '/etc/apt/preferences.d',
:owner => 'root',
:group => 'root',
- :purge => false,
- :recurse => false,
+ :mode => '0644',
+ :purge => true,
+ :recurse => true,
+ :notify => 'Exec[apt_update]',
})}
it 'should lay down /etc/apt/apt.conf.d/15update-stamp' do
let :params do
{
:always_apt_update => true,
- :purge_sources_list => true,
- :purge_sources_list_d => true,
- :purge_preferences => true,
- :purge_preferences_d => true,
+ :purge => { 'sources.list' => false, 'sources.list.d' => false,
+ 'preferences' => false, 'preferences.d' => false, },
:update_timeout => '1',
:update_tries => '3',
}
end
- it { is_expected.to contain_file('sources.list').with({
- :content => "# Repos managed by puppet.\n"
+ it { is_expected.to contain_file('sources.list').without({
+ :content => "# Repos managed by puppet.\n",
})}
it { is_expected.to contain_file('sources.list.d').with({
- :purge => 'true',
- :recurse => 'true',
+ :purge => false,
+ :recurse => false,
})}
- it { is_expected.to contain_file('apt-preferences').only_with({
- :ensure => 'absent',
- :path => '/etc/apt/preferences',
+ it { is_expected.to contain_file('preferences').with({
+ :ensure => 'file',
})}
it { is_expected.to contain_file('preferences.d').with({
- :purge => 'true',
- :recurse => 'true',
+ :purge => false,
+ :recurse => false,
})}
it { is_expected.to contain_exec('apt_update').with({
end
describe 'failing tests' do
- context 'bad purge_sources_list' do
- let :params do
- {
- :purge_sources_list => 'foo'
- }
- end
+ context "purge['sources.list']=>'banana'" do
+ let(:params) { { :purge => { 'sources.list' => 'banana' }, } }
it do
expect {
is_expected.to compile
end
end
- context 'bad purge_sources_list_d' do
- let :params do
- {
- :purge_sources_list_d => 'foo'
- }
- end
+ context "purge['sources.list.d']=>'banana'" do
+ let(:params) { { :purge => { 'sources.list.d' => 'banana' }, } }
it do
expect {
is_expected.to compile
end
end
- context 'bad purge_preferences' do
- let :params do
- {
- :purge_preferences => 'foo'
- }
- end
+ context "purge['preferences']=>'banana'" do
+ let(:params) { { :purge => { 'preferences' => 'banana' }, } }
it do
expect {
is_expected.to compile
end
end
- context 'bad purge_preferences_d' do
- let :params do
- {
- :purge_preferences_d => 'foo'
- }
- end
+ context "purge['preferences.d']=>'banana'" do
+ let(:params) { { :purge => { 'preferences.d' => 'banana' }, } }
it do
expect {
is_expected.to compile