summaryrefslogtreecommitdiffstats
path: root/lib/puppet
diff options
context:
space:
mode:
authorMatt Robinson <matt@puppetlabs.com>2010-11-23 11:18:23 -0800
committerMatt Robinson <matt@puppetlabs.com>2010-11-23 11:18:23 -0800
commite00c582c8977a02200b86f18ccc6debf30abdfed (patch)
treed22579d01f07691f61d5969554cf3549f1eed56c /lib/puppet
parent3d2fbf604f997e6b9fd94edb96419ffa9869e709 (diff)
parent9ccd29f3aacdab03f2ea9a693b5bca928439683b (diff)
downloadpuppet-e00c582c8977a02200b86f18ccc6debf30abdfed.tar.gz
puppet-e00c582c8977a02200b86f18ccc6debf30abdfed.tar.xz
puppet-e00c582c8977a02200b86f18ccc6debf30abdfed.zip
Merge branch 'ticket/next/2866' into next
* ticket/next/2866: (#2866) yum should support downgrade. (#4711) Provide unit tests for yum package provider.
Diffstat (limited to 'lib/puppet')
-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