(FM-7316) - i18n Process implemented and .pot file generated
[puppet-modules/puppetlabs-apt.git] / manifests / backports.pp
index ff8cb44b972d56e145d7a6cb0cf8bd0878dc77b5..8555cb0f7a2c68455fbab71b18ee122f5a14bc67 100644 (file)
@@ -1,82 +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',
-      }
-    }
-  } else {
-    $distid = $::lsbdistid
-    $release_real = downcase($release)
+  if $release {
+    $_release = $release
   }
-
-  $key = $distid ? {
-    'debian' => 'A1BD8E9D78F7FE5C3E65D8AF8B48AD6246925553',
-    'ubuntu' => '630239CC130E1A7FD81A27B140976EAF437D05B5',
+  if $repos {
+    $_repos = $repos
+  }
+  if $key {
+    $_key = $key
   }
-  $repos = $distid ? {
-    'debian' => 'main contrib non-free',
-    'ubuntu' => 'main universe multiverse restricted',
+  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 {
+    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'))
+    }
   }
 
-  apt::pin { 'backports':
-    before   => Apt::Source['backports'],
-    release  => "${release_real}-backports",
-    priority => $pin_priority,
+  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',
+    location => $_location,
+    release  => $_release,
+    repos    => $_repos,
+    key      => $_key,
+    pin      => $_pin,
   }
 }