`compound-status.StatusPool`: tracking multiple statuses for complex charms

In complex charms that have multiple parallel duties, we often see that it is not enough to know if the charm as a whole is active/blocked/waiting/…; charmers search for ways to track multiple statuses independently. We want to tell the user: ‘the charm as a whole is blocked, because this part is blocked, that other part is waiting, and that other part over there is doing maintenance’. That is, we want a taxonomy of statuses.

The first step to get there is to allow charmers to define the status as a pool of independently-trackable statuses that can be associated with tasks, components, integrations, or (why not) individual relations.

Drawing from the experience accumulated over the years by our openstack team, who have been doing this in reactive charms, we present StatusPool, a tool for managing and tracking multiple independent statuses in complex charms.

While we envision merging it with ops core if there’s enough interest, this feature is distributed as a charm lib for now.

See the source and documentation here.

bugs/feature requests/discussion here.

Start pooling now!

charmcraft fetch-lib charms.compound_status.v0.compound_status

1 Like