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|
    begin
      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
  end
  (members - desired_members).each do |member|
    rest.delete(File.join(api_path, member))
  end
end