Cannot upgrade operating system of charm container

Bug #2030110 reported by Leon
10
This bug affects 2 people
Affects Status Importance Assigned to Milestone
Canonical Juju
New
Undecided
Unassigned

Bug Description

`juju refresh` does not support cross-release upgrades in k8s.

In an integration test I'm upgrading a charmhub charm (20.04) with a local charm (bumped charmcraft yaml to 22.04).
https://github.com/canonical/alertmanager-k8s-operator/blob/1ed7c1476e462dcabca9dac79db08f8c2e3a7675/tests/integration/test_upgrade_charm.py#L38

After upgrade the image is still 20.04:
```
$ k -n test-upgrade-charm-fhd8 describe pods/alertmanager-k8s-0
Containers:
  charm:
    Container ID: containerd://c41aa823521f9513a05d422916db1bb32ba5e5fac78a75dd6f4384b1aa03286c
    Image: jujusolutions/charm-base:ubuntu-20.04
    Image ID: docker.io/jujusolutions/charm-base@sha256:ce16c80092caef5439a3af0590bea671f9e85813051e37bafc8ebbb7ceaf8a21
```

And as a result I'm getting a new error that I do not see when deploying the 22.04 charm fresh:
```
13:55:47.095 WARNING unit.alertmanager-k8s/0.upgrade-charm ModuleNotFoundError: No module named '_cffi_backend'
13:55:47.095 WARNING unit.alertmanager-k8s/0.upgrade-charm thread '<unnamed>' panicked at 'Python API call failed', /github/home/.cargo/registry/src/index.crates.io-6f17d22bba15001f/pyo3-0.18.3/src/err/mod.rs:790:5
13:55:47.095 WARNING unit.alertmanager-k8s/0.upgrade-charm note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
13:55:47.095 WARNING unit.alertmanager-k8s/0.upgrade-charm Traceback (most recent call last):
13:55:47.095 WARNING unit.alertmanager-k8s/0.upgrade-charm File "./src/charm.py", line 29, in <module>
13:55:47.095 WARNING unit.alertmanager-k8s/0.upgrade-charm from charms.observability_libs.v0.cert_handler import CertHandler
13:55:47.095 WARNING unit.alertmanager-k8s/0.upgrade-charm File "/var/lib/juju/agents/unit-alertmanager-k8s-0/charm/lib/charms/observability_libs/v0/cert_handler.py", line 41, in <module>
13:55:47.095 WARNING unit.alertmanager-k8s/0.upgrade-charm from charms.tls_certificates_interface.v2.tls_certificates import ( # type: ignore
13:55:47.095 WARNING unit.alertmanager-k8s/0.upgrade-charm File "/var/lib/juju/agents/unit-alertmanager-k8s-0/charm/lib/charms/tls_certificates_interface/v2/tls_certificates.py", line 285, in <module>
13:55:47.095 WARNING unit.alertmanager-k8s/0.upgrade-charm from cryptography import x509
13:55:47.095 WARNING unit.alertmanager-k8s/0.upgrade-charm File "/var/lib/juju/agents/unit-alertmanager-k8s-0/charm/venv/cryptography/x509/__init__.py", line 7, in <module>
13:55:47.095 WARNING unit.alertmanager-k8s/0.upgrade-charm from cryptography.x509 import certificate_transparency
13:55:47.095 WARNING unit.alertmanager-k8s/0.upgrade-charm File "/var/lib/juju/agents/unit-alertmanager-k8s-0/charm/venv/cryptography/x509/certificate_transparency.py", line 11, in <module>
13:55:47.095 WARNING unit.alertmanager-k8s/0.upgrade-charm from cryptography.hazmat.bindings._rust import x509 as rust_x509
13:55:47.095 WARNING unit.alertmanager-k8s/0.upgrade-charm pyo3_runtime.PanicException: Python API call failed
13:55:47.306 ERROR juju.worker.uniter.operation hook "upgrade-charm" (via hook dispatching script: dispatch) failed: exit status 1
```

Seems like it's "impossible" to upgrade the operating system of a deployed charm.

Recently, PYDEPS encouraged us to switch from 20.04 to 22.04
https://github.com/canonical/charmcraft/issues/1192#issuecomment-1651919462

In the future there will probably be more and more reasons to want to run the charm container on a newer ubuntu.

Revision history for this message
Jose C. Massón (jose-masson) wrote :

I have found this issue as well, in loki-k8s:

unit-loki-k8s-0: 13:40:44.893 INFO juju.worker.uniter found queued "upgrade-charm" hook
unit-loki-k8s-0: 13:40:45.069 WARNING unit.loki-k8s/0.upgrade-charm ModuleNotFoundError: No module named '_cffi_backend'
unit-loki-k8s-0: 13:40:45.069 WARNING unit.loki-k8s/0.upgrade-charm thread '<unnamed>' panicked at 'Python API call failed', /github/home/.cargo/registry/src/index.crates.io-6f17d22bba15001f/pyo3-0.18.3/src/err/mod.rs:790:5
unit-loki-k8s-0: 13:40:45.069 WARNING unit.loki-k8s/0.upgrade-charm note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
unit-loki-k8s-0: 13:40:45.069 WARNING unit.loki-k8s/0.upgrade-charm Traceback (most recent call last):
unit-loki-k8s-0: 13:40:45.069 WARNING unit.loki-k8s/0.upgrade-charm File "./src/charm.py", line 33, in <module>
unit-loki-k8s-0: 13:40:45.069 WARNING unit.loki-k8s/0.upgrade-charm from charms.observability_libs.v0.cert_handler import CertHandler
unit-loki-k8s-0: 13:40:45.069 WARNING unit.loki-k8s/0.upgrade-charm File "/var/lib/juju/agents/unit-loki-k8s-0/charm/lib/charms/observability_libs/v0/cert_handler.py", line 41, in <module>
unit-loki-k8s-0: 13:40:45.069 WARNING unit.loki-k8s/0.upgrade-charm from charms.tls_certificates_interface.v2.tls_certificates import ( # type: ignore
unit-loki-k8s-0: 13:40:45.069 WARNING unit.loki-k8s/0.upgrade-charm File "/var/lib/juju/agents/unit-loki-k8s-0/charm/lib/charms/tls_certificates_interface/v2/tls_certificates.py", line 285, in <module>
unit-loki-k8s-0: 13:40:45.069 WARNING unit.loki-k8s/0.upgrade-charm from cryptography import x509
unit-loki-k8s-0: 13:40:45.069 WARNING unit.loki-k8s/0.upgrade-charm File "/var/lib/juju/agents/unit-loki-k8s-0/charm/venv/cryptography/x509/__init__.py", line 7, in <module>
unit-loki-k8s-0: 13:40:45.069 WARNING unit.loki-k8s/0.upgrade-charm from cryptography.x509 import certificate_transparency
unit-loki-k8s-0: 13:40:45.069 WARNING unit.loki-k8s/0.upgrade-charm File "/var/lib/juju/agents/unit-loki-k8s-0/charm/venv/cryptography/x509/certificate_transparency.py", line 11, in <module>
unit-loki-k8s-0: 13:40:45.069 WARNING unit.loki-k8s/0.upgrade-charm from cryptography.hazmat.bindings._rust import x509 as rust_x509
unit-loki-k8s-0: 13:40:45.069 WARNING unit.loki-k8s/0.upgrade-charm pyo3_runtime.PanicException: Python API call failed
unit-loki-k8s-0: 13:40:45.281 ERROR juju.worker.uniter.operation hook "upgrade-charm" (via hook dispatching script: dispatch) failed: exit status 1

To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.