X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/2e03d03bc55b5a612c2bf04d878a72f2ee420d99..e6276d3b309b3710a92adb308f879eff7db44488:/services/login-sync/bin/arvados-login-sync diff --git a/services/login-sync/bin/arvados-login-sync b/services/login-sync/bin/arvados-login-sync index 5c6691ab95..9bcb5bfa9d 100755 --- a/services/login-sync/bin/arvados-login-sync +++ b/services/login-sync/bin/arvados-login-sync @@ -42,9 +42,14 @@ begin debug = true end arv = Arvados.new({ :suppress_ssl_warnings => false }) - logincluster_arv = Arvados.new({ :api_host => (ENV['LOGINCLUSTER_ARVADOS_API_HOST'] || ENV['ARVADOS_API_HOST']), - :api_token => (ENV['LOGINCLUSTER_ARVADOS_API_TOKEN'] || ENV['ARVADOS_API_TOKEN']), - :suppress_ssl_warnings => false }) + logincluster_host = ENV['ARVADOS_API_HOST'] + logincluster_name = arv.cluster_config['Login']['LoginCluster'] or '' + + if logincluster_name != '' and logincluster_name != arv.cluster_config['ClusterID'] + logincluster_host = arv.cluster_config['RemoteClusters'][logincluster_name]['Host'] + end + logincluster_arv = Arvados.new({ :api_host => logincluster_host, + :suppress_ssl_warnings => false }) vm_uuid = ENV['ARVADOS_VIRTUAL_MACHINE_UUID'] @@ -141,6 +146,12 @@ begin end end + homedir = pwnam[l[:username]].dir + if !File.exist?(homedir) + STDERR.puts "Cannot set up user #{username} because their home directory #{homedir} does not exist. Skipping." + next + end + existing_groups = current_user_groups[username] || [] groups = l[:groups] || [] # Adding users to the FUSE group has long been hardcoded behavior. @@ -170,7 +181,6 @@ begin end end - homedir = pwnam[l[:username]].dir userdotssh = File.join(homedir, ".ssh") Dir.mkdir(userdotssh) if !File.exist?(userdotssh) @@ -219,9 +229,9 @@ begin userEnv = IO::read(tokenfile) if (m = /^ARVADOS_API_TOKEN=(.*?\n)/m.match(userEnv)) begin - tmp_arv = Arvados.new({ :api_host => (ENV['LOGINCLUSTER_ARVADOS_API_HOST'] || ENV['ARVADOS_API_HOST']), - :api_token => (m[1]), - :suppress_ssl_warnings => false }) + tmp_arv = Arvados.new({ :api_host => logincluster_host, + :api_token => (m[1]), + :suppress_ssl_warnings => false }) tmp_arv.user.current rescue Arvados::TransactionFailedError => e if e.to_s =~ /401 Unauthorized/