Skip to main content

Your submission was sent successfully! Close

Thank you for signing up for our newsletter!
In these regular emails you will find the latest updates from Canonical and upcoming events where you can meet our team.Close

Thank you for contacting us. A member of our team will be in touch shortly. Close

Charm lifecycle flowcharts

Click to navigate the mermaid diagram on GitHub.

flowchart TD
    id101([leader_elected]) --> id102[generate\npassword/configs]
    id102 --> id103[store peer databag]
    id103 --> id104((return))

    id201([pebble_ready]) --> id202{if not `configured` \nnor peer relation}
    id202 --> id203>defer]
    id202 -- else --> id204[add pebble layer]
    id204 --> id205[configure mysql\nusers]
    id205 --> id206[configure instance\nfor GR]
    id206 --> id207{is leader?}
    id207 -- no --> id208((return))
    id207 -- yes --> id209[create GR cluster]
    id209 --> id208

    id301([peer_relation_changed\nor\nupdate_status]) --> id302{is waiting\nto join}
    id302 -- yes --> id303{is already\nin cluster?}
    id303 --> id304[get primary\nfrom any online peer]
    id304 --> id305[get current\ncluster node count]
    id305 --> id306{is cluster\nat max size}
    id306 -- no --> id307{is cluster\ntopology\nchanging}
    id307 --> id309[acquire topology\nchange token]
    id309 --> id310[join the cluster\nfrom primary]
    id310 --> id311[release token]
    id306 -- yes --> id308[Set blocked\nand standby]
    id302 -- no --> id399((return))
    id303 -- yes --> id399
    id307 --> id399
    id308 --> id399
    id311 --> id399

Last updated 1 year, 6 months ago. Help improve this document in the forum.