I am working on a tool called
scenario.snapshot that is able, given a unit name, to gather from juju all individual bits and pieces of its State and output that as a monolithic data structure.
That data structure is useful in several ways.
Firstly, it contains data drawn from
status, and several in-unit hook tool call return values, that can be useful in debugging and figuring out what is wrong.
Secondly, you can use that data structure as starting point for writing a unittest able to reproduce locally the same bug in a unittest!
If you come from Harness, think of this as a tool that would output the right sequence of Harness calls necessary to drive the local simulation to the desired state.
You can watch the work progress (and contribute) at: https://github.com/canonical/ops-scenario/pull/1
The core idea
For example, suppose I have a
traefik-k8s unit erroring out on update-status.
I can run
scenario snapshot trfk/0 -f > ./test.py
test.py I will obtain a test case that I can rapidly fit to my needs and turn into a unittest: