diff options
author | Matt Robinson <matt@puppetlabs.com> | 2010-11-23 11:18:23 -0800 |
---|---|---|
committer | Matt Robinson <matt@puppetlabs.com> | 2010-11-23 11:18:23 -0800 |
commit | e00c582c8977a02200b86f18ccc6debf30abdfed (patch) | |
tree | d22579d01f07691f61d5969554cf3549f1eed56c /lib/puppet | |
parent | 3d2fbf604f997e6b9fd94edb96419ffa9869e709 (diff) | |
parent | 9ccd29f3aacdab03f2ea9a693b5bca928439683b (diff) | |
download | puppet-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-x | lib/puppet/provider/package/yum.rb | 9 |
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 |