apt::params: Complete $xfacts.
[puppet-modules/puppetlabs-apt.git] / manifests / params.pp
index d33a401fe6df214ff93c85bccb83635ed7e27e1b..42dd6b01290bae1783aadccaaae56eb84708f572 100644 (file)
 class apt::params {
+
+  if defined('$caller_module_name') and $caller_module_name and $caller_module_name != $module_name {
+    fail('apt::params is a private class and cannot be accessed directly')
+  }
+
+  if $::osfamily != 'Debian' {
+    fail('This module only works on Debian or derivatives like Ubuntu')
+  }
+
+  # Strict variables facts lookup compatibility
+  $xfacts = {
+    'lsbdistcodename' => defined('$lsbdistcodename') ? {
+      true    => $::lsbdistcodename,
+      default => undef,
+    },
+    'lsbdistrelease' => defined('$lsbdistrelease') ? {
+      true    => $::lsbdistrelease,
+      default => undef,
+    },
+    'lsbmajdistrelease' => defined('$lsbmajdistrelease') ? {
+      true    => $::lsbmajdistrelease,
+      default => undef,
+    },
+    'lsbdistdescription' => defined('$lsbdistdescription') ? {
+      true    => $::lsbdistdescription,
+      default => undef,
+    },
+    'lsbminordistrelease' => defined('$lsbminordistrelease') ? {
+      true    => $::lsbminordistrelease,
+      default => undef,
+    },
+    'lsbdistid' => defined('$lsbdistid') ? {
+      true    => $::lsbdistid,
+      default => undef,
+    },
+  }
+
   $root           = '/etc/apt'
   $provider       = '/usr/bin/apt-get'
+  $sources_list   = "${root}/sources.list"
   $sources_list_d = "${root}/sources.list.d"
-  $apt_conf_d     = "${root}/apt.conf.d"
+  $conf_d         = "${root}/apt.conf.d"
+  $preferences    = "${root}/preferences"
   $preferences_d  = "${root}/preferences.d"
+  $keyserver      = 'keyserver.ubuntu.com'
+
+  $config_files = {
+    'conf'   => {
+      'path' => $conf_d,
+      'ext'  => '',
+    },
+    'pref'   => {
+      'path' => $preferences_d,
+      'ext'  => '',
+    },
+    'list'   => {
+      'path' => $sources_list_d,
+      'ext'  => '.list',
+    }
+  }
+
+  $update_defaults = {
+    'always'    => false,
+    'frequency' => 'reluctantly',
+    'timeout'   => undef,
+    'tries'     => undef,
+  }
+
+  $proxy_defaults = {
+    'host'  => undef,
+    'port'  => 8080,
+    'https' => false,
+  }
 
-  case $::lsbdistid {
+  $purge_defaults = {
+    'sources.list'   => true,
+    'sources.list.d' => true,
+    'preferences'    => true,
+    'preferences.d'  => true,
+  }
+
+  $source_key_defaults = {
+    'server'  => $keyserver,
+    'options' => undef,
+    'content' => undef,
+    'source'  => undef,
+  }
+
+  case $xfacts['lsbdistid'] {
     'ubuntu', 'debian': {
-      $distid = $::lsbdistid
-      $distcodename = $::lsbdistcodename
+      $distid = $xfacts['lsbdistid']
+      $distcodename = $xfacts['lsbdistcodename']
     }
     'linuxmint': {
-      if $::lsbdistcodename == 'debian' {
+      if $xfacts['lsbdistcodename'] == 'debian' {
         $distid = 'debian'
         $distcodename = 'wheezy'
       } else {
         $distid = 'ubuntu'
-        $distcodename = $::lsbdistcodename ? {
+        $distcodename = $xfacts['lsbdistcodename'] ? {
           'qiana'  => 'trusty',
           'petra'  => 'saucy',
           'olivia' => 'raring',
@@ -25,7 +107,7 @@ class apt::params {
         }
       }
     }
-    '': {
+    undef: {
       fail('Unable to determine lsbdistid, is lsb-release installed?')
     }
     default: {
@@ -33,48 +115,29 @@ class apt::params {
     }
   }
   case $distid {
-    'debian': {
-      case $distcodename {
-        'squeeze': {
-          $backports_location = 'http://backports.debian.org/debian-backports'
-          $legacy_origin       = true
-          $origins             = ['${distro_id} oldstable', #lint:ignore:single_quote_string_with_variables
-                                  '${distro_id} ${distro_codename}-security', #lint:ignore:single_quote_string_with_variables
-                                  '${distro_id} ${distro_codename}-lts'] #lint:ignore:single_quote_string_with_variables
-        }
-        'wheezy': {
-          $backports_location = 'http://ftp.debian.org/debian/'
-          $legacy_origin      = false
-          $origins            = ['origin=Debian,archive=stable,label=Debian-Security']
-        }
-        default: {
-          $backports_location = 'http://http.debian.net/debian/'
-          $legacy_origin      = false
-          $origins            = ['origin=Debian,archive=stable,label=Debian-Security']
-        }
-      }
-    }
     'ubuntu': {
       case $distcodename {
         'lucid': {
-          $backports_location = 'http://us.archive.ubuntu.com/ubuntu'
           $ppa_options        = undef
-          $legacy_origin      = true
-          $origins            = ['${distro_id} ${distro_codename}-security'] #lint:ignore:single_quote_string_with_variables
+          $ppa_package        = 'python-software-properties'
         }
-        'precise', 'trusty': {
-          $backports_location = 'http://us.archive.ubuntu.com/ubuntu'
+        'precise': {
           $ppa_options        = '-y'
-          $legacy_origin      = true
-          $origins            = ['${distro_id}:${distro_codename}-security'] #lint:ignore:single_quote_string_with_variables
+          $ppa_package        = 'python-software-properties'
+        }
+        'trusty', 'utopic', 'vivid': {
+          $ppa_options        = '-y'
+          $ppa_package        = 'software-properties-common'
         }
         default: {
-          $backports_location = 'http://old-releases.ubuntu.com/ubuntu'
           $ppa_options        = '-y'
-          $legacy_origin      = true
-          $origins            = ['${distro_id}:${distro_codename}-security'] #lint:ignore:single_quote_string_with_variables
+          $ppa_package        = 'software-properties-common'
         }
       }
     }
+    '', default: {
+      $ppa_options = undef
+      $ppa_package = undef
+    }
   }
 }