class Blender::Driver::SshMulti
Public Instance Methods
execute(tasks, hosts)
click to toggle source
# File lib/blender/drivers/ssh_multi.rb, line 28 def execute(tasks, hosts) Log.debug("SSH execution tasks [#{tasks.size}]") Log.debug("SSH on hosts [#{hosts.join("\n")}]") Array(tasks).each do |task| session = create_session(hosts, task.metadata[:concurrency]) cmd = run_command(task.command, session) if cmd.exitstatus != 0 and !task.metadata[:ignore_failure] raise ExecutionFailed, cmd.stderr end session.loop end end
Private Instance Methods
create_session(hosts, concurrency)
click to toggle source
# File lib/blender/drivers/ssh_multi.rb, line 43 def create_session(hosts, concurrency) error_handler = lambda do |server| if config[:ignore_on_failure] $!.backtrace.each { |l| Blender::Log.debug(l) } else throw :go, :raise end end s = Net::SSH::Multi.start( concurrent_connections: concurrency, on_error: error_handler ) hosts.each do |h| s.use(user + '@' + h, config) end s end
default_config()
click to toggle source
Calls superclass method
# File lib/blender/drivers/ssh_multi.rb, line 61 def default_config super.merge(concurrency: 5) end