From: Hunter Haugen Date: Tue, 25 Feb 2014 17:25:49 +0000 (-0800) Subject: Merge pull request #240 from daenney/manage-preferences X-Git-Tag: 1.5.0~39 X-Git-Url: https://review.fuel-infra.org/gitweb?a=commitdiff_plain;h=01cff19fa872fed5dc44284b02856a74823ba0e7;hp=2ca97c82105f07c993eca15e1d19f3b8243aa4f7;p=puppet-modules%2Fpuppetlabs-apt.git Merge pull request #240 from daenney/manage-preferences apt: Allow managing of preferences file. --- diff --git a/Gemfile b/Gemfile index cd7fbc8..1e359d0 100644 --- a/Gemfile +++ b/Gemfile @@ -2,6 +2,7 @@ source ENV['GEM_SOURCE'] || 'https://rubygems.org' group :development, :test do gem 'rake', :require => false + gem 'pry', :require => false gem 'rspec-puppet', :require => false gem 'puppet-lint', :require => false gem 'puppetlabs_spec_helper', :require => false diff --git a/manifests/params.pp b/manifests/params.pp index 955954f..b35bb1c 100644 --- a/manifests/params.pp +++ b/manifests/params.pp @@ -21,13 +21,22 @@ class apt::params { } 'ubuntu': { case $::lsbdistcodename { - 'hardy','lucid','maverick','natty','oneiric','precise': { + 'hardy','maverick','natty','oneiric','precise': { $backports_location = 'http://us.archive.ubuntu.com/ubuntu' + $ppa_options = '-y' + } + 'lucid': { + $backports_location = 'http://us.archive.ubuntu.com/ubuntu' + $ppa_options = undef } default: { $backports_location = 'http://old-releases.ubuntu.com/ubuntu' + $ppa_options = '-y' } } } + default: { + fail("Unsupported osfamily (${::osfamily}) or lsbdistid (${::lsbdistid})") + } } } diff --git a/manifests/ppa.pp b/manifests/ppa.pp index 14fbbce..bc8d486 100644 --- a/manifests/ppa.pp +++ b/manifests/ppa.pp @@ -3,7 +3,7 @@ define apt::ppa( $ensure = 'present', $release = $::lsbdistcodename, - $options = '-y' + $options = $apt::params::ppa_options, ) { include apt::params include apt::update diff --git a/manifests/unattended_upgrades.pp b/manifests/unattended_upgrades.pp index f006bd5..b0bd8ab 100644 --- a/manifests/unattended_upgrades.pp +++ b/manifests/unattended_upgrades.pp @@ -37,6 +37,7 @@ class apt::unattended_upgrades ( $download_delta = "0", $verbose = "0", ) { + include apt::params validate_bool( $auto_fix, diff --git a/spec/acceptance/apt_builddep_spec.rb b/spec/acceptance/apt_builddep_spec.rb index b61fca2..1e35e4a 100644 --- a/spec/acceptance/apt_builddep_spec.rb +++ b/spec/acceptance/apt_builddep_spec.rb @@ -1,10 +1,10 @@ require 'spec_helper_acceptance' -describe 'apt::builddep' do +describe 'apt::builddep', :unless => UNSUPPORTED_PLATFORMS.include?(fact('osfamily')) do context 'reset' do it 'removes packages' do - shell('apt-get -y remove glusterfs-server') + shell('apt-get -y remove znc') shell('apt-get -y remove g++') end end @@ -13,7 +13,7 @@ describe 'apt::builddep' do it 'should work with no errors' do pp = <<-EOS include '::apt' - apt::builddep { 'glusterfs-server': } + apt::builddep { 'znc': } EOS apply_manifest(pp, :catch_failures => true) @@ -28,7 +28,7 @@ describe 'apt::builddep' do context 'reset' do it 'removes packages' do - shell('apt-get -y remove glusterfs-server') + shell('apt-get -y remove znc') shell('apt-get -y remove g++') end end diff --git a/spec/acceptance/apt_key_spec.rb b/spec/acceptance/apt_key_spec.rb index 36cba5e..9f2ba39 100644 --- a/spec/acceptance/apt_key_spec.rb +++ b/spec/acceptance/apt_key_spec.rb @@ -1,6 +1,6 @@ require 'spec_helper_acceptance' -describe 'apt::key' do +describe 'apt::key', :unless => UNSUPPORTED_PLATFORMS.include?(fact('osfamily')) do context 'apt::key' do it 'should work with no errors' do pp = <<-EOS diff --git a/spec/acceptance/apt_ppa_spec.rb b/spec/acceptance/apt_ppa_spec.rb index c0d2161..b665c5c 100644 --- a/spec/acceptance/apt_ppa_spec.rb +++ b/spec/acceptance/apt_ppa_spec.rb @@ -1,7 +1,7 @@ require 'spec_helper_acceptance' if fact('operatingsystem') == 'Ubuntu' - describe 'apt::ppa' do + describe 'apt::ppa', :unless => UNSUPPORTED_PLATFORMS.include?(fact('osfamily')) do context 'reset' do it 'removes ppa' do @@ -27,14 +27,13 @@ if fact('operatingsystem') == 'Ubuntu' end end - context 'readding a removed ppa.' do + context 'reading a removed ppa.' do it 'setup' do - shell('add-apt-repository -y ppa:raravena80/collectd5') # This leaves a blank file - shell('add-apt-repository --remove ppa:raravena80/collectd5') + shell('echo > /etc/apt/sources.list.d/raravena80-collectd5-$(lsb_release -c -s).list') end - it 'should readd it successfully' do + it 'should read it successfully' do pp = <<-EOS include '::apt' apt::ppa { 'ppa:raravena80/collectd5': } @@ -111,7 +110,7 @@ if fact('operatingsystem') == 'Ubuntu' end context 'options' do - context '-y' do + context '-y', :unless => default[:platform].match(/10\.04/) do it 'works without failure' do pp = <<-EOS include '::apt' @@ -135,6 +134,5 @@ if fact('operatingsystem') == 'Ubuntu' context 'reset' do it { shell('rm -rf /etc/apt/sources.list.d/canonical-kernel-team-ppa*', :acceptable_exit_codes => [0,1,2]) } end - end end diff --git a/spec/acceptance/apt_source_spec.rb b/spec/acceptance/apt_source_spec.rb index 6b026b8..c2d076c 100644 --- a/spec/acceptance/apt_source_spec.rb +++ b/spec/acceptance/apt_source_spec.rb @@ -1,6 +1,6 @@ require 'spec_helper_acceptance' -describe 'apt::source' do +describe 'apt::source', :unless => UNSUPPORTED_PLATFORMS.include?(fact('osfamily')) do context 'apt::source' do context 'ensure => present' do diff --git a/spec/acceptance/apt_spec.rb b/spec/acceptance/apt_spec.rb index 336161c..84b7f88 100644 --- a/spec/acceptance/apt_spec.rb +++ b/spec/acceptance/apt_spec.rb @@ -1,6 +1,6 @@ require 'spec_helper_acceptance' -describe 'apt class' do +describe 'apt class', :unless => UNSUPPORTED_PLATFORMS.include?(fact('osfamily')) do context 'reset' do it 'fixes the sources.list' do diff --git a/spec/acceptance/backports_spec.rb b/spec/acceptance/backports_spec.rb index 80e2093..6d3f7f0 100644 --- a/spec/acceptance/backports_spec.rb +++ b/spec/acceptance/backports_spec.rb @@ -8,7 +8,7 @@ when 'Debian' repos = 'main contrib non-free' end -describe 'apt::backports class' do +describe 'apt::backports class', :unless => UNSUPPORTED_PLATFORMS.include?(fact('osfamily')) do context 'defaults' do it 'should work with no errors' do pp = <<-EOS diff --git a/spec/acceptance/class_spec.rb b/spec/acceptance/class_spec.rb index f228e4c..e599449 100644 --- a/spec/acceptance/class_spec.rb +++ b/spec/acceptance/class_spec.rb @@ -1,6 +1,6 @@ require 'spec_helper_acceptance' -describe 'apt class' do +describe 'apt class', :unless => UNSUPPORTED_PLATFORMS.include?(fact('osfamily')) do context 'default parameters' do # Using puppet_apply as a helper diff --git a/spec/acceptance/conf_spec.rb b/spec/acceptance/conf_spec.rb index 98898c2..8a8ed63 100644 --- a/spec/acceptance/conf_spec.rb +++ b/spec/acceptance/conf_spec.rb @@ -1,6 +1,6 @@ require 'spec_helper_acceptance' -describe 'apt::conf define' do +describe 'apt::conf define', :unless => UNSUPPORTED_PLATFORMS.include?(fact('osfamily')) do context 'defaults' do it 'should work with no errors' do pp = <<-EOS diff --git a/spec/acceptance/force_spec.rb b/spec/acceptance/force_spec.rb index c364d5f..a439023 100644 --- a/spec/acceptance/force_spec.rb +++ b/spec/acceptance/force_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper_acceptance' codename = fact('lsbdistcodename') -describe 'apt::force define' do +describe 'apt::force define', :unless => UNSUPPORTED_PLATFORMS.include?(fact('osfamily')) do context 'defaults' do it 'should work with no errors' do pp = <<-EOS diff --git a/spec/acceptance/nodesets/ubuntu-server-10044-x64.yml b/spec/acceptance/nodesets/ubuntu-server-10044-x64.yml new file mode 100644 index 0000000..c1b8bdf --- /dev/null +++ b/spec/acceptance/nodesets/ubuntu-server-10044-x64.yml @@ -0,0 +1,11 @@ +HOSTS: + ubuntu-server-10044-x64: + roles: + - master + platform: ubuntu-10.04-amd64 + box : ubuntu-server-10044-x64-vbox4210-nocm + box_url : http://puppet-vagrant-boxes.puppetlabs.com/ubuntu-server-10044-x64-vbox4210-nocm.box + hypervisor : vagrant +CONFIG: + log_level: debug + type: git diff --git a/spec/acceptance/pin_spec.rb b/spec/acceptance/pin_spec.rb index a38dfa4..09a8d18 100644 --- a/spec/acceptance/pin_spec.rb +++ b/spec/acceptance/pin_spec.rb @@ -1,6 +1,6 @@ require 'spec_helper_acceptance' -describe 'apt::pin define' do +describe 'apt::pin define', :unless => UNSUPPORTED_PLATFORMS.include?(fact('osfamily')) do context 'defaults' do it 'should work with no errors' do pp = <<-EOS diff --git a/spec/acceptance/release_spec.rb b/spec/acceptance/release_spec.rb index 81d7ca0..e7467bf 100644 --- a/spec/acceptance/release_spec.rb +++ b/spec/acceptance/release_spec.rb @@ -1,6 +1,6 @@ require 'spec_helper_acceptance' -describe 'apt::release class' do +describe 'apt::release class', :unless => UNSUPPORTED_PLATFORMS.include?(fact('osfamily')) do context 'release_id' do it 'should work with no errors' do pp = <<-EOS diff --git a/spec/acceptance/unattended_upgrade_spec.rb b/spec/acceptance/unattended_upgrade_spec.rb index a0349d4..6a19f4e 100644 --- a/spec/acceptance/unattended_upgrade_spec.rb +++ b/spec/acceptance/unattended_upgrade_spec.rb @@ -1,6 +1,6 @@ require 'spec_helper_acceptance' -describe 'apt::unattended_upgrades class' do +describe 'apt::unattended_upgrades class', :unless => UNSUPPORTED_PLATFORMS.include?(fact('osfamily')) do context 'defaults' do it 'should work with no errors' do pp = <<-EOS diff --git a/spec/acceptance/unsupported_spec.rb b/spec/acceptance/unsupported_spec.rb new file mode 100644 index 0000000..08dca76 --- /dev/null +++ b/spec/acceptance/unsupported_spec.rb @@ -0,0 +1,10 @@ +require 'spec_helper_acceptance' + +describe 'unsupported distributions and OSes', :if => UNSUPPORTED_PLATFORMS.include?(fact('osfamily')) do + it 'class apt fails' do + pp = <<-EOS + class { 'apt': } + EOS + expect(apply_manifest(pp, :expect_failures => true).stderr).to match(/unsupported/i) + end +end diff --git a/spec/classes/apt_spec.rb b/spec/classes/apt_spec.rb index 5d8a597..0da7d32 100644 --- a/spec/classes/apt_spec.rb +++ b/spec/classes/apt_spec.rb @@ -1,5 +1,6 @@ require 'spec_helper' describe 'apt', :type => :class do + let(:facts) { { :lsbdistid => 'Debian' } } let :default_params do { :disable_keys => :undef, diff --git a/spec/classes/debian_testing_spec.rb b/spec/classes/debian_testing_spec.rb index 6006afb..ca55ef6 100644 --- a/spec/classes/debian_testing_spec.rb +++ b/spec/classes/debian_testing_spec.rb @@ -1,5 +1,6 @@ require 'spec_helper' describe 'apt::debian::testing', :type => :class do + let(:facts) { { :lsbdistid => 'Debian' } } it { should contain_apt__source("debian_testing").with({ "location" => "http://debian.mirror.iweb.ca/debian/", diff --git a/spec/classes/debian_unstable_spec.rb b/spec/classes/debian_unstable_spec.rb index 411182d..f5ed455 100644 --- a/spec/classes/debian_unstable_spec.rb +++ b/spec/classes/debian_unstable_spec.rb @@ -1,5 +1,6 @@ require 'spec_helper' describe 'apt::debian::unstable', :type => :class do + let(:facts) { { :lsbdistid => 'Debian' } } it { should contain_apt__source("debian_unstable").with({ "location" => "http://debian.mirror.iweb.ca/debian/", diff --git a/spec/classes/params_spec.rb b/spec/classes/params_spec.rb index f2790b0..2d3ec3c 100644 --- a/spec/classes/params_spec.rb +++ b/spec/classes/params_spec.rb @@ -1,5 +1,6 @@ require 'spec_helper' describe 'apt::params', :type => :class do + let(:facts) { { :lsbdistid => 'Debian' } } let (:title) { 'my_package' } it { should contain_apt__params } diff --git a/spec/classes/release_spec.rb b/spec/classes/release_spec.rb index 31252b9..e43f449 100644 --- a/spec/classes/release_spec.rb +++ b/spec/classes/release_spec.rb @@ -1,5 +1,6 @@ require 'spec_helper' describe 'apt::release', :type => :class do + let(:facts) { { :lsbdistid => 'Debian' } } let (:title) { 'my_package' } let :param_set do diff --git a/spec/classes/unattended_upgrades_spec.rb b/spec/classes/unattended_upgrades_spec.rb index e83c6e4..f5cad53 100644 --- a/spec/classes/unattended_upgrades_spec.rb +++ b/spec/classes/unattended_upgrades_spec.rb @@ -2,6 +2,7 @@ require 'spec_helper' describe 'apt::unattended_upgrades', :type => :class do let(:file_unattended) { '/etc/apt/apt.conf.d/50unattended-upgrades' } let(:file_periodic) { '/etc/apt/apt.conf.d/10periodic' } + let(:facts) { { :lsbdistid => 'Debian' } } it { should contain_package("unattended-upgrades") } diff --git a/spec/defines/builddep_spec.rb b/spec/defines/builddep_spec.rb index 4e2b698..a0cbaa4 100644 --- a/spec/defines/builddep_spec.rb +++ b/spec/defines/builddep_spec.rb @@ -1,6 +1,7 @@ require 'spec_helper' describe 'apt::builddep', :type => :define do + let(:facts) { { :lsbdistid => 'Debian' } } let(:title) { 'my_package' } describe "should require apt-get update" do diff --git a/spec/defines/conf_spec.rb b/spec/defines/conf_spec.rb index 5a81b51..cda5900 100644 --- a/spec/defines/conf_spec.rb +++ b/spec/defines/conf_spec.rb @@ -1,5 +1,6 @@ require 'spec_helper' describe 'apt::conf', :type => :define do + let(:facts) { { :lsbdistid => 'Debian' } } let :title do 'norecommends' end diff --git a/spec/defines/force_spec.rb b/spec/defines/force_spec.rb index 84231fa..0d3d6e5 100644 --- a/spec/defines/force_spec.rb +++ b/spec/defines/force_spec.rb @@ -1,5 +1,6 @@ require 'spec_helper' describe 'apt::force', :type => :define do + let(:facts) { { :lsbdistid => 'Debian' } } let :pre_condition do 'include apt::params' end diff --git a/spec/defines/key_spec.rb b/spec/defines/key_spec.rb index aea197a..4ba7b87 100644 --- a/spec/defines/key_spec.rb +++ b/spec/defines/key_spec.rb @@ -1,5 +1,6 @@ require 'spec_helper' describe 'apt::key', :type => :define do + let(:facts) { { :lsbdistid => 'Debian' } } let :title do '8347A27F' end diff --git a/spec/defines/pin_spec.rb b/spec/defines/pin_spec.rb index 179a2f3..5d3d312 100644 --- a/spec/defines/pin_spec.rb +++ b/spec/defines/pin_spec.rb @@ -1,5 +1,6 @@ require 'spec_helper' describe 'apt::pin', :type => :define do + let(:facts) { { :lsbdistid => 'Debian' } } let(:title) { 'my_pin' } let :default_params do @@ -12,21 +13,21 @@ describe 'apt::pin', :type => :define do } end - [ + [ { :params => {}, :content => "# my_pin\nExplanation: : my_pin\nPackage: *\nPin: release a=my_pin\nPin-Priority: 0\n" }, { :params => { - :packages => 'apache', + :packages => 'apache', :priority => '1' }, :content => "# my_pin\nExplanation: : my_pin\nPackage: apache\nPin: release a=my_pin\nPin-Priority: 1\n" }, { :params => { - :order => 50, - :packages => 'apache', + :order => 50, + :packages => 'apache', :priority => '1' }, :content => "# my_pin\nExplanation: : my_pin\nPackage: apache\nPin: release a=my_pin\nPin-Priority: 1\n" diff --git a/spec/defines/ppa_spec.rb b/spec/defines/ppa_spec.rb index dc1173b..0c3bd75 100644 --- a/spec/defines/ppa_spec.rb +++ b/spec/defines/ppa_spec.rb @@ -1,20 +1,28 @@ require 'spec_helper' describe 'apt::ppa', :type => :define do - [ { :lsbdistrelease => '11.04', + [ + { + :lsbdistrelease => '11.04', :lsbdistcodename => 'natty', :operatingsystem => 'Ubuntu', - :package => 'python-software-properties'}, - { :lsbdistrelease => '12.10', + :lsbdistid => 'Ubuntu', + :package => 'python-software-properties' + }, + { + :lsbdistrelease => '12.10', :lsbdistcodename => 'quantal', :operatingsystem => 'Ubuntu', - :package => 'software-properties-common'}, + :lsbdistid => 'Ubuntu', + :package => 'software-properties-common' + }, ].each do |platform| context "on #{platform[:lsbdistcodename]}" do let :facts do { - :lsbdistrelease => platform[:lsbdistrelease], + :lsbdistrelease => platform[:lsbdistrelease], :lsbdistcodename => platform[:lsbdistcodename], :operatingsystem => platform[:operatingsystem], + :lsbdistid => platform[:lsbdistid], } end let :release do @@ -125,7 +133,8 @@ describe 'apt::ppa', :type => :define do end let :facts do {:lsbdistcodename => '#{platform[:lsbdistcodename]}', - :operatingsystem => 'Ubuntu'} + :operatingsystem => 'Ubuntu', + :lsbdistid => 'Ubuntu'} end let(:title) { "ppa" } let(:release) { "#{platform[:lsbdistcodename]}" } diff --git a/spec/defines/source_spec.rb b/spec/defines/source_spec.rb index 215d1e6..9da8b23 100644 --- a/spec/defines/source_spec.rb +++ b/spec/defines/source_spec.rb @@ -1,5 +1,6 @@ require 'spec_helper' describe 'apt::source', :type => :define do + let(:facts) { { :lsbdistid => 'Debian' } } let :title do 'my_source' end @@ -59,7 +60,7 @@ describe 'apt::source', :type => :define do end let :facts do - {:lsbdistcodename => 'karmic'} + {:lsbdistcodename => 'karmic', :lsbdistid => 'Ubuntu'} end let :params do @@ -160,7 +161,7 @@ describe 'apt::source', :type => :define do let(:default_params) { Hash.new } let(:facts) { Hash.new } it { expect { should raise_error(Puppet::Error) } } - let(:facts) { { :lsbdistcodename => 'lucid' } } + let(:facts) { { :lsbdistcodename => 'lucid', :lsbdistid => 'Ubuntu' } } it { should contain_apt__source(title) } end end diff --git a/spec/spec_helper_acceptance.rb b/spec/spec_helper_acceptance.rb index 55c2fd4..3352564 100644 --- a/spec/spec_helper_acceptance.rb +++ b/spec/spec_helper_acceptance.rb @@ -1,18 +1,19 @@ require 'beaker-rspec' +# Install Puppet unless ENV['RS_PROVISION'] == 'no' hosts.each do |host| - # Install Puppet if host.is_pe? install_pe else - install_package host, 'rubygems' - on host, 'gem install puppet --no-ri --no-rdoc' + install_puppet on host, "mkdir -p #{host['distmoduledir']}" end end end +UNSUPPORTED_PLATFORMS = ['RedHat','Suse','windows','AIX','Solaris'] + RSpec.configure do |c| # Project root proj_root = File.expand_path(File.join(File.dirname(__FILE__), '..'))