Charm Tech pulses 2025#09-11

It’s been a while since you’ve heard from the Charm-Tech team: for half of Pulse 9, Ben, Dima, and Tony were at the Roadmap sprint, and for half of Pulse 10 the whole team was at the Engineering sprint – and mostly recovering from that travel for the rest of Pulse 10.

We had very productive sprints and are eagerly getting into the roadmap items we have planned for 25.10. In addition to the larger roadmap items, we’re also spending a few hours each week working on smaller items across our increasing number of projects.

Over the last 6 weeks, we’ve continued with our regular release cadence, where we release Ops and Pebble each month, and other projects (Jubilant, Concierge, pathops, python-libjuju, …) as required.

Ops

  • Tracing: We’re working to answer the question “how to test ops[tracing] in my charm?” Current vision includes Charm Tech covering unit and integration testing for the ops.tracing.Tracing charm lib class, making sure that it just works in most charms. We’ll extend the testing framework to allow testing custom instrumentation in unit tests. We’ll also provide a test double charm for the tracing provider as a middle ground between relying on unit tests alone and deploying a full COS stack in integration tests.
  • Added explicit support for using Pydantic classes for config, action parameters, and relation data (#1741, #1756, #1701)
  • Fixed a longstanding issue where relation data for the departing unit was not easily available in Ops during a relation-departed event (#1364)
  • Fixed a longstanding issue where Harness would prevent access to the remote app data during a relation-broken event, even though Juju allows this (#1787)
  • Fixed loading config metadata where the options field is nil rather than an empty map (#1778)
  • Stopped the monthly smoke tests packing a charm with Charmcraft 2.x and ops (#1782)
  • Changed, and then reverted, ops to use a fresh charm instance for deferred events. We’re sorry that this broke some use-cases, and thanks to those of you that quickly raised those with us. Going forward, we’ll take more care to post about upcoming changes in the Charm Development channel on Matrix, as well as elsewhere.
  • Added zizmor as a CI and pre-commit check for workflow security (#1656)
  • We did many releases! Ops 2.21.0, 2.21.1, and 2.22.0, as well as the accompanying versions of ops-scenario and ops-tracing.

Charming

  • With Python packages becoming more widely used to share code between charms, we’ve begun working on a listing for such packages. This will likely be hosted on the charmlibs documentation site, where you can currently read about when and how to distribute your charm library as a Python package.
  • The Concierge project is now a responsibility of the Charm Tech team. We released Concierge 1.0.1, which fixes the k8s preset, and 1.0.2, which makes Concierge go installable again after the repo moved to the canonical org.
  • The Ubuntu charm is now maintained by the Charm Tech team. We’re not expecting to do any significant work on the charm this cycle, but we will review PRs and do required maintenance.
  • Released Jubilant 1.0.0 (and subsequent versions, most recently 1.1.1), which is the first stable release of Jubilant. It includes two minor breaking changes from 0.5.0, but we’ll do our best to ensure there are no breaking changes to the API after this release.
  • We completed the migration of discourse-k8s integration tests from pytest-operator to Jubilant. This is now merged, and discourse-k8s is pylibjuju-free.
  • Released operator-libs-linux.v2.snap patch version 11, which fixes the behaviour of the ensure function with classic snaps.
  • Released pathops 1.0.1
  • Released python-libjuju 3.6.1.1
  • Reviewed the goops API, Guillaume Belanger’s experimental library for writing charms in Go.
  • Prepared a Charmcraft change that replaces the simple profile by kubernetes (#2295). We’re also working on switching the kubernetes and machine profiles to use uv for packing and testing charms
  • Started work on revising the process for reviewing charms for public listing on Charmhub. The reviews have been inconsistent in terms of what’s reviewed and how long it takes, with the process not serving reviewers or those requesting reviews particularly well. Over this cycle, we’ll continue to revise the process and do a lot of reviews within the Charm-Tech team while we iron out the bugs. We appreciate (in advance) your patience and help with this!

Pebble

  • Several releases: Pebble 1.19.1 and 1.19.2 as bug fixes for Juju 3.6, and Pebble 1.21.1, 1.22.0, 1.22.1, and 1.22.2 with new functionality.
    • Pebble v1.21.0 adds http-address to the /v1/system-info response.
    • Pebble v1.22.0 fixes pruning of changes and notices and adds significant TLS infrastructure. Note that at this point the TLS features are primarily behind-the-scenes changes intended for projects that use Pebble – you can use Pebble itself over HTTPS with curl -k, but not properly with domain/certificate verification.
  • Fixed a panic on restart after pebble stop-checks is used.

Documentation

1 Like