def manage_group
if @new_resource.append
to_add = @new_resource.members.dup
to_add.reject! { |user| @current_resource.members.include?(user) }
to_delete = Array.new
Chef::Log.debug("#{@new_resource} not changing group members, the group has no members to add") if to_add.empty?
else
to_add = @new_resource.members.dup
to_add.reject! { |user| @current_resource.members.include?(user) }
to_delete = @current_resource.members.dup
to_delete.reject! { |user| @new_resource.members.include?(user) }
Chef::Log.debug("#{@new_resource} setting group members to: none") if @new_resource.members.empty?
end
if to_delete.empty?
add_group_members(to_add)
else
Chef::Log.debug("#{@new_resource} removing members #{to_delete.join(', ')}")
rename = "group mod -n #{@new_resource.group_name}_bak #{@new_resource.group_name}"
shell_out!(rename)
create = "group add"
create << set_options(:overwrite_gid => true)
shell_out!(create)
add_group_members(@new_resource.members)
remove = "group del #{@new_resource.group_name}_bak"
shell_out!(remove)
end
end