class Puppet::Scheduler::Scheduler
Public Class Methods
new(timer=Puppet::Scheduler::Timer.new)
click to toggle source
# File lib/puppet/scheduler/scheduler.rb 4 def initialize(timer=Puppet::Scheduler::Timer.new) 5 @timer = timer 6 end
Public Instance Methods
run_loop(jobs)
click to toggle source
# File lib/puppet/scheduler/scheduler.rb 8 def run_loop(jobs) 9 mark_start_times(jobs, @timer.now) 10 while not enabled(jobs).empty? 11 @timer.wait_for(min_interval_to_next_run_from(jobs, @timer.now)) 12 run_ready(jobs, @timer.now) 13 end 14 end
Private Instance Methods
enabled(jobs)
click to toggle source
# File lib/puppet/scheduler/scheduler.rb 18 def enabled(jobs) 19 jobs.select(&:enabled?) 20 end
mark_start_times(jobs, start_time)
click to toggle source
# File lib/puppet/scheduler/scheduler.rb 22 def mark_start_times(jobs, start_time) 23 jobs.each do |job| 24 job.start_time = start_time 25 end 26 end
min_interval_to_next_run_from(jobs, from_time)
click to toggle source
# File lib/puppet/scheduler/scheduler.rb 28 def min_interval_to_next_run_from(jobs, from_time) 29 enabled(jobs).map do |j| 30 j.interval_to_next_from(from_time) 31 end.min 32 end
run_ready(jobs, at_time)
click to toggle source
# File lib/puppet/scheduler/scheduler.rb 34 def run_ready(jobs, at_time) 35 enabled(jobs).each do |j| 36 # This check intentionally happens right before each run, 37 # instead of filtering on ready schedulers, since one may adjust 38 # the readiness of a later one 39 if j.ready?(at_time) 40 j.run(at_time) 41 end 42 end 43 end