Sha256: ee6559eb9403db48455bc1d431eb02d9b87830c021c40ea2a6d9d73eaea3f1fe
Contents?: true
Size: 1.7 KB
Versions: 5
Compression:
Stored size: 1.7 KB
Contents
require 'net/ssh' module Ridley # @author Jamie Winsor <jamie@vialstudios.com> class SSH autoload :Response, 'ridley/ssh/response' autoload :ResponseSet, 'ridley/ssh/response_set' autoload :Worker, 'ridley/ssh/worker' class << self # @param [Ridley::Node, Array<Ridley::Node>] nodes # @param [Hash] options def start(nodes, options = {}, &block) runner = new(nodes, options) result = yield runner runner.terminate result end end include Celluloid include Celluloid::Logger attr_reader :nodes attr_reader :options # @param [Ridley::Node, Array<Ridley::Node>] nodes # @param [Hash] options # @see Net::SSH def initialize(nodes, options = {}) @nodes = nodes @options = options self.options[:timeout] ||= 1.5 end # @return [Array<SSH::Worker>] def workers @workers ||= Array(nodes).collect do |node| Worker.new_link(current_actor, node.public_hostname, options) end end # @param [String] command # # @return [Array] def run(command) workers.collect { |worker| worker.async.run(command) } ResponseSet.new.tap do |responses| until responses.length == workers.length receive { |msg| status, response = msg case status when :ok responses.add_ok(response) when :error responses.add_error(response) else error "SSH Failure: #{command}. terminating..." terminate end } end end end def finalize workers.collect(&:terminate) end end end
Version data entries
5 entries across 5 versions & 1 rubygems
Version | Path |
---|---|
ridley-0.5.2 | lib/ridley/ssh.rb |
ridley-0.5.1 | lib/ridley/ssh.rb |
ridley-0.5.0 | lib/ridley/ssh.rb |
ridley-0.4.1 | lib/ridley/ssh.rb |
ridley-0.4.0 | lib/ridley/ssh.rb |