diff options
-rw-r--r-- | CHANGELOG | 2 | ||||
-rw-r--r-- | lib/puppet/provider/user/hpux.rb | 29 | ||||
-rwxr-xr-x | spec/unit/provider/user/hpux.rb | 29 |
3 files changed, 60 insertions, 0 deletions
@@ -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 |