diff options
author | Luke Kanies <luke@madstop.com> | 2008-08-20 23:45:02 -0500 |
---|---|---|
committer | Luke Kanies <luke@madstop.com> | 2008-08-20 23:45:02 -0500 |
commit | 66c40b374d7315d11575d701ce195ce656abbeb7 (patch) | |
tree | 4caafcffd669693fbd601d5b1bd2fd586387fc1e | |
parent | c8190421a351ed327361a5daca82441be39ce834 (diff) | |
parent | c5fb092720afefbf904822a5604b5b3520b5c194 (diff) | |
download | puppet-66c40b374d7315d11575d701ce195ce656abbeb7.tar.gz puppet-66c40b374d7315d11575d701ce195ce656abbeb7.tar.xz puppet-66c40b374d7315d11575d701ce195ce656abbeb7.zip |
Merge branch '0.24.x'
-rw-r--r-- | CHANGELOG | 2 | ||||
-rw-r--r-- | Rakefile | 1 | ||||
-rwxr-xr-x | ext/puppetlast | 2 | ||||
-rw-r--r-- | lib/puppet/provider/package/hpux.rb | 41 | ||||
-rw-r--r-- | lib/puppet/util/settings.rb | 4 | ||||
-rw-r--r-- | spec/unit/provider/package/hpux.rb | 52 |
6 files changed, 97 insertions, 5 deletions
@@ -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 @@ -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 |