]> review.fuel-infra Code Review - puppet-modules/puppetlabs-apt.git/commitdiff
Merge pull request #23 from haus/python_properties
authorRyan Coleman <ryan@puppetlabs.com>
Fri, 24 Feb 2012 19:20:52 +0000 (11:20 -0800)
committerRyan Coleman <ryan@puppetlabs.com>
Fri, 24 Feb 2012 19:20:52 +0000 (11:20 -0800)
Check if python-software-properties is defined before attempting to define it.

Reviewed and tested by Ryan Coleman (ryan@puppetlabs.com)

1  2 
manifests/init.pp
spec/classes/apt_spec.rb

diff --combined manifests/init.pp
index ceb8d5ce0bffb38a7bf1bf2fc6b74033819ae25f,0f6bcef6218767de8fd62d3e5785779175c8d4ee..b41d359fbdeb22652a42db531ea387cf9abf05cb
@@@ -3,16 -3,11 +3,16 @@@
  # This module manages the initial configuration of apt.
  #
  # Parameters:
 -#   Both of the parameters listed here are not required in general and were
 +#   The parameters listed here are not required in general and were
  #     added for use cases related to development environments.
  #   disable_keys - disables the requirement for all packages to be signed
  #   always_apt_update - rather apt should be updated on every run (intended
  #     for development environments where package updates are frequent
 +#   purge_sources_list - Accepts true or false. Defaults to false If set to
 +#     true, Puppet will purge all unmanaged entries from sources.list"
 +#   purge_sources_list_d - Accepts true or false. Defaults to false. If set
 +#     to false, Puppet will purge all unmanaged entries from sources.list.d
 +#
  # Actions:
  #
  # Requires:
@@@ -24,20 -19,21 +24,22 @@@ class apt
    $disable_keys = undef,
    $proxy_host = false,
    $proxy_port = '8080',
 -  $purge = false
 +  $purge_sources_list = false,
 +  $purge_sources_list_d = false
  ) {
  
    include apt::params
  
 -  validate_bool($purge)
 +  validate_bool($purge_sources_list, $purge_sources_list_d)
  
    $refresh_only_apt_update = $always_apt_update? {
      true => false,
      false => true
    }
  
-   package { "python-software-properties": }
+   if ! defined(Package["python-software-properties"]) {
+     package { "python-software-properties": }
+   }
  
    file { "sources.list":
      path => "${apt::params::root}/sources.list",
@@@ -45,7 -41,7 +47,7 @@@
      owner => root,
      group => root,
      mode => 644,
 -    content => $purge ? {
 +    content => $purge_sources_list ? {
        false =>  undef,
        true  => "# Repos managed by puppet.\n",
      },
@@@ -56,8 -52,8 +58,8 @@@
      ensure => directory,
      owner => root,
      group => root,
 -    purge => $purge,
 -    recurse => $purge,
 +    purge => $purge_sources_list_d,
 +    recurse => $purge_sources_list_d,
    }
  
    exec { "apt_update":
diff --combined spec/classes/apt_spec.rb
index 6ab1e9e6d64de8186d01b4585dbe0aaeb8bc7ea1,812fa123c7d3e9165b1f9a1660bf47b2de1287aa..71a438e0627780794fdfb47f1fbad687d6ab3fe4
@@@ -4,8 -4,7 +4,8 @@@ describe 'apt', :type => :class d
      {
        :disable_keys => :undef,
        :always_apt_update => false,
 -      :purge => false
 +      :purge_sources_list => false,
 +      :purge_sources_list_d => false,
      }
    end
  
@@@ -15,8 -14,7 +15,8 @@@
        :always_apt_update => true,
        :proxy_host => true,
        :proxy_port => '3128',
 -      :purge => true
 +      :purge_sources_list => true,
 +      :purge_sources_list_d => true,
      },
      {
        :disable_keys => false
@@@ -44,7 -42,7 +44,7 @@@
        it { should contain_package("python-software-properties") }
  
        it {
 -        if param_hash[:purge]
 +        if param_hash[:purge_sources_list]
          should contain_file("sources.list").with({
              'path'    => "/etc/apt/sources.list",
              'ensure'  => "present",
@@@ -65,7 -63,7 +65,7 @@@
          end
        }
        it {
 -        if param_hash[:purge]
 +        if param_hash[:purge_sources_list_d]
            should create_file("sources.list.d").with({
              'path'    => "/etc/apt/sources.list.d",
              'ensure'  => "directory",
        end
      end
    end
+   describe "it should not error if package['python-software-properties'] is already defined" do
+     let(:pre_condition) { 'package { "python-software-properties": }->Class["Apt"]' }
+     it { should contain_package("python-software-properties") }
+   end
  end