X-Git-Url: https://review.fuel-infra.org/gitweb?a=blobdiff_plain;f=manifests%2Fbackports.pp;h=8555cb0f7a2c68455fbab71b18ee122f5a14bc67;hb=65904b214d98c899f390ac6908322fc06e3aca13;hp=ee462094d4a1f037b1c0d6a090054fd58313c8c6;hpb=ec3c20e288ec8af8d8955d73c0c41043c29a7684;p=puppet-modules%2Fpuppetlabs-apt.git diff --git a/manifests/backports.pp b/manifests/backports.pp index ee46209..8555cb0 100644 --- a/manifests/backports.pp +++ b/manifests/backports.pp @@ -1,77 +1,60 @@ -# This adds the necessary components to get backports for ubuntu and debian -# -# == Parameters -# -# [*release*] -# The ubuntu/debian release name. Defaults to $lsbdistcodename. Setting this -# manually can cause undefined behavior. (Read: universe exploding) -# -# [*pin_priority*] -# _default_: 200 -# -# The priority that should be awarded by default to all packages coming from -# the Debian Backports project. -# -# == Examples -# -# include apt::backports -# -# class { 'apt::backports': -# release => 'natty', -# } -# -# == Authors -# -# Ben Hughes, I think. At least blame him if this goes wrong. -# I just added puppet doc. -# -# == Copyright -# -# Copyright 2011 Puppet Labs Inc, unless otherwise noted. -class apt::backports( - $release = $::lsbdistcodename, - $location = $::apt::params::backports_location, - $pin_priority = 200, -) inherits apt::params { - - if ! is_integer($pin_priority) { - fail('$pin_priority must be an integer') +# Defining backports for the apt class +class apt::backports ( + Optional[String] $location = undef, + Optional[String] $release = undef, + Optional[String] $repos = undef, + Optional[Variant[String, Hash]] $key = undef, + Optional[Variant[Integer, String, Hash]] $pin = 200, +){ + if $location { + $_location = $location } - - if $::lsbdistid == 'LinuxMint' { - if $::lsbdistcodename == 'debian' { - $distid = 'debian' - $release_real = 'wheezy' - } else { - $distid = 'ubuntu' - $release_real = $::lsbdistcodename ? { - 'qiana' => 'trusty', - 'petra' => 'saucy', - 'olivia' => 'raring', - 'nadia' => 'quantal', - 'maya' => 'precise', - } + if $release { + $_release = $release + } + if $repos { + $_repos = $repos + } + if $key { + $_key = $key + } + if ($facts['lsbdistid'] == 'Debian' or $facts['lsbdistid'] == 'Ubuntu') { + unless $location { + $_location = $::apt::backports['location'] + } + unless $release { + $_release = "${facts['lsbdistcodename']}-backports" + } + unless $repos { + $_repos = $::apt::backports['repos'] + } + unless $key { + $_key = $::apt::backports['key'] } } else { - $distid = $::lsbdistid - $release_real = downcase($release) + unless $location and $release and $repos and $key { + fail(translate('If not on Debian or Ubuntu, you must explicitly pass location, release, repos, and key')) + } } - $key = $distid ? { - 'debian' => '46925553', - 'ubuntu' => '437D05B5', - } - $repos = $distid ? { - 'debian' => 'main contrib non-free', - 'ubuntu' => 'main universe multiverse restricted', + if $pin =~ Hash { + $_pin = $pin + } elsif $pin =~ Numeric or $pin =~ String { + # apt::source defaults to pinning to origin, but we should pin to release + # for backports + $_pin = { + 'priority' => $pin, + 'release' => $_release, + } + } else { + fail(translate('pin must be either a string, number or hash')) } apt::source { 'backports': - location => $location, - release => "${release_real}-backports", - repos => $repos, - key => $key, - key_server => 'pgp.mit.edu', - pin => $pin_priority, + location => $_location, + release => $_release, + repos => $_repos, + key => $_key, + pin => $_pin, } }