** Description changed:

  [ Impact ]
  
-  * cephadm is unusable in Ubuntu Resolute, due to issues with sub-interpreters
-    in the shipped Python version (3.12).
+  * cephadm is unusable in Ubuntu Resolute, due to issues with sub-interpreters
+    in the shipped Python version (3.14)
  
-  * This problem is very similar to what happened in the initial Ceph packages
-    in Noble (19.2.0), and the fix is very similar in consequence. The proposed
-    fix consists of backporting some commits done by upstream Ceph developers
-    that have landed in the 'main' branch, but not yet in any stable release.
+  * This problem is very similar to what happened in the initial Ceph packages
+    in Noble (19.2.0), and the fix is very similar in consequence. The proposed
+    fix consists of backporting some commits done by upstream Ceph developers
+    that have landed in the 'main' branch, but not yet in any stable release.
  
  [ Test Plan ]
  
-  * In order to test this, the functional tests for Canonical's Ceph containers
-    repository will be run (https://github.com/canonical/ceph-containers).
+  * In order to test this, the functional tests for Canonical's Ceph containers
+    repository will be run (https://github.com/canonical/ceph-containers).
  
-  * These tests involve using the cephadm tool for cluster deployment using
-    Canonical's custom Ceph images.
+  * These tests involve using the cephadm tool for cluster deployment using
+    Canonical's custom Ceph images.
  
-  * If the new packages fix this issue, the tests will run to completion.
+  * If the new packages fix this issue, the tests will run to completion.
  
  [ Where problems could occur ]
  
-  * cephadm is used as a simple tool to deploy Ceph clusters. Notably, neither
-    the Ceph charms nor Microceph make use of it, but users of Ubuntu can make
-    use of it independently.
+  * cephadm is used as a simple tool to deploy Ceph clusters. Notably, neither
+    the Ceph charms nor Microceph make use of it, but users of Ubuntu can make
+    use of it independently.
  
-  * Any problems with cephadm will thus prevent users from deploying their own
-    Ceph clusters with the exceptions noted above.
-    
+  * Any problems with cephadm will thus prevent users from deploying their own
+    Ceph clusters with the exceptions noted above.
+ 
  [ Original description ]
  
  Package: ceph 20.2.0-0ubuntu2 (resolute)
  Related: python3-cryptography 46.0.5-1ubuntu2
  
  On resolute (Ubuntu 26.04, Python 3.14.4), `cephadm bootstrap` aborts at
  the `mgr module enable cephadm` step with:
  
-   Error ENOENT: module 'cephadm' reports that it cannot run on the active
-   manager daemon: PyO3 modules do not yet support subinterpreters, see
-   https://github.com/PyO3/pyo3/issues/576 (pass --force to force enablement)
+   Error ENOENT: module 'cephadm' reports that it cannot run on the active
+   manager daemon: PyO3 modules do not yet support subinterpreters, see
+   https://github.com/PyO3/pyo3/issues/576 (pass --force to force enablement)
  
  Reproduced in an LXD VM running cephadm 20.2.0 from resolute, bootstrapping
  against a rock built from the same archive. The mgr daemon log
  (via `journalctl -u 'ceph-*@mgr.<host>.*'`) shows the actual Python
  traceback when the cephadm module is loaded in a subinterpreter:
  
-   File "/usr/share/ceph/mgr/cephadm/__init__.py", line 1, in <module>
-       from .module import CephadmOrchestrator
-   File "/usr/share/ceph/mgr/cephadm/module.py", line 19, in <module>
-       from cephadm.cert_mgr import CertMgr
-   File "/usr/share/ceph/mgr/cephadm/cert_mgr.py", line 4, in <module>
-       from cephadm.ssl_cert_utils import SSLCerts, SSLConfigException
-   File "/usr/share/ceph/mgr/cephadm/ssl_cert_utils.py", line 6, in <module>
-       from cryptography import x509
-   File "/lib/python3/dist-packages/cryptography/x509/__init__.py", line 7,
-       in <module>
-       from cryptography.x509 import certificate_transparency, verification
-   File 
"/lib/python3/dist-packages/cryptography/x509/certificate_transparency.py",
-       line 8, in <module>
-       from cryptography.hazmat.bindings._rust import x509 as rust_x509
-   ImportError: PyO3 modules do not yet support subinterpreters,
-       see https://github.com/PyO3/pyo3/issues/576
+   File "/usr/share/ceph/mgr/cephadm/__init__.py", line 1, in <module>
+       from .module import CephadmOrchestrator
+   File "/usr/share/ceph/mgr/cephadm/module.py", line 19, in <module>
+       from cephadm.cert_mgr import CertMgr
+   File "/usr/share/ceph/mgr/cephadm/cert_mgr.py", line 4, in <module>
+       from cephadm.ssl_cert_utils import SSLCerts, SSLConfigException
+   File "/usr/share/ceph/mgr/cephadm/ssl_cert_utils.py", line 6, in <module>
+       from cryptography import x509
+   File "/lib/python3/dist-packages/cryptography/x509/__init__.py", line 7,
+       in <module>
+       from cryptography.x509 import certificate_transparency, verification
+   File 
"/lib/python3/dist-packages/cryptography/x509/certificate_transparency.py",
+       line 8, in <module>
+       from cryptography.hazmat.bindings._rust import x509 as rust_x509
+   ImportError: PyO3 modules do not yet support subinterpreters,
+       see https://github.com/PyO3/pyo3/issues/576
  
  The same failure mode applies to the diskprediction_local mgr module,
  where the failing import is `numpy._core._multiarray_umath` (also
  PyO3-built in resolute's python3-numpy 2.3.x).
  
  Root cause:
  - Tentacle (20.2.x) ceph-mgr loads each mgr module in a separate Python
-   subinterpreter by default.
+   subinterpreter by default.
  - Resolute's python3-cryptography 46.0.5 includes Rust extensions built
-   with PyO3, which raises ImportError when imported into a subinterpreter
-   (PyO3 currently does not support PEP 684 multi-interpreter modules).
+   with PyO3, which raises ImportError when imported into a subinterpreter
+   (PyO3 currently does not support PEP 684 multi-interpreter modules).
  
  Upstream fix:
  ceph/ceph commit 239b0dc8 ("mgr: add mgr_subinterpreter_modules config",
  merged 2025-11-07) inverts the default: mgr modules load in the main
  interpreter, and `mgr_subinterpreter_modules` is an opt-in list. The fix
  is in master but is NOT in the v20.2.0 or v20.2.1 release tags (verified
  by reading src/common/options/mgr.yaml.in at both tags). It is therefore
  absent from resolute's ceph 20.2.0-0ubuntu2.
  
  Requested action:
  Backport ceph/ceph commit 239b0dc8 into resolute's ceph package so
  `mgr module enable cephadm` succeeds on resolute. Until that lands,
  canonical/ceph-containers's Tentacle rock works around this by switching
  back to noble base + ppa:lmlogiudice/ceph-tentacle-noble (the same source
  MicroCeph uses).
  
  Reproduction (LXD VM):
-   1. lxc launch --vm ubuntu:26.04 r1 -c limits.cpu=4 -c limits.memory=8GiB
-   2. apt install cephadm openssh-server jq python3-ceph-common ceph-common
-   3. cephadm --image <resolute-based-tentacle-OCI> bootstrap --mon-ip <ip> \
-        --single-host-defaults --skip-dashboard --skip-monitoring-stack
-   4. Observe the PyO3 error during the `mgr module enable cephadm` step.
+   1. lxc launch --vm ubuntu:26.04 r1 -c limits.cpu=4 -c limits.memory=8GiB
+   2. apt install cephadm openssh-server jq python3-ceph-common ceph-common
+   3. cephadm --image <resolute-based-tentacle-OCI> bootstrap --mon-ip <ip> \
+        --single-host-defaults --skip-dashboard --skip-monitoring-stack
+   4. Observe the PyO3 error during the `mgr module enable cephadm` step.

-- 
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/2150762

Title:
  Ceph 20.2.0 mgr cephadm module fails to load on resolute (PyO3
  subinterpreter incompatibility)

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/ceph/+bug/2150762/+subscriptions


-- 
ubuntu-bugs mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to