Class: Chef::ChefFS::FileSystem::ChefServer::OrganizationMembersEntry
- Inherits:
-
RestListEntry
- Object
- BaseFSObject
- RestListEntry
- Chef::ChefFS::FileSystem::ChefServer::OrganizationMembersEntry
- Defined in:
- lib/chef/chef_fs/file_system/chef_server/organization_members_entry.rb
Overview
/organizations/NAME/members.json reads data from:
-
GET /organizations/NAME/users
writes data to:
-
remove from list: DELETE /organizations/NAME/users/name
-
add to list: POST /organizations/NAME/users/name
Instance Attribute Summary
Attributes inherited from BaseFSObject
Instance Method Summary collapse
-
#api_path ⇒ Object
/organizations/foo/members.json -> /organizations/foo/users.
- #data_handler ⇒ Object
- #delete(recurse) ⇒ Object
- #display_path ⇒ Object
- #exists? ⇒ Boolean
-
#initialize(name, parent, exists = nil) ⇒ OrganizationMembersEntry
constructor
A new instance of OrganizationMembersEntry.
- #write(contents) ⇒ Object
Methods inherited from RestListEntry
#_read_json, #api_child_name, #api_error_text, #chef_object, #compare_to, #display_name, #environment, #minimize_value, #normalize_value, #org, #read, #rest
Methods inherited from BaseFSObject
#can_have_child?, #chef_object, #child, #children, #compare_to, #create_child, #dir?, #path_for_printing, #read, #root
Constructor Details
#initialize(name, parent, exists = nil) ⇒ OrganizationMembersEntry
Returns a new instance of OrganizationMembersEntry.
16 17 18 19 |
# 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 |
Instance Method Details
#api_path ⇒ Object
/organizations/foo/members.json -> /organizations/foo/users
26 27 28 |
# 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 ⇒ Object
21 22 23 |
# 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) ⇒ Object
38 39 40 |
# 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 ⇒ Object
30 31 32 |
# File 'lib/chef/chef_fs/file_system/chef_server/organization_members_entry.rb', line 30 def display_path "/members.json" end |
#exists? ⇒ Boolean
34 35 36 |
# File 'lib/chef/chef_fs/file_system/chef_server/organization_members_entry.rb', line 34 def exists? parent.exists? end |
#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 |