1 class Arvados::V1::VirtualMachinesController < ApplicationController
2 skip_before_filter :find_object_by_uuid, :only => :get_all_logins
3 skip_before_filter :render_404_if_no_object, :only => :get_all_logins
4 before_filter(:admin_required,
5 :only => [:logins, :get_all_logins])
13 @vms = VirtualMachine.eager_load :login_permissions
15 @vms = @vms.where uuid: @object.uuid
20 User.eager_load(:authorized_keys).
21 where('users.uuid in (?)',
22 @vms.map { |vm| vm.login_permissions.map &:tail_uuid }.flatten.uniq).
27 vm.login_permissions.each do |perm|
28 user_uuid = perm.tail_uuid
29 next if not @users[user_uuid]
30 next if perm.properties['username'].blank?
31 aks = @users[user_uuid].authorized_keys
33 # We'll emit one entry, with no public key.
38 username: perm.properties['username'],
39 hostname: vm.hostname,
40 groups: (perm.properties['groups'].to_a rescue []),
41 public_key: ak ? ak.public_key : nil,
43 virtual_machine_uuid: vm.uuid,
44 authorized_key_uuid: ak ? ak.uuid : nil,
49 send_json kind: "arvados#HashList", items: @response