(maint) - add back gems removed by pdk update
[puppet-modules/puppetlabs-apt.git] / manifests / update.pp
index 016df7d6af8032dfd32fc7ac85eb40efec9ccbdb..1ea16afe039eb815c79a4fba87807d39d25e0f8f 100644 (file)
@@ -1,8 +1,68 @@
+# @summary Updates the list of available packages using apt-get update.
+#
+# @api private
+#
 class apt::update {
-  include apt::params
+  assert_private()
 
+  #TODO: to catch if $::apt_update_last_success has the value of -1 here. If we
+  #opt to do this, a info/warn would likely be all you'd need likely to happen
+  #on the first run, but if it's not run in awhile something is likely borked
+  #with apt and we'd want to know about it.
+
+  case $::apt::_update['frequency'] {
+    'always': {
+      $_kick_apt = true
+    }
+    'daily': {
+      #compare current date with the apt_update_last_success fact to determine
+      #if we should kick apt_update.
+      $daily_threshold = (Integer(Timestamp().strftime('%s')) - 86400)
+      if $::apt_update_last_success {
+        if $::apt_update_last_success + 0 < $daily_threshold {
+          $_kick_apt = true
+        } else {
+          $_kick_apt = false
+        }
+      } else {
+        #if apt-get update has not successfully run, we should kick apt_update
+        $_kick_apt = true
+      }
+    }
+    'weekly':{
+      #compare current date with the apt_update_last_success fact to determine
+      #if we should kick apt_update.
+      $weekly_threshold = (Integer(Timestamp().strftime('%s')) - 604800)
+      if $::apt_update_last_success {
+        if ( $::apt_update_last_success + 0 < $weekly_threshold ) {
+          $_kick_apt = true
+        } else {
+          $_kick_apt = false
+        }
+      } else {
+        #if apt-get update has not successfully run, we should kick apt_update
+        $_kick_apt = true
+      }
+    }
+    default: {
+      #catches 'reluctantly', and any other value (which should not occur).
+      #do nothing.
+      $_kick_apt = false
+    }
+  }
+
+  if $_kick_apt {
+    $_refresh = false
+  } else {
+    $_refresh = true
+  }
   exec { 'apt_update':
-    command     => "${apt::params::provider} update",
-    refreshonly => true,
+    command     => "${::apt::provider} update",
+    loglevel    => $::apt::_update['loglevel'],
+    logoutput   => 'on_failure',
+    refreshonly => $_refresh,
+    timeout     => $::apt::_update['timeout'],
+    tries       => $::apt::_update['tries'],
+    try_sleep   => 1
   }
 }