Class: Actions::ForemanPatch::Invocation::Patch
- Inherits:
-
EntryAction
- Object
- EntryAction
- Actions::ForemanPatch::Invocation::Patch
- Includes:
- Helpers::WithContinuousOutput
- Defined in:
- app/lib/actions/foreman_patch/invocation/patch.rb
Instance Method Summary collapse
- #continuous_output_providers ⇒ Object
- #finalize ⇒ Object
- #humanized_name ⇒ Object
- #live_output ⇒ Object
- #plan(invocation) ⇒ Object
- #rescue_strategy ⇒ Object
- #rescue_strategy_for_self ⇒ Object
- #update_status(execution_plan) ⇒ Object
Instance Method Details
#continuous_output_providers ⇒ Object
55 56 57 58 59 |
# File 'app/lib/actions/foreman_patch/invocation/patch.rb', line 55 def continuous_output_providers planned_actions.select do |action| action.respond_to?(:fill_continuous_output) end end |
#finalize ⇒ Object
26 27 28 29 |
# File 'app/lib/actions/foreman_patch/invocation/patch.rb', line 26 def finalize host.group_facet.last_patched_at = Time.current host.group_facet.save! end |
#humanized_name ⇒ Object
74 75 76 |
# File 'app/lib/actions/foreman_patch/invocation/patch.rb', line 74 def humanized_name _('Patch %s') % host.name end |
#live_output ⇒ Object
50 51 52 53 |
# File 'app/lib/actions/foreman_patch/invocation/patch.rb', line 50 def live_output continuous_output.sort! continuous_output.raw_outputs end |
#plan(invocation) ⇒ Object
9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
# File 'app/lib/actions/foreman_patch/invocation/patch.rb', line 9 def plan(invocation) action_subject(invocation.host, invocation_id: invocation.id) invocation.update!(task_id: task.id) sequence do plan_action(Actions::ForemanPatch::Invocation::Action, host, 'katello_package_update', pre_script: 'yum clean all; subscription-manager refresh', package: Setting[:skip_broken_patches] ? '--skip-broken' : nil) plan_action(Actions::ForemanPatch::Invocation::Action, host, 'power_action', action: 'restart') plan_action(Actions::ForemanPatch::Invocation::WaitForHost, host) plan_action(Actions::ForemanPatch::Invocation::Action, host, 'ensure_services', false) plan_self end end |
#rescue_strategy ⇒ Object
61 62 63 64 65 66 67 68 |
# File 'app/lib/actions/foreman_patch/invocation/patch.rb', line 61 def rescue_strategy planned_actions.each do |planned_action| if planned_action.steps.compact.any? { |step| step.state == :error } return rescue_strategy_for_planned_action(planned_action) end end rescue_strategy_for_self end |
#rescue_strategy_for_self ⇒ Object
70 71 72 |
# File 'app/lib/actions/foreman_patch/invocation/patch.rb', line 70 def rescue_strategy_for_self ::Dynflow::Action::Rescue::Fail end |
#update_status(execution_plan) ⇒ Object
31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
# File 'app/lib/actions/foreman_patch/invocation/patch.rb', line 31 def update_status(execution_plan) return unless root_action? return if input[:invocation_id].nil? case execution_plan.state when :scheduled, :pending, :planning, :planned invocation.update!(status: 'pending') when :running invocation.update!(status: 'running') else action = failed_action if action.nil? invocation.update!(status: 'success') else invocation.update!(status: action.required? ? 'error' : 'warning') end end end |