Sha256: 17dc14c163e07d40315091004556093e6d23617aec73c8afb911ead06d0339e0

Contents?: true

Size: 1.5 KB

Versions: 11

Compression:

Stored size: 1.5 KB

Contents

module Ridley
  module HostConnector
    # @author Kyle Allan <kallan@riotgames.com>
    class WinRM
      autoload :CommandUploader, 'ridley/host_connector/winrm/command_uploader'
      autoload :Worker, 'ridley/host_connector/winrm/worker'

      class << self
        # @param [Ridley::NodeResource, Array<Ridley::NodeResource>] nodes
        # @param [Hash] options
        def start(nodes, options = {}, &block)
          runner = new(nodes, options)
          result = yield runner
          runner.terminate

          result
        ensure
          runner.terminate if runner && runner.alive?
        end
      end

      include Celluloid
      include Celluloid::Logger

      attr_reader :nodes
      attr_reader :options

      # @param [Ridley::NodeResource, Array<Ridley::NodeResource>] nodes
      # @param [Hash] options
      def initialize(nodes, options = {})
        @nodes = Array(nodes)
        @options = options
      end

      # @param [String] command
      #
      # @return [Array]
      def run(command)
        workers = Array.new
        futures = self.nodes.collect do |node|
          workers << worker = Worker.new(node.public_hostname, self.options.freeze)
          worker.future.run(command)
        end

        Ridley::HostConnector::ResponseSet.new.tap do |response_set|
          futures.each do |future|
            status, response = future.value
            response_set.add_response(response)
          end
        end
      ensure
        workers.map(&:terminate)
      end
    end
  end
end

Version data entries

11 entries across 11 versions & 1 rubygems

Version Path
ridley-0.12.1 lib/ridley/host_connector/winrm.rb
ridley-0.12.0 lib/ridley/host_connector/winrm.rb
ridley-0.11.2 lib/ridley/host_connector/winrm.rb
ridley-0.12.0.rc1 lib/ridley/host_connector/winrm.rb
ridley-0.11.1 lib/ridley/host_connector/winrm.rb
ridley-0.10.2 lib/ridley/host_connector/winrm.rb
ridley-0.10.1 lib/ridley/host_connector/winrm.rb
ridley-0.11.0.rc1 lib/ridley/host_connector/winrm.rb
ridley-0.10.0 lib/ridley/host_connector/winrm.rb
ridley-0.10.0.rc3 lib/ridley/host_connector/winrm.rb
ridley-0.10.0.rc2 lib/ridley/host_connector/winrm.rb