Release prep v9.1.0
[puppet-modules/puppetlabs-apt.git] / manifests / backports.pp
index 0fa69586e78089a3e38a867b59b2e4ffcc0be79c..0ef45333d5ae87b3cf7debd89d18b32bdf05432a 100644 (file)
@@ -1,18 +1,18 @@
 # @summary Manages backports.
 #
-# @example Set up a backport for linuxmint qiana
-#   apt::backports { 'qiana':
+# @example Set up a backport source for Linux Mint qiana
+#   class { 'apt::backports':
 #     location => 'http://us.archive.ubuntu.com/ubuntu',
 #     release  => 'trusty-backports',
 #     repos    => 'main universe multiverse restricted',
 #     key      => {
 #       id     => '630239CC130E1A7FD81A27B140976EAF437D05B5',
-#       server => 'hkps.pool.sks-keyservers.net',
+#       server => 'keyserver.ubuntu.com',
 #     },
 #   }
 #
 # @param location
-#   Specifies an Apt repository containing the backports to manage. Valid options: a string containing a URL. Default value for Debian and 
+#   Specifies an Apt repository containing the backports to manage. Valid options: a string containing a URL. Default value for Debian and
 #   Ubuntu varies:
 #
 #   - Debian: 'http://deb.debian.org/debian'
 #   - Ubuntu: 'http://archive.ubuntu.com/ubuntu'
 #
 # @param release
-#   Specifies a distribution of the Apt repository containing the backports to manage. Used in populating the `source.list` configuration file. 
-#   Default: on Debian and Ubuntu, '${lsbdistcodename}-backports'. We recommend keeping this default, except on other operating 
+#   Specifies a distribution of the Apt repository containing the backports to manage. Used in populating the `source.list` configuration file.
+#   Default: on Debian and Ubuntu, `${fact('os.distro.codename')}-backports`. We recommend keeping this default, except on other operating
 #   systems.
 #
 # @param repos
-#   Specifies a component of the Apt repository containing the backports to manage. Used in populating the `source.list` configuration file. 
+#   Specifies a component of the Apt repository containing the backports to manage. Used in populating the `source.list` configuration file.
 #   Default value for Debian and Ubuntu varies:
-#   
+#
 #   - Debian: 'main contrib non-free'
 #
 #   - Ubuntu: 'main universe multiverse restricted'
 #
 # @param key
-#   Specifies a key to authenticate the backports. Valid options: a string to be passed to the id parameter of the apt::key defined type, or a 
+#   Specifies a key to authenticate the backports. Valid options: a string to be passed to the id parameter of the apt::key defined type, or a
 #   hash of parameter => value pairs to be passed to apt::key's id, server, content, source, and/or options parameters. Default value
 #   for Debian and Ubuntu varies:
 #
 #   - Ubuntu: '630239CC130E1A7FD81A27B140976EAF437D05B5'
 #
 # @param pin
-#   Specifies a pin priority for the backports. Valid options: a number or string to be passed to the `id` parameter of the `apt::pin` defined 
+#   Specifies a pin priority for the backports. Valid options: a number or string to be passed to the `id` parameter of the `apt::pin` defined
 #   type, or a hash of `parameter => value` pairs to be passed to `apt::pin`'s corresponding parameters.
 #
+# @param include
+#   Specifies whether to include 'deb' or 'src', or both.
+#
 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,
-){
+  Variant[Integer, String, Hash] $pin           = 200,
+  Variant[Hash] $include                        = {},
+) {
+  include apt
+
   if $location {
     $_location = $location
   }
@@ -64,22 +70,26 @@ class apt::backports (
   if $key {
     $_key = $key
   }
-  if (!($facts['lsbdistid'] == 'Debian' or $facts['lsbdistid'] == 'Ubuntu')) {
+  if (!($facts['os']['name'] == 'Debian' or $facts['os']['name'] == 'Ubuntu')) {
     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'))
+      fail('If not on Debian or Ubuntu, you must explicitly pass location, release, repos, and key')
     }
   }
   unless $location {
-    $_location = $::apt::backports['location']
+    $_location = $apt::backports['location']
   }
   unless $release {
-    $_release = "${facts['lsbdistcodename']}-backports"
+    if fact('os.distro.codename') {
+      $_release = "${fact('os.distro.codename')}-backports"
+    } else {
+      fail('os.distro.codename fact not available: release parameter required')
+    }
   }
   unless $repos {
-    $_repos = $::apt::backports['repos']
+    $_repos = $apt::backports['repos']
   }
   unless $key {
-    $_key =  $::apt::backports['key']
+    $_key =  $apt::backports['key']
   }
 
   if $pin =~ Hash {
@@ -92,13 +102,14 @@ class apt::backports (
       'release'  => $_release,
     }
   } else {
-    fail(translate('pin must be either a string, number or hash'))
+    fail('pin must be either a string, number or hash')
   }
 
   apt::source { 'backports':
     location => $_location,
     release  => $_release,
     repos    => $_repos,
+    include  => $include,
     key      => $_key,
     pin      => $_pin,
   }