class Chef::Knife::UserInviteRescind

Public Instance Methods

run() click to toggle source
# File lib/chef/knife/user_invite_rescind.rb, line 32
def run
  if (name_args.length < 1) && ! config.key?(:all)
    show_usage
    ui.fatal("You must specify a username.")
    exit 1
  end

  # To rescind we need to send a DELETE to association_requests/INVITE_ID
  # For user friendliness we look up the invite ID based on username.
  @invites = {}
  usernames = name_args
  rest.get_rest("association_requests").each { |i| @invites[i["username"]] = i["id"] }
  if config[:all]
    ui.confirm("Are you sure you want to rescind all association requests")
    @invites.each do |u, i|
      rest.delete_rest("association_requests/#{i}")
    end
  else
    ui.confirm("Are you sure you want to rescind the association requests for: #{usernames.join(", ")}")
    usernames.each do |u|
      if @invites.key?(u)
        rest.delete_rest("association_requests/#{@invites[u]}")
      else
        ui.fatal("No association request for #{u}.")
        exit 1
      end
    end
  end
end