summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorluke <luke@980ebf18-57e1-0310-9a29-db15c13687c0>2007-05-14 18:15:03 +0000
committerluke <luke@980ebf18-57e1-0310-9a29-db15c13687c0>2007-05-14 18:15:03 +0000
commitd9f6f418639fb50297a9a0b5415ea57b5f2f303e (patch)
treea9caee511a2c88c366117dbfdab379c56a5e0923 /lib
parent1934f2baa3a70511e5b91b46b888ade6ab664563 (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-xlib/puppet/provider/package/rpm.rb22
-rwxr-xr-xlib/puppet/provider/package/yum.rb5
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