X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/ca8e8224203ba5be3a9a190862e7c8ac2ac94e7e..bd6b334c80cea328a51a8612d40ef16bdd6ab2e2:/services/api/app/controllers/arvados/v1/virtual_machines_controller.rb?ds=sidebyside 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..99b663da43 100644 --- a/services/api/app/controllers/arvados/v1/virtual_machines_controller.rb +++ b/services/api/app/controllers/arvados/v1/virtual_machines_controller.rb @@ -4,22 +4,26 @@ class Arvados::V1::VirtualMachinesController < ApplicationController 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