Skip to content

Commit a8ca989

Browse files
committed
Add functionality to the compare method to better determine if we need to take action on the group
1 parent 4531031 commit a8ca989

2 files changed

Lines changed: 28 additions & 4 deletions

File tree

‎chef/lib/chef/provider/group.rb‎

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ def load_current_resource
4545
end
4646

4747
if group_info
48+
@new_resource.gid(group_info.gid)
4849
@current_resource.gid(group_info.gid)
4950
@current_resource.members(group_info.mem)
5051
end
@@ -58,9 +59,18 @@ def load_current_resource
5859
# <true>:: If a change is required
5960
# <false>:: If a change is not required
6061
def compare_group
61-
!![ :gid, :members ].find do |group_attrib|
62-
@new_resource.send(group_attrib) != @current_resource.send(group_attrib)
62+
return true if @new_resource.gid != @current_resource.gid
63+
64+
if(@new_resource.append)
65+
@new_resource.members.each do |member|
66+
next if @current_resource.members.include?(member)
67+
return true
68+
end
69+
else
70+
return true if @new_resource.members != @current_resource.members
6371
end
72+
73+
return false
6474
end
6575

6676
def action_create

‎chef/spec/unit/provider/group_spec.rb‎

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,8 @@
109109
:null_object => true,
110110
:group_name => "aj",
111111
:gid => 50,
112-
:members => [ "root", "aj"]
112+
:members => [ "root", "aj"],
113+
:append => false
113114
)
114115
@current_resource = mock("Chef::Resource::Group",
115116
:null_object => true,
@@ -128,9 +129,22 @@
128129
end
129130
end
130131

131-
it "should return false if no change is required" do
132+
it "should return false if gid and members are equal" do
133+
@provider.compare_group.should be_false
134+
end
135+
136+
it "should return false if append is true and the group member(s) already exists" do
137+
@current_resource.members << "extra_user"
138+
@new_resource.stub!(:append).and_return(true)
132139
@provider.compare_group.should be_false
133140
end
141+
142+
it "should return true if append is true and the group member(s) do not already exist" do
143+
@new_resource.members << "extra_user"
144+
@new_resource.stub!(:append).and_return(true)
145+
@provider.compare_group.should be_true
146+
end
147+
134148
end
135149

136150
describe Chef::Provider::Group, "action_create" do

0 commit comments

Comments
 (0)