class Chef::ChefFS::FileSystem::ChefServer::OrganizationMembersEntry

/organizations/NAME/members.json reads data from:

writes data to:

Public Class Methods

new(name, parent, exists = nil) click to toggle source
Calls superclass method
# File lib/chef/chef_fs/file_system/chef_server/organization_members_entry.rb, line 16
def initialize(name, parent, exists = nil)
  super(name, parent)
  @exists = exists
end

Public Instance Methods

api_path() click to toggle source

/organizations/foo/members.json -> /organizations/foo/users

# File lib/chef/chef_fs/file_system/chef_server/organization_members_entry.rb, line 26
def api_path
  File.join(parent.api_path, "users")
end
data_handler() click to toggle source
# File lib/chef/chef_fs/file_system/chef_server/organization_members_entry.rb, line 21
def data_handler
  Chef::ChefFS::DataHandler::OrganizationMembersDataHandler.new
end
delete(recurse) click to toggle source
# File lib/chef/chef_fs/file_system/chef_server/organization_members_entry.rb, line 38
def delete(recurse)
  raise Chef::ChefFS::FileSystem::OperationNotAllowedError.new(:delete, self)
end
display_path() click to toggle source
# File lib/chef/chef_fs/file_system/chef_server/organization_members_entry.rb, line 30
def display_path
  "/members.json"
end
exists?() click to toggle source
# File lib/chef/chef_fs/file_system/chef_server/organization_members_entry.rb, line 34
def exists?
  parent.exists?
end
write(contents) click to toggle source
# 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