Class: Logical::Naf::ConstructionZone::Boss
- Inherits:
-
Object
- Object
- Logical::Naf::ConstructionZone::Boss
- Includes:
- Af::Application::Component
- Defined in:
- app/models/logical/naf/construction_zone/boss.rb
Instance Method Summary collapse
- #enqueue_ad_hoc_command(parameters) ⇒ Object
- #enqueue_application(application, application_run_group_restriction, application_run_group_name, application_run_group_limit = 1, priority = 0, affinities = [], prerequisites = [], enqueue_backlogs = false) ⇒ Object
- #enqueue_application_schedule(application_schedule) ⇒ Object
- #enqueue_command(command, application_type = ::Naf::ApplicationType.rails, application_run_group_restriction = ::Naf::ApplicationRunGroupRestriction.limited_per_all_machines, application_run_group_name = :command, application_run_group_limit = 1, priority = 0, affinities = [], prerequisites = [], enqueue_backlogs = false) ⇒ Object
- #enqueue_n_commands(parameters, number_of_jobs = :from_limit) ⇒ Object
- #enqueue_n_commands_on_machines(parameters, number_of_jobs = :from_limit, machines = []) ⇒ Object
- #enqueue_rails_command(command, application_run_group_restriction = ::Naf::ApplicationRunGroupRestriction.limited_per_all_machines, application_run_group_name = :command, application_run_group_limit = 1, priority = 0, affinities = [], prerequisites = [], enqueue_backlogs = false) ⇒ Object
-
#initialize ⇒ Boss
constructor
A new instance of Boss.
- #reenqueue(job) ⇒ Object
Constructor Details
Instance Method Details
#enqueue_ad_hoc_command(parameters) ⇒ Object
75 76 77 78 |
# File 'app/models/logical/naf/construction_zone/boss.rb', line 75 def enqueue_ad_hoc_command(parameters) work_order = AdHocWorkOrder.new(parameters) @foreman.enqueue(work_order) end |
#enqueue_application(application, application_run_group_restriction, application_run_group_name, application_run_group_limit = 1, priority = 0, affinities = [], prerequisites = [], enqueue_backlogs = false) ⇒ Object
10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
# File 'app/models/logical/naf/construction_zone/boss.rb', line 10 def enqueue_application(application, application_run_group_restriction, application_run_group_name, application_run_group_limit = 1, priority = 0, affinities = [], prerequisites = [], enqueue_backlogs = false) work_order = ApplicationWorkOrder.new(application, application_run_group_restriction, application_run_group_name, application_run_group_limit = 1, priority = 0, affinities = [], prerequisites = [], enqueue_backlogs = false) @foreman.enqueue(work_order) end |
#enqueue_application_schedule(application_schedule) ⇒ Object
29 30 31 32 |
# File 'app/models/logical/naf/construction_zone/boss.rb', line 29 def enqueue_application_schedule(application_schedule) work_order = ApplicationScheduleWorkOrder.new(application_schedule) @foreman.enqueue(work_order) end |
#enqueue_command(command, application_type = ::Naf::ApplicationType.rails, application_run_group_restriction = ::Naf::ApplicationRunGroupRestriction.limited_per_all_machines, application_run_group_name = :command, application_run_group_limit = 1, priority = 0, affinities = [], prerequisites = [], enqueue_backlogs = false) ⇒ Object
54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 |
# File 'app/models/logical/naf/construction_zone/boss.rb', line 54 def enqueue_command(command, application_type = ::Naf::ApplicationType.rails, application_run_group_restriction = ::Naf::ApplicationRunGroupRestriction.limited_per_all_machines, application_run_group_name = :command, application_run_group_limit = 1, priority = 0, affinities = [], prerequisites = [], enqueue_backlogs = false) work_order = WorkOrder.new(command, application_type, application_run_group_restriction, application_run_group_name, application_run_group_limit, priority, affinities, prerequisites, enqueue_backlogs) @foreman.enqueue(work_order) end |
#enqueue_n_commands(parameters, number_of_jobs = :from_limit) ⇒ Object
99 100 101 102 103 104 105 106 |
# File 'app/models/logical/naf/construction_zone/boss.rb', line 99 def enqueue_n_commands(parameters, number_of_jobs = :from_limit) 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)" (1..number_of_jobs).each do work_order = AdHocWorkOrder.new(parameters) @foreman.enqueue(work_order) end end |
#enqueue_n_commands_on_machines(parameters, number_of_jobs = :from_limit, machines = []) ⇒ Object
80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 |
# File 'app/models/logical/naf/construction_zone/boss.rb', line 80 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 |
#enqueue_rails_command(command, application_run_group_restriction = ::Naf::ApplicationRunGroupRestriction.limited_per_all_machines, application_run_group_name = :command, application_run_group_limit = 1, priority = 0, affinities = [], prerequisites = [], enqueue_backlogs = false) ⇒ Object
34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 |
# File 'app/models/logical/naf/construction_zone/boss.rb', line 34 def enqueue_rails_command(command, application_run_group_restriction = ::Naf::ApplicationRunGroupRestriction.limited_per_all_machines, application_run_group_name = :command, application_run_group_limit = 1, priority = 0, affinities = [], prerequisites = [], enqueue_backlogs = false) work_order = WorkOrder.new(command, ::Naf::ApplicationType.rails, application_run_group_restriction, application_run_group_name, application_run_group_limit, priority, affinities, prerequisites, enqueue_backlogs) @foreman.enqueue(work_order) end |
#reenqueue(job) ⇒ Object
108 109 110 111 112 113 114 115 |
# File 'app/models/logical/naf/construction_zone/boss.rb', line 108 def reenqueue(job) enqueue_rails_command(job.command, job.application_run_group_restriction, job.application_run_group_name, job.application_run_group_limit, job.priority, job.historical_job_affinity_tabs.map{|jat| jat.affinity}) end |