# Render with: `dot -T png -o zincati-fsm.png zincati-fsm.dot` # The `dot` program is included in Graphviz: https://graphviz.org/download/ digraph finite_state_machine { rankdir=LR; node [shape=circle, fontsize=10, fixedsize=true, width=1.1]; edge [fontsize=10, fixedsize=true]; node [label="StartState"] StartState; node [label="Initialized"] Initialized; node [label="ReportedSteady"] ReportedSteady; node [label="NoNewUpdate"] NoNewUpdate; node [label="UpdateAvailable"] UpdateAvailable; node [label="UpdateStaged"] UpdateStaged; node [label="UpdateFinalized"] UpdateFinalized; node [shape = doublecircle, label="EndState"] EndState; StartState -> Initialized [label="initialized()"]; StartState -> EndState [label="end()"]; Initialized -> ReportedSteady [label="reported_steady()"]; ReportedSteady -> NoNewUpdate [label="no_new_update()"]; ReportedSteady -> UpdateAvailable [label="update_available()"]; NoNewUpdate -> NoNewUpdate [label="no_new_update()"]; NoNewUpdate -> UpdateAvailable [label="update_available()"]; UpdateAvailable -> UpdateAvailable [label="deploy_failed()"]; UpdateAvailable -> NoNewUpdate [label="update_abandoned()"]; UpdateAvailable -> UpdateStaged [label="update_staged()"]; UpdateStaged -> UpdateFinalized [label="update_finalized()"]; UpdateStaged -> UpdateStaged [label="reboot_postponed()"]; UpdateFinalized -> EndState [label="end()"]; }