4253: Use same repo name logic whether or not user already existed before setup.
authorTom Clegg <tom@curoverse.com>
Mon, 30 Mar 2015 18:37:30 +0000 (14:37 -0400)
committerBrett Smith <brett@curoverse.com>
Tue, 31 Mar 2015 15:14:12 +0000 (11:14 -0400)
services/api/app/controllers/arvados/v1/users_controller.rb

index b5ac19586f17bba42621b9a349c359443ffbc9e6..345cd46b863fd161c829bb0905441fca4d246993 100644 (file)
@@ -96,24 +96,24 @@ class Arvados::V1::UsersController < ApplicationController
       end
     end
 
-    # It's not always possible to know the user's username when submitting
-    # this request.  If it included a plain repository name, expand that to a
-    # user-owned name now.
+    # It's not always possible for the client to know the user's
+    # username when submitting this request: the username might have
+    # been assigned automatically in create!() above. If client
+    # provided a plain repository name, prefix it with the username
+    # now that we know what it is.
     if params[:repo_name].nil?
       full_repo_name = nil
+    elsif @object.username.nil?
+      raise ArgumentError.
+        new("cannot setup a repository because user has no username")
+    elsif params[:repo_name].include?("/")
+      full_repo_name = params[:repo_name]
     else
       full_repo_name = "#{@object.username}/#{params[:repo_name]}"
     end
+
     if object_found
-      if params[:repo_name].andand.include?("/")
-        repo_name = params[:repo_name]
-      elsif @object.username.nil?
-        raise ArgumentError.
-          new("can't setup a user without a username with a repository")
-      else
-        repo_name = full_repo_name
-      end
-      @response = @object.setup_repo_vm_links repo_name,
+      @response = @object.setup_repo_vm_links full_repo_name,
                     params[:vm_uuid], params[:openid_prefix]
     else
       @response = User.setup @object, params[:openid_prefix],