Charm lifecycle flowchartsΒΆ
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