diff options
author | luke <luke@980ebf18-57e1-0310-9a29-db15c13687c0> | 2006-03-06 19:30:20 +0000 |
---|---|---|
committer | luke <luke@980ebf18-57e1-0310-9a29-db15c13687c0> | 2006-03-06 19:30:20 +0000 |
commit | b76004a6feaf101fd0fe9b880f1eb19df850821c (patch) | |
tree | 804ae814871b97141c12a103b1de765c4caa2294 /lib | |
parent | 3c07deb230072ac75c95a1f6806d7c5c1f6af655 (diff) | |
download | puppet-b76004a6feaf101fd0fe9b880f1eb19df850821c.tar.gz puppet-b76004a6feaf101fd0fe9b880f1eb19df850821c.tar.xz puppet-b76004a6feaf101fd0fe9b880f1eb19df850821c.zip |
Fixing yum listing bug, and caching the "latest" value so it is not asked for so many times; this fixes #90.
git-svn-id: https://reductivelabs.com/svn/puppet/trunk@985 980ebf18-57e1-0310-9a29-db15c13687c0
Diffstat (limited to 'lib')
-rw-r--r-- | lib/puppet/type/package.rb | 23 | ||||
-rwxr-xr-x | lib/puppet/type/package/apt.rb | 1 | ||||
-rwxr-xr-x | lib/puppet/type/package/yum.rb | 2 |
3 files changed, 19 insertions, 7 deletions
diff --git a/lib/puppet/type/package.rb b/lib/puppet/type/package.rb index ab16cd86d..9cf7902f5 100644 --- a/lib/puppet/type/package.rb +++ b/lib/puppet/type/package.rb @@ -139,6 +139,9 @@ module Puppet # funky definitions of 'in sync'. def insync? @should ||= [] + + @latest = nil unless defined? @latest + @lateststamp ||= (Time.now.to_i - 1000) # Iterate across all of the should values, and see how they # turn out. @should.each { |should| @@ -155,16 +158,24 @@ module Puppet ) end - begin - latest = @parent.latest - rescue => detail - self.fail "Could not get latest version: %s" % detail + # Don't run 'latest' more than about every 5 minutes + if @latest and ((Time.now.to_i - @lateststamp) / 60) < 5 + #self.debug "Skipping latest check" + else + self.warning "latest: %s, stamp: %s" % + [@latest.inspect, (Time.now.to_i - @lateststamp) / 60] + begin + @latest = @parent.latest + @lateststamp = Time.now.to_i + rescue => detail + self.fail "Could not get latest version: %s" % detail + end end case @is - when latest: + when @latest: return true when :present: - if @parent[:version] == latest + if @parent[:version] == @latest return true end else diff --git a/lib/puppet/type/package/apt.rb b/lib/puppet/type/package/apt.rb index c959503ae..f35abf8ec 100755 --- a/lib/puppet/type/package/apt.rb +++ b/lib/puppet/type/package/apt.rb @@ -30,6 +30,7 @@ module Puppet # What's the latest package version available? def latest cmd = "apt-cache showpkg %s" % self[:name] + self.info "Executing %s" % cmd.inspect output = %x{#{cmd} 2>&1} unless $? == 0 diff --git a/lib/puppet/type/package/yum.rb b/lib/puppet/type/package/yum.rb index bc1ef9bbe..653c3eb01 100755 --- a/lib/puppet/type/package/yum.rb +++ b/lib/puppet/type/package/yum.rb @@ -15,7 +15,7 @@ module Puppet # What's the latest package version available? def latest - cmd = "yum list updates %s" % self[:name] + cmd = "yum list %s" % self[:name] self.info "Executing %s" % cmd.inspect output = %x{#{cmd} 2>&1} |