summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLuke Kanies <luke@madstop.com>2008-08-20 23:45:02 -0500
committerLuke Kanies <luke@madstop.com>2008-08-20 23:45:02 -0500
commit66c40b374d7315d11575d701ce195ce656abbeb7 (patch)
tree4caafcffd669693fbd601d5b1bd2fd586387fc1e
parentc8190421a351ed327361a5daca82441be39ce834 (diff)
parentc5fb092720afefbf904822a5604b5b3520b5c194 (diff)
downloadpuppet-66c40b374d7315d11575d701ce195ce656abbeb7.tar.gz
puppet-66c40b374d7315d11575d701ce195ce656abbeb7.tar.xz
puppet-66c40b374d7315d11575d701ce195ce656abbeb7.zip
Merge branch '0.24.x'
-rw-r--r--CHANGELOG2
-rw-r--r--Rakefile1
-rwxr-xr-xext/puppetlast2
-rw-r--r--lib/puppet/provider/package/hpux.rb41
-rw-r--r--lib/puppet/util/settings.rb4
-rw-r--r--spec/unit/provider/package/hpux.rb52
6 files changed, 97 insertions, 5 deletions
diff --git a/CHANGELOG b/CHANGELOG
index 33fd47dc9..f93d1aebd 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -8,6 +8,8 @@
set file paths to 'false' to disable the CRL.
0.24.x
+ Fixed #1508 - Added HP-UX package provider
+
Fixed #1502 - Fixed poor stored configuration performance
Fixed #1510 - Storeconfiguration fixed for Rails 2.1
diff --git a/Rakefile b/Rakefile
index 31b857654..4775986bb 100644
--- a/Rakefile
+++ b/Rakefile
@@ -60,6 +60,7 @@ if project.has?(:gem)
'--main' << 'README' <<
'--line-numbers'
task.test_file = "test/Rakefile"
+ task.author = "Luke Kanies"
end
end
diff --git a/ext/puppetlast b/ext/puppetlast
index d9b698cfe..e52529dd7 100755
--- a/ext/puppetlast
+++ b/ext/puppetlast
@@ -10,6 +10,6 @@ Puppet.parse_config
Puppet[:name] = "puppetmasterd"
Puppet::Node::Facts.terminus_class = :yaml
-Puppet::Node::Facts.search("*").sort.each do |node|
+Puppet::Node::Facts.search("*").sort { |a,b| a.name <=> b.name }.each do |node|
puts "#{node.name} #{node.expired? ? 'cached expired, ' : ''}checked in #{((Time.now - node.values[:_timestamp]) / 60).floor} minutes ago"
end
diff --git a/lib/puppet/provider/package/hpux.rb b/lib/puppet/provider/package/hpux.rb
new file mode 100644
index 000000000..aa756ead0
--- /dev/null
+++ b/lib/puppet/provider/package/hpux.rb
@@ -0,0 +1,41 @@
+# HP-UX packaging.
+
+require 'puppet/provider/package'
+
+Puppet::Type.type(:package).provide :hpux, :parent => Puppet::Provider::Package do
+ desc "HP-UX's packaging system."
+ commands :swinstall => "/usr/sbin/swinstall",
+ :swlist => "/usr/sbin/swlist",
+ :swremove => "/usr/sbin/swremove"
+ defaultfor :operatingsystem => 'hp-ux'
+
+ def self.instances
+ # TODO: This is very hard on HP-UX!
+ []
+ end
+
+ # source and name are required
+ def install
+ raise ArgumentError, "source must be provided to install HP-UX packages" unless resource[:source]
+ args = standard_args + ["-s", resource[:source], resource[:name]]
+ swinstall(*args)
+ end
+
+ def query
+ begin
+ swlist resource[:name]
+ {:ensure => :present}
+ rescue
+ {:ensure => :absent}
+ end
+ end
+
+ def uninstall
+ args = standard_args + [resource[:name]]
+ swremove(*args)
+ end
+
+ def standard_args
+ return ["-x", "mount_all_filesystems=false"]
+ end
+end
diff --git a/lib/puppet/util/settings.rb b/lib/puppet/util/settings.rb
index b6855dfa5..64bb40b52 100644
--- a/lib/puppet/util/settings.rb
+++ b/lib/puppet/util/settings.rb
@@ -558,10 +558,6 @@ These parameters affect the required permissions of any files specified after
their specification. Puppet will sometimes use these parameters to check its
own configured state, so they can be used to make Puppet a bit more self-managing.
-Note also that the section names are entirely for human-level organizational
-purposes; they don't provide separate namespaces. All parameters are in a
-single namespace.
-
Generated on #{Time.now}.
}.gsub(/^/, "# ")
diff --git a/spec/unit/provider/package/hpux.rb b/spec/unit/provider/package/hpux.rb
new file mode 100644
index 000000000..32eae5189
--- /dev/null
+++ b/spec/unit/provider/package/hpux.rb
@@ -0,0 +1,52 @@
+#!/usr/bin/env ruby
+
+require File.dirname(__FILE__) + '/../../../spec_helper'
+
+provider_class = Puppet::Type.type(:package).provider(:hpux)
+
+describe provider_class do
+ before(:each) do
+ # Create a mock resource
+ @resource = stub 'resource'
+
+ # A catch all; no parameters set
+ @resource.stubs(:[]).returns(nil)
+
+ # But set name and source
+ @resource.stubs(:[]).with(:name).returns "mypackage"
+ @resource.stubs(:[]).with(:source).returns "mysource"
+ @resource.stubs(:[]).with(:ensure).returns :installed
+
+ @provider = provider_class.new
+ @provider.stubs(:resource).returns @resource
+ end
+
+ it "should have an install method" do
+ @provider = provider_class.new
+ @provider.should respond_to(:install)
+ end
+
+ it "should have an uninstall method" do
+ @provider = provider_class.new
+ @provider.should respond_to(:uninstall)
+ end
+
+ it "should have a swlist method" do
+ @provider = provider_class.new
+ @provider.should respond_to(:swlist)
+ end
+
+ describe "when installing" do
+ it "should use a command-line like 'swinstall -x mount_all_filesystems=false -s SOURCE PACKAGE-NAME'" do
+ @provider.expects(:swinstall).with('-x', 'mount_all_filesystems=false', '-s', 'mysource', 'mypackage')
+ @provider.install
+ end
+ end
+
+ describe "when uninstalling" do
+ it "should use a command-line like 'swremove -x mount_all_filesystems=false PACKAGE-NAME'" do
+ @provider.expects(:swremove).with('-x', 'mount_all_filesystems=false', 'mypackage')
+ @provider.uninstall
+ end
+ end
+ end