- # create login permission for the given vm_uuid, if it does not already exist
- def create_vm_login_permission_link(vm_uuid, repo_name)
- # Look up the given virtual machine just to make sure it really exists.
- begin
- vm = (vms = VirtualMachine.where(uuid: vm_uuid)) != nil ? vms.first : nil
- if not vm
- logger.warn "Could not find virtual machine for #{vm_uuid.inspect}"
- return
- end
-
- logger.info { "vm uuid: " + vm[:uuid] }
-
- login_perm = Link.where(tail_uuid: @object[:uuid],
- head_uuid: vm[:uuid],
- head_kind: 'arvados#virtualMachine',
- link_class: 'permission',
- name: 'can_login')
- if [] == login_perm
- login_perm = Link.create(tail_kind: 'arvados#user',
- tail_uuid: @object[:uuid],
- head_kind: 'arvados#virtualMachine',
- head_uuid: vm[:uuid],
- link_class: 'permission',
- name: 'can_login',
- properties: {username: repo_name})
- logger.info { "login permission: " + login_perm[:uuid] }
- end
- end
- end
-
- # add the user to the 'All users' group
- def create_user_group_link
- # Look up the "All users" group (we expect uuid *-*-fffffffffffffff).
- group = Group.where(name: 'All users').select do |g|
- g[:uuid].match /-f+$/
- end.first
-
- if not group
- logger.warn "No 'All users' group with uuid '*-*-fffffffffffffff'."
- return
- else
- logger.info { "\"All users\" group uuid: " + group[:uuid] }
-
- group_perm = Link.where(tail_uuid: @object[:uuid],
- head_uuid: group[:uuid],
- head_kind: 'arvados#group',
- link_class: 'permission',
- name: 'can_read')
-
- if [] == group_perm
- group_perm = Link.create(tail_kind: 'arvados#user',
- tail_uuid: @object[:uuid],
- head_kind: 'arvados#group',
- head_uuid: group[:uuid],
- link_class: 'permission',
- name: 'can_read')
- logger.info { "group permission: " + group_perm[:uuid] }
- end
- end