From playing with mermaid whiteboard ```mermaid flowchart LR subgraph catalogd["Catalogd"] ClusterCatalogController["Cluster Catalog Controller"] CatalogdHttpServer["Catalogd HTTP Server"] CatalogdCache["Catalogd Content Cache"] end subgraph s1["k8s cluster"] catalogd ClusterCatalog["ClusterCatalog"] ClusterExtensionController["Cluster Extension Controller"] end n1(["Catalog Admin"]) --Creates--> ClusterCatalog ClusterCatalogController -- Reconciles --> ClusterCatalog CatalogdHttpServer --Reads--> CatalogdCache ClusterCatalogController --UnpacksTo--> CatalogdCache client(["Catalog Client"]) --Queries--> CatalogdHttpServer ClusterExtensionController --Queries--> CatalogdHttpServer c1(["Catalog Author"]) --PushesTo--> r1["Image Registry"] r1 --> ClusterCatalogController ``` catalogd states former ```mermaid stateDiagram-v2 direction LR [*] --> PendingSt state PendingSt { [*] --> Unpack/Pending Unpack/Pending --> [*] } PendingSt --> UnpackingSt state UnpackingSt { [*] --> Unpacking state Success <<choice>> Unpacking --> Success Success --> Failing Success --> Unpacked Failing --> [*] Unpacked --> [*] } ``` ```mermaid stateDiagram-v2 direction LR [*] --> Pending Pending --> Unpacking state Unpacking { IntlPending : Pending [*] --> IntlPending IntlPending --> UnpackSuccessful IntlPending --> UnpackFailed } Pending --> Failing Unpacking --> Unpacked Unpacked --> [*] state Unpacked { [*] --> FailedToStore } Failing --> Pending ``` PhasePending = "Pending" PhaseUnpacking = "Unpacking" PhaseFailing = "Failing" PhaseUnpacked = "Unpacked" ReasonUnpackPending = "UnpackPending" ReasonUnpacking = "Unpacking" ReasonUnpackSuccessful = "UnpackSuccessful" ReasonUnpackFailed = "UnpackFailed" ReasonStorageFailed = "FailedToStore" ReasonStorageDeleteFailed = "FailedToDelete"