Sha256: 1a30082a5ec89bdc8fc8b4ee627d9741f0dbee3e87b92da088e3f1ea875011d0

Contents?: true

Size: 829 Bytes

Versions: 25

Compression:

Stored size: 829 Bytes

Contents

module SSHKit

  class Coordinator

    attr_accessor :hosts

    def initialize(raw_hosts)
      @raw_hosts = Array(raw_hosts)
      raise NoValidHosts unless Array(raw_hosts).any?
      resolve_hosts!
    end

    def each(options={}, &block)
      options = default_options.merge(options)
      case options[:in]
      when :parallel then Runner::Parallel
      when :sequence then Runner::Sequential
      when :groups   then Runner::Group
      else
        raise RuntimeError, "Don't know how to handle run style #{options[:in].inspect}"
      end.new(hosts, &block).execute
    end

    private

      attr_accessor :cooldown

      def default_options
        { in: :parallel }
      end

      def resolve_hosts!
        @hosts = @raw_hosts.collect { |rh| rh.is_a?(Host) ? rh : Host.new(rh) }.uniq
      end

  end

end

Version data entries

25 entries across 25 versions & 1 rubygems

Version Path
sshkit-0.0.31 lib/sshkit/coordinator.rb
sshkit-0.0.29 lib/sshkit/coordinator.rb
sshkit-0.0.28 lib/sshkit/coordinator.rb
sshkit-0.0.27 lib/sshkit/coordinator.rb
sshkit-0.0.26 lib/sshkit/coordinator.rb
sshkit-0.0.25 lib/sshkit/coordinator.rb
sshkit-0.0.24 lib/sshkit/coordinator.rb
sshkit-0.0.23 lib/sshkit/coordinator.rb
sshkit-0.0.22 lib/sshkit/coordinator.rb
sshkit-0.0.21 lib/sshkit/coordinator.rb
sshkit-0.0.19 lib/sshkit/coordinator.rb
sshkit-0.0.18 lib/sshkit/coordinator.rb
sshkit-0.0.16 lib/sshkit/coordinator.rb
sshkit-0.0.15 lib/sshkit/coordinator.rb
sshkit-0.0.14 lib/sshkit/coordinator.rb
sshkit-0.0.13 lib/sshkit/coordinator.rb
sshkit-0.0.12 lib/sshkit/coordinator.rb
sshkit-0.0.11 lib/sshkit/coordinator.rb
sshkit-0.0.10 lib/sshkit/coordinator.rb
sshkit-0.0.9 lib/sshkit/coordinator.rb