module Dynflow::Action::WithPollingSubPlans
Constants
- Poll
- REFRESH_INTERVAL
Public Instance Methods
initiate()
click to toggle source
Calls superclass method
# File lib/dynflow/action/with_polling_sub_plans.rb, line 22 def initiate ping super end
notify_on_finish(_sub_plans)
click to toggle source
# File lib/dynflow/action/with_polling_sub_plans.rb, line 51 def notify_on_finish(_sub_plans) suspend end
ping(_suspended_action = nil)
click to toggle source
# File lib/dynflow/action/with_polling_sub_plans.rb, line 60 def ping(_suspended_action = nil) plan_event(Poll, REFRESH_INTERVAL) end
poll()
click to toggle source
# File lib/dynflow/action/with_polling_sub_plans.rb, line 17 def poll recalculate_counts try_to_finish || suspend_and_ping end
recalculate_counts()
click to toggle source
# File lib/dynflow/action/with_polling_sub_plans.rb, line 64 def recalculate_counts total = sub_plans_count failed = sub_plans_count('state' => %w(paused stopped), 'result' => 'error') success = sub_plans_count('state' => 'stopped', 'result' => 'success') output.update(:total_count => total - output.fetch(:resumed_count, 0), :pending_count => total - failed - success, :failed_count => failed - output.fetch(:resumed_count, 0), :success_count => success) end
resume()
click to toggle source
# File lib/dynflow/action/with_polling_sub_plans.rb, line 32 def resume if sub_plans.all? { |sub_plan| sub_plan.error_in_plan? } output[:resumed_count] ||= 0 output[:resumed_count] += output[:failed_count] # We're starting over and need to reset the counts %w(total failed pending success).each { |key| output.delete("#{key}_count".to_sym) } initiate else if self.is_a?(::Dynflow::Action::WithBulkSubPlans) && can_spawn_next_batch? # Not everything was spawned ping spawn_plans suspend else poll end end end
run(event = nil)
click to toggle source
Calls superclass method
# File lib/dynflow/action/with_polling_sub_plans.rb, line 8 def run(event = nil) case event when Poll poll else super(event) end end
suspend_and_ping()
click to toggle source
# File lib/dynflow/action/with_polling_sub_plans.rb, line 55 def suspend_and_ping ping suspend end
wait_for_sub_plans(sub_plans)
click to toggle source
# File lib/dynflow/action/with_polling_sub_plans.rb, line 27 def wait_for_sub_plans(sub_plans) increase_counts(sub_plans.count, 0) suspend end