X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/9539317a22d8ea16f94b0e086507ab595d758216..272ce633588e6e6881d3e27bef4ef6de12555cfe:/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 da8a21efa3..915541baf5 100755 --- a/services/login-sync/bin/arvados-login-sync +++ b/services/login-sync/bin/arvados-login-sync @@ -10,6 +10,7 @@ require 'etc' require 'fileutils' require 'yaml' require 'optparse' +require 'open3' req_envs = %w(ARVADOS_API_HOST ARVADOS_API_TOKEN ARVADOS_VIRTUAL_MACHINE_UUID) req_envs.each do |k| @@ -41,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'] @@ -124,11 +130,12 @@ begin unless pwnam[l[:username]] STDERR.puts "Creating account #{l[:username]}" # Create new user - unless system("useradd", "-m", + out, st = Open3.capture2e("useradd", "-m", "-c", username, "-s", "/bin/bash", username) - STDERR.puts "Account creation failed for #{l[:username]}: #{$?}" + if st.exitstatus != 0 + STDERR.puts "Account creation failed for #{l[:username]}:\n#{out}" next end begin @@ -150,7 +157,10 @@ begin if existing_groups.index(addgroup).nil? # User should be in group, but isn't, so add them. STDERR.puts "Add user #{username} to #{addgroup} group" - system("usermod", "-aG", addgroup, username) + out, st = Open3.capture2e("usermod", "-aG", addgroup, username) + if st.exitstatus != 0 + STDERR.puts "Failed to add #{username} to #{addgroup} group:\n#{out}" + end end end @@ -158,7 +168,10 @@ begin if groups.index(removegroup).nil? # User is in a group, but shouldn't be, so remove them. STDERR.puts "Remove user #{username} from #{removegroup} group" - system("gpasswd", "-d", username, removegroup) + out, st = Open3.capture2e("gpasswd", "-d", username, removegroup) + if st.exitstatus != 0 + STDERR.puts "Failed to remove user #{username} from #{removegroup} group:\n#{out}" + end end end @@ -211,9 +224,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/