Method: Logical::Naf::ConstructionZone::Boss#enqueue_n_commands_on_machines

Defined in:
app/models/logical/naf/construction_zone/boss.rb

#enqueue_n_commands_on_machines(parameters, number_of_jobs = :from_limit, machines = []) ⇒ Object



109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
# File 'app/models/logical/naf/construction_zone/boss.rb', line 109

def enqueue_n_commands_on_machines(parameters, number_of_jobs = :from_limit, machines = [])
  logger.detail "enqueuing #{parameters[:command]} #{number_of_jobs} time(s) on #{machines.length} machine(s)"
  # enqueue the command on each machine
  machines.each do |machine|
    number_of_jobs = (parameters[:application_run_group_quantum] || 1) if number_of_jobs == :from_limit
    logger.info "enqueuing #{parameters[:command]} #{number_of_jobs} time(s) on #{machine}"
    # enqueue the command number_of_jobs times
    (1..number_of_jobs).each do
      machine_parameters = {
        application_run_group_restriction: ::Naf::ApplicationRunGroupRestriction.limited_per_machine
      }.merge(parameters)
      machine_parameters[:affinities] = [machine.affinity] + affinities(machine_parameters)
      work_order = AdHocWorkOrder.new(machine_parameters)

      @foreman.enqueue(work_order)
    end
  end
end