diff options
| author | Dan Bode <bodepd@gmail.com> | 2010-09-07 18:06:09 -0400 |
|---|---|---|
| committer | Matt Robinson <matt@puppetlabs.com> | 2010-11-23 11:16:48 -0800 |
| commit | 9ccd29f3aacdab03f2ea9a693b5bca928439683b (patch) | |
| tree | d22579d01f07691f61d5969554cf3549f1eed56c /lib/puppet/provider/package | |
| parent | 04389f502787c6569ffcfa89eb63d76c3c63d29c (diff) | |
| download | puppet-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-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 |
