class Puppet::Scheduler::Scheduler

Public Class Methods

new(timer=Puppet::Scheduler::Timer.new) click to toggle source
  # File lib/puppet/scheduler/scheduler.rb
3 def initialize(timer=Puppet::Scheduler::Timer.new)
4   @timer = timer
5 end

Public Instance Methods

run_loop(jobs) click to toggle source
   # File lib/puppet/scheduler/scheduler.rb
 7 def run_loop(jobs)
 8   mark_start_times(jobs, @timer.now)
 9   while not enabled(jobs).empty?
10     @timer.wait_for(min_interval_to_next_run_from(jobs, @timer.now))
11     run_ready(jobs, @timer.now)
12   end
13 end

Private Instance Methods

enabled(jobs) click to toggle source
   # File lib/puppet/scheduler/scheduler.rb
17 def enabled(jobs)
18   jobs.select(&:enabled?)
19 end
mark_start_times(jobs, start_time) click to toggle source
   # File lib/puppet/scheduler/scheduler.rb
21 def mark_start_times(jobs, start_time)
22   jobs.each do |job|
23     job.start_time = start_time
24   end
25 end
min_interval_to_next_run_from(jobs, from_time) click to toggle source
   # File lib/puppet/scheduler/scheduler.rb
27 def min_interval_to_next_run_from(jobs, from_time)
28   enabled(jobs).map do |j|
29     j.interval_to_next_from(from_time)
30   end.min
31 end
run_ready(jobs, at_time) click to toggle source
   # File lib/puppet/scheduler/scheduler.rb
33 def run_ready(jobs, at_time)
34   enabled(jobs).each do |j|
35     # This check intentionally happens right before each run,
36     # instead of filtering on ready schedulers, since one may adjust
37     # the readiness of a later one
38     if j.ready?(at_time)
39       j.run(at_time)
40     end
41   end
42 end