...
PlantUML Macro |
---|
@startuml 'https://plantuml.com/state-diagram state UNINITIALIZED state UNINITIALIZED_TO_PASSIVE state PASSIVE_TO_UNINITIALIZED state PASSIVE state UNINITIALIZED_TO_PASSIVE_ERROR state PASSIVE_TO_UNINITIALIZED_ERROR state PASSIVE_TO_RUNNING state RUNNING_TO_PASSIVE state RUNNING state RUNNING_TO_PASSIVE_ERROR state PASSIVE_TO_RUNNING_ERROR state RUNNING state RUN_ERROR [*] --> UNINITIALIZED UNINITIALIZED --> UNINITIALIZED_TO_PASSIVE PASSIVE_TO_UNINITIALIZED --> UNINITIALIZED PASSIVE_TO_UNINITIALIZED --> PASSIVE_TO_UNINITIALIZED_ERROR PASSIVE_TO_UNINITIALIZED_ERROR --> PASSIVE_TO_UNINITIALIZED UNINITIALIZED_TO_PASSIVE --> PASSIVE UNINITIALIZED_TO_PASSIVE --> UNINITIALIZED_TO_PASSIVE_ERROR UNINITIALIZED_TO_PASSIVE_ERROR --> UNINITIALIZED_TO_PASSIVE UNINITIALIZED_TO_PASSIVE_ERROR --> PASSIVE_TO_UNINITIALIZED PASSIVE --> PASSIVE_TO_RUNNING PASSIVE --> PASSIVE_TO_UNINITIALIZED PASSIVE_TO_RUNNING --> RUNNING PASSIVE_TO_RUNNING --> PASSIVE_TO_RUNNING_ERROR PASSIVE_TO_RUNNING_ERROR --> PASSIVE_TO_RUNNING RUNNING --> RUNNING_TO_PASSIVE RUNNING_TO_PASSIVE --> PASSIVE RUNNING_TO_PASSIVE --> RUNNING_TO_PASSIVE_ERROR RUNNING --> RUN_ERROR RUN_ERROR --> RUNNING RUN_ERROR --> RUNNING_TO_PASSIVE RUNNING_TO_PASSIVE_ERROR --> RUNNING_TO_PASSIVE @enduml |
Second Proposed State Machine
- Composition in UNINITIALIZED state: all elements of a the composition are in UNINITIALIZED state, all applications are not deployed and policy types are not deployed and not present in Api.
- User triggers to move the composition from UNINITIALIZED to PASSIVE: runtime-acm moves elements from UNINITIALIZED state to UNINITIALIZED_TO_PASSIVE.
- Element in UNINITIALIZED_TO_PASSIVE:
- participant-ks8: deploys applications
- participant-policy: creates policy types in Api and deploys them with Pap.
- participant-http: configures applications.
- Element in UNINITIALIZED_TO_PASSIVE_ERROR state: participant got error during deploy.
- Composition in UNINITIALIZED_TO_PASSIVE_ERROR state: at least one element is in UNINITIALIZED_TO_PASSIVE_ERROR state.
- User can re-try UNINITIALIZED_TO_PASSIVE.
- User can go back to UNINITIALIZED.
- Element in PASSIVE state:
- participant-ks8: applications are deployed.
- participant-policy: policy types are create in Api and deployed with Pap.
- participant-http: applications are configured.
- Composition in PASSIVE state: all elements are moved to PASSIVE, all applications are deployed and configured. Runtime-ACM automatically moves the composition from PASSIVE to RUNNING: runtime-ACM moves elements from PASSIVE state to PASSIVE_TO_RUNNING.
- Element in PASSIVE_TO_RUNNING state:
- participant-ks8: starts monitoring if applications are running.
- participant-policy: do nothing (maybe starts monitoring if policy types are running).
- participant-http: starts monitoring if applications are healthy.
- Element in PASSIVE_TO_RUNNING_ERROR state: participant got error during configuration.
- Composition in PASSIVE_TO_RUNNING_ERROR state: at least one element is in PASSIVE_TO_RUNNING_ERROR state.
- Element in RUNNING state:
- participant-ks8: monitoring if applications are running.
- participant-policy: do nothing (maybe monitoring if policy types are running).
- participant-http: monitoring if applications are healthy.
- Composition in RUNNING state: all elements of a ACM are in RUNNING state, all applications are running.
- Element in RUN_ERROR state: participant got error during running state (it periodically checks if applications are running).
- Composition in RUN_ERROR state: at least one element is in RUN_ERROR state
- User could decide to move the composition from RUN_ERROR to PASSIVE state.
- Application has been restarted by kubernetes, Participant detects that the application is running and move the element from RUN_ERROR to RUNNING.
- User triggers to move the composition from RUNNING to PASSIVE: runtime-acm moves elements from RUNNING state to RUNNING_TO_PASSIVE.
- Element in RUNNING_TO_PASSIVE:
- participant-ks8: stop monitoring
- participant-policy: stop monitoring
- participant-http: stop monitoring
- User triggers to move the composition from PASSIVE state to UNINITIALIZED: runtime-acm moves elements from PASSIVE state to PASSIVE_TO_UNINITIALIZED.
- Element in PASSIVE_TO_UNINITIALIZED:
- participant-ks8: undeploys applications
- participant-policy: undeploys policy types with Pap and deletes them in Api.
- participant-http: do nothing
- Element in PASSIVE_TO_UNINITIALIZED_ERROR state: participant got error during undeployment
- Composition in PASSIVE_TO_UNINITIALIZED_ERROR state: at least one element is in PASSIVE_TO_UNINITIALIZED_ERROR state.
- Element in UNINITIALIZED state:
- participant-ks8: applications are undeployed.
- participant-policy: policy types are not deployed and not present in Api.
- In any Error status the User can re-try the operation.
Note:
Whit this solution, User can move from RUNNING to PASSIVE, update the service template related to the configuration (participant-http) when applications are still up, and after move from PASSIVE to RUNNING.
PlantUML Macro |
---|
@startuml
'https://plantuml.com/state-diagram
state UNINITIALIZED
state UNINITIALIZED_TO_PASSIVE
state PASSIVE_TO_UNINITIALIZED
state PASSIVE
state UNINITIALIZED_TO_PASSIVE_ERROR
state PASSIVE_TO_UNINITIALIZED_ERROR
state PASSIVE_TO_RUNNING
state RUNNING_TO_PASSIVE
state RUNNING
state RUN_ERROR
[*] --> UNINITIALIZED
UNINITIALIZED --> UNINITIALIZED_TO_PASSIVE
PASSIVE_TO_UNINITIALIZED --> UNINITIALIZED
PASSIVE_TO_UNINITIALIZED --> PASSIVE_TO_UNINITIALIZED_ERROR
PASSIVE_TO_UNINITIALIZED_ERROR --> PASSIVE_TO_UNINITIALIZED
UNINITIALIZED_TO_PASSIVE --> PASSIVE
UNINITIALIZED_TO_PASSIVE --> UNINITIALIZED_TO_PASSIVE_ERROR
UNINITIALIZED_TO_PASSIVE_ERROR --> UNINITIALIZED_TO_PASSIVE
UNINITIALIZED_TO_PASSIVE_ERROR --> PASSIVE_TO_UNINITIALIZED
PASSIVE --> PASSIVE_TO_RUNNING
PASSIVE --> PASSIVE_TO_UNINITIALIZED
PASSIVE_TO_RUNNING --> RUNNING
RUNNING --> RUNNING_TO_PASSIVE
RUNNING_TO_PASSIVE --> PASSIVE
RUNNING --> RUN_ERROR
RUN_ERROR --> RUNNING
RUN_ERROR --> RUNNING_TO_PASSIVE
@enduml |