class SSHKit::Chunky::Runner::Chunks

Attributes

chunks_count[W]

Public Instance Methods

execute() click to toggle source
# File lib/sshkit/chunky/runner/chunks.rb, line 7
def execute
  each_chunk(hosts).map do |group_hosts|
    SSHKit::Runner::Parallel.new(group_hosts, &block).execute
    sleep wait_interval
  end.flatten
end

Private Instance Methods

chunks_count() click to toggle source
# File lib/sshkit/chunky/runner/chunks.rb, line 34
def chunks_count
  @chunks_count || options[:count] || 2
end
each_chunk(array) click to toggle source
# File lib/sshkit/chunky/runner/chunks.rb, line 16
def each_chunk(array)
  return array.map { |item| [item] } if array.size <= chunks_count

  division = array.size.div chunks_count
  modulo = array.size % chunks_count

  groups = []
  start = 0

  chunks_count.times do |index|
    length = division + (modulo > 0 && modulo > index ? 1 : 0)
    groups << array.slice(start, length)
    start += length
  end

  groups
end