Merge pull request #83 from dalen/pin_order
[puppet-modules/puppetlabs-apt.git] / manifests / pin.pp
1 # pin.pp
2 # pin a release in apt, useful for unstable repositories
3
4 define apt::pin(
5   $ensure     = present,
6   $order      = '',
7   $packages   = '*',
8   $priority   = 0,
9   $release    = '',
10   $origin     = '',
11   $originator = '',
12   $version    = ''
13 ) {
14
15   include apt::params
16
17   $preferences_d = $apt::params::preferences_d
18
19   if $order != '' and !is_integer($order) {
20     fail('Only integers are allowed in the apt::pin order param')
21   }
22
23   if $release != '' {
24     $pin = "release a=${release}"
25   } elsif $origin != '' {
26     $pin = "origin \"${origin}\""
27   } elsif $originator != '' {
28     $pin = "release o=${originator}"
29   } elsif $version != '' {
30     $pin = "version ${version}"
31   } else {
32     $pin = "release a=${name}"
33   }
34
35   $path = $order ? {
36     ''      => "${preferences_d}/${name}.pref",
37     default => "${preferences_d}/${order}-${name}.pref",
38   }
39   file { "${name}.pref":
40     ensure  => $ensure,
41     path    => $path,
42     owner   => root,
43     group   => root,
44     mode    => '0644',
45     content => template('apt/pin.pref.erb'),
46   }
47 }