Merge branch '2051-nondeterministic-jobs'
[arvados.git] / services / api / app / models / user.rb
index ae3f31acbe1bba5f1410fb6a8f6ae08303b0be88..563bb0717002f4a68c8b2892cfa4b6cfd6714bd9 100644 (file)
@@ -112,29 +112,15 @@ class User < ArvadosModel
   def self.setup(user, openid_prefix, repo_name=nil, vm_uuid=nil)
     login_perm_props = {identity_url_prefix: openid_prefix}
 
-    if user.uuid
-      found = User.find_by_uuid user.uuid
-      if found
-        user = found
-      end
-    end
-
-    if !found
-      if !user.email
-        raise "No email found in the input. Aborting user creation."
-      end
-
-      user.save!
-    
-      # Check oid_login_perm
-      oid_login_perms = Link.where(tail_uuid: user.email,
+    # Check oid_login_perm
+    oid_login_perms = Link.where(tail_uuid: user.email,
                                    head_kind: 'arvados#user',
                                    link_class: 'permission',
                                    name: 'can_login')
 
-      if !oid_login_perms.any?
-        # create openid login permission
-        oid_login_perm = Link.create(link_class: 'permission',
+    if !oid_login_perms.any?
+      # create openid login permission
+      oid_login_perm = Link.create(link_class: 'permission',
                                    name: 'can_login',
                                    tail_kind: 'email',
                                    tail_uuid: user.email,
@@ -142,36 +128,21 @@ class User < ArvadosModel
                                    head_uuid: user.uuid,
                                    properties: login_perm_props
                                   )
-        logger.info { "openid login permission: " + oid_login_perm[:uuid] }
-      else
-        oid_login_perm = oid_login_perms.first
-      end
+      logger.info { "openid login permission: " + oid_login_perm[:uuid] }
+    else
+      oid_login_perm = oid_login_perms.first
     end
 
-    # create repo, vm, and group links
-    response = {user: user, oid_login_perm: oid_login_perm}
-
-    user.setup_repo_vm_links(repo_name, vm_uuid, response)
-
-    return response
+    return [oid_login_perm] + user.setup_repo_vm_links(repo_name, vm_uuid)
   end 
 
   # create links
-  def setup_repo_vm_links(repo_name, vm_uuid, response)
+  def setup_repo_vm_links(repo_name, vm_uuid)
     repo_perm = create_user_repo_link repo_name
-    if repo_perm
-      response[:repo_perm] = repo_perm
-    end
-
     vm_login_perm = create_vm_login_permission_link vm_uuid, repo_name
-    if vm_login_perm
-      response[:vm_login_perm] = vm_login_perm
-    end
-
     group_perm = create_user_group_link
-    if group_perm
-      response[:group_perm] = group_perm
-    end
+
+    return [repo_perm, vm_login_perm, group_perm, self].compact
   end 
 
   protected