Skip to content

Commit

Permalink
removing unnecesary timedout transition
Browse files Browse the repository at this point in the history
  • Loading branch information
edcdavid committed Sep 27, 2024
1 parent 7c46e8c commit b6de7f8
Show file tree
Hide file tree
Showing 2 changed files with 8 additions and 11 deletions.
3 changes: 1 addition & 2 deletions docs/dev/config_fsm.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Configuration applied state machine
The State diagram of the configuration state machine is generated below in dot format.
A Link to the rendered diagram is at: [link](https://dreampuf.github.io/GraphvizOnline/?presentation#digraph%20%7B%0A%09compound=true%3B%0A%09node%20%5Bshape=Mrecord%5D%3B%0A%09rankdir=%22LR%22%3B%0A%0A%09ClusterNotReady%20%5Blabel=%22ClusterNotReady%7Centry%20%2F%20func2%22%5D%3B%0A%09Completed%20%5Blabel=%22Completed%7Centry%20%2F%20func5%22%5D%3B%0A%09InProgress%20%5Blabel=%22InProgress%7Centry%20%2F%20func3%22%5D%3B%0A%09Missing%20%5Blabel=%22Missing%7Centry%20%2F%20func1%22%5D%3B%0A%09OutOfDate%20%5Blabel=%22OutOfDate%7Centry%20%2F%20func4%22%5D%3B%0A%09Start%20%5Blabel=%22Start%22%5D%3B%0A%09TimedOut%20%5Blabel=%22TimedOut%7Centry%20%2F%20func6%22%5D%3B%0A%09ClusterNotReady%20-%3E%20ClusterNotReady%20%5Blabel=%22ClusterNotReady-&gt%3BClusterNotReady%22%5D%3B%0A%09ClusterNotReady%20-%3E%20InProgress%20%5Blabel=%22ClusterNotReady-&gt%3BInProgress%22%5D%3B%0A%09ClusterNotReady%20-%3E%20Missing%20%5Blabel=%22ClusterNotReady-&gt%3BMissing%22%5D%3B%0A%09ClusterNotReady%20-%3E%20TimedOut%20%5Blabel=%22ClusterNotReady-&gt%3BTimedOut%22%5D%3B%0A%09Completed%20-%3E%20Completed%20%5Blabel=%22Completed-&gt%3BCompleted%22%5D%3B%0A%09Completed%20-%3E%20InProgress%20%5Blabel=%22Completed-&gt%3BInProgress%22%5D%3B%0A%09InProgress%20-%3E%20ClusterNotReady%20%5Blabel=%22InProgress-&gt%3BClusterNotReady%22%5D%3B%0A%09InProgress%20-%3E%20Completed%20%5Blabel=%22InProgress-&gt%3BCompleted%22%5D%3B%0A%09InProgress%20-%3E%20InProgress%20%5Blabel=%22InProgress-&gt%3BInProgress%22%5D%3B%0A%09InProgress%20-%3E%20OutOfDate%20%5Blabel=%22InProgress-&gt%3BOutOfDate%22%5D%3B%0A%09InProgress%20-%3E%20TimedOut%20%5Blabel=%22InProgress-&gt%3BTimedOut%22%5D%3B%0A%09Missing%20-%3E%20ClusterNotReady%20%5Blabel=%22Missing-&gt%3BClusterNotReady%22%5D%3B%0A%09Missing%20-%3E%20Missing%20%5Blabel=%22Missing-&gt%3BMissing%22%5D%3B%0A%09OutOfDate%20-%3E%20InProgress%20%5Blabel=%22OutOfDate-&gt%3BInProgress%22%5D%3B%0A%09OutOfDate%20-%3E%20OutOfDate%20%5Blabel=%22OutOfDate-&gt%3BOutOfDate%22%5D%3B%0A%09Start%20-%3E%20Missing%20%5Blabel=%22Start-&gt%3BMissing%22%5D%3B%0A%09TimedOut%20-%3E%20InProgress%20%5Blabel=%22TimedOut-&gt%3BInProgress%22%5D%3B%0A%09TimedOut%20-%3E%20TimedOut%20%5Blabel=%22TimedOut-&gt%3BTimedOut%22%5D%3B%0A%09init%20%5Blabel=%22%22%2C%20shape=point%5D%3B%0A%09init%20-%3E%20Start%0A%7D%0A)
A Link to the rendered diagram is at: [link](https://dreampuf.github.io/GraphvizOnline/?presentation#digraph%20%7B%0A%09compound=true%3B%0A%09node%20%5Bshape=Mrecord%5D%3B%0A%09rankdir=%22LR%22%3B%0A%0A%09ClusterNotReady%20%5Blabel=%22ClusterNotReady%7Centry%20%2F%20func2%22%5D%3B%0A%09Completed%20%5Blabel=%22Completed%7Centry%20%2F%20func5%22%5D%3B%0A%09InProgress%20%5Blabel=%22InProgress%7Centry%20%2F%20func3%22%5D%3B%0A%09Missing%20%5Blabel=%22Missing%7Centry%20%2F%20func1%22%5D%3B%0A%09OutOfDate%20%5Blabel=%22OutOfDate%7Centry%20%2F%20func4%22%5D%3B%0A%09Start%20%5Blabel=%22Start%22%5D%3B%0A%09TimedOut%20%5Blabel=%22TimedOut%7Centry%20%2F%20func6%22%5D%3B%0A%09ClusterNotReady%20-%3E%20ClusterNotReady%20%5Blabel=%22ClusterNotReady-&gt%3BClusterNotReady%22%5D%3B%0A%09ClusterNotReady%20-%3E%20InProgress%20%5Blabel=%22ClusterNotReady-&gt%3BInProgress%22%5D%3B%0A%09ClusterNotReady%20-%3E%20Missing%20%5Blabel=%22ClusterNotReady-&gt%3BMissing%22%5D%3B%0A%09Completed%20-%3E%20Completed%20%5Blabel=%22Completed-&gt%3BCompleted%22%5D%3B%0A%09Completed%20-%3E%20InProgress%20%5Blabel=%22Completed-&gt%3BInProgress%22%5D%3B%0A%09InProgress%20-%3E%20ClusterNotReady%20%5Blabel=%22InProgress-&gt%3BClusterNotReady%22%5D%3B%0A%09InProgress%20-%3E%20Completed%20%5Blabel=%22InProgress-&gt%3BCompleted%22%5D%3B%0A%09InProgress%20-%3E%20InProgress%20%5Blabel=%22InProgress-&gt%3BInProgress%22%5D%3B%0A%09InProgress%20-%3E%20OutOfDate%20%5Blabel=%22InProgress-&gt%3BOutOfDate%22%5D%3B%0A%09InProgress%20-%3E%20TimedOut%20%5Blabel=%22InProgress-&gt%3BTimedOut%22%5D%3B%0A%09Missing%20-%3E%20ClusterNotReady%20%5Blabel=%22Missing-&gt%3BClusterNotReady%22%5D%3B%0A%09Missing%20-%3E%20Missing%20%5Blabel=%22Missing-&gt%3BMissing%22%5D%3B%0A%09OutOfDate%20-%3E%20InProgress%20%5Blabel=%22OutOfDate-&gt%3BInProgress%22%5D%3B%0A%09OutOfDate%20-%3E%20OutOfDate%20%5Blabel=%22OutOfDate-&gt%3BOutOfDate%22%5D%3B%0A%09Start%20-%3E%20Missing%20%5Blabel=%22Start-&gt%3BMissing%22%5D%3B%0A%09TimedOut%20-%3E%20InProgress%20%5Blabel=%22TimedOut-&gt%3BInProgress%22%5D%3B%0A%09TimedOut%20-%3E%20TimedOut%20%5Blabel=%22TimedOut-&gt%3BTimedOut%22%5D%3B%0A%09init%20%5Blabel=%22%22%2C%20shape=point%5D%3B%0A%09init%20-%3E%20Start%0A%7D%0A)
```
digraph {
compound=true;
Expand All @@ -17,7 +17,6 @@ digraph {
ClusterNotReady -> ClusterNotReady [label="ClusterNotReady->ClusterNotReady"];
ClusterNotReady -> InProgress [label="ClusterNotReady->InProgress"];
ClusterNotReady -> Missing [label="ClusterNotReady->Missing"];
ClusterNotReady -> TimedOut [label="ClusterNotReady->TimedOut"];
Completed -> Completed [label="Completed->Completed"];
Completed -> InProgress [label="Completed->InProgress"];
InProgress -> ClusterNotReady [label="InProgress->ClusterNotReady"];
Expand Down
16 changes: 7 additions & 9 deletions internal/configfsm/fsm.go
Original file line number Diff line number Diff line change
Expand Up @@ -27,8 +27,7 @@ const (
TimedOutToInProgress Trigger = Trigger(TimedOut + To + InProgress)

// Transitions to TimedOut state
ClusterNotReadyToTimedOut Trigger = Trigger(ClusterNotReady + To + TimedOut)
InProgressToTimedOut Trigger = Trigger(InProgress + To + TimedOut)
InProgressToTimedOut Trigger = Trigger(InProgress + To + TimedOut)

// Transitions to Completed state
InProgressToCompleted Trigger = Trigger(InProgress + To + Completed)
Expand Down Expand Up @@ -129,17 +128,14 @@ func InitFSM(state string) (fsm *stateless.StateMachine, err error) {
if !fsmHelper.ArePoliciesMatched() {
return fsm.Fire(ClusterNotReadyToMissing, fsmHelper)
}
if fsmHelper.IsTimedOut() {
return fsm.Fire(ClusterNotReadyToTimedOut, fsmHelper)
}
if fsmHelper.IsClusterReady() {
if fsmHelper.IsClusterReady() ||
fsmHelper.IsTimedOut() {
return fsm.Fire(ClusterNotReadyToInProgress, fsmHelper)
}
return nil
}).
Permit(ClusterNotReadyToMissing, Missing).
Permit(ClusterNotReadyToInProgress, InProgress).
Permit(ClusterNotReadyToTimedOut, TimedOut).
PermitReentry(ClusterNotReadyToClusterNotReady)
fsm.Configure(InProgress).
OnEntry(func(_ context.Context, args ...any) error {
Expand All @@ -150,13 +146,15 @@ func InitFSM(state string) (fsm *stateless.StateMachine, err error) {
(!fsmHelper.IsNonCompliantPolicyInEnforce() && !fsmHelper.IsAllPoliciesCompliant()) {
fsmHelper.SetNonCompliantAtNow()
}
if !fsmHelper.ArePoliciesMatched() ||
!fsmHelper.IsClusterReady() {
if !fsmHelper.ArePoliciesMatched() {
return fsm.Fire(InProgressToClusterNotReady, fsmHelper)
}
if fsmHelper.IsTimedOut() {
return fsm.Fire(InProgressToTimedOut, fsmHelper)
}
if !fsmHelper.IsClusterReady() {
return fsm.Fire(InProgressToClusterNotReady, fsmHelper)
}
if !fsmHelper.IsNonCompliantPolicyInEnforce() && !fsmHelper.IsAllPoliciesCompliant() {
return fsm.Fire(InProgressToOutOfDate, fsmHelper)
}
Expand Down

0 comments on commit b6de7f8

Please sign in to comment.