summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNick Lewis <nick@puppetlabs.com>2011-04-13 16:37:13 -0700
committerNick Lewis <nick@puppetlabs.com>2011-04-13 16:37:13 -0700
commit6a8068b3912d6275efe4005258a06d03363c8944 (patch)
treed86a85e406a70f6dc062af0d823d7ed1bfa5695b
parentd0788823c2fa19f5723e80eba985ee88432923de (diff)
parent65c4e14621786e51c6eb3621098abbbadd7aa89d (diff)
downloadpuppet-6a8068b3912d6275efe4005258a06d03363c8944.tar.gz
puppet-6a8068b3912d6275efe4005258a06d03363c8944.tar.xz
puppet-6a8068b3912d6275efe4005258a06d03363c8944.zip
Merge branch 'ticket/2.6.x/7082' into 2.6.next
-rw-r--r--lib/puppet/provider/group/groupadd.rb3
-rwxr-xr-xlib/puppet/type/group.rb12
-rwxr-xr-xspec/unit/provider/group/groupadd_spec.rb12
-rwxr-xr-xspec/unit/type/group_spec.rb9
4 files changed, 33 insertions, 3 deletions
diff --git a/lib/puppet/provider/group/groupadd.rb b/lib/puppet/provider/group/groupadd.rb
index 82ed4c0c7..bcc08d9f7 100644
--- a/lib/puppet/provider/group/groupadd.rb
+++ b/lib/puppet/provider/group/groupadd.rb
@@ -9,6 +9,8 @@ Puppet::Type.type(:group).provide :groupadd, :parent => Puppet::Provider::NameSe
commands :add => "groupadd", :delete => "groupdel", :modify => "groupmod"
+ has_feature :system_groups
+
verify :gid, "GID must be an integer" do |value|
value.is_a? Integer
end
@@ -21,6 +23,7 @@ Puppet::Type.type(:group).provide :groupadd, :parent => Puppet::Provider::NameSe
end
end
cmd << "-o" if @resource.allowdupe?
+ cmd << "-r" if @resource.system?
cmd << @resource[:name]
cmd
diff --git a/lib/puppet/type/group.rb b/lib/puppet/type/group.rb
index cde1cfd65..066bd49df 100755
--- a/lib/puppet/type/group.rb
+++ b/lib/puppet/type/group.rb
@@ -1,4 +1,3 @@
-
require 'etc'
require 'facter'
@@ -15,6 +14,9 @@ module Puppet
feature :manages_members,
"For directories where membership is an attribute of groups not users."
+ feature :system_groups,
+ "The provider allows you to create system groups with lower GIDs."
+
ensurable do
desc "Create or remove the group."
@@ -95,5 +97,13 @@ module Puppet
defaultto false
end
+
+ newparam(:system, :boolean => true) do
+ desc "Whether the group is a system group with lower GID."
+
+ newvalues(:true, :false)
+
+ defaultto false
+ end
end
end
diff --git a/spec/unit/provider/group/groupadd_spec.rb b/spec/unit/provider/group/groupadd_spec.rb
index 33d9acd98..65cc887e4 100755
--- a/spec/unit/provider/group/groupadd_spec.rb
+++ b/spec/unit/provider/group/groupadd_spec.rb
@@ -10,10 +10,10 @@ describe provider_class do
@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.stubs(:system?).returns true
@resource.expects(:allowdupe?).returns true
@provider.expects(:execute).with { |args| args.include?("-o") }
@@ -28,4 +28,14 @@ describe provider_class do
@provider.gid = 150
end
+
+ it "should add -r when system is enabled and the group is being created" do
+ @resource.stubs(:should).returns "fakeval"
+ @resource.stubs(:[]).returns "fakeval"
+ @resource.expects(:system?).returns true
+ @resource.stubs(:allowdupe?).returns true
+ @provider.expects(:execute).with { |args| args.include?("-r") }
+
+ @provider.create
+ end
end
diff --git a/spec/unit/type/group_spec.rb b/spec/unit/type/group_spec.rb
index b41ce71a0..e373dac6e 100755
--- a/spec/unit/type/group_spec.rb
+++ b/spec/unit/type/group_spec.rb
@@ -16,6 +16,10 @@ describe Puppet::Type.type(:group) do
@class.defaultprovider.ancestors.should be_include(Puppet::Provider)
end
+ it "should have a system_groups feature" do
+ @class.provider_feature(:system_groups).should_not be_nil
+ end
+
describe "when validating attributes" do
[:name, :allowdupe].each do |param|
it "should have a #{param} parameter" do
@@ -38,11 +42,14 @@ describe Puppet::Type.type(:group) do
end
end
- # #1407 - we need to declare the allowdupe param as boolean.
it "should have a boolean method for determining if duplicates are allowed" do
@class.new(:name => "foo").methods.should be_include("allowdupe?")
end
+ it "should have a boolean method for determining if system groups are allowed" do
+ @class.new(:name => "foo").methods.should be_include("system?")
+ end
+
it "should call 'create' to create the group" do
group = @class.new(:name => "foo", :ensure => :present)
group.provider.expects(:create)