meerkat_workgraph/generated/
protocol_work_execution_flow_launch.rs1use crate::machines::work_execution_lifecycle::{
6 WorkExecutionLifecycleEffect, WorkExecutionLifecycleInput,
7 WorkExecutionLifecycleMachineAuthority, WorkExecutionLifecycleMachineMutator,
8 WorkExecutionLifecycleMachineTransition, WorkExecutionLifecycleMachineTransitionError,
9};
10
11#[derive(Debug, Clone)]
12pub struct WorkExecutionFlowLaunchObligation {
13 pub binding_id: String,
14 pub run_id: String,
15}
16
17#[macro_export]
18macro_rules! work_execution_flow_launch_feedback_input_patterns {
19 () => {
20 $crate::machines::work_execution_lifecycle::WorkExecutionLifecycleInput::ConfirmFlowStarted
21 | $crate::machines::work_execution_lifecycle::WorkExecutionLifecycleInput::ObserveFlowRunning
22 | $crate::machines::work_execution_lifecycle::WorkExecutionLifecycleInput::ObserveFlowCompleted
23 | $crate::machines::work_execution_lifecycle::WorkExecutionLifecycleInput::ObserveFlowFailed { .. }
24 | $crate::machines::work_execution_lifecycle::WorkExecutionLifecycleInput::ObserveFlowCanceled { .. }
25 | $crate::machines::work_execution_lifecycle::WorkExecutionLifecycleInput::MarkLaunchUncertain { .. }
26 | $crate::machines::work_execution_lifecycle::WorkExecutionLifecycleInput::QuarantineLaunch { .. }
27 | $crate::machines::work_execution_lifecycle::WorkExecutionLifecycleInput::ResolveLaunchFailed { .. }
28 };
29}
30
31pub fn extract_obligations(
32 transition: &WorkExecutionLifecycleMachineTransition,
33) -> Vec<WorkExecutionFlowLaunchObligation> {
34 transition
35 .effects()
36 .iter()
37 .filter_map(|effect| match effect {
38 WorkExecutionLifecycleEffect::FlowLaunchRequested { binding_id, run_id } => {
39 Some(WorkExecutionFlowLaunchObligation {
40 binding_id: binding_id.clone(),
41 run_id: run_id.clone(),
42 })
43 }
44 _ => None,
45 })
46 .collect()
47}
48
49pub fn submit_confirm_flow_started(
50 authority: &mut WorkExecutionLifecycleMachineAuthority,
51 _obligation: WorkExecutionFlowLaunchObligation,
52) -> Result<WorkExecutionLifecycleMachineTransition, WorkExecutionLifecycleMachineTransitionError> {
53 let transition = authority.apply(WorkExecutionLifecycleInput::ConfirmFlowStarted)?;
54 Ok(transition)
55}
56
57pub fn submit_observe_flow_running(
58 authority: &mut WorkExecutionLifecycleMachineAuthority,
59 _obligation: WorkExecutionFlowLaunchObligation,
60) -> Result<WorkExecutionLifecycleMachineTransition, WorkExecutionLifecycleMachineTransitionError> {
61 let transition = authority.apply(WorkExecutionLifecycleInput::ObserveFlowRunning)?;
62 Ok(transition)
63}
64
65pub fn submit_observe_flow_completed(
66 authority: &mut WorkExecutionLifecycleMachineAuthority,
67 _obligation: WorkExecutionFlowLaunchObligation,
68) -> Result<WorkExecutionLifecycleMachineTransition, WorkExecutionLifecycleMachineTransitionError> {
69 let transition = authority.apply(WorkExecutionLifecycleInput::ObserveFlowCompleted)?;
70 Ok(transition)
71}
72
73pub fn submit_observe_flow_failed(
74 authority: &mut WorkExecutionLifecycleMachineAuthority,
75 _obligation: WorkExecutionFlowLaunchObligation,
76 observed_failure_detail: Option<String>,
77) -> Result<WorkExecutionLifecycleMachineTransition, WorkExecutionLifecycleMachineTransitionError> {
78 let transition = authority.apply(WorkExecutionLifecycleInput::ObserveFlowFailed {
79 detail: observed_failure_detail,
80 })?;
81 Ok(transition)
82}
83
84pub fn submit_observe_flow_canceled(
85 authority: &mut WorkExecutionLifecycleMachineAuthority,
86 _obligation: WorkExecutionFlowLaunchObligation,
87 observed_cancellation_detail: Option<String>,
88) -> Result<WorkExecutionLifecycleMachineTransition, WorkExecutionLifecycleMachineTransitionError> {
89 let transition = authority.apply(WorkExecutionLifecycleInput::ObserveFlowCanceled {
90 detail: observed_cancellation_detail,
91 })?;
92 Ok(transition)
93}
94
95pub fn submit_mark_launch_uncertain(
96 authority: &mut WorkExecutionLifecycleMachineAuthority,
97 _obligation: WorkExecutionFlowLaunchObligation,
98 launch_uncertainty_detail: String,
99) -> Result<WorkExecutionLifecycleMachineTransition, WorkExecutionLifecycleMachineTransitionError> {
100 let transition = authority.apply(WorkExecutionLifecycleInput::MarkLaunchUncertain {
101 detail: launch_uncertainty_detail,
102 })?;
103 Ok(transition)
104}
105
106pub fn submit_quarantine_launch(
107 authority: &mut WorkExecutionLifecycleMachineAuthority,
108 _obligation: WorkExecutionFlowLaunchObligation,
109 launch_quarantine_detail: String,
110) -> Result<WorkExecutionLifecycleMachineTransition, WorkExecutionLifecycleMachineTransitionError> {
111 let transition = authority.apply(WorkExecutionLifecycleInput::QuarantineLaunch {
112 detail: launch_quarantine_detail,
113 })?;
114 Ok(transition)
115}
116
117pub fn submit_resolve_launch_failed(
118 authority: &mut WorkExecutionLifecycleMachineAuthority,
119 _obligation: WorkExecutionFlowLaunchObligation,
120 launch_failure_detail: String,
121) -> Result<WorkExecutionLifecycleMachineTransition, WorkExecutionLifecycleMachineTransitionError> {
122 let transition = authority.apply(WorkExecutionLifecycleInput::ResolveLaunchFailed {
123 detail: launch_failure_detail,
124 })?;
125 Ok(transition)
126}