summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJames Turnbull <james@lovedthanlost.net>2008-09-06 09:52:26 +1000
committerJames Turnbull <james@lovedthanlost.net>2008-09-06 09:52:26 +1000
commit0705dfb462b145ac9e4faafc517bbb833f2c81b9 (patch)
tree6c93fc9e7b6bd513e94a29c2b313258f6a52af7e
parente15d316cbb9ee33bfbed4b29649f36a97490e985 (diff)
downloadpuppet-0705dfb462b145ac9e4faafc517bbb833f2c81b9.tar.gz
puppet-0705dfb462b145ac9e4faafc517bbb833f2c81b9.tar.xz
puppet-0705dfb462b145ac9e4faafc517bbb833f2c81b9.zip
Fixes #1455 - Adds HP-UX support for user type
-rw-r--r--CHANGELOG2
-rw-r--r--lib/puppet/provider/user/hpux.rb29
-rwxr-xr-xspec/unit/provider/user/hpux.rb29
3 files changed, 60 insertions, 0 deletions
diff --git a/CHANGELOG b/CHANGELOG
index 15f681e77..2df61d8fa 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,4 +1,6 @@
0.24.x
+ Fixes #1455 - Adds HP-UX support for user type
+
Fixes #1551 puppetmaster.freshness xmlrpc call returns incorrect type
Fixes #1554 - Fix exception for undefined hostname
diff --git a/lib/puppet/provider/user/hpux.rb b/lib/puppet/provider/user/hpux.rb
new file mode 100644
index 000000000..d50924c72
--- /dev/null
+++ b/lib/puppet/provider/user/hpux.rb
@@ -0,0 +1,29 @@
+Puppet::Type.type(:user).provide :hpuxuseradd, :parent => :useradd do
+ desc "User management for hp-ux! Undocumented switch to special usermod because HP-UX regular usermod is TOO STUPID to change stuff while the user is logged in."
+
+ defaultfor :operatingsystem => :"hp-ux"
+
+ commands :modify => "/usr/sbin/usermod", :delete => "/usr/sbin/userdel", :add => "/usr/sbin/useradd"
+ options :comment, :method => :gecos
+ options :groups, :flag => "-G"
+ options :home, :flag => "-d", :method => :dir
+
+ verify :gid, "GID must be an integer" do |value|
+ value.is_a? Integer
+ end
+
+ verify :groups, "Groups must be comma-separated" do |value|
+ value !~ /\s/
+ end
+
+ has_features :manages_homedir, :allows_duplicates
+
+ def deletecmd
+ super.insert(1,"-F")
+ end
+
+ def modifycmd(param,value)
+ super.insert(1,"-F")
+ end
+
+end
diff --git a/spec/unit/provider/user/hpux.rb b/spec/unit/provider/user/hpux.rb
new file mode 100755
index 000000000..8b31658b8
--- /dev/null
+++ b/spec/unit/provider/user/hpux.rb
@@ -0,0 +1,29 @@
+#!/usr/bin/env ruby
+
+require File.dirname(__FILE__) + '/../../../spec_helper'
+
+provider_class = Puppet::Type.type(:user).provider(:hpuxuseradd)
+
+describe provider_class do
+ # left from the useradd test... I have no clue what I'm doing.
+ before do
+ @resource = stub("resource", :name => "myuser", :managehome? => nil)
+ @provider = provider_class.new(@resource)
+ end
+
+ it "should add -F when modifying a user" do
+ @resource.stubs(:should).returns "fakeval"
+ @resource.stubs(:[]).returns "fakeval"
+ @provider.expects(:execute).with { |args| args.include?("-F") }
+
+ @provider.modify
+ end
+
+ it "should add -F when deleting a user" do
+ @resource.stubs(:should).returns "fakeval"
+ @resource.stubs(:[]).returns "fakeval"
+ @provider.expects(:execute).with { |args| args.include?("-F") }
+
+ @provider.delete
+ end
+end