Module: Kitchen::Command::RunAction
Overview
Common module to execute a Kitchen action such as create, converge, etc.
Instance Method Summary collapse
Instance Method Details
#run_action(action, instances, *args) ⇒ Object
94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 |
# File 'lib/kitchen/command.rb', line 94 def run_action(action, instances, *args) concurrency = 1 if [:concurrency] concurrency = [:concurrency] || instances.size concurrency = instances.size if concurrency > instances.size end queue = Queue.new instances.each {|i| queue << i } concurrency.times { queue << nil } threads = [] concurrency.times do threads << Thread.new do while instance = queue.pop instance.public_send(action, *args) end end end threads.map { |i| i.join } end |