(#12522) Adding purge option to apt class
authorWilliam Van Hevelingen <blkperl@cat.pdx.edu>
Wed, 8 Feb 2012 19:40:09 +0000 (11:40 -0800)
committerWilliam Van Hevelingen <blkperl@cat.pdx.edu>
Tue, 14 Feb 2012 18:51:56 +0000 (10:51 -0800)
Adds a purge option to the apt class to remove repositories
that are not managed by apt::source

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

index 8d266b8b17a8e8359b36e0c10bf816ad9203a60c..b0acdd0927f60de80bd6abfc0236fa4bea37ae32 100644 (file)
 # 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":
index 1c7c18f4c2b6bdc1e1ee8faf858126212da903a1..294892f3244b95983533d315bedd818a85c0ea8a 100644 (file)
@@ -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 {