summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--CHANGELOG2
-rw-r--r--lib/puppet/provider/group/groupadd.rb2
-rw-r--r--lib/puppet/provider/nameservice.rb3
-rw-r--r--lib/puppet/provider/nameservice/objectadd.rb7
-rw-r--r--lib/puppet/provider/user/useradd.rb2
-rwxr-xr-xspec/unit/provider/group/groupadd.rb31
-rwxr-xr-xspec/unit/provider/user/useradd.rb31
7 files changed, 69 insertions, 9 deletions
diff --git a/CHANGELOG b/CHANGELOG
index 8286cc63d..470071a1b 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,4 +1,6 @@
0.24.?
+ Fixed #1360 - allowdupe works on groups again.
+
Fixed #1369 - the init service provider now supports HP-UX.
Removed support for the 'node_name' setting in LDAP and external node
diff --git a/lib/puppet/provider/group/groupadd.rb b/lib/puppet/provider/group/groupadd.rb
index 4df5bf40d..371beee19 100644
--- a/lib/puppet/provider/group/groupadd.rb
+++ b/lib/puppet/provider/group/groupadd.rb
@@ -17,7 +17,7 @@ Puppet::Type.type(:group).provide :groupadd, :parent => Puppet::Provider::NameSe
cmd << flag(:gid) << gid
end
end
- if @resource[:allowdupe] == :true
+ if @resource.allowdupe?
cmd << "-o"
end
cmd << @resource[:name]
diff --git a/lib/puppet/provider/nameservice.rb b/lib/puppet/provider/nameservice.rb
index bba6c98ad..9764b5cf8 100644
--- a/lib/puppet/provider/nameservice.rb
+++ b/lib/puppet/provider/nameservice.rb
@@ -323,8 +323,7 @@ class Puppet::Provider::NameService < Puppet::Provider
begin
execute(cmd)
rescue Puppet::ExecutionFailure => detail
- raise Puppet::Error, "Could not set %s on %s[%s]: %s" %
- [param, @resource.class.name, @resource.name, detail]
+ raise Puppet::Error, "Could not set %s on %s[%s]: %s" % [param, @resource.class.name, @resource.name, detail]
end
end
end
diff --git a/lib/puppet/provider/nameservice/objectadd.rb b/lib/puppet/provider/nameservice/objectadd.rb
index 4682b5169..b7efe8388 100644
--- a/lib/puppet/provider/nameservice/objectadd.rb
+++ b/lib/puppet/provider/nameservice/objectadd.rb
@@ -22,10 +22,8 @@ class ObjectAdd < Puppet::Provider::NameService
end
def modifycmd(param, value)
- cmd = [command(:modify),
- flag(param),
- value]
- if @resource[:allowdupe] == :true && param == :uid
+ cmd = [command(:modify), flag(param), value]
+ if @resource.allowdupe? && ((param == :uid and self.class.name == :useradd) || (param == :gid and self.class.name == :groupadd))
cmd << "-o"
end
cmd << @resource[:name]
@@ -41,4 +39,3 @@ class ObjectAdd < Puppet::Provider::NameService
end
end
end
-
diff --git a/lib/puppet/provider/user/useradd.rb b/lib/puppet/provider/user/useradd.rb
index e64601ee0..b327db384 100644
--- a/lib/puppet/provider/user/useradd.rb
+++ b/lib/puppet/provider/user/useradd.rb
@@ -25,7 +25,7 @@ Puppet::Type.type(:user).provide :useradd, :parent => Puppet::Provider::NameServ
def addcmd
cmd = [command(:add)]
- @resource.class.validproperties.each do |property|
+ Puppet::Type.type(:user).validproperties.each do |property|
next if property == :ensure
# the value needs to be quoted, mostly because -c might
# have spaces in it
diff --git a/spec/unit/provider/group/groupadd.rb b/spec/unit/provider/group/groupadd.rb
new file mode 100755
index 000000000..fb4b811cb
--- /dev/null
+++ b/spec/unit/provider/group/groupadd.rb
@@ -0,0 +1,31 @@
+#!/usr/bin/env ruby
+
+require File.dirname(__FILE__) + '/../../../spec_helper'
+
+provider_class = Puppet::Type.type(:group).provider(:groupadd)
+
+describe provider_class do
+ before do
+ @resource = stub("resource", :name => "mygroup")
+ @provider = provider_class.new(@resource)
+ end
+
+ # #1360
+ it "should add -o when allowdupe is enabled and the group is being created" do
+ @resource.stubs(:should).returns "fakeval"
+ @resource.stubs(:[]).returns "fakeval"
+ @resource.expects(:allowdupe?).returns true
+ @provider.expects(:execute).with { |args| args.include?("-o") }
+
+ @provider.create
+ end
+
+ it "should add -o when allowdupe is enabled and the gid is being modified" do
+ @resource.stubs(:should).returns "fakeval"
+ @resource.stubs(:[]).returns "fakeval"
+ @resource.expects(:allowdupe?).returns true
+ @provider.expects(:execute).with { |args| args.include?("-o") }
+
+ @provider.gid = 150
+ end
+end
diff --git a/spec/unit/provider/user/useradd.rb b/spec/unit/provider/user/useradd.rb
new file mode 100755
index 000000000..96a785589
--- /dev/null
+++ b/spec/unit/provider/user/useradd.rb
@@ -0,0 +1,31 @@
+#!/usr/bin/env ruby
+
+require File.dirname(__FILE__) + '/../../../spec_helper'
+
+provider_class = Puppet::Type.type(:user).provider(:useradd)
+
+describe provider_class do
+ before do
+ @resource = stub("resource", :name => "myuser", :managehome? => nil)
+ @provider = provider_class.new(@resource)
+ end
+
+ # #1360
+ it "should add -o when allowdupe is enabled and the user is being created" do
+ @resource.stubs(:should).returns "fakeval"
+ @resource.stubs(:[]).returns "fakeval"
+ @resource.expects(:allowdupe?).returns true
+ @provider.expects(:execute).with { |args| args.include?("-o") }
+
+ @provider.create
+ end
+
+ it "should add -o when allowdupe is enabled and the uid is being modified" do
+ @resource.stubs(:should).returns "fakeval"
+ @resource.stubs(:[]).returns "fakeval"
+ @resource.expects(:allowdupe?).returns true
+ @provider.expects(:execute).with { |args| args.include?("-o") }
+
+ @provider.uid = 150
+ end
+end