summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorluke <luke@980ebf18-57e1-0310-9a29-db15c13687c0>2006-08-23 03:30:49 +0000
committerluke <luke@980ebf18-57e1-0310-9a29-db15c13687c0>2006-08-23 03:30:49 +0000
commit8fcec23c16eb3698a2549c9b668f0e40ad84d082 (patch)
treeab7b53bf800a15dd3d4e15ef54988781c8ccd7f5 /lib
parent9576d1dda88bd14490b91f7aee0dbaee28969f79 (diff)
Adding up2date support, as submitted by Kostas Georgiou (with some modifications to support providers).
git-svn-id: https://reductivelabs.com/svn/puppet/trunk@1486 980ebf18-57e1-0310-9a29-db15c13687c0
Diffstat (limited to 'lib')
-rwxr-xr-xlib/puppet/provider/package/rpm.rb7
-rw-r--r--lib/puppet/provider/package/up2date.rb56
2 files changed, 60 insertions, 3 deletions
diff --git a/lib/puppet/provider/package/rpm.rb b/lib/puppet/provider/package/rpm.rb
index 25ae0385b..b82700770 100755
--- a/lib/puppet/provider/package/rpm.rb
+++ b/lib/puppet/provider/package/rpm.rb
@@ -106,9 +106,10 @@ Puppet::Type.type(:package).provide :rpm do
def uninstall
cmd = "#{command(:rpm)} -e %s" % @model[:name]
- output = %x{#{cmd}}
- if $? != 0
- raise output
+ begin
+ output = execute(cmd)
+ rescue Puppet::ExecutionFailure
+ raise Puppet::PackageError.new(output)
end
end
diff --git a/lib/puppet/provider/package/up2date.rb b/lib/puppet/provider/package/up2date.rb
new file mode 100644
index 000000000..51c01317e
--- /dev/null
+++ b/lib/puppet/provider/package/up2date.rb
@@ -0,0 +1,56 @@
+Puppet.type(:package).provide :up2date, :parent => :rpm do
+ desc "Support for Red Hat's proprietary ``up2date`` package update
+ mechanism."
+
+ commands :up2date => "/usr/sbin/up2date-nox"
+
+ # Install a package using 'up2date'.
+ def install
+ cmd = "#{command(:up2date)} -u %s" % @model[:name]
+
+ begin
+ output = execute(cmd)
+ rescue Puppet::ExecutionFailure
+ raise Puppet::PackageError.new(output)
+ end
+
+ #@states[:ensure].retrieve
+ #if @states[:ensure].is == :absent
+ unless self.query
+ raise Puppet::PackageError.new(
+ "Could not find package %s" % self.name
+ )
+ end
+ end
+
+ # What's the latest package version available?
+ def latest
+ #up2date can only get a list of *all* available packages?
+ #cmd = "/usr/sbib/up2date-nox --show-available %s" % self[:name]
+ cmd = "#{command(:up2date)} --show-available"
+ begin
+ output = execute(cmd)
+ rescue Puppet::ExecutionFailure
+ raise Puppet::PackageError.new(output)
+ end
+
+ if output =~ /#{@model[:name]}-(\d+.*)\.\w+/
+ return $1
+ else
+ # up2date didn't find updates, pretend the current
+ # version is the latest
+ return @model[:version]
+ end
+ end
+
+ def update
+ # Install in up2date can be used for update, too
+ self.install
+ end
+
+ def versionable?
+ false
+ end
+end
+
+# $Id$