Method: CORL::Plugin::Network#batch

Defined in:
lib/core/plugin/network.rb

#batch(node_references, default_provider = nil, parallel = true, &code) ⇒ Object




437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
# File 'lib/core/plugin/network.rb', line 437

def batch(node_references, default_provider = nil, parallel = true, &code)
  success = true
  
  node_references = array(node_references.clone)
  
  if has_nodes? && ! node_references.empty?
    # Execute action on selected nodes      
    nodes = nodes_by_reference(node_references, default_provider)
    
    if CORL.parallel? && parallel
      values = []
      nodes.each do |node|
        values << Celluloid::Future.new(node, &code)
      end
      values  = values.map { |future| future.value }
      success = false if values.include?(false)
    else
      nodes.each do |node|
        proc_success = code.call(node)
        if proc_success == false
          success = false
          break
        end
      end  
    end
  end
  success
end