From: Peter Amstutz Date: Mon, 2 Jun 2014 20:44:26 +0000 (-0400) Subject: 2955: crunch-dispatch now sends a clean environment to crunch-job. (cherry-picked... X-Git-Tag: 1.1.0~2575^2~6 X-Git-Url: https://git.arvados.org/arvados.git/commitdiff_plain/2a64eae3cf8363c596feda5337ea20ce356ca11f 2955: crunch-dispatch now sends a clean environment to crunch-job. (cherry-picked from #2882) Conflicts: services/api/script/crunch-dispatch.rb --- diff --git a/services/api/script/crunch-dispatch.rb b/services/api/script/crunch-dispatch.rb index 0e9e06981e..f49f21b04c 100755 --- a/services/api/script/crunch-dispatch.rb +++ b/services/api/script/crunch-dispatch.rb @@ -1,5 +1,7 @@ #!/usr/bin/env ruby +require 'trollop' + include Process $warned = {} @@ -20,6 +22,10 @@ if ENV["CRUNCH_DISPATCH_LOCKFILE"] end end +$trollopts = Trollop::options do + opt :use_env, "Pass selected environment variables (PATH, PYTHONPATH, RUBYLIB, GEM_PATH, PERLLIB) to crunch-job" +end + ENV["RAILS_ENV"] = ARGV[0] || ENV["RAILS_ENV"] || "development" require File.dirname(__FILE__) + '/../config/boot' @@ -152,9 +158,23 @@ class Dispatcher end if Server::Application.config.crunch_job_user - cmd_args.unshift("sudo", "-E", "-u", - Server::Application.config.crunch_job_user, - "PERLLIB=#{ENV['PERLLIB']}") + cmd_args.unshift("sudo", "-E", "-u", Server::Application.config.crunch_job_user) + end + + cmd_args << "HOME=/dev/null" + cmd_args << "ARVADOS_API_HOST=#{ENV['ARVADOS_API_HOST']}" + cmd_args << "ARVADOS_API_HOST_INSECURE=#{ENV['ARVADOS_API_HOST_INSECURE']}" if ENV['ARVADOS_API_HOST_INSECURE'] + + ENV.each do |k, v| + cmd_args << "#{k}=#{v}" if k.starts_with? "CRUNCH_" + end + + if $trollopts.use_env + cmd_args << "PATH=#{ENV['PATH']}" + cmd_args << "PYTHONPATH=#{ENV['PYTHONPATH']}" + cmd_args << "PERLLIB=#{ENV['PERLLIB']}" + cmd_args << "RUBYLIB=#{ENV['RUBYLIB']}" + cmd_args << "GEM_PATH=#{ENV['GEM_PATH']}" end job_auth = ApiClientAuthorization. @@ -194,10 +214,10 @@ class Dispatcher cmd_args << '--git-dir' cmd_args << arvados_internal - $stderr.puts "dispatch: #{cmd_args.join ' '}" + $stderr.puts "dispatch: #{cmd_args}" begin - i, o, e, t = Open3.popen3(*cmd_args) + i, o, e, t = Open3.popen3({}, *cmd_args, { :unsetenv_others => true}) rescue $stderr.puts "dispatch: popen3: #{$!}" sleep 1