class Opc::OpcUserDelete
Attributes
username[R]
Public Instance Methods
admin_group_memberships(orgs, username)
click to toggle source
# File lib/chef/knife/opc_user_delete.rb, line 90 def admin_group_memberships(orgs, username) admin_of = [] unremovable = [] orgs.each do |org| if org.user_member_of_group?(username, "admins") admin_of << org if org.actor_delete_would_leave_admins_empty? unremovable << org end end end [admin_of, unremovable] end
delete_user(username)
click to toggle source
# File lib/chef/knife/opc_user_delete.rb, line 104 def delete_user(username) ui.stderr.puts "Deleting user #{username}." root_rest.delete("users/#{username}") end
disassociate_user(orgs, username)
click to toggle source
# File lib/chef/knife/opc_user_delete.rb, line 74 def disassociate_user(orgs, username) orgs.each { |org| org.dissociate_user(username) } end
error_exit_admin_group_member!(username, admin_of)
click to toggle source
Error message that says how to removed from org admin groups before deleting Further
# File lib/chef/knife/opc_user_delete.rb, line 112 def error_exit_admin_group_member!(username, admin_of) message = "#{username} is in the 'admins' group of the following organization(s):\n\n" admin_of.each { |org| message << "- #{org.name}\n" } message << <<~EOM Run this command again with the --remove-from-admin-groups option to remove the user from these admin group(s) automatically. EOM ui.fatal message exit 1 end
error_exit_cant_remove_admin_membership!(username, only_admin_of)
click to toggle source
# File lib/chef/knife/opc_user_delete.rb, line 125 def error_exit_cant_remove_admin_membership!(username, only_admin_of) message = <<~EOM #{username} is the only member of the 'admins' group of the following organization(s): EOM only_admin_of.each { |org| message << "- #{org.name}\n" } message << <<~EOM Removing the only administrator of an organization can break it. Assign additional users or groups to the admin group(s) before deleting this user. EOM ui.fatal message exit 1 end
org_memberships(username)
click to toggle source
# File lib/chef/knife/opc_user_delete.rb, line 78 def org_memberships(username) org_data = root_rest.get("users/#{username}/organizations") org_data.map { |org| Chef::Org.new(org["organization"]["name"]) } end
remove_from_admin_groups(admin_of, username)
click to toggle source
# File lib/chef/knife/opc_user_delete.rb, line 83 def remove_from_admin_groups(admin_of, username) admin_of.each do |org| ui.stderr.puts "Removing #{username} from admins group of '#{org.name}'" org.remove_user_from_group("admins", username) end end
run()
click to toggle source
# File lib/chef/knife/opc_user_delete.rb, line 43 def run @username = @name_args[0] admin_memberships = [] unremovable_memberships = [] ui.confirm "Do you want to delete the user #{username}" unless config[:no_disassociate_user] ui.stderr.puts("Checking organization memberships...") orgs = org_memberships(username) if orgs.length > 0 ui.stderr.puts("Checking admin group memberships for #{orgs.length} org(s).") admin_memberships, unremovable_memberships = admin_group_memberships(orgs, username) end unless admin_memberships.empty? unless config[:remove_from_admin_groups] error_exit_admin_group_member!(username, admin_memberships) end unless unremovable_memberships.empty? error_exit_cant_remove_admin_membership!(username, unremovable_memberships) end remove_from_admin_groups(admin_memberships, username) end disassociate_user(orgs, username) end delete_user(username) end