Browse Source

Merge pull request #20 from blkperl/ticket_12522_purge_option

(#12522) Adding purge option to apt class

Reviewed by Ryan Coleman
Ryan Coleman 12 years ago
parent
commit
c09f476b9d
3 changed files with 63 additions and 17 deletions
  1. 11 0
      Modulefile
  2. 11 2
      manifests/init.pp
  3. 41 15
      spec/classes/apt_spec.rb

+ 11 - 0
Modulefile

@@ -0,0 +1,11 @@
+name    'puppet-apt'
+version '0.0.1'
+source 'https://github.com/puppetlabs/puppet-apt'
+author 'Evolving Web / Puppet Labs'
+license 'Apache License 2.0'
+summary 'Apt Module for Puppet'
+description 'APT Module for Puppet'
+project_page 'https://github.com/puppetlabs/puppet-apt'
+
+## Add dependencies, if any:
+dependency 'puppetlabs/stdlib', '>= 2.2.1'

+ 11 - 2
manifests/init.pp

@@ -15,14 +15,17 @@
 # Sample Usage:
 #  class { 'apt': }
 class apt(
-  $disable_keys = false,
   $always_apt_update = false,
+  $disable_keys = false,
   $proxy_host = false,
-  $proxy_port = '8080'
+  $proxy_port = '8080',
+  $purge = false
 ) {
 
   include apt::params
 
+  validate_bool($purge)
+
   $refresh_only_apt_update = $always_apt_update? {
     true => false,
     false => true
@@ -36,6 +39,10 @@ class apt(
     owner => root,
     group => root,
     mode => 644,
+    content => $purge ? {
+      false =>  undef,
+      true  => "# Repos managed by puppet.\n",
+    },
   }
 
   file { "sources.list.d":
@@ -43,6 +50,8 @@ class apt(
     ensure => directory,
     owner => root,
     group => root,
+    purge => $purge,
+    recurse => $purge,
   }
 
   exec { "apt_update":

+ 41 - 15
spec/classes/apt_spec.rb

@@ -3,7 +3,8 @@ describe 'apt', :type => :class do
   let :default_params do
     {
       :disable_keys => false,
-      :always_apt_update => false
+      :always_apt_update => false,
+      :purge => false
     }
   end
 
@@ -12,7 +13,8 @@ describe 'apt', :type => :class do
       :disable_keys => true,
       :always_apt_update => true,
       :proxy_host => true,
-      :proxy_port => '3128'
+      :proxy_port => '3128',
+      :purge => true
     }
   ].each do |param_set|
     describe "when #{param_set == {} ? "using default" : "specifying"} class parameters" do
@@ -37,22 +39,46 @@ describe 'apt', :type => :class do
       it { should contain_package("python-software-properties") }
 
       it {
+        if param_hash[:purge]
         should contain_file("sources.list").with({
-          'path'    => "/etc/apt/sources.list",
-          'ensure'  => "present",
-          'owner'   => "root",
-          'group'   => "root",
-          'mode'    => 644
-        })
+            'path'    => "/etc/apt/sources.list",
+            'ensure'  => "present",
+            'owner'   => "root",
+            'group'   => "root",
+            'mode'    => 644,
+            "content" => "# Repos managed by puppet.\n"
+          })
+        else
+        should contain_file("sources.list").with({
+            'path'    => "/etc/apt/sources.list",
+            'ensure'  => "present",
+            'owner'   => "root",
+            'group'   => "root",
+            'mode'    => 644,
+            'content' => nil
+          })
+        end
       }
-
       it {
-        should create_file("sources.list.d").with({
-          "path"    => "/etc/apt/sources.list.d",
-          "ensure"  => "directory",
-          "owner"   => "root",
-          "group"   => "root"
-        })
+        if param_hash[:purge]
+          should create_file("sources.list.d").with({
+            'path'    => "/etc/apt/sources.list.d",
+            'ensure'  => "directory",
+            'owner'   => "root",
+            'group'   => "root",
+            'purge'   => true,
+            'recurse' => true
+          })
+        else
+          should create_file("sources.list.d").with({
+            'path'    => "/etc/apt/sources.list.d",
+            'ensure'  => "directory",
+            'owner'   => "root",
+            'group'   => "root",
+            'purge'   => false,
+            'recurse' => false
+          })
+        end
       }
 
       it {