Read the Docs build information Build id: 4329507 Project: canonical-microceph Version: 817 Commit: 58b0764927d1eb0b24d19ad0397702edcc24daf8 Date: 2026-08-18T10:01:33.561094Z State: finished Success: True [rtd-command-info] start-time: 2026-08-18T10:01:34.741065Z, end-time: 2026-08-18T10:01:35.439827Z, duration: 0, exit-code: 0 git clone --depth 1 https://github.com/canonical/microceph.git . Cloning into '.'... [rtd-command-info] start-time: 2026-08-18T10:01:35.527650Z, end-time: 2026-08-18T10:01:36.333533Z, duration: 0, exit-code: 0 git fetch origin --force --prune --prune-tags --depth 50 pull/817/head:external-817 From https://github.com/canonical/microceph * [new ref] refs/pull/817/head -> external-817 [rtd-command-info] start-time: 2026-08-18T10:01:37.121681Z, end-time: 2026-08-18T10:01:37.192417Z, duration: 0, exit-code: 0 git checkout --force 58b0764927d1eb0b24d19ad0397702edcc24daf8 Note: switching to '58b0764927d1eb0b24d19ad0397702edcc24daf8'. You are in 'detached HEAD' state. You can look around, make experimental changes and commit them, and you can discard any commits you make in this state without impacting any branches by switching back to a branch. If you want to create a new branch to retain commits you create, you may do so (now or later) by using -c with the switch command. Example: git switch -c Or undo this operation with: git switch - Turn off this advice by setting config variable advice.detachedHead to false HEAD is now at 58b0764 fix: address review comments [rtd-command-info] start-time: 2026-08-18T10:01:37.281267Z, end-time: 2026-08-18T10:01:37.318553Z, duration: 0, exit-code: 0 cat docs/.readthedocs.yaml # .readthedocs.yaml # Read the Docs configuration file # See https://docs.readthedocs.io/en/stable/config-file/v2.html for details # Required version: 2 # Set the version of Python and other tools you might need build: os: ubuntu-22.04 tools: python: "3.11" jobs: post_checkout: - git fetch --unshallow || true # Cancel building pull requests when there aren't changed in the docs directory. # If there are no changes (git diff exits with 0) we force the command to return with 183. # This is a special exit code on Read the Docs that will cancel the build immediately. # https://docs.readthedocs.io/en/stable/build-customization.html#cancel-build-based-on-a-condition - | if [ "$READTHEDOCS_VERSION_TYPE" = "external" ] && git diff --quiet origin/main -- 'docs/' '.readthedocs.yaml'; then exit 183; fi pre_build: # Fetch and convert charm documentation from the charm-microceph repository. # fetch-charm-docs.sh will auto-download pandoc if not available. - bash docs/scripts/fetch-charm-docs.sh # Build documentation in the docs/ directory with Sphinx sphinx: builder: dirhtml configuration: docs/conf.py fail_on_warning: true # If using Sphinx, optionally build your docs in additional formats such as PDF formats: - pdf # Optionally declare the Python requirements required to build your docs python: install: - requirements: docs/requirements.txt [rtd-command-info] start-time: 2026-08-18T10:01:37.430825Z, end-time: 2026-08-18T10:01:38.705388Z, duration: 1, exit-code: 0 git fetch --unshallow || true From https://github.com/canonical/microceph * [new tag] v17.2.7+quincy -> v17.2.7+quincy * [new tag] v19.2.0+squid -> v19.2.0+squid * [new tag] v20.2.1+doc -> v20.2.1+doc [rtd-command-info] start-time: 2026-08-18T10:01:38.792574Z, end-time: 2026-08-18T10:01:38.832595Z, duration: 0, exit-code: 0 if [ "$READTHEDOCS_VERSION_TYPE" = "external" ] && git diff --quiet origin/main -- 'docs/' '.readthedocs.yaml'; then exit 183; fi [rtd-command-info] start-time: 2026-08-18T10:01:42.980038Z, end-time: 2026-08-18T10:01:43.033229Z, duration: 0, exit-code: 0 asdf global python 3.11.15 [rtd-command-info] start-time: 2026-08-18T10:01:43.393642Z, end-time: 2026-08-18T10:01:43.990117Z, duration: 0, exit-code: 0 python -mvirtualenv $READTHEDOCS_VIRTUALENV_PATH created virtual environment CPython3.11.15.final.0-64 in 365ms creator CPython3Posix(dest=/home/docs/checkouts/readthedocs.org/user_builds/canonical-microceph/envs/817, clear=False, no_vcs_ignore=False, global=False) seeder FromAppData(download=False, pip=bundle, setuptools=bundle, wheel=bundle, via=copy, app_data_dir=/home/docs/.local/share/virtualenv) added seed packages: pip==23.1, setuptools==67.6.1, wheel==0.40.0 activators BashActivator,CShellActivator,FishActivator,NushellActivator,PowerShellActivator,PythonActivator [rtd-command-info] start-time: 2026-08-18T10:01:44.075028Z, end-time: 2026-08-18T10:01:49.262674Z, duration: 5, exit-code: 0 python -m pip install --upgrade --no-cache-dir pip setuptools Requirement already satisfied: pip in /home/docs/checkouts/readthedocs.org/user_builds/canonical-microceph/envs/817/lib/python3.11/site-packages (23.1) Collecting pip Downloading pip-26.2.1-py3-none-any.whl (1.8 MB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 1.8/1.8 MB 18.5 MB/s eta 0:00:00 Requirement already satisfied: setuptools in /home/docs/checkouts/readthedocs.org/user_builds/canonical-microceph/envs/817/lib/python3.11/site-packages (67.6.1) Collecting setuptools Downloading setuptools-84.0.0-py3-none-any.whl (818 kB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 818.2/818.2 kB 33.1 MB/s eta 0:00:00 Installing collected packages: setuptools, pip Attempting uninstall: setuptools Found existing installation: setuptools 67.6.1 Uninstalling setuptools-67.6.1: Successfully uninstalled setuptools-67.6.1 Attempting uninstall: pip Found existing installation: pip 23.1 Uninstalling pip-23.1: Successfully uninstalled pip-23.1 Successfully installed pip-26.2.1 setuptools-84.0.0 [rtd-command-info] start-time: 2026-08-18T10:01:49.339587Z, end-time: 2026-08-18T10:01:53.896023Z, duration: 4, exit-code: 0 python -m pip install --upgrade --no-cache-dir sphinx Collecting sphinx Downloading sphinx-9.0.4-py3-none-any.whl.metadata (5.8 kB) Collecting sphinxcontrib-applehelp>=1.0.7 (from sphinx) Downloading sphinxcontrib_applehelp-2.0.0-py3-none-any.whl.metadata (2.3 kB) Collecting sphinxcontrib-devhelp>=1.0.6 (from sphinx) Downloading sphinxcontrib_devhelp-2.0.0-py3-none-any.whl.metadata (2.3 kB) Collecting sphinxcontrib-htmlhelp>=2.0.6 (from sphinx) Downloading sphinxcontrib_htmlhelp-2.1.0-py3-none-any.whl.metadata (2.3 kB) Collecting sphinxcontrib-jsmath>=1.0.1 (from sphinx) Downloading sphinxcontrib_jsmath-1.0.1-py2.py3-none-any.whl.metadata (1.4 kB) Collecting sphinxcontrib-qthelp>=1.0.6 (from sphinx) Downloading sphinxcontrib_qthelp-2.0.0-py3-none-any.whl.metadata (2.3 kB) Collecting sphinxcontrib-serializinghtml>=1.1.9 (from sphinx) Downloading sphinxcontrib_serializinghtml-2.0.0-py3-none-any.whl.metadata (2.4 kB) Collecting Jinja2>=3.1 (from sphinx) Downloading jinja2-3.1.6-py3-none-any.whl.metadata (2.9 kB) Collecting Pygments>=2.17 (from sphinx) Downloading pygments-2.21.0-py3-none-any.whl.metadata (2.5 kB) Collecting docutils<0.23,>=0.20 (from sphinx) Downloading docutils-0.22.4-py3-none-any.whl.metadata (15 kB) Collecting snowballstemmer>=2.2 (from sphinx) Downloading snowballstemmer-3.1.1-py3-none-any.whl.metadata (7.9 kB) Collecting babel>=2.13 (from sphinx) Downloading babel-2.18.0-py3-none-any.whl.metadata (2.2 kB) Collecting alabaster>=0.7.14 (from sphinx) Downloading alabaster-1.0.0-py3-none-any.whl.metadata (2.8 kB) Collecting imagesize>=1.3 (from sphinx) Downloading imagesize-2.0.0-py2.py3-none-any.whl.metadata (1.5 kB) Collecting requests>=2.30.0 (from sphinx) Downloading requests-2.34.2-py3-none-any.whl.metadata (4.8 kB) Collecting roman-numerals>=1.0.0 (from sphinx) Downloading roman_numerals-4.1.0-py3-none-any.whl.metadata (3.3 kB) Collecting packaging>=23.0 (from sphinx) Downloading packaging-26.3-py3-none-any.whl.metadata (3.5 kB) Collecting MarkupSafe>=2.0 (from Jinja2>=3.1->sphinx) Downloading markupsafe-3.0.3-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.metadata (2.7 kB) Collecting charset_normalizer<4,>=2 (from requests>=2.30.0->sphinx) Downloading charset_normalizer-3.5.1-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.metadata (45 kB) Collecting idna<4,>=2.5 (from requests>=2.30.0->sphinx) Downloading idna-3.19-py3-none-any.whl.metadata (9.2 kB) Collecting urllib3<3,>=1.26 (from requests>=2.30.0->sphinx) Downloading urllib3-2.7.0-py3-none-any.whl.metadata (6.9 kB) Collecting certifi>=2023.5.7 (from requests>=2.30.0->sphinx) Downloading certifi-2026.7.22-py3-none-any.whl.metadata (2.5 kB) Downloading sphinx-9.0.4-py3-none-any.whl (3.9 MB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 3.9/3.9 MB 133.2 MB/s 0:00:00 Downloading docutils-0.22.4-py3-none-any.whl (633 kB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 633.2/633.2 kB 824.9 MB/s 0:00:00 Downloading alabaster-1.0.0-py3-none-any.whl (13 kB) Downloading babel-2.18.0-py3-none-any.whl (10.2 MB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 10.2/10.2 MB 532.5 MB/s 0:00:00 Downloading imagesize-2.0.0-py2.py3-none-any.whl (9.4 kB) Downloading jinja2-3.1.6-py3-none-any.whl (134 kB) Downloading markupsafe-3.0.3-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (22 kB) Downloading packaging-26.3-py3-none-any.whl (129 kB) Downloading pygments-2.21.0-py3-none-any.whl (1.3 MB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 1.3/1.3 MB 928.9 MB/s 0:00:00 Downloading requests-2.34.2-py3-none-any.whl (73 kB) Downloading charset_normalizer-3.5.1-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (262 kB) Downloading idna-3.19-py3-none-any.whl (68 kB) Downloading urllib3-2.7.0-py3-none-any.whl (131 kB) Downloading certifi-2026.7.22-py3-none-any.whl (136 kB) Downloading roman_numerals-4.1.0-py3-none-any.whl (7.7 kB) Downloading snowballstemmer-3.1.1-py3-none-any.whl (104 kB) Downloading sphinxcontrib_applehelp-2.0.0-py3-none-any.whl (119 kB) Downloading sphinxcontrib_devhelp-2.0.0-py3-none-any.whl (82 kB) Downloading sphinxcontrib_htmlhelp-2.1.0-py3-none-any.whl (98 kB) Downloading sphinxcontrib_jsmath-1.0.1-py2.py3-none-any.whl (5.1 kB) Downloading sphinxcontrib_qthelp-2.0.0-py3-none-any.whl (88 kB) Downloading sphinxcontrib_serializinghtml-2.0.0-py3-none-any.whl (92 kB) Installing collected packages: urllib3, sphinxcontrib-serializinghtml, sphinxcontrib-qthelp, sphinxcontrib-jsmath, sphinxcontrib-htmlhelp, sphinxcontrib-devhelp, sphinxcontrib-applehelp, snowballstemmer, roman-numerals, Pygments, packaging, MarkupSafe, imagesize, idna, docutils, charset_normalizer, certifi, babel, alabaster, requests, Jinja2, sphinx Successfully installed Jinja2-3.1.6 MarkupSafe-3.0.3 Pygments-2.21.0 alabaster-1.0.0 babel-2.18.0 certifi-2026.7.22 charset_normalizer-3.5.1 docutils-0.22.4 idna-3.19 imagesize-2.0.0 packaging-26.3 requests-2.34.2 roman-numerals-4.1.0 snowballstemmer-3.1.1 sphinx-9.0.4 sphinxcontrib-applehelp-2.0.0 sphinxcontrib-devhelp-2.0.0 sphinxcontrib-htmlhelp-2.1.0 sphinxcontrib-jsmath-1.0.1 sphinxcontrib-qthelp-2.0.0 sphinxcontrib-serializinghtml-2.0.0 urllib3-2.7.0 [rtd-command-info] start-time: 2026-08-18T10:01:53.978163Z, end-time: 2026-08-18T10:02:02.095241Z, duration: 8, exit-code: 0 python -m pip install --exists-action=w --no-cache-dir -r docs/requirements.txt Collecting canonical-sphinx~=0.6 (from -r docs/requirements.txt (line 2)) Downloading canonical_sphinx-0.6.0-py3-none-any.whl.metadata (5.8 kB) Collecting myst-parser~=4.0 (from -r docs/requirements.txt (line 5)) Downloading myst_parser-4.0.1-py3-none-any.whl.metadata (5.5 kB) Collecting sphinx-autobuild (from -r docs/requirements.txt (line 6)) Downloading sphinx_autobuild-2025.8.25-py3-none-any.whl.metadata (8.5 kB) Collecting sphinx-design==0.6.1 (from -r docs/requirements.txt (line 7)) Downloading sphinx_design-0.6.1-py3-none-any.whl.metadata (5.5 kB) Collecting sphinx-notfound-page~=1.1 (from -r docs/requirements.txt (line 8)) Downloading sphinx_notfound_page-1.1.0-py3-none-any.whl.metadata (2.9 kB) Collecting sphinx-reredirects==0.1.6 (from -r docs/requirements.txt (line 9)) Downloading sphinx_reredirects-0.1.6-py3-none-any.whl.metadata (2.9 kB) Collecting sphinx-tabs~=3.5 (from -r docs/requirements.txt (line 10)) Downloading sphinx_tabs-3.5.0-py3-none-any.whl.metadata (6.6 kB) Collecting sphinxcontrib-jquery~=4.1 (from -r docs/requirements.txt (line 11)) Downloading sphinxcontrib_jquery-4.1-py2.py3-none-any.whl.metadata (2.6 kB) Collecting sphinxext-opengraph~=0.13 (from -r docs/requirements.txt (line 12)) Downloading sphinxext_opengraph-0.13.0-py3-none-any.whl.metadata (2.7 kB) Collecting sphinx-rerediraffe<1.0.0,>=0.0.3 (from -r docs/requirements.txt (line 13)) Downloading sphinx_rerediraffe-0.0.4-py3-none-any.whl.metadata (3.2 kB) Collecting sphinx-config-options~=0.1 (from -r docs/requirements.txt (line 16)) Downloading sphinx_config_options-0.1.1-py3-none-any.whl.metadata (3.1 kB) Collecting sphinx-contributor-listing~=0.1 (from -r docs/requirements.txt (line 17)) Downloading sphinx_contributor_listing-0.1.0-py3-none-any.whl.metadata (2.7 kB) Collecting sphinx-filtered-toctree~=0.1 (from -r docs/requirements.txt (line 18)) Downloading sphinx_filtered_toctree-0.1.0-py3-none-any.whl.metadata (1.8 kB) Collecting sphinx-related-links~=0.1 (from -r docs/requirements.txt (line 19)) Downloading sphinx_related_links-0.1.2-py3-none-any.whl.metadata (2.5 kB) Collecting sphinx-roles~=0.1 (from -r docs/requirements.txt (line 20)) Downloading sphinx_roles-0.1.0-py3-none-any.whl.metadata (1.5 kB) Collecting sphinx-terminal~=1.0 (from -r docs/requirements.txt (line 21)) Downloading sphinx_terminal-1.1.0-py3-none-any.whl.metadata (3.2 kB) Collecting sphinx-ubuntu-images~=0.1 (from -r docs/requirements.txt (line 22)) Downloading sphinx_ubuntu_images-0.2.0-py3-none-any.whl.metadata (4.5 kB) Collecting sphinx-youtube-links~=0.1 (from -r docs/requirements.txt (line 23)) Downloading sphinx_youtube_links-0.1.0-py3-none-any.whl.metadata (1.5 kB) Requirement already satisfied: packaging~=26.1 in /home/docs/checkouts/readthedocs.org/user_builds/canonical-microceph/envs/817/lib/python3.11/site-packages (from -r docs/requirements.txt (line 26)) (26.3) Collecting sphinxcontrib-svg2pdfconverter~=2.1 (from sphinxcontrib-svg2pdfconverter[CairoSVG]~=2.1->-r docs/requirements.txt (line 27)) Downloading sphinxcontrib_svg2pdfconverter-2.1.0-py3-none-any.whl.metadata (3.3 kB) Collecting sphinx-last-updated-by-git~=0.3 (from -r docs/requirements.txt (line 28)) Downloading sphinx_last_updated_by_git-0.3.8-py3-none-any.whl.metadata (7.1 kB) Collecting sphinx-sitemap~=2.9 (from -r docs/requirements.txt (line 29)) Downloading sphinx_sitemap-2.9.0-py3-none-any.whl.metadata (3.4 kB) Collecting sphinx-llm~=0.4 (from -r docs/requirements.txt (line 30)) Downloading sphinx_llm-0.4.1-py3-none-any.whl.metadata (25 kB) Collecting rst2html (from -r docs/requirements.txt (line 33)) Downloading rst2html-2020.7.4.tar.gz (1.5 kB) Installing build dependencies: started Installing build dependencies: finished with status 'done' Getting requirements to build wheel: started Getting requirements to build wheel: finished with status 'done' Preparing metadata (pyproject.toml): started Preparing metadata (pyproject.toml): finished with status 'done' Collecting vale~=3.13 (from -r docs/requirements.txt (line 34)) Downloading vale-3.13.0.0-py3-none-any.whl.metadata (3.0 kB) Collecting sphinx<9,>=6 (from sphinx-design==0.6.1->-r docs/requirements.txt (line 7)) Downloading sphinx-8.2.3-py3-none-any.whl.metadata (7.0 kB) Collecting furo (from canonical-sphinx~=0.6->-r docs/requirements.txt (line 2)) Downloading furo-2025.12.19-py3-none-any.whl.metadata (4.9 kB) Collecting linkify-it-py (from canonical-sphinx~=0.6->-r docs/requirements.txt (line 2)) Downloading linkify_it_py-2.1.0-py3-none-any.whl.metadata (8.5 kB) Collecting docutils<0.22,>=0.19 (from myst-parser~=4.0->-r docs/requirements.txt (line 5)) Downloading docutils-0.21.2-py3-none-any.whl.metadata (2.8 kB) Requirement already satisfied: jinja2 in /home/docs/checkouts/readthedocs.org/user_builds/canonical-microceph/envs/817/lib/python3.11/site-packages (from myst-parser~=4.0->-r docs/requirements.txt (line 5)) (3.1.6) Collecting markdown-it-py~=3.0 (from myst-parser~=4.0->-r docs/requirements.txt (line 5)) Downloading markdown_it_py-3.0.0-py3-none-any.whl.metadata (6.9 kB) Collecting mdit-py-plugins>=0.4.1,~=0.4 (from myst-parser~=4.0->-r docs/requirements.txt (line 5)) Downloading mdit_py_plugins-0.6.1-py3-none-any.whl.metadata (2.9 kB) Collecting pyyaml (from myst-parser~=4.0->-r docs/requirements.txt (line 5)) Downloading pyyaml-6.0.3-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.metadata (2.4 kB) Requirement already satisfied: pygments in /home/docs/checkouts/readthedocs.org/user_builds/canonical-microceph/envs/817/lib/python3.11/site-packages (from sphinx-tabs~=3.5->-r docs/requirements.txt (line 10)) (2.21.0) Collecting sphinx<9,>=6 (from sphinx-design==0.6.1->-r docs/requirements.txt (line 7)) Downloading sphinx-7.4.7-py3-none-any.whl.metadata (6.1 kB) Collecting GitPython (from sphinx-contributor-listing~=0.1->-r docs/requirements.txt (line 17)) Downloading gitpython-3.1.59-py3-none-any.whl.metadata (13 kB) Requirement already satisfied: requests in /home/docs/checkouts/readthedocs.org/user_builds/canonical-microceph/envs/817/lib/python3.11/site-packages (from sphinx-related-links~=0.1->-r docs/requirements.txt (line 19)) (2.34.2) Collecting beautifulsoup4 (from sphinx-related-links~=0.1->-r docs/requirements.txt (line 19)) Downloading beautifulsoup4-4.15.0-py3-none-any.whl.metadata (3.8 kB) Collecting sphinx-copybutton>=0.5.2 (from sphinx-terminal~=1.0->-r docs/requirements.txt (line 21)) Downloading sphinx_copybutton-0.5.2-py3-none-any.whl.metadata (3.2 kB) Collecting sphinx-markdown-builder>=0.6.8 (from sphinx-llm~=0.4->-r docs/requirements.txt (line 30)) Downloading sphinx_markdown_builder-0.6.11-py3-none-any.whl.metadata (3.8 kB) Collecting mdurl~=0.1 (from markdown-it-py~=3.0->myst-parser~=4.0->-r docs/requirements.txt (line 5)) Downloading mdurl-0.1.2-py3-none-any.whl.metadata (1.6 kB) Requirement already satisfied: sphinxcontrib-applehelp in /home/docs/checkouts/readthedocs.org/user_builds/canonical-microceph/envs/817/lib/python3.11/site-packages (from sphinx<9,>=6->sphinx-design==0.6.1->-r docs/requirements.txt (line 7)) (2.0.0) Requirement already satisfied: sphinxcontrib-devhelp in /home/docs/checkouts/readthedocs.org/user_builds/canonical-microceph/envs/817/lib/python3.11/site-packages (from sphinx<9,>=6->sphinx-design==0.6.1->-r docs/requirements.txt (line 7)) (2.0.0) Requirement already satisfied: sphinxcontrib-jsmath in /home/docs/checkouts/readthedocs.org/user_builds/canonical-microceph/envs/817/lib/python3.11/site-packages (from sphinx<9,>=6->sphinx-design==0.6.1->-r docs/requirements.txt (line 7)) (1.0.1) Requirement already satisfied: sphinxcontrib-htmlhelp>=2.0.0 in /home/docs/checkouts/readthedocs.org/user_builds/canonical-microceph/envs/817/lib/python3.11/site-packages (from sphinx<9,>=6->sphinx-design==0.6.1->-r docs/requirements.txt (line 7)) (2.1.0) Requirement already satisfied: sphinxcontrib-serializinghtml>=1.1.9 in /home/docs/checkouts/readthedocs.org/user_builds/canonical-microceph/envs/817/lib/python3.11/site-packages (from sphinx<9,>=6->sphinx-design==0.6.1->-r docs/requirements.txt (line 7)) (2.0.0) Requirement already satisfied: sphinxcontrib-qthelp in /home/docs/checkouts/readthedocs.org/user_builds/canonical-microceph/envs/817/lib/python3.11/site-packages (from sphinx<9,>=6->sphinx-design==0.6.1->-r docs/requirements.txt (line 7)) (2.0.0) Requirement already satisfied: snowballstemmer>=2.2 in /home/docs/checkouts/readthedocs.org/user_builds/canonical-microceph/envs/817/lib/python3.11/site-packages (from sphinx<9,>=6->sphinx-design==0.6.1->-r docs/requirements.txt (line 7)) (3.1.1) Requirement already satisfied: babel>=2.13 in /home/docs/checkouts/readthedocs.org/user_builds/canonical-microceph/envs/817/lib/python3.11/site-packages (from sphinx<9,>=6->sphinx-design==0.6.1->-r docs/requirements.txt (line 7)) (2.18.0) Collecting alabaster~=0.7.14 (from sphinx<9,>=6->sphinx-design==0.6.1->-r docs/requirements.txt (line 7)) Downloading alabaster-0.7.16-py3-none-any.whl.metadata (2.9 kB) Requirement already satisfied: imagesize>=1.3 in /home/docs/checkouts/readthedocs.org/user_builds/canonical-microceph/envs/817/lib/python3.11/site-packages (from sphinx<9,>=6->sphinx-design==0.6.1->-r docs/requirements.txt (line 7)) (2.0.0) Collecting cairosvg>=1.0 (from sphinxcontrib-svg2pdfconverter[CairoSVG]~=2.1->-r docs/requirements.txt (line 27)) Downloading cairosvg-2.9.0-py3-none-any.whl.metadata (2.7 kB) Collecting colorama>=0.4.6 (from sphinx-autobuild->-r docs/requirements.txt (line 6)) Downloading colorama-0.4.6-py2.py3-none-any.whl.metadata (17 kB) Collecting starlette>=0.35 (from sphinx-autobuild->-r docs/requirements.txt (line 6)) Downloading starlette-1.6.0-py3-none-any.whl.metadata (6.4 kB) Collecting uvicorn>=0.25 (from sphinx-autobuild->-r docs/requirements.txt (line 6)) Downloading uvicorn-0.52.3-py3-none-any.whl.metadata (6.6 kB) Collecting watchfiles>=0.20 (from sphinx-autobuild->-r docs/requirements.txt (line 6)) Downloading watchfiles-1.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (4.9 kB) Collecting websockets>=11 (from sphinx-autobuild->-r docs/requirements.txt (line 6)) Downloading websockets-17.0.1-cp311-cp311-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl.metadata (6.3 kB) Collecting cairocffi (from cairosvg>=1.0->sphinxcontrib-svg2pdfconverter[CairoSVG]~=2.1->-r docs/requirements.txt (line 27)) Downloading cairocffi-1.7.1-py3-none-any.whl.metadata (3.3 kB) Collecting cssselect2 (from cairosvg>=1.0->sphinxcontrib-svg2pdfconverter[CairoSVG]~=2.1->-r docs/requirements.txt (line 27)) Downloading cssselect2-0.9.0-py3-none-any.whl.metadata (2.9 kB) Collecting defusedxml (from cairosvg>=1.0->sphinxcontrib-svg2pdfconverter[CairoSVG]~=2.1->-r docs/requirements.txt (line 27)) Downloading defusedxml-0.7.1-py2.py3-none-any.whl.metadata (32 kB) Collecting pillow (from cairosvg>=1.0->sphinxcontrib-svg2pdfconverter[CairoSVG]~=2.1->-r docs/requirements.txt (line 27)) Downloading pillow-12.3.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.metadata (9.1 kB) Collecting tinycss2 (from cairosvg>=1.0->sphinxcontrib-svg2pdfconverter[CairoSVG]~=2.1->-r docs/requirements.txt (line 27)) Downloading tinycss2-1.5.1-py3-none-any.whl.metadata (3.0 kB) Requirement already satisfied: MarkupSafe>=2.0 in /home/docs/checkouts/readthedocs.org/user_builds/canonical-microceph/envs/817/lib/python3.11/site-packages (from jinja2->myst-parser~=4.0->-r docs/requirements.txt (line 5)) (3.0.3) Requirement already satisfied: charset_normalizer<4,>=2 in /home/docs/checkouts/readthedocs.org/user_builds/canonical-microceph/envs/817/lib/python3.11/site-packages (from requests->sphinx-related-links~=0.1->-r docs/requirements.txt (line 19)) (3.5.1) Requirement already satisfied: idna<4,>=2.5 in /home/docs/checkouts/readthedocs.org/user_builds/canonical-microceph/envs/817/lib/python3.11/site-packages (from requests->sphinx-related-links~=0.1->-r docs/requirements.txt (line 19)) (3.19) Requirement already satisfied: urllib3<3,>=1.26 in /home/docs/checkouts/readthedocs.org/user_builds/canonical-microceph/envs/817/lib/python3.11/site-packages (from requests->sphinx-related-links~=0.1->-r docs/requirements.txt (line 19)) (2.7.0) Requirement already satisfied: certifi>=2023.5.7 in /home/docs/checkouts/readthedocs.org/user_builds/canonical-microceph/envs/817/lib/python3.11/site-packages (from requests->sphinx-related-links~=0.1->-r docs/requirements.txt (line 19)) (2026.7.22) Collecting tabulate (from sphinx-markdown-builder>=0.6.8->sphinx-llm~=0.4->-r docs/requirements.txt (line 30)) Downloading tabulate-0.10.0-py3-none-any.whl.metadata (40 kB) Collecting anyio<5,>=3.6.2 (from starlette>=0.35->sphinx-autobuild->-r docs/requirements.txt (line 6)) Downloading anyio-4.14.2-py3-none-any.whl.metadata (4.6 kB) Collecting typing-extensions>=4.10.0 (from starlette>=0.35->sphinx-autobuild->-r docs/requirements.txt (line 6)) Downloading typing_extensions-4.16.0-py3-none-any.whl.metadata (3.3 kB) Collecting click>=7.0 (from uvicorn>=0.25->sphinx-autobuild->-r docs/requirements.txt (line 6)) Downloading click-8.4.2-py3-none-any.whl.metadata (2.6 kB) Collecting h11>=0.8 (from uvicorn>=0.25->sphinx-autobuild->-r docs/requirements.txt (line 6)) Downloading h11-0.16.0-py3-none-any.whl.metadata (8.3 kB) Collecting soupsieve>=1.6.1 (from beautifulsoup4->sphinx-related-links~=0.1->-r docs/requirements.txt (line 19)) Downloading soupsieve-2.9.2-py3-none-any.whl.metadata (4.6 kB) Collecting cffi>=1.1.0 (from cairocffi->cairosvg>=1.0->sphinxcontrib-svg2pdfconverter[CairoSVG]~=2.1->-r docs/requirements.txt (line 27)) Downloading cffi-2.1.1-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl.metadata (2.5 kB) Collecting pycparser (from cffi>=1.1.0->cairocffi->cairosvg>=1.0->sphinxcontrib-svg2pdfconverter[CairoSVG]~=2.1->-r docs/requirements.txt (line 27)) Downloading pycparser-3.0-py3-none-any.whl.metadata (8.2 kB) Collecting webencodings (from cssselect2->cairosvg>=1.0->sphinxcontrib-svg2pdfconverter[CairoSVG]~=2.1->-r docs/requirements.txt (line 27)) Downloading webencodings-0.6.1-py3-none-any.whl.metadata (3.4 kB) Collecting sphinx-basic-ng>=1.0.0.beta2 (from furo->canonical-sphinx~=0.6->-r docs/requirements.txt (line 2)) Downloading sphinx_basic_ng-1.0.0b2-py3-none-any.whl.metadata (1.5 kB) Collecting accessible-pygments>=0.0.5 (from furo->canonical-sphinx~=0.6->-r docs/requirements.txt (line 2)) Downloading accessible_pygments-0.0.5-py3-none-any.whl.metadata (10 kB) Collecting gitdb<5,>=4.0.1 (from GitPython->sphinx-contributor-listing~=0.1->-r docs/requirements.txt (line 17)) Downloading gitdb-4.0.12-py3-none-any.whl.metadata (1.2 kB) Collecting smmap<6,>=3.0.1 (from gitdb<5,>=4.0.1->GitPython->sphinx-contributor-listing~=0.1->-r docs/requirements.txt (line 17)) Downloading smmap-5.0.3-py3-none-any.whl.metadata (4.6 kB) Collecting uc-micro-py (from linkify-it-py->canonical-sphinx~=0.6->-r docs/requirements.txt (line 2)) Downloading uc_micro_py-2.0.0-py3-none-any.whl.metadata (2.2 kB) Downloading sphinx_design-0.6.1-py3-none-any.whl (2.2 MB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 2.2/2.2 MB 112.1 MB/s 0:00:00 Downloading sphinx_reredirects-0.1.6-py3-none-any.whl (5.7 kB) Downloading canonical_sphinx-0.6.0-py3-none-any.whl (1.0 MB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 1.0/1.0 MB 914.1 MB/s 0:00:00 Downloading myst_parser-4.0.1-py3-none-any.whl (84 kB) Downloading sphinx_notfound_page-1.1.0-py3-none-any.whl (8.2 kB) Downloading sphinx_tabs-3.5.0-py3-none-any.whl (9.9 kB) Downloading sphinxcontrib_jquery-4.1-py2.py3-none-any.whl (121 kB) Downloading sphinxext_opengraph-0.13.0-py3-none-any.whl (1.0 MB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 1.0/1.0 MB 874.8 MB/s 0:00:00 Downloading sphinx_rerediraffe-0.0.4-py3-none-any.whl (8.1 kB) Downloading sphinx_config_options-0.1.1-py3-none-any.whl (23 kB) Downloading sphinx_contributor_listing-0.1.0-py3-none-any.whl (19 kB) Downloading sphinx_filtered_toctree-0.1.0-py3-none-any.whl (16 kB) Downloading sphinx_related_links-0.1.2-py3-none-any.whl (19 kB) Downloading sphinx_roles-0.1.0-py3-none-any.whl (17 kB) Downloading sphinx_terminal-1.1.0-py3-none-any.whl (21 kB) Downloading sphinx_ubuntu_images-0.2.0-py3-none-any.whl (29 kB) Downloading sphinx_youtube_links-0.1.0-py3-none-any.whl (17 kB) Downloading sphinxcontrib_svg2pdfconverter-2.1.0-py3-none-any.whl (9.3 kB) Downloading sphinx_last_updated_by_git-0.3.8-py3-none-any.whl (8.6 kB) Downloading sphinx_sitemap-2.9.0-py3-none-any.whl (6.2 kB) Downloading sphinx_llm-0.4.1-py3-none-any.whl (28 kB) Downloading vale-3.13.0.0-py3-none-any.whl (5.9 kB) Downloading docutils-0.21.2-py3-none-any.whl (587 kB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 587.4/587.4 kB 95.2 MB/s 0:00:00 Downloading markdown_it_py-3.0.0-py3-none-any.whl (87 kB) Downloading mdit_py_plugins-0.6.1-py3-none-any.whl (66 kB) Downloading mdurl-0.1.2-py3-none-any.whl (10.0 kB) Downloading sphinx-7.4.7-py3-none-any.whl (3.4 MB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 3.4/3.4 MB 368.7 MB/s 0:00:00 Downloading alabaster-0.7.16-py3-none-any.whl (13 kB) Downloading sphinx_autobuild-2025.8.25-py3-none-any.whl (12 kB) Downloading cairosvg-2.9.0-py3-none-any.whl (45 kB) Downloading colorama-0.4.6-py2.py3-none-any.whl (25 kB) Downloading sphinx_copybutton-0.5.2-py3-none-any.whl (13 kB) Downloading sphinx_markdown_builder-0.6.11-py3-none-any.whl (18 kB) Downloading starlette-1.6.0-py3-none-any.whl (75 kB) Downloading anyio-4.14.2-py3-none-any.whl (125 kB) Downloading typing_extensions-4.16.0-py3-none-any.whl (45 kB) Downloading uvicorn-0.52.3-py3-none-any.whl (79 kB) Downloading click-8.4.2-py3-none-any.whl (119 kB) Downloading h11-0.16.0-py3-none-any.whl (37 kB) Downloading watchfiles-1.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (456 kB) Downloading websockets-17.0.1-cp311-cp311-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl (219 kB) Downloading beautifulsoup4-4.15.0-py3-none-any.whl (109 kB) Downloading soupsieve-2.9.2-py3-none-any.whl (37 kB) Downloading cairocffi-1.7.1-py3-none-any.whl (75 kB) Downloading cffi-2.1.1-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl (217 kB) Downloading cssselect2-0.9.0-py3-none-any.whl (15 kB) Downloading defusedxml-0.7.1-py2.py3-none-any.whl (25 kB) Downloading furo-2025.12.19-py3-none-any.whl (339 kB) Downloading accessible_pygments-0.0.5-py3-none-any.whl (1.4 MB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 1.4/1.4 MB 976.5 MB/s 0:00:00 Downloading sphinx_basic_ng-1.0.0b2-py3-none-any.whl (22 kB) Downloading gitpython-3.1.59-py3-none-any.whl (220 kB) Downloading gitdb-4.0.12-py3-none-any.whl (62 kB) Downloading smmap-5.0.3-py3-none-any.whl (24 kB) Downloading linkify_it_py-2.1.0-py3-none-any.whl (19 kB) Downloading pillow-12.3.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (6.9 MB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 6.9/6.9 MB 439.9 MB/s 0:00:00 Downloading pycparser-3.0-py3-none-any.whl (48 kB) Downloading pyyaml-6.0.3-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (806 kB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 806.6/806.6 kB 873.5 MB/s 0:00:00 Downloading tabulate-0.10.0-py3-none-any.whl (39 kB) Downloading tinycss2-1.5.1-py3-none-any.whl (28 kB) Downloading webencodings-0.6.1-py3-none-any.whl (8.7 kB) Downloading uc_micro_py-2.0.0-py3-none-any.whl (6.4 kB) Building wheels for collected packages: rst2html Building wheel for rst2html (pyproject.toml): started Building wheel for rst2html (pyproject.toml): finished with status 'done' Created wheel for rst2html: filename=rst2html-2020.7.4-py3-none-any.whl size=1472 sha256=a2e78fe0258c312e3524940865b44cc221146928b577f15770b600391430175b Stored in directory: /tmp/pip-ephem-wheel-cache-9v1qfuct/wheels/39/db/0e/0697082eb1b53bdad9f5019b5a590c54e0ec7aac2ec19c6360 Successfully built rst2html Installing collected packages: websockets, webencodings, vale, uc-micro-py, typing-extensions, tabulate, soupsieve, smmap, pyyaml, pycparser, pillow, mdurl, h11, docutils, defusedxml, colorama, click, alabaster, accessible-pygments, uvicorn, tinycss2, sphinx, rst2html, markdown-it-py, linkify-it-py, gitdb, cffi, beautifulsoup4, anyio, watchfiles, starlette, sphinxext-opengraph, sphinxcontrib-svg2pdfconverter, sphinxcontrib-jquery, sphinx-youtube-links, sphinx-ubuntu-images, sphinx-tabs, sphinx-roles, sphinx-reredirects, sphinx-rerediraffe, sphinx-related-links, sphinx-notfound-page, sphinx-markdown-builder, sphinx-last-updated-by-git, sphinx-filtered-toctree, sphinx-design, sphinx-copybutton, sphinx-config-options, sphinx-basic-ng, mdit-py-plugins, GitPython, cssselect2, cairocffi, sphinx-terminal, sphinx-sitemap, sphinx-llm, sphinx-contributor-listing, sphinx-autobuild, myst-parser, furo, cairosvg, canonical-sphinx Attempting uninstall: docutils Found existing installation: docutils 0.22.4 Uninstalling docutils-0.22.4: Successfully uninstalled docutils-0.22.4 Attempting uninstall: alabaster Found existing installation: alabaster 1.0.0 Uninstalling alabaster-1.0.0: Successfully uninstalled alabaster-1.0.0 Attempting uninstall: sphinx Found existing installation: Sphinx 9.0.4 Uninstalling Sphinx-9.0.4: Successfully uninstalled Sphinx-9.0.4 Successfully installed GitPython-3.1.59 accessible-pygments-0.0.5 alabaster-0.7.16 anyio-4.14.2 beautifulsoup4-4.15.0 cairocffi-1.7.1 cairosvg-2.9.0 canonical-sphinx-0.6.0 cffi-2.1.1 click-8.4.2 colorama-0.4.6 cssselect2-0.9.0 defusedxml-0.7.1 docutils-0.21.2 furo-2025.12.19 gitdb-4.0.12 h11-0.16.0 linkify-it-py-2.1.0 markdown-it-py-3.0.0 mdit-py-plugins-0.6.1 mdurl-0.1.2 myst-parser-4.0.1 pillow-12.3.0 pycparser-3.0 pyyaml-6.0.3 rst2html-2020.7.4 smmap-5.0.3 soupsieve-2.9.2 sphinx-7.4.7 sphinx-autobuild-2025.8.25 sphinx-basic-ng-1.0.0b2 sphinx-config-options-0.1.1 sphinx-contributor-listing-0.1.0 sphinx-copybutton-0.5.2 sphinx-design-0.6.1 sphinx-filtered-toctree-0.1.0 sphinx-last-updated-by-git-0.3.8 sphinx-llm-0.4.1 sphinx-markdown-builder-0.6.11 sphinx-notfound-page-1.1.0 sphinx-related-links-0.1.2 sphinx-rerediraffe-0.0.4 sphinx-reredirects-0.1.6 sphinx-roles-0.1.0 sphinx-sitemap-2.9.0 sphinx-tabs-3.5.0 sphinx-terminal-1.1.0 sphinx-ubuntu-images-0.2.0 sphinx-youtube-links-0.1.0 sphinxcontrib-jquery-4.1 sphinxcontrib-svg2pdfconverter-2.1.0 sphinxext-opengraph-0.13.0 starlette-1.6.0 tabulate-0.10.0 tinycss2-1.5.1 typing-extensions-4.16.0 uc-micro-py-2.0.0 uvicorn-0.52.3 vale-3.13.0.0 watchfiles-1.2.0 webencodings-0.6.1 websockets-17.0.1 [rtd-command-info] start-time: 2026-08-18T10:02:02.241616Z, end-time: 2026-08-18T10:02:03.711052Z, duration: 1, exit-code: 0 bash docs/scripts/fetch-charm-docs.sh Fetching charm documentation from https://github.com/canonical/charm-microceph.git (branch: main)... Cloning into '/tmp/tmp.mM1JHg45h5/charm-microceph'... Fetched: charm/how-to/adding-osds.rst Fetched: charm/how-to/performing-cluster-maintenance.rst Fetched: charm/how-to/adding-file-osds.rst Fetched: charm/how-to/install-charmed-microceph.rst Fetched: charm/how-to/enable-rgw.rst Fetched: charm/tutorial/get-started.rst Charm documentation fetch complete: 6 file(s) fetched. [rtd-command-info] start-time: 2026-08-18T10:02:03.787720Z, end-time: 2026-08-18T10:02:03.825076Z, duration: 0, exit-code: 0 cat docs/conf.py import datetime import os import textwrap import yaml # Configuration for the Sphinx documentation builder. # All configuration specific to our project should be done in this file. # # A complete list of built-in Sphinx configuration values: # https://www.sphinx-doc.org/en/master/usage/configuration.html # # The Sphinx Stack uses the Canonical Sphinx theme to keep all documentation consistent # and on brand: # https://github.com/canonical/canonical-sphinx ####################### # Project information # ####################### # Project name project = "MicroCeph" # Author name; used in the default copyright statement in the page footer author = "Canonical Ltd." # The year in the copyright statement copyright = f"{datetime.date.today().year}" # Sidebar documentation title # To disable the title, set it to an empty string. html_title = project + " documentation" # Documentation website URL ogp_site_url = os.environ.get("READTHEDOCS_CANONICAL_URL", "/") # Preview name of the documentation website # TODO: To use a different name for the project in previews, update the next line. ogp_site_name = project # Preview image URL # TODO: To customise the preview image, update the next line. ogp_image = "https://assets.ubuntu.com/v1/cc828679-docs_illustration.svg" # Product favicon; shown in bookmarks, browser tabs, etc. # TODO: To customise the favicon, uncomment and update the next line. # html_favicon = "_static/favicon.png" # Dictionary of values to pass into the Sphinx context for all pages: # https://www.sphinx-doc.org/en/master/usage/configuration.html#confval-html_context html_context = { # Product page URL; can be different from product docs URL # TODO: Change to your product website URL, dropping the 'https://' prefix (e.g., # 'ubuntu.com/lxd'). If there's no such website, remove the {{ product_page }} # link from the _templates/header.html file. "product_page": "canonical.com/ceph", # Product tag image; the orange part of your logo, shown in the page header # TODO: To add a tag image, uncomment and update as needed. # 'product_tag': '_static/tag.png', # Your Discourse instance URL # TODO: Change to your Discourse instance URL or leave empty. "discourse": "", # Your Mattermost channel URL # TODO: Change to your Mattermost channel URL or leave empty. "mattermost": "https://chat.canonical.com/canonical/channels/ceph", # Your Matrix channel URL # TODO: Change to your Matrix channel URL or leave empty. "matrix": "https://matrix.to/#/#ceph-general:ubuntu.com", # Your documentation GitHub repository URL If set, links for viewing the # documentation source files and creating GitHub issues are added at the bottom of # each page. # TODO: Change to your documentation GitHub repository URL or leave empty. "github_url": "https://github.com/canonical/microceph", # Docs branch in the repo; used in links for viewing the source files "repo_default_branch": "main", # Docs location in the repo; used in links for viewing the source files "repo_folder": "/docs/", # TODO: To enable or disable the Previous / Next buttons at the bottom of pages # Valid options: none, prev, next, both "sequential_nav": "both", # TODO: To enable listing contributors on individual pages, set to True "display_contributors": True, # Required for feedback button "github_issues": "enabled", # Passes the top-level 'author' value to the theme "author": author, # Documentation license information "license": { # TODO: Specify your project's license. # For the name, we recommend using the standard shorthand identifier from # https://spdx.org/licenses "name": "AGPL-3.0", # TODO: Link directly to your project's license statement. "url": "https://github.com/canonical/microceph/blob/main/COPYING", }, } # TODO: To enable the edit button on pages, uncomment and change the link to a # public repository on GitHub or Launchpad. Any of the following link domains # are accepted: # - https://github.com/canonical/microceph" # - https://launchpad.net/example # - https://git.launchpad.net/example html_theme_options = { 'source_edit_link': 'https://github.com/canonical/microceph', } # Project slug # TODO: If your documentation is hosted on https://documentation.ubuntu.com/, # uncomment and set to the RTD slug. # slug = '' ############################################################### # Sitemap configuration: https://sphinx-sitemap.readthedocs.io/ ############################################################### # Use RTD canonical URL to ensure duplicate pages have a specific canonical URL html_baseurl = os.environ.get("READTHEDOCS_CANONICAL_URL", "/") # sphinx-sitemap uses html_baseurl to generate the full URL for each page: sitemap_url_scheme = "{link}" # Include `lastmod` dates in the sitemap: sitemap_show_lastmod = True # URL scheme. Add language and version scheme elements # When configured with RTD variables, check for RTD environment so manual runs succeed: if 'READTHEDOCS_VERSION' in os.environ: version = os.environ["READTHEDOCS_VERSION"] sitemap_url_scheme = '{version}{link}' else: sitemap_url_scheme = 'MANUAL/{link}' # TODO: Exclude pages that aren't user-facing from the sitemap (e.g., module pages # generated by autodoc). # Pages excluded from the sitemap: sitemap_excludes = [ "404/", "genindex/", "search/", ] ################################ # Template and asset locations # ################################ html_static_path = ["_static"] templates_path = ["_templates"] ############# # Redirects # ############# # Add redirects to the 'redirects.txt' file # https://sphinxext-rediraffe.readthedocs.io/en/latest/ # To set up redirects in the Read the Docs project dashboard: # https://docs.readthedocs.io/en/stable/guides/redirects.html rediraffe_redirects = "redirects.txt" # Strips '/index.html' from destination URLs when building with 'dirhtml' rediraffe_dir_only = True ############################ # sphinx-llm configuration # ############################ # This description is included in llms.txt to provide some initial context for your # product docs. # TODO: Add a description in the form "This is the documentation for , # ". llms_txt_description = textwrap.dedent( """\ This is the official documentation for MicroCeph, an opinionated orchestration tool for Ceph clusters at all scales, and the easiest way to get up and running with Ceph. """ ) ########################### # Link checker exceptions # ########################### # A regex list of URLs that are ignored by 'make linkcheck' # Remove or adjust the ACME entry after you update the contributing guide linkcheck_ignore = [ "http://127.0.0.1:8000", "https://github.com/canonical/ACME/*", "https://github.com", "https://matrix\.to/.*", "https://example.com", "https://tracker.ceph.com/.*", ] # A regex list of URLs where anchors are ignored by 'make linkcheck linkcheck_anchors_ignore_for_url = [ r"https://github\.com/.*", r"https://matrix.to/*", # SourceForge domains often block linkcheck r"https://.*\.sourceforge\.(net|io)/.*", ] # How long the link checker will wait for a response for each request # TODO: Decrease to improve run time or increase if links frequently time out. # External documentation sites (canonical.com, ubuntu.com, ...) intermittently # return 429 (rate limiting), 502 (bad gateway), or read timeouts while the # link checker is running. These are transient infra failures, not broken # links, yet they fail the docs build. Raise the retry count, the rate-limit # back-off window, and the per-request timeout so transient errors clear # instead of failing the build. # See https://github.com/canonical/microceph/issues/717 linkcheck_timeout = 60 linkcheck_retries = 5 linkcheck_rate_limit_timeout = 600 ######################## # Configuration extras # ######################## # Custom MyST syntax extensions; see # https://myst-parser.readthedocs.io/en/latest/syntax/optional.html # NOTE: By default, the following MyST extensions are enabled: # - substitution # - deflist # - linkify # myst_enable_extensions = set() # Custom Sphinx extensions; see # https://www.sphinx-doc.org/en/master/usage/extensions/index.html # NOTE: The canonical_sphinx extension is required for the Shinx Stack. # It automatically enables the following extensions: # - custom-rst-roles # - myst_parser # - notfound.extension # - related-links # - sphinx_copybutton # - sphinx_design # - sphinx_reredirects # - sphinx_tabs.tabs # - sphinxcontrib.jquery # - sphinxext.opengraph # - terminal-output # - youtube-links extensions = [ "canonical_sphinx", "notfound.extension", "sphinx_design", "sphinx_rerediraffe", "sphinx_reredirects", "sphinx_tabs.tabs", "sphinxcontrib.jquery", "sphinxext.opengraph", "sphinx_config_options", "sphinx_contributor_listing", "sphinx_filtered_toctree", "sphinx_llm.txt", "sphinx_related_links", "sphinx_roles", "sphinx_terminal", "sphinx_ubuntu_images", "sphinx_youtube_links", "sphinxcontrib.cairosvgconverter", "sphinx_last_updated_by_git", "sphinx.ext.intersphinx", "sphinx_sitemap", ] # Excludes files or directories from processing exclude_patterns = [ "doc-cheat-sheet*", ".venv*", ] # Adds custom CSS files, located remotely or in 'html_static_path'. html_css_files = ["https://assets.ubuntu.com/v1/d86746ef-cookie_banner.css"] # Adds custom JavaScript files, located under 'html_static_path' html_js_files = ["https://assets.ubuntu.com/v1/287a5e8f-bundle.js"] # Appends extra markup to the end of every document written in reST # rst_epilog = """ # """ # Feedback button at the top; enabled by default # TODO: Disable the button if your project is unsuitable for public feedback. # disable_feedback_button = True # Your manpage URL # TODO: To enable manpage links, uncomment and replace {codename} with required # release, preferably an LTS release (e.g. noble). Do *not* substitute # {section} or {page}; these will be replaced by sphinx at build time # # NOTE: If set, adding ':manpage:' to an .rst file # adds a link to the corresponding man section at the bottom of the page. # manpages_url = 'https://manpages.ubuntu.com/manpages/{codename}/en/' + \ # 'man{section}/{page}.{section}.html' # Specifies a reST snippet to be prepended to each .rst file # This defines a :center: role that centers table cell content. # This defines a :h2: role that styles content for use with PDF generation. rst_prolog = """ .. role:: center :class: align-center .. role:: h2 :class: hclass2 .. role:: woke-ignore :class: woke-ignore .. role:: vale-ignore :class: vale-ignore """ # Workaround for https://github.com/canonical/canonical-sphinx/issues/34 if "discourse_prefix" not in html_context and "discourse" in html_context: html_context["discourse_prefix"] = html_context["discourse"] + "/t/" # Workaround for substitutions.yaml if os.path.exists('./reuse/substitutions.yaml'): with open('./reuse/substitutions.yaml', 'r') as fd: myst_substitutions = yaml.safe_load(fd.read()) # Disable automatic fallback resolution so that all intersphinx references # must be written explicitly as :external+key:ref:`label`. # This prevents ambiguous or accidental cross-project resolution. intersphinx_disabled_reftypes = ['*'] # Intersphinx mapping: links to external Sphinx documentation sets # Keys are short identifiers used in :external+key:ref:`label` roles. # The second tuple element (None) means Sphinx fetches objects.inv automatically # from the base URL. # Configuration for Intersphinx projects intersphinx_mapping = { # Upstream Ceph documentation 'upstream-ceph': ('https://docs.ceph.com/en/latest/', None), # Snap packaging documentation 'snapcraft': ('https://snapcraft.io/docs/', None), # MicroCloud documentation 'microcloud': ('https://documentation.ubuntu.com/microcloud/latest/', None), # Juju documentation (relevant for the MicroCeph charm) 'juju': ('https://documentation.ubuntu.com/juju/latest/', None), # Ubuntu release notes 'ubuntu-release-notes': ('https://documentation.ubuntu.com/release-notes/', None), } [rtd-command-info] start-time: 2026-08-18T10:02:03.914366Z, end-time: 2026-08-18T10:02:11.334070Z, duration: 7, exit-code: 0 python -m sphinx -T -W --keep-going -b dirhtml -d _build/doctrees -D language=en . $READTHEDOCS_OUTPUT/html Running Sphinx v7.4.7 loading translations [en]... done sphinx_design found. sphinx_design is now configured. sphinx_tabs.tabs found. sphinx_tabs.tabs is now configured. sphinx_reredirects found. sphinx_reredirects is now configured. canonical.youtube-links not found. canonical.youtube-links will not be configured. canonical.related-links not found. canonical.related-links will not be configured. canonical.custom-rst-roles not found. canonical.custom-rst-roles will not be configured. canonical.terminal-output not found. canonical.terminal-output will not be configured. canonical.contributor-listing not found. canonical.contributor-listing will not be configured. sphinx_copybutton found. sphinx_copybutton is now configured. sphinxext.opengraph found. sphinxext.opengraph is now configured. sphinxcontrib.jquery found. sphinxcontrib.jquery is now configured. notfound.extension found. notfound.extension is now configured. sphinxcontrib.cairosvgconverter found. sphinxcontrib.cairosvgconverter is now configured. sphinx_last_updated_by_git found. sphinx_last_updated_by_git is now configured. matplotlib is not installed, social cards will not be generated making output directory... done myst v4.0.1: MdParserConfig(commonmark_only=False, gfm_only=False, enable_extensions={'linkify', 'substitution', 'deflist'}, disable_syntax=[], all_links_external=False, links_external_new_tab=False, url_schemes=('http', 'https', 'mailto', 'ftp'), ref_domains=None, fence_as_directive=set(), number_code_blocks=[], title_to_header=False, heading_anchors=0, heading_slug_func=None, html_meta={}, footnote_sort=True, footnote_transition=True, words_per_minute=200, substitutions={}, linkify_fuzzy_links=True, dmath_allow_labels=True, dmath_allow_space=True, dmath_allow_digits=True, dmath_double_inline=False, update_mathjax=True, mathjax_classes='tex2jax_process|mathjax_process|math|output_area', enable_checkboxes=False, suppress_warnings=[], highlight_code_blocks=True) Spawning additional sphinx subprocess to build markdown files for llms.txt: /home/docs/checkouts/readthedocs.org/user_builds/canonical-microceph/envs/817/bin/python -m sphinx -b markdown /home/docs/checkouts/readthedocs.org/user_builds/canonical-microceph/checkouts/817/docs /home/docs/checkouts/readthedocs.org/user_builds/canonical-microceph/checkouts/817/_readthedocs/html/_markdown_build Subprocess output available at: /tmp/sphinx_llm_output_lg7trbib.log loading intersphinx inventory 'upstream-ceph' from https://docs.ceph.com/en/latest/objects.inv... loading intersphinx inventory 'snapcraft' from https://snapcraft.io/docs/objects.inv... loading intersphinx inventory 'microcloud' from https://documentation.ubuntu.com/microcloud/latest/objects.inv... loading intersphinx inventory 'juju' from https://documentation.ubuntu.com/juju/latest/objects.inv... loading intersphinx inventory 'ubuntu-release-notes' from https://documentation.ubuntu.com/release-notes/objects.inv... intersphinx inventory has moved: https://documentation.ubuntu.com/microcloud/latest/objects.inv -> https://canonical.com/microcloud/docs/latest/objects.inv intersphinx inventory has moved: https://documentation.ubuntu.com/juju/latest/objects.inv -> https://canonical.com/juju/docs/juju-cli/latest/objects.inv building [mo]: targets for 0 po files that are out of date writing output... building [dirhtml]: targets for 84 source files that are out of date updating environment: [new config] 84 added, 0 changed, 0 removed reading sources... [ 1%] charm/how-to/adding-file-osds reading sources... [ 2%] charm/how-to/adding-osds reading sources... [ 4%] charm/how-to/enable-rgw reading sources... [ 5%] charm/how-to/index reading sources... [ 6%] charm/how-to/install-charmed-microceph reading sources... [ 7%] charm/how-to/performing-cluster-maintenance reading sources... [ 8%] charm/tutorial/get-started reading sources... [ 10%] contributing/index reading sources... [ 11%] index reading sources... [ 12%] snap/explanation/canonical-ceph-reference-architecture/architectural-considerations reading sources... [ 13%] snap/explanation/canonical-ceph-reference-architecture/certified-hardware reading sources... [ 14%] snap/explanation/canonical-ceph-reference-architecture/data-encryption reading sources... [ 15%] snap/explanation/canonical-ceph-reference-architecture/data-persistence-mechanisms reading sources... [ 17%] snap/explanation/canonical-ceph-reference-architecture/deployment-options reading sources... [ 18%] snap/explanation/canonical-ceph-reference-architecture/disk-recommendations reading sources... [ 19%] snap/explanation/canonical-ceph-reference-architecture/index reading sources... [ 20%] snap/explanation/canonical-ceph-reference-architecture/minimum-node-count-and-rack-layout reading sources... [ 21%] snap/explanation/canonical-ceph-reference-architecture/network-recommendations reading sources... [ 23%] snap/explanation/canonical-ceph-reference-architecture/processor-requirements reading sources... [ 24%] snap/explanation/canonical-ceph-reference-architecture/replication-vs-erasure-coding reading sources... [ 25%] snap/explanation/canonical-ceph-reference-architecture/server-recommendations reading sources... [ 26%] snap/explanation/cluster-configurations reading sources... [ 27%] snap/explanation/cluster-maintenance reading sources... [ 29%] snap/explanation/cluster-scaling reading sources... [ 30%] snap/explanation/index reading sources... [ 31%] snap/explanation/microceph-architecture reading sources... [ 32%] snap/explanation/microceph-charm reading sources... [ 33%] snap/explanation/replication reading sources... [ 35%] snap/explanation/security/about-fde reading sources... [ 36%] snap/explanation/security/attack-surface reading sources... [ 37%] snap/explanation/security/cryptographic-approaches reading sources... [ 38%] snap/explanation/security/secure-deployment reading sources... [ 39%] snap/explanation/security/secure-operation reading sources... [ 40%] snap/explanation/security/security-overview reading sources... [ 42%] snap/explanation/snap-content-interface reading sources... [ 43%] snap/explanation/taking-snapshots reading sources... [ 44%] snap/how-to/change-log-level reading sources... [ 45%] snap/how-to/configure-cephfs-mirroring reading sources... [ 46%] snap/how-to/configure-network-keys reading sources... [ 48%] snap/how-to/configure-rbd-mirroring reading sources... [ 49%] snap/how-to/enable-alerts reading sources... [ 50%] snap/how-to/enable-fde reading sources... [ 51%] snap/how-to/enable-metrics reading sources... [ 52%] snap/how-to/enable-service-instances reading sources... [ 54%] snap/how-to/import-remote-cluster reading sources... [ 55%] snap/how-to/index reading sources... [ 56%] snap/how-to/integrate-keystone reading sources... [ 57%] snap/how-to/major-upgrade reading sources... [ 58%] snap/how-to/migrate-auto-services reading sources... [ 60%] snap/how-to/mount-block-device reading sources... [ 61%] snap/how-to/mount-cephfs-share reading sources... [ 62%] snap/how-to/multi-node reading sources... [ 63%] snap/how-to/perform-cluster-maintenance reading sources... [ 64%] snap/how-to/perform-site-failover reading sources... [ 65%] snap/how-to/rbd-client-cfg reading sources... [ 67%] snap/how-to/remove-disk reading sources... [ 68%] snap/how-to/report-security-vuln reading sources... [ 69%] snap/how-to/rotate-rgw-tls-certificate reading sources... [ 70%] snap/how-to/single-node reading sources... [ 71%] snap/reference/canonical-ceph-hardware-recommendations/cpu-recommendations reading sources... [ 73%] snap/reference/canonical-ceph-hardware-recommendations/deployment-strategies reading sources... [ 74%] snap/reference/canonical-ceph-hardware-recommendations/disaggregated-architecture reading sources... [ 75%] snap/reference/canonical-ceph-hardware-recommendations/hyperconverged-architecture reading sources... [ 76%] snap/reference/canonical-ceph-hardware-recommendations/index reading sources... [ 77%] snap/reference/canonical-ceph-hardware-recommendations/infrastructure-node-requirements reading sources... [ 79%] snap/reference/canonical-ceph-hardware-recommendations/memory-requirements reading sources... [ 80%] snap/reference/canonical-ceph-hardware-recommendations/software-requirements reading sources... [ 81%] snap/reference/commands/certificate reading sources... [ 82%] snap/reference/commands/client reading sources... [ 83%] snap/reference/commands/cluster reading sources... [ 85%] snap/reference/commands/disable reading sources... [ 86%] snap/reference/commands/disk reading sources... [ 87%] snap/reference/commands/enable reading sources... [ 88%] snap/reference/commands/help reading sources... [ 89%] snap/reference/commands/index reading sources... [ 90%] snap/reference/commands/init reading sources... [ 92%] snap/reference/commands/pool reading sources... [ 93%] snap/reference/commands/remote reading sources... [ 94%] snap/reference/commands/replication reading sources... [ 95%] snap/reference/commands/status reading sources... [ 96%] snap/reference/commands/waitready reading sources... [ 98%] snap/reference/index reading sources... [ 99%] snap/reference/release-notes reading sources... [100%] snap/tutorial/get-started getting Git timestamps for source files... [ 8%] charm/how-to getting Git timestamps for source files... [ 17%] charm/tutorial getting Git timestamps for source files... [ 25%] contributing getting Git timestamps for source files... [ 33%] . getting Git timestamps for source files... [ 42%] snap/explanation/canonical-ceph-reference-architecture getting Git timestamps for source files... [ 50%] snap/explanation getting Git timestamps for source files... [ 58%] snap/explanation/security getting Git timestamps for source files... [ 67%] snap/how-to getting Git timestamps for source files... [ 75%] snap/reference/canonical-ceph-hardware-recommendations getting Git timestamps for source files... [ 83%] snap/reference/commands getting Git timestamps for source files... [ 92%] snap/reference getting Git timestamps for source files... [100%] snap/tutorial getting Git timestamps for dependencies... [ 50%] snap/explanation/assets getting Git timestamps for dependencies... [100%] snap/how-to/assets looking for now-outdated files... none found pickling environment... done checking consistency... done preparing documents... done copying assets... copying downloadable files... [100%] snap/how-to/assets/prometheus_alerts.yaml copying static files... done copying extra files... done copying assets: done writing output... [ 1%] charm/how-to/adding-file-osds writing output... [ 2%] charm/how-to/adding-osds writing output... [ 4%] charm/how-to/enable-rgw writing output... [ 5%] charm/how-to/index writing output... [ 6%] charm/how-to/install-charmed-microceph writing output... [ 7%] charm/how-to/performing-cluster-maintenance writing output... [ 8%] charm/tutorial/get-started writing output... [ 10%] contributing/index writing output... [ 11%] index writing output... [ 12%] snap/explanation/canonical-ceph-reference-architecture/architectural-considerations writing output... [ 13%] snap/explanation/canonical-ceph-reference-architecture/certified-hardware writing output... [ 14%] snap/explanation/canonical-ceph-reference-architecture/data-encryption writing output... [ 15%] snap/explanation/canonical-ceph-reference-architecture/data-persistence-mechanisms writing output... [ 17%] snap/explanation/canonical-ceph-reference-architecture/deployment-options writing output... [ 18%] snap/explanation/canonical-ceph-reference-architecture/disk-recommendations writing output... [ 19%] snap/explanation/canonical-ceph-reference-architecture/index writing output... [ 20%] snap/explanation/canonical-ceph-reference-architecture/minimum-node-count-and-rack-layout writing output... [ 21%] snap/explanation/canonical-ceph-reference-architecture/network-recommendations writing output... [ 23%] snap/explanation/canonical-ceph-reference-architecture/processor-requirements writing output... [ 24%] snap/explanation/canonical-ceph-reference-architecture/replication-vs-erasure-coding writing output... [ 25%] snap/explanation/canonical-ceph-reference-architecture/server-recommendations writing output... [ 26%] snap/explanation/cluster-configurations writing output... [ 27%] snap/explanation/cluster-maintenance writing output... [ 29%] snap/explanation/cluster-scaling writing output... [ 30%] snap/explanation/index writing output... [ 31%] snap/explanation/microceph-architecture writing output... [ 32%] snap/explanation/microceph-charm writing output... [ 33%] snap/explanation/replication writing output... [ 35%] snap/explanation/security/about-fde writing output... [ 36%] snap/explanation/security/attack-surface writing output... [ 37%] snap/explanation/security/cryptographic-approaches writing output... [ 38%] snap/explanation/security/secure-deployment writing output... [ 39%] snap/explanation/security/secure-operation writing output... [ 40%] snap/explanation/security/security-overview writing output... [ 42%] snap/explanation/snap-content-interface writing output... [ 43%] snap/explanation/taking-snapshots writing output... [ 44%] snap/how-to/change-log-level writing output... [ 45%] snap/how-to/configure-cephfs-mirroring writing output... [ 46%] snap/how-to/configure-network-keys writing output... [ 48%] snap/how-to/configure-rbd-mirroring writing output... [ 49%] snap/how-to/enable-alerts writing output... [ 50%] snap/how-to/enable-fde writing output... [ 51%] snap/how-to/enable-metrics writing output... [ 52%] snap/how-to/enable-service-instances writing output... [ 54%] snap/how-to/import-remote-cluster writing output... [ 55%] snap/how-to/index writing output... [ 56%] snap/how-to/integrate-keystone writing output... [ 57%] snap/how-to/major-upgrade writing output... [ 58%] snap/how-to/migrate-auto-services writing output... [ 60%] snap/how-to/mount-block-device writing output... [ 61%] snap/how-to/mount-cephfs-share writing output... [ 62%] snap/how-to/multi-node writing output... [ 63%] snap/how-to/perform-cluster-maintenance writing output... [ 64%] snap/how-to/perform-site-failover writing output... [ 65%] snap/how-to/rbd-client-cfg writing output... [ 67%] snap/how-to/remove-disk writing output... [ 68%] snap/how-to/report-security-vuln writing output... [ 69%] snap/how-to/rotate-rgw-tls-certificate writing output... [ 70%] snap/how-to/single-node writing output... [ 71%] snap/reference/canonical-ceph-hardware-recommendations/cpu-recommendations writing output... [ 73%] snap/reference/canonical-ceph-hardware-recommendations/deployment-strategies writing output... [ 74%] snap/reference/canonical-ceph-hardware-recommendations/disaggregated-architecture writing output... [ 75%] snap/reference/canonical-ceph-hardware-recommendations/hyperconverged-architecture writing output... [ 76%] snap/reference/canonical-ceph-hardware-recommendations/index writing output... [ 77%] snap/reference/canonical-ceph-hardware-recommendations/infrastructure-node-requirements writing output... [ 79%] snap/reference/canonical-ceph-hardware-recommendations/memory-requirements writing output... [ 80%] snap/reference/canonical-ceph-hardware-recommendations/software-requirements writing output... [ 81%] snap/reference/commands/certificate writing output... [ 82%] snap/reference/commands/client writing output... [ 83%] snap/reference/commands/cluster writing output... [ 85%] snap/reference/commands/disable writing output... [ 86%] snap/reference/commands/disk writing output... [ 87%] snap/reference/commands/enable writing output... [ 88%] snap/reference/commands/help writing output... [ 89%] snap/reference/commands/index writing output... [ 90%] snap/reference/commands/init writing output... [ 92%] snap/reference/commands/pool writing output... [ 93%] snap/reference/commands/remote writing output... [ 94%] snap/reference/commands/replication writing output... [ 95%] snap/reference/commands/status writing output... [ 96%] snap/reference/commands/waitready writing output... [ 98%] snap/reference/index writing output... [ 99%] snap/reference/release-notes writing output... [100%] snap/tutorial/get-started generating indices... genindex done writing additional pages... search done copying images... [ 7%] snap/explanation/assets/ceph-internals.png copying images... [ 14%] snap/explanation/assets/hyperconverged-ceph.png copying images... [ 21%] snap/explanation/assets/disaggregated-architecture.png copying images... [ 29%] snap/explanation/assets/charmed-ceph-deployment.png copying images... [ 36%] snap/explanation/assets/charmed-openstack-integrations.png copying images... [ 43%] snap/explanation/assets/ex-microceph-cluster.png copying images... [ 50%] snap/explanation/assets/microceph-microcloud.png copying images... [ 57%] snap/explanation/assets/charm-microceph-cos.png copying images... [ 64%] snap/explanation/assets/cephadm-cluster-using-ceph-rocks.png copying images... [ 71%] snap/explanation/assets/flow.jpg copying images... [ 79%] snap/explanation/assets/microceph-cluster.png copying images... [ 86%] snap/how-to/assets/alerts copying images... [ 93%] snap/how-to/assets/prometheus_microceph_scraping.jpg copying images... [100%] snap/how-to/assets/prometheus_console.jpg dumping search index in English (code: en)... done dumping object inventory... done Generated 84 context files Concatenated full context into: /home/docs/checkouts/readthedocs.org/user_builds/canonical-microceph/checkouts/817/_readthedocs/html/llms-full.txt Created llms.txt sitemap: /home/docs/checkouts/readthedocs.org/user_builds/canonical-microceph/checkouts/817/_readthedocs/html/llms.txt Writing redirects... sphinx-sitemap: sitemap.xml was generated for URL https://canonical-microceph--817.com.readthedocs.build/817/ in /home/docs/checkouts/readthedocs.org/user_builds/canonical-microceph/checkouts/817/_readthedocs/html/sitemap.xml build succeeded. The HTML pages are in ../_readthedocs/html.