X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/4d6e05c25c6a5d72afee37f8165b006267b4183d..0eb72b526bf8bbb011551ecf019f604e17a534f1:/services/api/app/controllers/arvados/v1/virtual_machines_controller.rb diff --git a/services/api/app/controllers/arvados/v1/virtual_machines_controller.rb b/services/api/app/controllers/arvados/v1/virtual_machines_controller.rb index 84251db470..7a1c680717 100644 --- a/services/api/app/controllers/arvados/v1/virtual_machines_controller.rb +++ b/services/api/app/controllers/arvados/v1/virtual_machines_controller.rb @@ -1,25 +1,33 @@ +# Copyright (C) The Arvados Authors. All rights reserved. +# +# SPDX-License-Identifier: AGPL-3.0 + class Arvados::V1::VirtualMachinesController < ApplicationController skip_before_filter :find_object_by_uuid, :only => :get_all_logins skip_before_filter :render_404_if_no_object, :only => :get_all_logins before_filter(:admin_required, :only => [:logins, :get_all_logins]) + # Get all login permissons (user uuid, login account, SSH key) for a + # single VM def logins - get_all_logins + render_logins_for VirtualMachine.where(uuid: @object.uuid) end + # Get all login permissons for all VMs def get_all_logins + render_logins_for VirtualMachine + end + + protected + + def render_logins_for vm_query @response = [] - @vms = VirtualMachine.eager_load :login_permissions - if @object - @vms = @vms.where uuid: @object.uuid - else - @vms = @vms.all - end + @vms = vm_query.eager_load :login_permissions @users = {} User.eager_load(:authorized_keys). where('users.uuid in (?)', - @vms.map { |vm| vm.login_permissions.map &:tail_uuid }.flatten.uniq). + @vms.map { |vm| vm.login_permissions.map(&:tail_uuid) }.flatten.uniq). each do |u| @users[u.uuid] = u end