+##2015-04-28 - Supported Release 2.0.1
+###Summary
+
+This bug fixes a few compatibility issues that came up with the 2.0.0 release, and includes test and documentation updates.
+
+####Bugfixes
+- Fix incompatibility with keyrings containing multiple keys
+- Fix bugs preventing the module from working with Puppet < 3.5.0
+
##2015-04-07 - Supported Release 2.0.0
###Summary
notify => Exec['apt_update'],
}
- contain 'apt::update'
+ anchor { 'apt_first': } -> Class['apt::update'] -> anchor { 'apt_last': }
# manage sources if present
if $sources {
fail('This module only works on Debian or derivatives like Ubuntu')
}
- # Strict variables facts lookup compatibility
- $xfacts = {
- 'lsbdistcodename' => defined('$lsbdistcodename') ? {
- true => $::lsbdistcodename,
- default => undef,
- },
- 'lsbdistrelease' => defined('$lsbdistrelease') ? {
- true => $::lsbdistrelease,
- default => undef,
- },
- 'lsbmajdistrelease' => defined('$lsbmajdistrelease') ? {
- true => $::lsbmajdistrelease,
- default => undef,
- },
- 'lsbdistdescription' => defined('$lsbdistdescription') ? {
- true => $::lsbdistdescription,
- default => undef,
- },
- 'lsbminordistrelease' => defined('$lsbminordistrelease') ? {
- true => $::lsbminordistrelease,
- default => undef,
- },
- 'lsbdistid' => defined('$lsbdistid') ? {
- true => $::lsbdistid,
- default => undef,
- },
+ # prior to puppet 3.5.0, defined couldn't test if a variable was defined
+ # strict variables wasn't added until 3.5.0, so this should be fine.
+ if versioncmp($::puppetversion, '3.5.0') < 0 {
+ $xfacts = {
+ 'lsbdistcodename' => $::lsbdistcodename,
+ 'lsbdistrelease' => $::lsbdistrelease,
+ 'lsbmajdistrelease' => $::lsbmajdistrelease,
+ 'lsbdistdescription' => $::lsbdistdescription,
+ 'lsbminordistrelease' => $::lsbminordistrelease,
+ 'lsbdistid' => $::lsbdistid,
+ }
+ } else {
+ # Strict variables facts lookup compatibility
+ $xfacts = {
+ 'lsbdistcodename' => defined('$lsbdistcodename') ? {
+ true => $::lsbdistcodename,
+ default => undef,
+ },
+ 'lsbdistrelease' => defined('$lsbdistrelease') ? {
+ true => $::lsbdistrelease,
+ default => undef,
+ },
+ 'lsbmajdistrelease' => defined('$lsbmajdistrelease') ? {
+ true => $::lsbmajdistrelease,
+ default => undef,
+ },
+ 'lsbdistdescription' => defined('$lsbdistdescription') ? {
+ true => $::lsbdistdescription,
+ default => undef,
+ },
+ 'lsbminordistrelease' => defined('$lsbminordistrelease') ? {
+ true => $::lsbminordistrelease,
+ default => undef,
+ },
+ 'lsbdistid' => defined('$lsbdistid') ? {
+ true => $::lsbdistid,
+ default => undef,
+ },
+ }
}
$root = '/etc/apt'
}
}
}
+
+ $ppa_options = undef
+ $ppa_package = undef
+
}
'ubuntu': {
$backports = {
{
"name": "puppetlabs-apt",
- "version": "2.0.0",
+ "version": "2.0.1",
"author": "Puppet Labs",
"summary": "Provides an interface for managing Apt source, key, and definitions with Puppet",
"license": "Apache-2.0",
"requirements": [
{
"name": "pe",
- "version_requirement": "3.x"
+ "version_requirement": ">= 3.3.0"
},
{
"name": "puppet",
- "version_requirement": ">= 3.4.0"
+ "version_requirement": "3.x"
}
],
"dependencies": [
:lsbdistid => 'Debian',
:osfamily => 'Debian',
:lsbdistcodename => 'wheezy',
+ :puppetversion => '3.5.0',
}
end
it { is_expected.to contain_apt__source('backports').with({
:lsbdistid => 'Debian',
:osfamily => 'Debian',
:lsbdistcodename => 'squeeze',
+ :puppetversion => '3.5.0',
}
end
it { is_expected.to contain_apt__source('backports').with({
:lsbdistid => 'Ubuntu',
:osfamily => 'Debian',
:lsbdistcodename => 'trusty',
+ :puppetversion => '3.5.0',
}
end
it { is_expected.to contain_apt__source('backports').with({
:lsbdistid => 'Ubuntu',
:osfamily => 'Debian',
:lsbdistcodename => 'trusty',
+ :puppetversion => '3.5.0',
}
end
let(:params) do
:lsbdistid => 'Ubuntu',
:osfamily => 'Debian',
:lsbdistcodename => 'trusty',
+ :puppetversion => '3.5.0',
}
end
let(:params) do
:lsbdistid => 'linuxmint',
:osfamily => 'Debian',
:lsbdistcodename => 'qiana',
+ :puppetversion => '3.5.0',
}
end
context 'sets all the needed things' do
:lsbdistid => 'Ubuntu',
:osfamily => 'Debian',
:lsbdistcodename => 'trusty',
+ :puppetversion => '3.5.0',
}
end
context 'invalid location' do
require 'spec_helper'
describe 'apt' do
- let(:facts) { { :lsbdistid => 'Debian', :osfamily => 'Debian', :lsbdistcodename => 'wheezy'} }
+ let(:facts) { { :lsbdistid => 'Debian', :osfamily => 'Debian', :lsbdistcodename => 'wheezy', :puppetversion => '3.5.0'} }
context 'defaults' do
it { is_expected.to contain_file('sources.list').that_notifies('Exec[apt_update]').only_with({
{ :osfamily => 'Debian',
:lsbdistcodename => 'precise',
:lsbdistid => 'Debian',
+ :puppetversion => '3.5.0',
}
end
let(:params) { { :sources => {
{ :osfamily => 'Debian',
:lsbdistcodename => 'precise',
:lsbdistid => 'Debian',
+ :puppetversion => '3.5.0',
}
end
let(:params) { { :keys => {
{ :osfamily => 'Debian',
:lsbdistcodename => 'precise',
:lsbdistid => 'ubuntu',
+ :puppetversion => '3.5.0',
}
end
let(:params) { { :ppas => {
{ :osfamily => 'Debian',
:lsbdistcodename => 'precise',
:lsbdistid => 'Debian',
+ :puppetversion => '3.5.0',
}
end
let(:params) { { :settings => {
context 'with unsupported osfamily' do
let :facts do
- { :osfamily => 'Darwin', }
+ { :osfamily => 'Darwin', :puppetversion => '3.5.0',}
end
it do
context "and apt::update['frequency']='always'" do
{ 'a recent run' => Time.now.to_i, 'we are due for a run' => 1406660561,'the update-success-stamp file does not exist' => -1 }.each_pair do |desc, factval|
context "and $::apt_update_last_success indicates #{desc}" do
- let(:facts) { { :lsbdistid => 'Debian', :osfamily => 'Debian', :apt_update_last_success => factval, :lsbdistcodename => 'wheezy' } }
+ let(:facts) { { :lsbdistid => 'Debian', :osfamily => 'Debian', :apt_update_last_success => factval, :lsbdistcodename => 'wheezy', :puppetversion => '3.5.0', } }
let (:pre_condition) { "class{'::apt': update => {'frequency' => 'always' },}" }
it 'should trigger an apt-get update run' do
#set the apt_update exec's refreshonly attribute to false
end
end
context 'when $::apt_update_last_success is nil' do
- let(:facts) { { :lsbdistid => 'Debian', :osfamily => 'Debian', :lsbdistcodename => 'wheezy' } }
+ let(:facts) { { :lsbdistid => 'Debian', :osfamily => 'Debian', :lsbdistcodename => 'wheezy', :puppetversion => '3.5.0', } }
let (:pre_condition) { "class{ '::apt': update => {'frequency' => 'always' },}" }
it 'should trigger an apt-get update run' do
#set the apt_update exec\'s refreshonly attribute to false
context "and apt::update['frequency']='reluctantly'" do
{'a recent run' => Time.now.to_i, 'we are due for a run' => 1406660561,'the update-success-stamp file does not exist' => -1 }.each_pair do |desc, factval|
context "and $::apt_update_last_success indicates #{desc}" do
- let(:facts) { { :lsbdistid => 'Debian', :osfamily => 'Debian', :apt_update_last_success => factval, :lsbdistcodename => 'wheezy'} }
+ let(:facts) { { :lsbdistid => 'Debian', :osfamily => 'Debian', :apt_update_last_success => factval, :lsbdistcodename => 'wheezy', :puppetversion => '3.5.0',} }
let (:pre_condition) { "class{ '::apt': update => {'frequency' => 'reluctantly' },}" }
it 'should not trigger an apt-get update run' do
#don't change the apt_update exec's refreshonly attribute. (it should be true)
end
end
context 'when $::apt_update_last_success is nil' do
- let(:facts) { { :lsbdistid => 'Debian', :osfamily => 'Debian', :lsbdistcodename => 'wheezy' } }
+ let(:facts) { { :lsbdistid => 'Debian', :osfamily => 'Debian', :lsbdistcodename => 'wheezy', :puppetversion => '3.5.0', } }
let (:pre_condition) { "class{ '::apt': update => {'frequency' => 'reluctantly' },}" }
it 'should not trigger an apt-get update run' do
#don't change the apt_update exec's refreshonly attribute. (it should be true)
context "and apt::update['frequency'] has the value of #{update_frequency}" do
{ 'we are due for a run' => 1406660561,'the update-success-stamp file does not exist' => -1 }.each_pair do |desc, factval|
context "and $::apt_update_last_success indicates #{desc}" do
- let(:facts) { { :lsbdistid => 'Debian', :osfamily => 'Debian', :apt_update_last_success => factval, :lsbdistcodename => 'wheezy' } }
+ let(:facts) { { :lsbdistid => 'Debian', :osfamily => 'Debian', :apt_update_last_success => factval, :lsbdistcodename => 'wheezy', :puppetversion => '3.5.0', } }
let (:pre_condition) { "class{ '::apt': update => {'frequency' => '#{update_frequency}',} }" }
it 'should trigger an apt-get update run' do
#set the apt_update exec\'s refreshonly attribute to false
end
end
context 'when the $::apt_update_last_success fact has a recent value' do
- let(:facts) { { :lsbdistid => 'Debian', :osfamily => 'Debian', :lsbdistcodename => 'wheezy', :apt_update_last_success => Time.now.to_i } }
+ let(:facts) { { :lsbdistid => 'Debian', :osfamily => 'Debian', :lsbdistcodename => 'wheezy', :apt_update_last_success => Time.now.to_i, :puppetversion => '3.5.0', } }
let (:pre_condition) { "class{ '::apt': update => {'frequency' => '#{update_frequency}',} }" }
it 'should not trigger an apt-get update run' do
#don't change the apt_update exec\'s refreshonly attribute. (it should be true)
end
end
context 'when $::apt_update_last_success is nil' do
- let(:facts) { { :lsbdistid => 'Debian', :osfamily => 'Debian', :lsbdistcodename => 'wheezy', :apt_update_last_success => nil } }
+ let(:facts) { { :lsbdistid => 'Debian', :osfamily => 'Debian', :lsbdistcodename => 'wheezy', :apt_update_last_success => nil, :puppetversion => '3.5.0', } }
let (:pre_condition) { "class{ '::apt': update => {'frequency' => '#{update_frequency}',} }" }
it 'should trigger an apt-get update run' do
#set the apt_update exec\'s refreshonly attribute to false
require 'spec_helper'
describe 'apt::params', :type => :class do
- let(:facts) { { :lsbdistid => 'Debian', :osfamily => 'Debian', :lsbdistcodename => 'wheezy' } }
+ let(:facts) { { :lsbdistid => 'Debian', :osfamily => 'Debian', :lsbdistcodename => 'wheezy', :puppetversion => '3.5.0', } }
let (:title) { 'my_package' }
it { is_expected.to contain_apt__params }
end
describe "With lsb-release not installed" do
- let(:facts) { { :osfamily => 'Debian' } }
+ let(:facts) { { :osfamily => 'Debian', :puppetversion => '3.5.0', } }
let (:title) { 'my_package' }
it do
end
end
+ describe "With old puppet version" do
+ let(:facts) { { :lsbdistid => 'Debian', :osfamily => 'Debian', :lsbdistcodename => 'wheezy', :lsbdistrelease => 'foo', :lsbdistdescription => 'bar', :lsbminordistrelease => 'baz', :lsbmajdistrelease => 'foobar', :puppetversion => '3.4.0', } }
+ let(:title) { 'my_package' }
+ it { is_expected.to contain_apt__params }
+
+ # There are 4 resources in this class currently
+ # there should not be any more resources because it is a params class
+ # The resources are class[apt::params], class[main], class[settings], stage[main]
+ it "Should not contain any resources" do
+ expect(subject.call.resources.size).to eq(4)
+ end
+ end
+
end
let :pre_condition do
'class { "apt": }'
end
- let(:facts) { { :lsbdistid => 'Debian', :osfamily => 'Debian', :lsbdistcodename => 'wheezy' } }
+ let(:facts) { { :lsbdistid => 'Debian', :osfamily => 'Debian', :lsbdistcodename => 'wheezy', :puppetversion => '3.5.0', } }
let :title do
'norecommends'
end
'class { "apt": }'
end
- let(:facts) { { :lsbdistid => 'Debian', :osfamily => 'Debian', :lsbdistcodename => 'wheezy' } }
+ let(:facts) { { :lsbdistid => 'Debian', :osfamily => 'Debian', :lsbdistcodename => 'wheezy', :puppetversion => '3.5.0', } }
GPG_KEY_ID = '47B320EB4C7C375AA9DAE1A01054B7A24BD6EC30'
let :pre_condition do
'class { "apt": }'
end
- let(:facts) { { :lsbdistid => 'Debian', :osfamily => 'Debian', :lsbdistcodename => 'wheezy' } }
+ let(:facts) { { :lsbdistid => 'Debian', :osfamily => 'Debian', :lsbdistcodename => 'wheezy', :puppetversion => '3.5.0', } }
let(:title) { 'my_pin' }
context 'defaults' do
:operatingsystem => 'Ubuntu',
:osfamily => 'Debian',
:lsbdistid => 'Ubuntu',
+ :puppetversion => '3.5.0',
}
end
:operatingsystem => 'Ubuntu',
:osfamily => 'Debian',
:lsbdistid => 'Ubuntu',
+ :puppetversion => '3.5.0',
}
end
:operatingsystem => 'Ubuntu',
:osfamily => 'Debian',
:lsbdistid => 'Ubuntu',
+ :puppetversion => '3.5.0',
}
end
let :params do
:operatingsystem => 'Ubuntu',
:lsbdistid => 'Ubuntu',
:osfamily => 'Debian',
+ :puppetversion => '3.5.0',
}
end
let :params do
:operatingsystem => 'Ubuntu',
:lsbdistid => 'Ubuntu',
:osfamily => 'Debian',
+ :puppetversion => '3.5.0',
}
end
let :params do
:operatingsystem => 'Ubuntu',
:lsbdistid => 'Ubuntu',
:osfamily => 'Debian',
+ :puppetversion => '3.5.0',
}
end
let :params do
:operatingsystem => 'Ubuntu',
:lsbdistid => 'Ubuntu',
:osfamily => 'Debian',
+ :puppetversion => '3.5.0',
}
end
let :params do
:operatingsystem => 'Ubuntu',
:lsbdistid => 'Ubuntu',
:osfamily => 'Debian',
+ :puppetversion => '3.5.0',
}
end
let(:title) { 'ppa:foo' }
:lsbdistid => 'Ubuntu',
:osfamily => 'Debian',
:lsbdistcodeanme => nil,
+ :puppetversion => '3.5.0',
}
end
let(:title) { 'ppa:foo' }
:operatingsystem => 'Debian',
:lsbdistid => 'debian',
:osfamily => 'Debian',
+ :puppetversion => '3.5.0',
}
end
let(:title) { 'ppa:foo' }
describe 'apt::setting' do
let(:pre_condition) { 'class { "apt": }' }
- let(:facts) { { :lsbdistid => 'Debian', :osfamily => 'Debian', :lsbdistcodename => 'wheezy' } }
+ let(:facts) { { :lsbdistid => 'Debian', :osfamily => 'Debian', :lsbdistcodename => 'wheezy', :puppetversion => '3.5.0', } }
let(:title) { 'conf-teddybear' }
let(:default_params) { { :content => 'di' } }
apt::setting { "list-teddybear": content => "foo" }
'
end
- let(:facts) { { :lsbdistid => 'Debian', :osfamily => 'Debian', :lsbdistcodename => 'wheezy' } }
+ let(:facts) { { :lsbdistid => 'Debian', :osfamily => 'Debian', :lsbdistcodename => 'wheezy', :puppetversion => '3.5.0', } }
let(:title) { 'conf-teddybear' }
let(:default_params) { { :content => 'di' } }
{
:lsbdistid => 'Debian',
:lsbdistcodename => 'wheezy',
- :osfamily => 'Debian'
+ :osfamily => 'Debian',
+ :puppetversion => '3.5.0',
}
end
it do
{
:lsbdistid => 'Debian',
:lsbdistcodename => 'wheezy',
- :osfamily => 'Debian'
+ :osfamily => 'Debian',
+ :puppetversion => '3.5.0',
}
end
let(:params) { { :location => 'hello.there', } }
{
:lsbdistid => 'Debian',
:lsbdistcodename => 'wheezy',
- :osfamily => 'Debian'
+ :osfamily => 'Debian',
+ :puppetversion => '3.5.0',
}
end
{
:lsbdistid => 'Debian',
:lsbdistcodename => 'wheezy',
- :osfamily => 'Debian'
+ :osfamily => 'Debian',
+ :puppetversion => '3.5.0',
}
end
let :params do
{
:lsbdistid => 'Debian',
:lsbdistcodename => 'wheezy',
- :osfamily => 'Debian'
+ :osfamily => 'Debian',
+ :puppetversion => '3.5.0',
}
end
let :params do
{
:lsbdistid => 'Debian',
:lsbdistcodename => 'wheezy',
- :osfamily => 'Debian'
+ :osfamily => 'Debian',
+ :puppetversion => '3.5.0',
}
end
let :params do
let :facts do
{
:lsbdistid => 'Debian',
- :osfamily => 'Debian'
+ :osfamily => 'Debian',
+ :puppetversion => '3.5.0',
}
end
let(:params) { { :location => 'hello.there', } }
{
:lsbdistid => 'Debian',
:lsbdistcodename => 'wheezy',
- :osfamily => 'Debian'
+ :osfamily => 'Debian',
+ :puppetversion => '3.5.0',
}
end
let :params do