diff options
| author | luke <luke@980ebf18-57e1-0310-9a29-db15c13687c0> | 2006-08-23 03:30:49 +0000 |
|---|---|---|
| committer | luke <luke@980ebf18-57e1-0310-9a29-db15c13687c0> | 2006-08-23 03:30:49 +0000 |
| commit | 8fcec23c16eb3698a2549c9b668f0e40ad84d082 (patch) | |
| tree | ab7b53bf800a15dd3d4e15ef54988781c8ccd7f5 /lib | |
| parent | 9576d1dda88bd14490b91f7aee0dbaee28969f79 (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-x | lib/puppet/provider/package/rpm.rb | 7 | ||||
| -rw-r--r-- | lib/puppet/provider/package/up2date.rb | 56 |
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$ |
