Method: Chef::ChefFS::FileSystem::ChefServer::OrganizationMembersEntry#write

Defined in:
lib/chef/chef_fs/file_system/chef_server/organization_members_entry.rb

#write(contents) ⇒ Object



42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
# File 'lib/chef/chef_fs/file_system/chef_server/organization_members_entry.rb', line 42

def write(contents)
  desired_members = minimize_value(Chef::JSONCompat.parse(contents, create_additions: false))
  members = minimize_value(_read_json)
  (desired_members - members).each do |member|

    rest.post(api_path, "username" => member)
  rescue Net::HTTPClientException => e
    if %w{404 405}.include?(e.response.code)
      raise "Chef server at #{api_path} does not allow you to directly add members.  Please either upgrade your Chef server or move the users you want into invitations.json instead of members.json."
    else
      raise
    end

  end
  (members - desired_members).each do |member|
    rest.delete(File.join(api_path, member))
  end
end