state machine triggers for resuming progress from a failed state
This commit is contained in:
parent
ece4b20bcf
commit
c995b0963c
@ -94,6 +94,14 @@ def _build_transitions(csp_stages):
|
|||||||
dest=compose_state(csp_stage, StageStates.FAILED),
|
dest=compose_state(csp_stage, StageStates.FAILED),
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
transitions.append(
|
||||||
|
dict(
|
||||||
|
trigger="resume_progress_" + csp_stage.name.lower(),
|
||||||
|
source=compose_state(csp_stage, StageStates.FAILED),
|
||||||
|
dest=compose_state(csp_stage, StageStates.IN_PROGRESS),
|
||||||
|
conditions=["is_ready_resume_progress"],
|
||||||
|
)
|
||||||
|
)
|
||||||
return states, transitions
|
return states, transitions
|
||||||
|
|
||||||
|
|
||||||
|
@ -122,6 +122,22 @@ class PortfolioStateMachine(
|
|||||||
)
|
)
|
||||||
self.fail_stage(stage)
|
self.fail_stage(stage)
|
||||||
|
|
||||||
|
elif self.current_state == FSMStates.FAILED:
|
||||||
|
# get the first trigger that starts with 'create_'
|
||||||
|
resume_progress_trigger = next(
|
||||||
|
filter(
|
||||||
|
lambda trigger: trigger.startswith("resume_progress_"),
|
||||||
|
self.machine.get_triggers(FSMStates.FAILED.name),
|
||||||
|
),
|
||||||
|
None,
|
||||||
|
)
|
||||||
|
if resume_progress_trigger:
|
||||||
|
self.trigger(resume_progress_trigger, **kwargs)
|
||||||
|
else:
|
||||||
|
app.logger.info(
|
||||||
|
f"could not locate 'resume progress trigger' for {self.__repr__()}"
|
||||||
|
)
|
||||||
|
|
||||||
elif state_obj.is_CREATED:
|
elif state_obj.is_CREATED:
|
||||||
# the create trigger for the next stage should be in the available
|
# the create trigger for the next stage should be in the available
|
||||||
# triggers for the current state
|
# triggers for the current state
|
||||||
@ -196,6 +212,13 @@ class PortfolioStateMachine(
|
|||||||
|
|
||||||
return True
|
return True
|
||||||
|
|
||||||
|
def is_ready_resume_progress(self, event):
|
||||||
|
"""
|
||||||
|
This function guards advancing states from *_FAILED to *_IN_PROGRESS.
|
||||||
|
"""
|
||||||
|
|
||||||
|
return True
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def application_id(self):
|
def application_id(self):
|
||||||
return None
|
return None
|
||||||
|
Loading…
x
Reference in New Issue
Block a user