X-Git-Url: https://review.fuel-infra.org/gitweb?a=blobdiff_plain;f=manifests%2Fpin.pp;h=dff2c297c0c08b3d6f353e69a1d88732dbc904a2;hb=3f6863ac4c97f834bebc811852452b073d202682;hp=2ce81fd6bb292fce2eae61e60bf82b2e01bfa048;hpb=1891912f8472da66d9d227f7392b601a24b2f32f;p=puppet-modules%2Fpuppetlabs-apt.git diff --git a/manifests/pin.pp b/manifests/pin.pp index 2ce81fd..dff2c29 100644 --- a/manifests/pin.pp +++ b/manifests/pin.pp @@ -3,8 +3,8 @@ define apt::pin( $ensure = present, - $explanation = "${caller_module_name}: ${name}", - $order = '', + $explanation = undef, + $order = 50, $packages = '*', $priority = 0, $release = '', # a= @@ -16,15 +16,20 @@ define apt::pin( $originator = '', # o= $label = '' # l= ) { - - include apt::params - - $preferences_d = $apt::params::preferences_d - - if $order != '' and !is_integer($order) { + if $order and !is_integer($order) { fail('Only integers are allowed in the apt::pin order param') } + if $explanation { + $_explanation = $explanation + } else { + if defined('$caller_module_name') { # strict vars check + $_explanation = "${caller_module_name}: ${name}" + } else { + $_explanation = ": ${name}" + } + } + $pin_release_array = [ $release, $codename, @@ -35,7 +40,7 @@ define apt::pin( $pin_release = join($pin_release_array, '') # Read the manpage 'apt_preferences(5)', especially the chapter - # 'Thea Effect of APT Preferences' to understand the following logic + # 'The Effect of APT Preferences' to understand the following logic # and the difference between specific and general form if is_array($packages) { $packages_string = join($packages, ' ') @@ -44,27 +49,19 @@ define apt::pin( } if $packages_string != '*' { # specific form - if ( $pin_release != '' and ( $origin != '' or $version != '' )) or - ( $origin != '' and ( $pin_release != '' or $version != '' )) or ( $version != '' and ( $pin_release != '' or $origin != '' )) { fail('parameters release, origin, and version are mutually exclusive') } - } else { # general form - if $version != '' { fail('parameter version cannot be used in general form') } - - if ( $pin_release != '' and $origin != '' ) or - ( $origin != '' and $pin_release != '' ) { - fail('parmeters release and origin are mutually exclusive') + if ( $pin_release != '' and $origin != '' ) { + fail('parameters release and origin are mutually exclusive') } - } - # According to man 5 apt_preferences: # The files have either no or "pref" as filename extension # and only contain alphanumeric, hyphen (-), underscore (_) and period @@ -74,16 +71,10 @@ define apt::pin( # be silently ignored. $file_name = regsubst($title, '[^0-9a-z\-_\.]', '_', 'IG') - $path = $order ? { - '' => "${preferences_d}/${file_name}.pref", - default => "${preferences_d}/${order}-${file_name}.pref", - } - file { "${file_name}.pref": - ensure => $ensure, - path => $path, - owner => root, - group => root, - mode => '0644', - content => template('apt/pin.pref.erb'), + apt::setting { "pref-${file_name}": + ensure => $ensure, + priority => $order, + content => template('apt/_header.erb', 'apt/pin.pref.erb'), + notify_update => false, } }