Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

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