X-Git-Url: https://review.fuel-infra.org/gitweb?a=blobdiff_plain;f=manifests%2Fpin.pp;h=21cc3ffdefc0294c0c91c37de474971b94b26869;hb=e7cbcb6c740ca2342d77a32c05c70b30845138b0;hp=40695af5fa8f84eb4cba4a2ca26ebd84b57818d4;hpb=0d32fee292456600f4ad976ed807879463a353c8;p=puppet-modules%2Fpuppetlabs-apt.git diff --git a/manifests/pin.pp b/manifests/pin.pp index 40695af..21cc3ff 100644 --- a/manifests/pin.pp +++ b/manifests/pin.pp @@ -2,18 +2,47 @@ # pin a release in apt, useful for unstable repositories define apt::pin( - $packages = '*', - $priority = 0 + $ensure = present, + $explanation = "${::caller_module_name}: ${name}", + $order = '', + $packages = '*', + $priority = 0, + $release = '', + $origin = '', + $originator = '', + $version = '' ) { include apt::params + $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 != '' { + $pin = "origin \"${origin}\"" + } elsif $originator != '' { + $pin = "release o=${originator}" + } elsif $version != '' { + $pin = "version ${version}" + } else { + $pin = "release a=${name}" + } + + $path = $order ? { + '' => "${preferences_d}/${name}.pref", + default => "${preferences_d}/${order}-${name}.pref", + } file { "${name}.pref": - path => "${apt::params::root}/preferences.d/${name}", - ensure => file, - owner => root, - group => root, - mode => 644, - content => "# ${name}\nPackage: ${packages}\nPin: release a=${name}\nPin-Priority: ${priority}", + ensure => $ensure, + path => $path, + owner => root, + group => root, + mode => '0644', + content => template('apt/pin.pref.erb'), } }