Merge pull request #83 from dalen/pin_order
authorBranan Purvine-Riley <branan@puppetlabs.com>
Thu, 18 Oct 2012 23:45:15 +0000 (16:45 -0700)
committerBranan Purvine-Riley <branan@puppetlabs.com>
Thu, 18 Oct 2012 23:45:15 +0000 (16:45 -0700)
(#16070) Allow optional order parameter to apt::pin

manifests/pin.pp
spec/defines/pin_spec.rb

index 3dadae6481ddf3c90c661e14b77964a765ba4a73..cebc6e7b0da2c390092324ad7c32c5e236dab641 100644 (file)
@@ -3,6 +3,7 @@
 
 define apt::pin(
   $ensure     = present,
+  $order      = '',
   $packages   = '*',
   $priority   = 0,
   $release    = '',
@@ -15,6 +16,10 @@ define apt::pin(
 
   $preferences_d = $apt::params::preferences_d
 
+  if $order != '' and !is_integer($order) {
+    fail('Only integers are allowed in the apt::pin order param')
+  }
+
   if $release != '' {
     $pin = "release a=${release}"
   } elsif $origin != '' {
@@ -27,9 +32,13 @@ define apt::pin(
     $pin = "release a=${name}"
   }
 
+  $path = $order ? {
+    ''      => "${preferences_d}/${name}.pref",
+    default => "${preferences_d}/${order}-${name}.pref",
+  }
   file { "${name}.pref":
     ensure  => $ensure,
-    path    => "${preferences_d}/${name}.pref",
+    path    => $path,
     owner   => root,
     group   => root,
     mode    => '0644',
index bfa0126030abdddde3f8802af4ed34f531b97056..cd269d3b8bb11b3deff3831df99be63b5d877da8 100644 (file)
@@ -5,6 +5,7 @@ describe 'apt::pin', :type => :define do
   let :default_params do
     {
       :ensure   => 'present',
+      :order    => '',
       :packages => '*',
       :priority => '0',
       :release  => nil
@@ -16,6 +17,11 @@ describe 'apt::pin', :type => :define do
       :packages  => 'apache',
       :priority  => '1'
     },
+    {
+      :order     => 50,
+      :packages  => 'apache',
+      :priority  => '1'
+    },
     {
       :ensure    => 'absent',
       :packages  => 'apache',
@@ -40,7 +46,7 @@ describe 'apt::pin', :type => :define do
 
       it { should contain_file("#{title}.pref").with({
           'ensure'  => param_hash[:ensure],
-          'path'    => "/etc/apt/preferences.d/#{title}.pref",
+          'path'    => "/etc/apt/preferences.d/#{param_hash[:order] == '' ? "" : "#{param_hash[:order]}-"}#{title}.pref",
           'owner'   => 'root',
           'group'   => 'root',
           'mode'    => '0644',