diff options
| author | luke <luke@980ebf18-57e1-0310-9a29-db15c13687c0> | 2007-05-14 18:15:03 +0000 |
|---|---|---|
| committer | luke <luke@980ebf18-57e1-0310-9a29-db15c13687c0> | 2007-05-14 18:15:03 +0000 |
| commit | d9f6f418639fb50297a9a0b5415ea57b5f2f303e (patch) | |
| tree | a9caee511a2c88c366117dbfdab379c56a5e0923 /lib | |
| parent | 1934f2baa3a70511e5b91b46b888ade6ab664563 (diff) | |
Fixing the "is" related problems in yum and rpm support, but there are still some package providers that use the "is" method (grep for "\.is[^_a-zA-Z]" in the package providers), and the util/posix.rb module has a call to obj.is. I will fix those soon.
git-svn-id: https://reductivelabs.com/svn/puppet/trunk@2515 980ebf18-57e1-0310-9a29-db15c13687c0
Diffstat (limited to 'lib')
| -rwxr-xr-x | lib/puppet/provider/package/rpm.rb | 22 | ||||
| -rwxr-xr-x | lib/puppet/provider/package/yum.rb | 5 |
2 files changed, 21 insertions, 6 deletions
diff --git a/lib/puppet/provider/package/rpm.rb b/lib/puppet/provider/package/rpm.rb index abd9fa022..eb3a22163 100755 --- a/lib/puppet/provider/package/rpm.rb +++ b/lib/puppet/provider/package/rpm.rb @@ -43,6 +43,16 @@ Puppet::Type.type(:package).provide :rpm do return packages end + # Get rid of our cached values. + def flush + @current_values = {} + end + + def initialize(*args) + super + @current_values = {} + end + # Find the fully versioned package name and the version alone. Returns # a hash with entries :instance => fully versioned package name, and # :ensure => version-release @@ -70,6 +80,8 @@ Puppet::Type.type(:package).provide :rpm do @nvr = hash[:instance] + @current_values = hash + return hash end @@ -89,15 +101,15 @@ Puppet::Type.type(:package).provide :rpm do unless source = @resource[:source] @resource.fail "RPMs must specify a package source" end - if @resource.should(:ensure) == @resource.is(:ensure) || - @resource.should(:ensure) == :latest && @resource.is(:ensure) == latest - # RPM gets pissy if you try to install an already - # installed package + # RPM gets pissy if you try to install an already + # installed package + if @resource.should(:ensure) == @current_values[:ensure] or + @resource.should(:ensure) == :latest && @current_values[:ensure] == latest return end flag = "-i" - if @resource.is(:ensure) != :absent + if @current_values[:ensure] and @current_values[:ensure] != :absent flag = "-U" end diff --git a/lib/puppet/provider/package/yum.rb b/lib/puppet/provider/package/yum.rb index 42dacbcb0..59e9bd6c7 100755 --- a/lib/puppet/provider/package/yum.rb +++ b/lib/puppet/provider/package/yum.rb @@ -37,7 +37,10 @@ Puppet::Type.type(:package).provide :yum, :parent => :rpm do else # Yum didn't find updates, pretend the current # version is the latest - return @resource[:ensure] + unless defined?(@current_values) and @current_values[:ensure] + raise Puppet::DevError, "Tried to get latest on a missing package" + end + return @current_values[:ensure] end end |
