Puppet 4 language update
[puppet-modules/puppetlabs-apt.git] / manifests / init.pp
index 5664edeed5220192b10bc1b0974e8ab98f557d78..40a40aff07650e457eabd3d56d1960f33176607a 100644 (file)
@@ -3,19 +3,40 @@
 # Manage APT (Advanced Packaging Tool)
 #
 class apt (
-  $confs    = {},
-  $update   = {},
-  $purge    = {},
-  $proxy    = {},
-  $sources  = {},
-  $keys     = {},
-  $ppas     = {},
-  $pins     = {},
-  $settings = {},
-) inherits ::apt::params {
+  Variant[Hash, Stdlib::Compat::Hash] $update_defaults,
+  Variant[Hash, Stdlib::Compat::Hash] $purge_defaults,
+  Variant[Hash, Stdlib::Compat::Hash] $proxy_defaults,
+  Variant[Hash, Stdlib::Compat::Hash] $include_defaults,
+  Variant[String, Stdlib::Compat::String] $provider,
+  Variant[String, Stdlib::Compat::String] $keyserver,
+  Optional[Variant[String, Stdlib::Compat::String]] $ppa_options,
+  Optional[Variant[String, Stdlib::Compat::String]] $ppa_package,
+  Optional[Variant[Hash, Stdlib::Compat::Hash]] $backports,
+  Variant[Hash, Stdlib::Compat::Hash] $confs                = {},
+  Variant[Hash, Stdlib::Compat::Hash] $update               = {},
+  Variant[Hash, Stdlib::Compat::Hash] $purge                = {},
+  Variant[Hash, Stdlib::Compat::Hash] $proxy                = {},
+  Variant[Hash, Stdlib::Compat::Hash] $sources              = {},
+  Variant[Hash, Stdlib::Compat::Hash] $keys                 = {},
+  Variant[Hash, Stdlib::Compat::Hash] $ppas                 = {},
+  Variant[Hash, Stdlib::Compat::Hash] $pins                 = {},
+  Variant[Hash, Stdlib::Compat::Hash] $settings             = {},
+  Variant[String, Stdlib::Compat::String] $root             = '/etc/apt',
+  Variant[String, Stdlib::Compat::String] $sources_list     = "${root}/sources.list",
+  Variant[String, Stdlib::Compat::String] $sources_list_d   = "${root}/sources.list.d",
+  Variant[String, Stdlib::Compat::String] $conf_d           = "${root}/apt.conf.d",
+  Variant[String, Stdlib::Compat::String] $preferences      = "${root}/preferences",
+  Variant[String, Stdlib::Compat::String] $preferences_d    = "${root}/preferences.d",
+  Variant[Hash, Stdlib::Compat::Hash] $config_files         = { conf => { path => $conf_d, ext => '' }, pref => { path => $preferences_d, ext => '.pref' }, list => { path => $sources_list_d, ext => '.list' } },
+  Variant[Hash, Stdlib::Compat::Hash] $source_key_defaults  = { 'server' => $keyserver, 'options' => undef, 'content' => undef, 'source' => undef },
+) {
+
+  if $facts['osfamily'] != 'Debian' {
+    fail('This module only works on Debian or derivatives like Ubuntu')
+  }
 
   $frequency_options = ['always','daily','weekly','reluctantly']
-  validate_hash($update)
+  validate_legacy(Hash, 'validate_hash', $update)
   if $update['frequency'] {
     validate_re($update['frequency'], $frequency_options)
   }
@@ -33,18 +54,18 @@ class apt (
   $_update = merge($::apt::update_defaults, $update)
   include ::apt::update
 
-  validate_hash($purge)
+  validate_legacy(Hash, 'validate_hash', $purge)
   if $purge['sources.list'] {
-    validate_bool($purge['sources.list'])
+    validate_legacy(Boolean, 'validate_bool', $purge['sources.list'])
   }
   if $purge['sources.list.d'] {
-    validate_bool($purge['sources.list.d'])
+    validate_legacy(Boolean, 'validate_bool', $purge['sources.list.d'])
   }
   if $purge['preferences'] {
-    validate_bool($purge['preferences'])
+    validate_legacy(Boolean, 'validate_bool', $purge['preferences'])
   }
   if $purge['preferences.d'] {
-    validate_bool($purge['preferences.d'])
+    validate_legacy(Boolean, 'validate_bool', $purge['preferences.d'])
   }
 
   $_purge = merge($::apt::purge_defaults, $purge)
@@ -54,7 +75,7 @@ class apt (
     validate_re($proxy['ensure'], ['file', 'present', 'absent'])
   }
   if $proxy['host'] {
-    validate_string($proxy['host'])
+    validate_legacy(String, 'validate_string', $proxy['host'])
   }
   if $proxy['port'] {
     unless is_integer($proxy['port']) {
@@ -62,23 +83,27 @@ class apt (
     }
   }
   if $proxy['https'] {
-    validate_bool($proxy['https'])
+    validate_legacy(Boolean, 'validate_bool', $proxy['https'])
   }
 
   $_proxy = merge($apt::proxy_defaults, $proxy)
 
-  validate_hash($confs)
-  validate_hash($sources)
-  validate_hash($keys)
-  validate_hash($settings)
-  validate_hash($ppas)
-  validate_hash($pins)
+  validate_legacy(Hash, 'validate_hash', $confs)
+  validate_legacy(Hash, 'validate_hash', $sources)
+  validate_legacy(Hash, 'validate_hash', $keys)
+  validate_legacy(Hash, 'validate_hash', $settings)
+  validate_legacy(Hash, 'validate_hash', $ppas)
+  validate_legacy(Hash, 'validate_hash', $pins)
+
+  $confheadertmp = epp('apt/_conf_header.epp')
+  $proxytmp = epp('apt/proxy.epp', {'proxies' => $_proxy})
+  $updatestamptmp = epp('apt/15update-stamp.epp')
 
   if $_proxy['ensure'] == 'absent' or $_proxy['host'] {
     apt::setting { 'conf-proxy':
       ensure   => $_proxy['ensure'],
       priority => '01',
-      content  => template('apt/_conf_header.erb', 'apt/proxy.erb'),
+      content  => "${confheadertmp}${proxytmp}",
     }
   }
 
@@ -100,7 +125,7 @@ class apt (
 
   apt::setting { 'conf-update-stamp':
     priority => 15,
-    content  => template('apt/_conf_header.erb', 'apt/15update-stamp.erb'),
+    content  => "${confheadertmp}${updatestamptmp}",
   }
 
   file { 'sources.list':