diff --git a/bin/recurring_jobs_ctl.rb b/bin/recurring_jobs_ctl.rb index 1b9f1431..4ed5b087 100644 --- a/bin/recurring_jobs_ctl.rb +++ b/bin/recurring_jobs_ctl.rb @@ -7,9 +7,8 @@ require config puts "starting out" - Celluloid.shutdown_timeout=1_000_000 receiver = Ragios::RecurringJobs::Receiver.new - #trap("INT") { puts "Shutting down."; pull.terminate; exit} + trap("INT") { puts "Shutting down."; exit} receiver.run end diff --git a/lib/ragios/monitors/manager.rb b/lib/ragios/monitors/manager.rb index 155eb269..c4be0e2e 100644 --- a/lib/ragios/monitors/manager.rb +++ b/lib/ragios/monitors/manager.rb @@ -20,8 +20,8 @@ def add(options) monitor_options = options.merge({created_at_: event_time, status_: 'active', type: "monitor"}) validate_monitor(monitor_options) model.save(monitor_id, monitor_options) - schedule(monitor_id, monitor_options[:every], first_run = true) - publisher.log_event( + schedule(monitor_id, monitor_options[:every], :run_now_and_schedule) + publisher.log_event!( monitor_id: monitor_id, event: {"monitor status" => "created"}, state: "create", @@ -60,7 +60,7 @@ def stop(monitor_id) try_monitor(monitor_id) do unschedule(monitor_id) !!model.update(monitor_id, status_: "stopped") - !!publisher.log_event( + !!publisher.log_event!( monitor_id: monitor_id, event: {"monitor status" => "stopped"}, state: "stopped", @@ -76,7 +76,7 @@ def delete(monitor_id) try_monitor(monitor_id) do !!model.delete(monitor_id) unschedule(monitor_id) - !!publisher.log_event( + !!publisher.log_event!( monitor_id: monitor_id, event: {"monitor status" => "deleted"}, state: "deleted", @@ -100,7 +100,7 @@ def update(monitor_id, options) validate_monitor(new_monitor) model.update(monitor_id, options) reschedule(monitor_id, options[:every]) if options.keys.include?(:every) - publisher.log_event( + publisher.log_event!( monitor_id: monitor_id, state: "updated", event: {"monitor status" => "updated"}, @@ -129,9 +129,8 @@ def start(monitor_id) Contract Monitor_id => Bool def test_now(monitor_id) try_monitor(monitor_id) do - #monitor = model.find(monitor_id) - #!!perform(generic_monitor(monitor)) - puts "ask worker to perform job" + monitor = model.find(monitor_id) + schedule(monitor[:_id], monitor[:every], :trigger_work) true end end @@ -190,21 +189,22 @@ def get_current_state(monitor_id) #check if rufu-scheduler can be rescheduled without being manually stopped & rescheduled def reschedule(monitor_id, interval) unschedule(monitor_id) - schedule(monitor_id, interval ) + schedule(monitor_id, interval) end - def schedule(monitor_id, interval, first_run = false) + + def schedule(monitor_id, interval, perform = :schedule_and_run_later) add_to_scheduler({ monitor_id: monitor_id, interval: interval, - first_run: first_run + perform: perform }) end def unschedule(monitor_id) add_to_scheduler({ monitor_id: monitor_id, - unschedule: true + perform: :unschedule }) end @@ -214,7 +214,6 @@ def add_to_scheduler(options) pusher.terminate end - def validate_monitor(options) !!Ragios::Monitors::GenericMonitor.new(options) rescue Ragios::PluginTestCommandNotFound, @@ -228,7 +227,7 @@ def validate_monitor(options) private def log_monitor_start(monitor_id, monitor) - publisher.log_event( + publisher.log_event!( monitor_id: monitor_id, event: {"monitor status" => "started"}, state: "started", diff --git a/lib/ragios/recurring_jobs/scheduler.rb b/lib/ragios/recurring_jobs/scheduler.rb index 304d8307..d6d944dc 100644 --- a/lib/ragios/recurring_jobs/scheduler.rb +++ b/lib/ragios/recurring_jobs/scheduler.rb @@ -38,11 +38,12 @@ def trigger_work(options) ) end - def unschedule(monitor_id) - jobs = find(monitor_id) + def unschedule(options) + jobs = find(options[:monitor_id]) jobs.each do |job| job.unschedule end + puts "unscheduling #{jobs.inspect}" end def find(monitor_id)