summaryrefslogtreecommitdiffstats
path: root/lib/puppet/provider/package
diff options
context:
space:
mode:
authorDan Bode <bodepd@gmail.com>2010-09-07 18:06:09 -0400
committerMatt Robinson <matt@puppetlabs.com>2010-11-23 11:16:48 -0800
commit9ccd29f3aacdab03f2ea9a693b5bca928439683b (patch)
treed22579d01f07691f61d5969554cf3549f1eed56c /lib/puppet/provider/package
parent04389f502787c6569ffcfa89eb63d76c3c63d29c (diff)
downloadpuppet-9ccd29f3aacdab03f2ea9a693b5bca928439683b.tar.gz
puppet-9ccd29f3aacdab03f2ea9a693b5bca928439683b.tar.xz
puppet-9ccd29f3aacdab03f2ea9a693b5bca928439683b.zip
(#2866) yum should support downgrade.
patch originally from Grzegorz Nosek with contributions on the test from Oliver Hookins. checks if the current version is greater than the should version, if so, calls yum downgrade. Reviewed-by: Matt Robinson
Diffstat (limited to 'lib/puppet/provider/package')
-rwxr-xr-xlib/puppet/provider/package/yum.rb9
1 files changed, 8 insertions, 1 deletions
diff --git a/lib/puppet/provider/package/yum.rb b/lib/puppet/provider/package/yum.rb
index fcda5ba8c..6ed966fbd 100755
--- a/lib/puppet/provider/package/yum.rb
+++ b/lib/puppet/provider/package/yum.rb
@@ -1,3 +1,4 @@
+require 'puppet/util/package'
Puppet::Type.type(:package).provide :yum, :parent => :rpm, :source => :rpm do
desc "Support via `yum`."
@@ -52,6 +53,7 @@ Puppet::Type.type(:package).provide :yum, :parent => :rpm, :source => :rpm do
should = @resource.should(:ensure)
self.debug "Ensuring => #{should}"
wanted = @resource[:name]
+ operation = :install
# XXX: We don't actually deal with epochs here.
case should
@@ -61,9 +63,14 @@ Puppet::Type.type(:package).provide :yum, :parent => :rpm, :source => :rpm do
else
# Add the package version
wanted += "-#{should}"
+ is = self.query
+ if is && Puppet::Util::Package.versioncmp(should, is[:ensure]) < 0
+ self.debug "Downgrading package #{@resource[:name]} from version #{is[:ensure]} to #{should}"
+ operation = :downgrade
+ end
end
- output = yum "-d", "0", "-e", "0", "-y", :install, wanted
+ output = yum "-d", "0", "-e", "0", "-y", operation, wanted
is = self.query
raise Puppet::Error, "Could not find package #{self.name}" unless is