X-Git-Url: https://review.fuel-infra.org/gitweb?a=blobdiff_plain;f=manifests%2Fupdate.pp;h=a9f2486b16bf87e9ad3f1f9143936a8ab45cdee3;hb=refs%2Fheads%2Fpdksync_CONT-844-update_.sync.yml;hp=e9b9ea9554b941bf0e1757ac034d9b3114108c89;hpb=9d208034577f49fcfe71d9d142e36245d257773e;p=puppet-modules%2Fpuppetlabs-apt.git diff --git a/manifests/update.pp b/manifests/update.pp index e9b9ea9..a9f2486 100644 --- a/manifests/update.pp +++ b/manifests/update.pp @@ -1,9 +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 $facts['apt_update_last_success'] { + if $facts['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 $facts['apt_update_last_success'] { + if $facts['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", + command => "${apt::provider} update", + loglevel => $apt::_update['loglevel'], logoutput => 'on_failure', - refreshonly => true, + refreshonly => $_refresh, + timeout => $apt::_update['timeout'], + tries => $apt::_update['tries'], + try_sleep => 1, } }