ops
, the Operator Framework, provides a simple, lightweight, and powerful way of
writing Juju charms, the best way to encapsulate operational experience in code.
The framework will help you to:
- model the integration of your services
- manage the lifecycle of your application
- create reusable and scalable components
- keep your code simple and readable
You can read more about the project, including how to get involved, on github.
Release highlights:
-
deleting a non-existent key from relation data will no longer fail.
Thanks to @stub42 for the fix. -
calling
begin_with_initial_hooks()
on the testing harness of a charm
that has a relation that isn’t set up before the call will no longer fail.
Thanks to @zzehring for the fix. -
the testing harness now starts with default config values, specified in the
same way as foractions.yaml
andmetadata.yaml
(i.e. snippets if given,
otherwise from the canonical yaml file).
Thanks to @johnsca for the work. -
some classes now have custom
__repr__
methods that should aid debugging. -
event deferral and reëmission is now logged (at DEBUG).
-
if
use_juju_for_storage
is specified for a charm running in a Juju that does
not support this feature, a clear and explicit error is raised. -
the public attributes of
model
are now immutable. This is to discourage
people from overwriting these attributes in tests, given there is a fair
amount of internal state. Please use the harness instead (or mocking if you
must). -
the test suite now passes on Windows, and we run the full suite on Windows for
every commit, as we do for linux and macos.