Sha256: b5b7780abe9074ceb55877357cacd55041bdc6b4355bfd18ddc7c580b2e30397
Contents?: true
Size: 1.85 KB
Versions: 2
Compression:
Stored size: 1.85 KB
Contents
require 'chef/chef_fs/file_system/rest_list_entry' require 'chef/chef_fs/data_handler/organization_members_data_handler' class Chef module ChefFS module FileSystem # /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 class OrganizationMembersEntry < RestListEntry def initialize(name, parent, exists = nil) super(name, parent) @exists = exists end def data_handler Chef::ChefFS::DataHandler::OrganizationMembersDataHandler.new end # /organizations/foo/members.json -> /organizations/foo/users def api_path File.join(parent.api_path, 'users') end def exists? parent.exists? end def delete(recurse) raise Chef::ChefFS::FileSystem::OperationNotAllowedError.new(:delete, self) end def write(contents) desired_members = minimize_value(JSON.parse(contents, :create_additions => false)) members = minimize_value(_read_json) (desired_members - members).each do |member| begin rest.post(File.join(api_path, member), {}) rescue Net::HTTPServerException => e if e.response.code == '404' 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 end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
chef-12.0.0.alpha.2-x86-mingw32 | lib/chef/chef_fs/file_system/organization_members_entry.rb |
chef-12.0.0.alpha.2 | lib/chef/chef_fs/file_system/organization_members_entry.rb |