From d244faa5b21b382b90da223ad786bb7d9ce07308 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 27 May 2026 09:02:39 +0200 Subject: [PATCH 001/134] chore(deps): update dependency dagger/dagger to v0.21.0 (#926) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Update | Change | |---|---|---| | [dagger/dagger](https://redirect.github.com/dagger/dagger) | minor | `0.20.8` β†’ `0.21.0` | --- ### Release Notes
dagger/dagger (dagger/dagger) ### [`v0.21.0`](https://redirect.github.com/dagger/dagger/blob/HEAD/CHANGELOG.md#v0210---2026-05-22) [Compare Source](https://redirect.github.com/dagger/dagger/compare/v0.20.8...v0.21.0) ##### Added - Automatically expose a `check` for each `generate` function by [@​eunomie](https://redirect.github.com/eunomie) in [#​12923](https://redirect.github.com/dagger/dagger/pull/12923) \ Each generated `check` has the same name as its `generate` function, so `dagger check` can report whether generated files are out of date. Use `dagger check --no-generate` to list or run only functions explicitly marked as checks, without the generated ones. Toolchains can set `ignoreChecks` to skip creating checks for specific `generate` functions. - Add workspace lockfiles for selected lookups such as `container.from` and Git refs by [@​shykes](https://redirect.github.com/shykes) + [@​alexcb](https://redirect.github.com/alexcb) + [@​grouville](https://redirect.github.com/grouville) + [@​tiborvass](https://redirect.github.com/tiborvass) + [@​eunomie](https://redirect.github.com/eunomie) in [#​12046](https://redirect.github.com/dagger/dagger/pull/12046) [#​13094](https://redirect.github.com/dagger/dagger/pull/13094) \ Locking is opt-in with `--lock live`, `--lock pinned`, or `--lock frozen`: live mode resolves and records live values, pinned mode prefers recorded pins while resolving the rest live, and frozen mode only resolves from `.dagger/lock`. Use `dagger lock update` to refresh entries already recorded in `.dagger/lock`; it now creates the file when missing. This also fixes remote Git tree cache keys so cache reuse follows the actual checkout inputs. - Add an interactive tests view to the TUI, plus compact test summaries for pretty, plain, logs, dots, and report progress modes by [@​vito](https://redirect.github.com/vito) in [#​13073](https://redirect.github.com/dagger/dagger/pull/13073) - Add experimental `--x-release=` and `DAGGER_X_RELEASE=` support for running a command against an unreleased Dagger build from a GitHub ref, fixing [#​12996](https://redirect.github.com/dagger/dagger/issues/12996) by [@​tiborvass](https://redirect.github.com/tiborvass) in [#​13156](https://redirect.github.com/dagger/dagger/pull/13156) - Add a configurable Kubernetes `Service` to the Helm chart by [@​pierreyves-lebrun](https://redirect.github.com/pierreyves-lebrun) + [@​grouville](https://redirect.github.com/grouville) in [#​11993](https://redirect.github.com/dagger/dagger/pull/11993) - Add `EngineCacheEntry.dagqlCall` and `EngineCacheEntry.recordTypes` so cache entries expose the producing DagQL call and all represented storage record types for inspection and GC filtering by [@​sipsma](https://redirect.github.com/sipsma) in [#​13207](https://redirect.github.com/dagger/dagger/pull/13207) - Show the Dagger Cloud trace URL when using the logs frontend by [@​marcosnils](https://redirect.github.com/marcosnils) in [#​13105](https://redirect.github.com/dagger/dagger/pull/13105) - Dang SDK: add support for local types that shadow Dagger core types, early `return`, self-calls, order-independent declarations, and stricter nullability/type checking by [@​vito](https://redirect.github.com/vito) in [#​13184](https://redirect.github.com/dagger/dagger/pull/13184) ##### Changed - Migrate caching to DagQL and remove the BuildKit solver backend, making DagQL responsible for cache lookups, persistence, and pruning by [@​sipsma](https://redirect.github.com/sipsma) in [#​11856](https://redirect.github.com/dagger/dagger/pull/11856) - Improve engine performance and memory use by reducing bbolt/containerd metadata overhead, lazily creating containerd operation leases, reusing pooled CNI namespaces for default execs, and batching long `withDirectory` chains instead of materializing them quadratically by [@​sipsma](https://redirect.github.com/sipsma) in [#​13117](https://redirect.github.com/dagger/dagger/pull/13117) [#​13123](https://redirect.github.com/dagger/dagger/pull/13123) [#​13144](https://redirect.github.com/dagger/dagger/pull/13144) [#​13124](https://redirect.github.com/dagger/dagger/pull/13124) - Deduplicate equivalent in-flight DagQL calls across clients in the same session and fall back to same-session secret/socket attachables when the original client binding is gone by [@​sipsma](https://redirect.github.com/sipsma) in [#​13118](https://redirect.github.com/dagger/dagger/pull/13118) ##### Fixed - Fix enum argument defaults so they appear correctly in schema output and CLI help by [@​kpenfound](https://redirect.github.com/kpenfound) in [#​13068](https://redirect.github.com/dagger/dagger/pull/13068) - Fix module loading and type generation failures caused by stale handle-form module IDs and nested client session races, replacing `session ... not found` failures with the intended behavior or original error by [@​sipsma](https://redirect.github.com/sipsma) in [#​13108](https://redirect.github.com/dagger/dagger/pull/13108) [#​13119](https://redirect.github.com/dagger/dagger/pull/13119) - Fix bound service failures so dependent execs and container-backed services see the service exit as the cause while interactive terminals stay open by [@​vito](https://redirect.github.com/vito) in [#​13099](https://redirect.github.com/dagger/dagger/pull/13099) - Fix remote Git checkout behavior so cached trees can be reused after cache pruning by [@​sipsma](https://redirect.github.com/sipsma) in [#​13141](https://redirect.github.com/dagger/dagger/pull/13141) - Fix Changeset merge cleanup flakiness by disabling Git auto-maintenance in Dagger's temporary merge repositories by [@​sipsma](https://redirect.github.com/sipsma) in [#​13121](https://redirect.github.com/dagger/dagger/pull/13121) - Fix `WithSecretVariable` so later calls override earlier values, fixing [#​13147](https://redirect.github.com/dagger/dagger/issues/13147) by [@​matipan](https://redirect.github.com/matipan) in [#​13159](https://redirect.github.com/dagger/dagger/pull/13159) - Fix user-default secret and env handling so empty plaintext secrets resolve correctly, `.env` values are not double-expanded through namespaces, and plaintext `Secret` defaults are scrubbed in console output; fixes [#​12855](https://redirect.github.com/dagger/dagger/issues/12855) and closes [#​12014](https://redirect.github.com/dagger/dagger/pull/12014) by [@​sipsma](https://redirect.github.com/sipsma) + [@​marcosnils](https://redirect.github.com/marcosnils) + [@​tiborvass](https://redirect.github.com/tiborvass) in [#​13163](https://redirect.github.com/dagger/dagger/pull/13163) [#​13160](https://redirect.github.com/dagger/dagger/pull/13160) [#​13177](https://redirect.github.com/dagger/dagger/pull/13177) - Fix telemetry and replay output so `dagger check` log telemetry is not dropped, Python module logs are not duplicated, and `dagger trace` honors frontend flags by [@​vito](https://redirect.github.com/vito) + [@​sipsma](https://redirect.github.com/sipsma) in [#​13114](https://redirect.github.com/dagger/dagger/pull/13114) [#​13153](https://redirect.github.com/dagger/dagger/pull/13153) - Fix `dagger generate --scale-out` returning unusable remote `Changeset` objects by always running generation locally; `dagger check --scale-out` remains supported by [@​eunomie](https://redirect.github.com/eunomie) in [#​13190](https://redirect.github.com/dagger/dagger/pull/13190) - Fix toolchain customizations so they propagate when toolchain functions are called through another module function by [@​suprjinx](https://redirect.github.com/suprjinx) in [#​13176](https://redirect.github.com/dagger/dagger/pull/13176) - Dang SDK: fix panics, initialization-race typechecking failures, and ID argument handling by [@​tiborvass](https://redirect.github.com/tiborvass) + [@​vito](https://redirect.github.com/vito) in [#​13098](https://redirect.github.com/dagger/dagger/pull/13098) [#​13103](https://redirect.github.com/dagger/dagger/pull/13103) [#​13150](https://redirect.github.com/dagger/dagger/pull/13150) - Java SDK: fix version updates so `mvn versions:set` no longer performs unnecessary dependency/plugin resolution, preventing Maven Central 429 failures; fixes [#​13174](https://redirect.github.com/dagger/dagger/issues/13174) by [@​dagger-codex](https://redirect.github.com/dagger-codex)\[bot] + [@​tiborvass](https://redirect.github.com/tiborvass) in [#​13198](https://redirect.github.com/dagger/dagger/pull/13198) - Python SDK: fix static module analysis regressions from the AST analyzer cutover, including inherited functions, aliased decorators and fields, `@staticmethod`, type aliases, constants/defaults, `Annotated`, `Optional`, `Union`, and relative imports; fixes [#​13097](https://redirect.github.com/dagger/dagger/issues/13097) and [#​13089](https://redirect.github.com/dagger/dagger/issues/13089) by [@​eunomie](https://redirect.github.com/eunomie) in [#​13095](https://redirect.github.com/dagger/dagger/pull/13095) - Python SDK: fix more AST analyzer cases for `TypeAlias` inside `X | None`, quoted and aliased annotations, and absolute self-package imports by [@​marcosnils](https://redirect.github.com/marcosnils) + [@​grouville](https://redirect.github.com/grouville) + [@​eunomie](https://redirect.github.com/eunomie) in [#​13149](https://redirect.github.com/dagger/dagger/pull/13149) [#​13162](https://redirect.github.com/dagger/dagger/pull/13162) [#​13171](https://redirect.github.com/dagger/dagger/pull/13171) - Python SDK: exclude the broken `yarl` 1.24.1 release from the dependency range by [@​tiborvass](https://redirect.github.com/tiborvass) in [#​13189](https://redirect.github.com/dagger/dagger/pull/13189) - Rust SDK: fix list-of-object fields so generated clients load each object by ID instead of returning an incorrect single wrapped selection by [@​wingyplus](https://redirect.github.com/wingyplus) in [#​13000](https://redirect.github.com/dagger/dagger/pull/13000) ##### What to do next? - Read the [documentation](https://docs.dagger.io) - Join our [Discord server](https://discord.gg/dagger-io) - Follow us on [Twitter](https://twitter.com/dagger_io)
--- ### Configuration πŸ“… **Schedule**: (UTC) - Branch creation - At any time (no schedule defined) - Automerge - At any time (no schedule defined) 🚦 **Automerge**: Enabled. β™» **Rebasing**: Never, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/cloudnative-pg/plugin-barman-cloud). Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/ci.yml | 2 +- .github/workflows/release-please.yml | 2 +- .github/workflows/release-publish.yml | 2 +- Taskfile.yml | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 2a89aad..e44f3fc 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -44,7 +44,7 @@ jobs: - name: Install Dagger env: # renovate: datasource=github-tags depName=dagger/dagger versioning=semver - DAGGER_VERSION: 0.20.8 + DAGGER_VERSION: 0.21.0 run: | curl -L https://dl.dagger.io/dagger/install.sh | BIN_DIR=$HOME/.local/bin sh - name: Run CI task diff --git a/.github/workflows/release-please.yml b/.github/workflows/release-please.yml index 27d4e92..92a43ed 100644 --- a/.github/workflows/release-please.yml +++ b/.github/workflows/release-please.yml @@ -31,7 +31,7 @@ jobs: - name: Install Dagger env: # renovate: datasource=github-tags depName=dagger/dagger versioning=semver - DAGGER_VERSION: 0.20.8 + DAGGER_VERSION: 0.21.0 run: | curl -L https://dl.dagger.io/dagger/install.sh | BIN_DIR=$HOME/.local/bin sh - name: Create image and manifest diff --git a/.github/workflows/release-publish.yml b/.github/workflows/release-publish.yml index 481f35e..9470cc0 100644 --- a/.github/workflows/release-publish.yml +++ b/.github/workflows/release-publish.yml @@ -21,7 +21,7 @@ jobs: - name: Install Dagger env: # renovate: datasource=github-tags depName=dagger/dagger versioning=semver - DAGGER_VERSION: 0.20.8 + DAGGER_VERSION: 0.21.0 run: | curl -L https://dl.dagger.io/dagger/install.sh | BIN_DIR=$HOME/.local/bin sh - name: Create image and manifest diff --git a/Taskfile.yml b/Taskfile.yml index 56da017..a3bae2e 100644 --- a/Taskfile.yml +++ b/Taskfile.yml @@ -206,7 +206,7 @@ tasks: - start-build-network vars: # renovate: datasource=github-tags depName=dagger/dagger versioning=semver - DAGGER_VERSION: 0.20.8 + DAGGER_VERSION: 0.21.0 DAGGER_ENGINE_IMAGE: registry.dagger.io/engine:v{{ .DAGGER_VERSION }} cmds: - > From baf7985d6680a061812ab769add351b827060b4a Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 27 May 2026 17:31:15 +0200 Subject: [PATCH 002/134] chore(deps): update all cloudnative-pg daggerverse dependencies to 21755df (#928) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Update | Change | |---|---|---| | commitlint | digest | `537e0dd` β†’ `21755df` | | controller-gen | digest | `537e0dd` β†’ `21755df` | | crd-gen-refs | digest | `537e0dd` β†’ `21755df` | | spellcheck | digest | `537e0dd` β†’ `21755df` | | uncommitted | digest | `537e0dd` β†’ `21755df` | --- > [!WARNING] > Some dependencies could not be looked up. Check the [Dependency Dashboard](../issues/7) for more information. --- ### Configuration πŸ“… **Schedule**: (UTC) - Branch creation - At any time (no schedule defined) - Automerge - At any time (no schedule defined) 🚦 **Automerge**: Enabled. β™» **Rebasing**: Never, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about these updates again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/cloudnative-pg/plugin-barman-cloud). Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Taskfile.yml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/Taskfile.yml b/Taskfile.yml index a3bae2e..7209506 100644 --- a/Taskfile.yml +++ b/Taskfile.yml @@ -46,7 +46,7 @@ tasks: - wordlist-ordered env: # renovate: datasource=git-refs depName=spellcheck lookupName=https://github.com/cloudnative-pg/daggerverse currentValue=main - DAGGER_SPELLCHECK_SHA: 537e0ddae55ad0344af8f4454de7f27baeee48fa + DAGGER_SPELLCHECK_SHA: 21755df1a27febff19b28dbe6ae57116f6088bb0 cmds: - > GITHUB_REF= dagger -s call -m github.com/cloudnative-pg/daggerverse/spellcheck@${DAGGER_SPELLCHECK_SHA} @@ -60,7 +60,7 @@ tasks: desc: Check for conventional commits env: # renovate: datasource=git-refs depName=commitlint lookupName=https://github.com/cloudnative-pg/daggerverse currentValue=main - DAGGER_COMMITLINT_SHA: 537e0ddae55ad0344af8f4454de7f27baeee48fa + DAGGER_COMMITLINT_SHA: 21755df1a27febff19b28dbe6ae57116f6088bb0 cmds: - > GITHUB_REF= dagger -s call -m github.com/cloudnative-pg/daggerverse/commitlint@${DAGGER_COMMITLINT_SHA} @@ -74,7 +74,7 @@ tasks: - wordlist-ordered env: # renovate: datasource=git-refs depName=uncommitted lookupName=https://github.com/cloudnative-pg/daggerverse currentValue=main - DAGGER_UNCOMMITTED_SHA: 537e0ddae55ad0344af8f4454de7f27baeee48fa + DAGGER_UNCOMMITTED_SHA: 21755df1a27febff19b28dbe6ae57116f6088bb0 cmds: - GITHUB_REF= dagger -s call -m github.com/cloudnative-pg/daggerverse/uncommitted@${DAGGER_UNCOMMITTED_SHA} check-uncommitted --source . stdout sources: @@ -86,7 +86,7 @@ tasks: - controller-gen env: # renovate: datasource=git-refs depName=crd-gen-refs lookupName=https://github.com/cloudnative-pg/daggerverse currentValue=main - DAGGER_CRDGENREF_SHA: 537e0ddae55ad0344af8f4454de7f27baeee48fa + DAGGER_CRDGENREF_SHA: 21755df1a27febff19b28dbe6ae57116f6088bb0 # renovate: datasource=go depName=github.com/elastic/crd-ref-docs CRDREFDOCS_VERSION: v0.3.0 cmds: @@ -381,7 +381,7 @@ tasks: run: once env: # renovate: datasource=git-refs depName=controller-gen lookupName=https://github.com/cloudnative-pg/daggerverse currentValue=main - DAGGER_CONTROLLER_GEN_SHA: 537e0ddae55ad0344af8f4454de7f27baeee48fa + DAGGER_CONTROLLER_GEN_SHA: 21755df1a27febff19b28dbe6ae57116f6088bb0 cmds: - > GITHUB_REF= dagger -s call -m github.com/cloudnative-pg/daggerverse/controller-gen@${DAGGER_CONTROLLER_GEN_SHA} From ef4b7111372877eed087b9178d157dd0d1084bf8 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 27 May 2026 21:57:18 +0200 Subject: [PATCH 003/134] fix(deps): update module github.com/cloudnative-pg/machinery to v0.5.0 (#925) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) | |---|---|---|---| | [github.com/cloudnative-pg/machinery](https://redirect.github.com/cloudnative-pg/machinery) | `v0.4.0` β†’ `v0.5.0` | ![age](https://developer.mend.io/api/mc/badges/age/go/github.com%2fcloudnative-pg%2fmachinery/v0.5.0?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/go/github.com%2fcloudnative-pg%2fmachinery/v0.4.0/v0.5.0?slim=true) | Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- go.mod | 4 ++-- go.sum | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/go.mod b/go.mod index a4bd7f2..7813e62 100644 --- a/go.mod +++ b/go.mod @@ -9,7 +9,7 @@ require ( github.com/cloudnative-pg/cloudnative-pg v1.29.1 github.com/cloudnative-pg/cnpg-i v0.5.0 github.com/cloudnative-pg/cnpg-i-machinery v0.4.2 - github.com/cloudnative-pg/machinery v0.4.0 + github.com/cloudnative-pg/machinery v0.5.0 github.com/onsi/ginkgo/v2 v2.29.0 github.com/onsi/gomega v1.41.0 github.com/spf13/cobra v1.10.2 @@ -114,7 +114,7 @@ require ( golang.org/x/net v0.53.0 // indirect golang.org/x/oauth2 v0.36.0 // indirect golang.org/x/sync v0.20.0 // indirect - golang.org/x/sys v0.43.0 // indirect + golang.org/x/sys v0.45.0 // indirect golang.org/x/term v0.42.0 // indirect golang.org/x/text v0.36.0 // indirect golang.org/x/time v0.15.0 // indirect diff --git a/go.sum b/go.sum index a1d35fe..2ccdba4 100644 --- a/go.sum +++ b/go.sum @@ -28,8 +28,8 @@ github.com/cloudnative-pg/cnpg-i v0.5.0 h1:/TOzpNT6cwNgrpftTtrnLKdoHgMwd+88vZgXj github.com/cloudnative-pg/cnpg-i v0.5.0/go.mod h1:7Gh4+UzhBpGhr4DreB1GN9wGYfvxwXCXZUyVt3zE/3I= github.com/cloudnative-pg/cnpg-i-machinery v0.4.2 h1:0reS9MtyLYINHXQ/MfxJ9jp39hhBf8e3Qdj+T5Nsq6I= github.com/cloudnative-pg/cnpg-i-machinery v0.4.2/go.mod h1:gvrKabgxXq0zGthXGucemDdsxakLEQDMxn43M4HLW30= -github.com/cloudnative-pg/machinery v0.4.0 h1:3sfqrBptH4QQSVB4g10Z+7aiQRnh4g+6AsqsK0ibKaQ= -github.com/cloudnative-pg/machinery v0.4.0/go.mod h1:OIwaTYAnLv8PmBmBvEf0BvMK2JBX6J+naTMg9UgV1FQ= +github.com/cloudnative-pg/machinery v0.5.0 h1:hhTnkzn+AiN3NmbjCQ6RXj5rfqV3K6arzq6kdXAzcnQ= +github.com/cloudnative-pg/machinery v0.5.0/go.mod h1:uuFjqBUjWn0a9uvAk1ixTSzPM0PrjaS+QiKLOIBqLm4= github.com/cpuguy83/go-md2man/v2 v2.0.6/go.mod h1:oOW0eioCTA6cOiMLiUPZOpcVxMig6NIQQ7OS05n1F4g= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= @@ -275,8 +275,8 @@ golang.org/x/oauth2 v0.36.0 h1:peZ/1z27fi9hUOFCAZaHyrpWG5lwe0RJEEEeH0ThlIs= golang.org/x/oauth2 v0.36.0/go.mod h1:YDBUJMTkDnJS+A4BP4eZBjCqtokkg1hODuPjwiGPO7Q= golang.org/x/sync v0.20.0 h1:e0PTpb7pjO8GAtTs2dQ6jYa5BWYlMuX047Dco/pItO4= golang.org/x/sync v0.20.0/go.mod h1:9xrNwdLfx4jkKbNva9FpL6vEN7evnE43NNNJQ2LF3+0= -golang.org/x/sys v0.43.0 h1:Rlag2XtaFTxp19wS8MXlJwTvoh8ArU6ezoyFsMyCTNI= -golang.org/x/sys v0.43.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= +golang.org/x/sys v0.45.0 h1:dO4czNzziLiiXplLQgBCEpCvXQ3dnkn0SdaZSYdQ+FY= +golang.org/x/sys v0.45.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= golang.org/x/term v0.42.0 h1:UiKe+zDFmJobeJ5ggPwOshJIVt6/Ft0rcfrXZDLWAWY= golang.org/x/term v0.42.0/go.mod h1:Dq/D+snpsbazcBG5+F9Q1n2rXV8Ma+71xEjTRufARgY= golang.org/x/text v0.36.0 h1:JfKh3XmcRPqZPKevfXVpI1wXPTqbkE5f7JA92a55Yxg= From 0bb78879ce8202addf1f0d3bbfbf4485f81a1290 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 28 May 2026 12:15:32 +0200 Subject: [PATCH 004/134] chore(deps): update dependency barman to v3.19.1 (#921) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) | |---|---|---|---| | [barman](https://www.pgbarman.org/) | `==3.18.0` β†’ `==3.19.1` | ![age](https://developer.mend.io/api/mc/badges/age/pypi/barman/3.19.1?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/pypi/barman/3.18.0/3.19.1?slim=true) | Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- containers/sidecar-requirements.in | 2 +- containers/sidecar-requirements.txt | 10 ++++------ 2 files changed, 5 insertions(+), 7 deletions(-) diff --git a/containers/sidecar-requirements.in b/containers/sidecar-requirements.in index 8d6ba1f..667c547 100644 --- a/containers/sidecar-requirements.in +++ b/containers/sidecar-requirements.in @@ -1,3 +1,3 @@ -barman[azure,cloud,google,snappy,zstandard,lz4]==3.18.0 +barman[azure,cloud,google,snappy,zstandard,lz4]==3.19.1 setuptools==82.0.1 zipp>=3.19.1 # not directly required, pinned by Snyk to avoid a vulnerability diff --git a/containers/sidecar-requirements.txt b/containers/sidecar-requirements.txt index 6071876..379ab90 100644 --- a/containers/sidecar-requirements.txt +++ b/containers/sidecar-requirements.txt @@ -18,9 +18,9 @@ azure-storage-blob==12.29.0 \ --hash=sha256:2824ddd7ebc9056034ebc76b17971a38e9aa5835abb0d565b9700493f2a6c657 \ --hash=sha256:ccf8a1bcd5e49df83ab85aab793b579e5ba2eeea2ad8900b2f62ca3a37dc391f # via barman -barman==3.18.0 \ - --hash=sha256:8e752ac93d2f3a61e86b8374185209cae477a638ece7e6f540070f36d28d6997 \ - --hash=sha256:ff90c44dafa4107b7574142771cdc2611c4cf1af818d93d3e67440a0c81164b9 +barman==3.19.1 \ + --hash=sha256:0a6a9e1babf97687732d8b2a3eb79ea95d55246a5257b9433865cb6e755221c0 \ + --hash=sha256:2f71c4a1f1ba53f694cbdf838bb9906d8ba02b97d1fd3041196e8999bec7a1ee # via -r sidecar-requirements.in boto3==1.43.14 \ --hash=sha256:574335744656cfed0b362a0a0467aaf2eb2bf15526edcd02d31d3c661f4b09e4 \ @@ -788,6 +788,4 @@ zstandard==0.25.0 \ setuptools==82.0.1 \ --hash=sha256:7d872682c5d01cfde07da7bccc7b65469d3dca203318515ada1de5eda35efbf9 \ --hash=sha256:a59e362652f08dcd477c78bb6e7bd9d80a7995bc73ce773050228a348ce2e5bb - # via - # -r sidecar-requirements.in - # barman + # via -r sidecar-requirements.in From 492baaffadf450526225e1f07f94f842918d3c79 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 3 Jun 2026 11:54:34 +1000 Subject: [PATCH 005/134] chore(deps): refresh pip-compile outputs (#932) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Update | Change | |---|---| | lockFileMaintenance | All locks refreshed | --- > [!WARNING] > Some dependencies could not be looked up. Check the [Dependency Dashboard](../issues/7) for more information. πŸ”§ This Pull Request updates lock files to use the latest dependency versions. --- ### Configuration πŸ“… **Schedule**: (UTC) - Branch creation - "before 4am on monday" - Automerge - At any time (no schedule defined) 🚦 **Automerge**: Enabled. β™» **Rebasing**: Never, or you tick the rebase/retry checkbox. πŸ‘» **Immortal**: This PR will be recreated if closed unmerged. Get [config help](https://redirect.github.com/renovatebot/renovate/discussions) if that's undesired. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/cloudnative-pg/plugin-barman-cloud). Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- containers/sidecar-requirements.txt | 30 ++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/containers/sidecar-requirements.txt b/containers/sidecar-requirements.txt index 379ab90..93819b9 100644 --- a/containers/sidecar-requirements.txt +++ b/containers/sidecar-requirements.txt @@ -22,13 +22,13 @@ barman==3.19.1 \ --hash=sha256:0a6a9e1babf97687732d8b2a3eb79ea95d55246a5257b9433865cb6e755221c0 \ --hash=sha256:2f71c4a1f1ba53f694cbdf838bb9906d8ba02b97d1fd3041196e8999bec7a1ee # via -r sidecar-requirements.in -boto3==1.43.14 \ - --hash=sha256:574335744656cfed0b362a0a0467aaf2eb2bf15526edcd02d31d3c661f4b09e4 \ - --hash=sha256:5c0a994b3182061ee101812e721100717a4d664f9f4ceaf4a86b6d032ce9fc2d +boto3==1.43.18 \ + --hash=sha256:33138883e984eb1937d1553da699182c8ad2099138091e885b65c9accbccea16 \ + --hash=sha256:7b62ce5c0a51428d692aa4f2adc9dc2a4a4c2989bf65a0a12834eeffa99b0b84 # via barman -botocore==1.43.14 \ - --hash=sha256:1f4a2a95ea78c10398e78431e98c1fe47adb54a7b10a32975144c1f541186658 \ - --hash=sha256:b9e500737e43d2f147c9d4e23b54360335e77d4c0ba90a318f51b65e06cb8516 +botocore==1.43.18 \ + --hash=sha256:dc8c105351b49688c667065cd5a45fc5b9db982657cefc9e3fbfb9417a55c7df \ + --hash=sha256:e2610fce16df9f89deab5f3c163430a814e6804034eb95bef8957c8db60b7dbc # via # boto3 # s3transfer @@ -512,9 +512,9 @@ googleapis-common-protos==1.75.0 \ --hash=sha256:53a062ff3c32552fbd62c11fe23768b78e4ddf0494d5e5fd97d3f4689c75fbbd \ --hash=sha256:961ed60399c457ceb0ee8f285a84c870aabc9c6a832b9d37bb281b5bebde43ed # via google-api-core -idna==3.16 \ - --hash=sha256:cc246e3a3f89580c3a951b5ad298ca4638078b2cdd4f115654332b5c26daded5 \ - --hash=sha256:d7a6da03db833450fca25d2358ac9ff06cd624577a4aea3a596d5c0f77b8e03d +idna==3.17 \ + --hash=sha256:466e48829084efe2548012b855df21540b96f2e20e51bd124c851536556a592c \ + --hash=sha256:5eb0cb53bc467c12eadcf6de83163ad8527cec9416f44b9b61b19caedad2b87f # via requests isodate==0.7.2 \ --hash=sha256:28009937d8031054830160fce6d409ed342816b543597cece116d966c6d99e15 \ @@ -585,9 +585,9 @@ lz4==4.4.5 \ --hash=sha256:f9b8bde9909a010c75b3aea58ec3910393b758f3c219beed67063693df854db0 \ --hash=sha256:ff1b50aeeec64df5603f17984e4b5be6166058dcf8f1e26a3da40d7a0f6ab547 # via barman -msal==1.36.0 \ - --hash=sha256:36ecac30e2ff4322d956029aabce3c82301c29f0acb1ad89b94edcabb0e58ec4 \ - --hash=sha256:3f6a4af2b036b476a4215111c4297b4e6e236ed186cd804faefba23e4990978b +msal==1.37.0 \ + --hash=sha256:1b1672a33ee467c1d70b341bb16cafd51bb3c817147a95b93263794b03971bec \ + --hash=sha256:dd17e95a7c71bce75e8108113438ba7c4a086b3bcad4f57a8c09b7af3d753c2d # via # azure-identity # msal-extensions @@ -657,9 +657,9 @@ requests==2.34.2 \ # google-api-core # google-cloud-storage # msal -s3transfer==0.17.0 \ - --hash=sha256:9edeb6d1c3c2f89d6050348548834ad8289610d886e5bf7b7207728bd43ce33a \ - --hash=sha256:ce3801712acf4ad3e89fb9990df97b4972e93f4b3b0004d214be5bce12814c20 +s3transfer==0.18.0 \ + --hash=sha256:239c13b09e65ad0346e1be7348b8a202dcad44ac7ea7c6eb858fc881dce739b6 \ + --hash=sha256:3760b8b7ec1315da54048b2d626276732bee4300d054d492d4e1d43e20d4ecbd # via boto3 six==1.17.0 \ --hash=sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274 \ From 2553979217af7e17f6e1caeea839e2d062b244ea Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 3 Jun 2026 08:54:55 +0200 Subject: [PATCH 006/134] chore(deps): update dependency kind to v0.32.0 (#935) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Update | Change | |---|---|---| | [kind](https://redirect.github.com/kubernetes-sigs/kind) | minor | `v0.31.0` β†’ `v0.32.0` | --- ### Release Notes
kubernetes-sigs/kind (kind) ### [`v0.32.0`](https://redirect.github.com/kubernetes-sigs/kind/compare/v0.31.0...v0.32.0) [Compare Source](https://redirect.github.com/kubernetes-sigs/kind/compare/v0.31.0...v0.32.0)
--- ### Configuration πŸ“… **Schedule**: (UTC) - Branch creation - At any time (no schedule defined) - Automerge - At any time (no schedule defined) 🚦 **Automerge**: Enabled. β™» **Rebasing**: Never, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/cloudnative-pg/plugin-barman-cloud). Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Taskfile.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Taskfile.yml b/Taskfile.yml index 7209506..92f6d18 100644 --- a/Taskfile.yml +++ b/Taskfile.yml @@ -263,7 +263,7 @@ tasks: run: once vars: # renovate: datasource=git-refs depName=kind lookupName=https://github.com/kubernetes-sigs/kind versioning=semver - KIND_VERSION: v0.31.0 + KIND_VERSION: v0.32.0 cmds: - go install sigs.k8s.io/kind@{{.KIND_VERSION}} - kind version | grep -q {{.KIND_VERSION}} From 3c6e564a1706f73e7d5d29867f54082ab93a0ce1 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 3 Jun 2026 09:53:15 +0200 Subject: [PATCH 007/134] chore(deps): update kindest/node docker tag to v1.36.1 (#937) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Update | Change | |---|---|---| | kindest/node | minor | `v1.35.1` β†’ `v1.36.1` | --- > [!WARNING] > Some dependencies could not be looked up. Check the [Dependency Dashboard](../issues/7) for more information. --- ### Configuration πŸ“… **Schedule**: (UTC) - Branch creation - At any time (no schedule defined) - Automerge - At any time (no schedule defined) 🚦 **Automerge**: Enabled. β™» **Rebasing**: Never, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/cloudnative-pg/plugin-barman-cloud). Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Taskfile.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Taskfile.yml b/Taskfile.yml index 92f6d18..43c6547 100644 --- a/Taskfile.yml +++ b/Taskfile.yml @@ -9,7 +9,7 @@ vars: GO_VERSION: sh: sed -n 's/^toolchain go//p' go.mod | grep . || sed -n 's/^go //p' go.mod # renovate: datasource=docker depName=kindest/node versioning=semver - E2E_KUBERNETES_VERSION: v1.35.1 + E2E_KUBERNETES_VERSION: v1.36.1 E2E_CLUSTER_NAME: barman-cloud-plugin-e2e-{{.E2E_KUBERNETES_VERSION}} REGISTRY_NETWORK: barman-cloud-plugin REGISTRY_NAME: registry.barman-cloud-plugin From 8e2a917153b9f02440019dd5253859c941ca5fbb Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 3 Jun 2026 10:53:18 +0200 Subject: [PATCH 008/134] chore(deps): update all sagikazarmark daggerverse dependencies to ff27cd5 (#933) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Update | Change | |---|---|---| | gh | digest | `81b6881` β†’ `ff27cd5` | | golangci-lint | digest | `81b6881` β†’ `ff27cd5` | | kustomize | digest | `81b6881` β†’ `ff27cd5` | --- > [!WARNING] > Some dependencies could not be looked up. Check the [Dependency Dashboard](../issues/7) for more information. --- ### Configuration πŸ“… **Schedule**: (UTC) - Branch creation - At any time (no schedule defined) - Automerge - At any time (no schedule defined) 🚦 **Automerge**: Enabled. β™» **Rebasing**: Never, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about these updates again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/cloudnative-pg/plugin-barman-cloud). Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Leonardo Cecchi --- Taskfile.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Taskfile.yml b/Taskfile.yml index 43c6547..69052ea 100644 --- a/Taskfile.yml +++ b/Taskfile.yml @@ -21,7 +21,7 @@ tasks: desc: Run golangci-lint env: # renovate: datasource=git-refs depName=golangci-lint lookupName=https://github.com/sagikazarmark/daggerverse currentValue=main - DAGGER_GOLANGCI_LINT_SHA: 81b688189377135bd0cf85f3ddba88c4fbb52c2d + DAGGER_GOLANGCI_LINT_SHA: ff27cd50f6b4eed2e3753c520632cd6099e1ce52 # renovate: datasource=docker depName=golangci/golangci-lint versioning=semver GOLANGCI_LINT_VERSION: v2.12.2 cmds: @@ -453,7 +453,7 @@ tasks: IMAGE_VERSION: '{{regexReplaceAll "(\\d+)/merge" .GITHUB_REF_NAME "pr-${1}"}}' env: # renovate: datasource=git-refs depName=kustomize lookupName=https://github.com/sagikazarmark/daggerverse currentValue=main - DAGGER_KUSTOMIZE_SHA: 81b688189377135bd0cf85f3ddba88c4fbb52c2d + DAGGER_KUSTOMIZE_SHA: ff27cd50f6b4eed2e3753c520632cd6099e1ce52 cmds: - > dagger -s call -m https://github.com/sagikazarmark/daggerverse/kustomize@${DAGGER_KUSTOMIZE_SHA} @@ -483,7 +483,7 @@ tasks: - GITHUB_TOKEN env: # renovate: datasource=git-refs depName=gh lookupName=https://github.com/sagikazarmark/daggerverse - DAGGER_GH_SHA: 81b688189377135bd0cf85f3ddba88c4fbb52c2d + DAGGER_GH_SHA: ff27cd50f6b4eed2e3753c520632cd6099e1ce52 preconditions: - sh: "[[ {{.GITHUB_REF}} =~ 'refs/tags/v.*' ]]" msg: not a tag, failing From aaf6120eaaf96d805d26fe4550b1f9c14dd8e02f Mon Sep 17 00:00:00 2001 From: Leonardo Cecchi Date: Wed, 3 Jun 2026 11:25:07 +0200 Subject: [PATCH 009/134] fix: classify WAL restore errors with precise gRPC statuses (#927) Map each restorer sentinel to the gRPC status that best reflects whether the operator should retry: - ErrWALNotFound -> NotFound (terminal) - ErrInvalidWalName -> InvalidArgument (terminal) - ErrConnectivity -> Unavailable (retry) - ErrGeneric -> Unavailable (retry) - anything else -> Internal (terminal) Previously every non-NotFound failure was returned verbatim, leaving the operator unable to tell transient blips apart from terminal conditions like a malformed WAL name. Signed-off-by: Leonardo Cecchi Signed-off-by: Armando Ruocco Signed-off-by: Tao Li Co-authored-by: Armando Ruocco Co-authored-by: Tao Li --- .../barmancloud.cnpg.io_objectstores.yaml | 19 ++++ go.mod | 2 +- go.sum | 4 +- internal/cnpgi/common/errors.go | 74 +++++++++++++++- internal/cnpgi/common/errors_test.go | 86 +++++++++++++++++++ internal/cnpgi/common/suite_test.go | 32 +++++++ internal/cnpgi/common/wal.go | 6 +- manifest.yaml | 19 ++++ 8 files changed, 230 insertions(+), 12 deletions(-) create mode 100644 internal/cnpgi/common/errors_test.go create mode 100644 internal/cnpgi/common/suite_test.go diff --git a/config/crd/bases/barmancloud.cnpg.io_objectstores.yaml b/config/crd/bases/barmancloud.cnpg.io_objectstores.yaml index f8688ce..c5cf971 100644 --- a/config/crd/bases/barmancloud.cnpg.io_objectstores.yaml +++ b/config/crd/bases/barmancloud.cnpg.io_objectstores.yaml @@ -176,6 +176,25 @@ spec: format: int32 minimum: 1 type: integer + restoreAdditionalCommandArgs: + description: |- + Additional arguments that can be appended to the 'barman-cloud-restore' + command-line invocation. These arguments provide flexibility to customize + the data restore process further, according to specific requirements or + configurations. + + Example: + In a scenario where specialized restore options are required, such as setting + a specific read timeout or defining custom behavior, users can use this field + to specify additional command arguments. + + Note: + It's essential to ensure that the provided arguments are valid and supported + by the 'barman-cloud-restore' command, to avoid potential errors or unintended + behavior during execution. + items: + type: string + type: array type: object destinationPath: description: |- diff --git a/go.mod b/go.mod index 7813e62..73f6851 100644 --- a/go.mod +++ b/go.mod @@ -5,7 +5,7 @@ go 1.26.3 require ( github.com/cert-manager/cert-manager v1.20.2 github.com/cloudnative-pg/api v1.29.1 - github.com/cloudnative-pg/barman-cloud v0.5.1 + github.com/cloudnative-pg/barman-cloud v0.5.2-0.20260529020047-bb683bf8d82a github.com/cloudnative-pg/cloudnative-pg v1.29.1 github.com/cloudnative-pg/cnpg-i v0.5.0 github.com/cloudnative-pg/cnpg-i-machinery v0.4.2 diff --git a/go.sum b/go.sum index 2ccdba4..26e26fb 100644 --- a/go.sum +++ b/go.sum @@ -20,8 +20,8 @@ github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UF github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/cloudnative-pg/api v1.29.1 h1:FWr8S7EQeOfdhYXyr2cof8wUXLARZiiQt5Qa6ltED7w= github.com/cloudnative-pg/api v1.29.1/go.mod h1:QtWF3yzSvIfORMHaSkPAk/o3bhCJwEHJgN3riyRiz3o= -github.com/cloudnative-pg/barman-cloud v0.5.1 h1:vjkXrrxo2DQXHT9u9usqhtaHiPZ/lTfDVs/pIWYTepQ= -github.com/cloudnative-pg/barman-cloud v0.5.1/go.mod h1:XPc5IUFP1y4cZX1sg+Pd8j9V4tmUEVnv3BGCpfQOOg8= +github.com/cloudnative-pg/barman-cloud v0.5.2-0.20260529020047-bb683bf8d82a h1:u2Ykj9oCJlJw/xxiCXjG+svTmpaHMcaW6kGNdHdertk= +github.com/cloudnative-pg/barman-cloud v0.5.2-0.20260529020047-bb683bf8d82a/go.mod h1:DACs5rdlMIQ7mUOpJVBRTrbf+d7OGyMOLsFUEMJ2JV8= github.com/cloudnative-pg/cloudnative-pg v1.29.1 h1:ZNEt1TMlnQKXI1kho2UqQuqdfvIvjGln4kN7C1lsmGA= github.com/cloudnative-pg/cloudnative-pg v1.29.1/go.mod h1:Sbgx9jVmkle4/gR2U5JHrzDd74sRPOBHDtPkvncg5v8= github.com/cloudnative-pg/cnpg-i v0.5.0 h1:/TOzpNT6cwNgrpftTtrnLKdoHgMwd+88vZgXjlVgXeE= diff --git a/internal/cnpgi/common/errors.go b/internal/cnpgi/common/errors.go index 2adff8d..b006f95 100644 --- a/internal/cnpgi/common/errors.go +++ b/internal/cnpgi/common/errors.go @@ -20,10 +20,38 @@ SPDX-License-Identifier: Apache-2.0 package common import ( + "errors" + + barmanRestorer "github.com/cloudnative-pg/barman-cloud/pkg/restorer" "google.golang.org/grpc/codes" "google.golang.org/grpc/status" ) +// classifyWALRestoreError maps an error returned by the WAL +// restorer to a gRPC-coded error so the caller can tell terminal +// failures apart from transient ones via the status code. +func classifyWALRestoreError(walName string, walErr error) error { + switch { + case errors.Is(walErr, barmanRestorer.ErrWALNotFound): + return newWALNotFoundError(walName) + case errors.Is(walErr, barmanRestorer.ErrInvalidWALName): + // A malformed WAL name will never become valid on retry. + return newInvalidWALNameError(walName, walErr) + case errors.Is(walErr, barmanRestorer.ErrConnectivity), + errors.Is(walErr, barmanRestorer.ErrGeneric): + // barman-cloud exit codes 2 (connectivity) and 4 + // (generic) both surface conditions that are retryable + // in practice β€” barman uses the "generic" bucket for + // some connection-class failures too, not just exit 2. + return newUnavailableError(walName, walErr) + default: + // Unrecognized exit codes and unexpected failures (e.g. + // the barman-cloud command could not be executed). No + // positive signal that retry would help. + return newInternalWALRestoreError(walName, walErr) + } +} + // ErrEndOfWALStreamReached is returned when end of WAL is detected in the cloud archive. var ErrEndOfWALStreamReached = status.Errorf(codes.OutOfRange, "end of WAL reached") @@ -35,10 +63,48 @@ var ErrEndOfWALStreamReached = status.Errorf(codes.OutOfRange, "end of WAL reach var ErrMissingPermissions = status.Errorf(codes.FailedPrecondition, "no permission to download the backup credentials, retrying") -// newWALNotFoundError returns a error that states that a -// certain WAL file has not been found. This error is -// compatible with GRPC status codes, resulting in a 404 -// being used as a response code. +// newWALNotFoundError reports that the requested WAL file is not +// present in the object store. Emits codes.NotFound: this is a +// terminal condition (the file won't appear on retry). func newWALNotFoundError(walName string) error { return status.Errorf(codes.NotFound, "wal %q not found", walName) } + +// newUnavailableError reports that downloading the WAL file failed +// for a reason expected to be transient (a barman-cloud connectivity +// blip, or a generic exit code that in practice covers retryable +// conditions too). Emits codes.Unavailable: per gRPC conventions, +// the canonical signal for "retry may succeed". +func newUnavailableError(walName string, err error) error { + return status.Errorf( + codes.Unavailable, + "transient error while downloading %q: %s", + walName, + err.Error(), + ) +} + +// newInvalidWALNameError reports that the requested WAL name is +// not a valid name. Emits codes.InvalidArgument: this is a +// terminal condition (the same name won't become valid on retry). +func newInvalidWALNameError(walName string, err error) error { + return status.Errorf( + codes.InvalidArgument, + "invalid WAL name %q: %s", + walName, + err.Error(), + ) +} + +// newInternalWALRestoreError reports that downloading the WAL +// file failed for an unclassified reason. Emits codes.Internal: +// we have no positive signal that retry would help, so by gRPC +// convention this is treated as terminal. +func newInternalWALRestoreError(walName string, err error) error { + return status.Errorf( + codes.Internal, + "internal error while downloading %q: %s", + walName, + err.Error(), + ) +} diff --git a/internal/cnpgi/common/errors_test.go b/internal/cnpgi/common/errors_test.go new file mode 100644 index 0000000..d2647b0 --- /dev/null +++ b/internal/cnpgi/common/errors_test.go @@ -0,0 +1,86 @@ +/* +Copyright Β© contributors to CloudNativePG, established as +CloudNativePG a Series of LF Projects, LLC. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + +SPDX-License-Identifier: Apache-2.0 +*/ + +package common + +import ( + "errors" + "fmt" + + barmanRestorer "github.com/cloudnative-pg/barman-cloud/pkg/restorer" + . "github.com/onsi/ginkgo/v2" + . "github.com/onsi/gomega" + "google.golang.org/grpc/codes" + "google.golang.org/grpc/status" +) + +var _ = Describe("classifyWALRestoreError", func() { + const walName = "000000010000000000000001" + + DescribeTable( + "maps barman restorer sentinels to gRPC status codes", + func(walErr error, expectedCode codes.Code) { + got := classifyWALRestoreError(walName, walErr) + Expect(got).To(HaveOccurred()) + + st, ok := status.FromError(got) + Expect(ok).To(BeTrue(), "returned error must carry a gRPC status") + Expect(st.Code()).To(Equal(expectedCode)) + Expect(st.Message()).To(ContainSubstring(walName)) + }, + Entry("ErrWALNotFound -> NotFound", + fmt.Errorf("object storage or file not found: %w", barmanRestorer.ErrWALNotFound), + codes.NotFound), + Entry("ErrInvalidWALName -> InvalidArgument", + fmt.Errorf("invalid name for a WAL file: %w", barmanRestorer.ErrInvalidWALName), + codes.InvalidArgument), + Entry("ErrConnectivity -> Unavailable", + fmt.Errorf("connectivity failure, retrying: %w", barmanRestorer.ErrConnectivity), + codes.Unavailable), + Entry("ErrGeneric -> Unavailable (barman uses exit 4 for some retryable cases too)", + fmt.Errorf("generic error: %w", barmanRestorer.ErrGeneric), + codes.Unavailable), + Entry("unknown error -> Internal", + errors.New("something we did not classify"), + codes.Internal), + ) + + It("matches the sentinel even through several wrapping layers", func() { + // The plugin wraps barman errors via fmt.Errorf("...: %w", ...); + // classification must keep working if more wraps appear above. + inner := fmt.Errorf("connectivity failure, retrying: %w", barmanRestorer.ErrConnectivity) + wrapped := fmt.Errorf("while restoring WAL %s: %w", walName, inner) + + got := classifyWALRestoreError(walName, wrapped) + st, ok := status.FromError(got) + Expect(ok).To(BeTrue()) + Expect(st.Code()).To(Equal(codes.Unavailable)) + }) + + It("treats ErrWALNotFound as terminal even when the error chain mentions other sentinels in its message", func() { + // Defensive: if the underlying error stringifies to something + // resembling another sentinel's message, the switch must still + // match by identity (errors.Is), not by substring. + walErr := fmt.Errorf("not found, looks like a connectivity failure: %w", barmanRestorer.ErrWALNotFound) + + got := classifyWALRestoreError(walName, walErr) + st, _ := status.FromError(got) + Expect(st.Code()).To(Equal(codes.NotFound)) + }) +}) diff --git a/internal/cnpgi/common/suite_test.go b/internal/cnpgi/common/suite_test.go new file mode 100644 index 0000000..52a9375 --- /dev/null +++ b/internal/cnpgi/common/suite_test.go @@ -0,0 +1,32 @@ +/* +Copyright Β© contributors to CloudNativePG, established as +CloudNativePG a Series of LF Projects, LLC. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + +SPDX-License-Identifier: Apache-2.0 +*/ + +package common + +import ( + "testing" + + . "github.com/onsi/ginkgo/v2" + . "github.com/onsi/gomega" +) + +func TestCommon(t *testing.T) { + RegisterFailHandler(Fail) + RunSpecs(t, "Common Suite") +} diff --git a/internal/cnpgi/common/wal.go b/internal/cnpgi/common/wal.go index 8e58cb4..7ccc55d 100644 --- a/internal/cnpgi/common/wal.go +++ b/internal/cnpgi/common/wal.go @@ -365,11 +365,7 @@ func (w WALServiceImplementation) restoreFromBarmanObjectStore( // is the one that PostgreSQL has requested to restore. // The failure has already been logged in walRestorer.RestoreList method if walStatus[0].Err != nil { - if errors.Is(walStatus[0].Err, barmanRestorer.ErrWALNotFound) { - return newWALNotFoundError(walStatus[0].WalName) - } - - return walStatus[0].Err + return classifyWALRestoreError(walStatus[0].WalName, walStatus[0].Err) } // We skip this step if streaming connection is not available diff --git a/manifest.yaml b/manifest.yaml index 3b99c39..85115ea 100644 --- a/manifest.yaml +++ b/manifest.yaml @@ -175,6 +175,25 @@ spec: format: int32 minimum: 1 type: integer + restoreAdditionalCommandArgs: + description: |- + Additional arguments that can be appended to the 'barman-cloud-restore' + command-line invocation. These arguments provide flexibility to customize + the data restore process further, according to specific requirements or + configurations. + + Example: + In a scenario where specialized restore options are required, such as setting + a specific read timeout or defining custom behavior, users can use this field + to specify additional command arguments. + + Note: + It's essential to ensure that the provided arguments are valid and supported + by the 'barman-cloud-restore' command, to avoid potential errors or unintended + behavior during execution. + items: + type: string + type: array type: object destinationPath: description: |- From c5f149b86a38fd2af33045d785c2e9a69a7e340a Mon Sep 17 00:00:00 2001 From: Armando Ruocco Date: Wed, 3 Jun 2026 14:17:12 +0200 Subject: [PATCH 010/134] feat: pass additionalCommandArgs to barman-cloud-restore (#914) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit An `ObjectStore` already lets users tack extra command-line flags onto three of the four `barman-cloud-*` invocations: `barman-cloud-backup` via `data.additionalCommandArgs`, `barman-cloud-wal-archive` via `wal.archiveAdditionalCommandArgs`, and `barman-cloud-wal-restore` via `wal.restoreAdditionalCommandArgs`. The fourth β€” `barman-cloud-restore`, the actual data-restore step in PITR and recovery-from-object-store β€” has had no equivalent, which is exactly the gap reported in #821 (the asker wanted a longer `--read-timeout` for slow restores from S3). This PR fills that gap by adding `spec.configuration.data.restoreAdditionalCommandArgs` and wiring it into the recovery job hook. In `restoreDataDir`, the user-supplied flags are appended after the cloud-provider options and `--endpoint-url` but before the positional `(destinationPath, serverName, backupID, pgdata)` arguments β€” same shape as the other three knobs. The library's existing append/dedup logic still wins on conflicts, so users can't accidentally override flags the plugin already sets (`--cloud-provider`, `--endpoint-url`, etc.). Closes #821 Signed-off-by: Armando Ruocco Signed-off-by: Leonardo Cecchi Co-authored-by: Leonardo Cecchi --- go.mod | 2 +- go.sum | 6 +++-- internal/cnpgi/restore/restore.go | 3 +++ web/docs/misc.md | 41 ++++++++++++++++++++++++++----- 4 files changed, 43 insertions(+), 9 deletions(-) diff --git a/go.mod b/go.mod index 73f6851..0775552 100644 --- a/go.mod +++ b/go.mod @@ -5,7 +5,7 @@ go 1.26.3 require ( github.com/cert-manager/cert-manager v1.20.2 github.com/cloudnative-pg/api v1.29.1 - github.com/cloudnative-pg/barman-cloud v0.5.2-0.20260529020047-bb683bf8d82a + github.com/cloudnative-pg/barman-cloud v0.5.2-0.20260603073812-213211ec5e6f github.com/cloudnative-pg/cloudnative-pg v1.29.1 github.com/cloudnative-pg/cnpg-i v0.5.0 github.com/cloudnative-pg/cnpg-i-machinery v0.4.2 diff --git a/go.sum b/go.sum index 26e26fb..462cd03 100644 --- a/go.sum +++ b/go.sum @@ -20,8 +20,10 @@ github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UF github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/cloudnative-pg/api v1.29.1 h1:FWr8S7EQeOfdhYXyr2cof8wUXLARZiiQt5Qa6ltED7w= github.com/cloudnative-pg/api v1.29.1/go.mod h1:QtWF3yzSvIfORMHaSkPAk/o3bhCJwEHJgN3riyRiz3o= -github.com/cloudnative-pg/barman-cloud v0.5.2-0.20260529020047-bb683bf8d82a h1:u2Ykj9oCJlJw/xxiCXjG+svTmpaHMcaW6kGNdHdertk= -github.com/cloudnative-pg/barman-cloud v0.5.2-0.20260529020047-bb683bf8d82a/go.mod h1:DACs5rdlMIQ7mUOpJVBRTrbf+d7OGyMOLsFUEMJ2JV8= +github.com/cloudnative-pg/barman-cloud v0.5.2-0.20260513095406-dac43abc6cf6 h1:FxIX5u8Kf1aJQnmW/5eRo+1hx/okApecnIJAmvliaJ8= +github.com/cloudnative-pg/barman-cloud v0.5.2-0.20260513095406-dac43abc6cf6/go.mod h1:VrubJGTgO94O2+m4EX68/wlbDmluc6ITL/VjTcMN3H4= +github.com/cloudnative-pg/barman-cloud v0.5.2-0.20260603073812-213211ec5e6f h1:37XPQQ7PY1tffCXS4QuRK7eSDIzn6oeF8h3cIteN2SE= +github.com/cloudnative-pg/barman-cloud v0.5.2-0.20260603073812-213211ec5e6f/go.mod h1:jCaMsQwJJ0f/49TIdSad1Ayjv52IoJXMZBhozqilY/g= github.com/cloudnative-pg/cloudnative-pg v1.29.1 h1:ZNEt1TMlnQKXI1kho2UqQuqdfvIvjGln4kN7C1lsmGA= github.com/cloudnative-pg/cloudnative-pg v1.29.1/go.mod h1:Sbgx9jVmkle4/gR2U5JHrzDd74sRPOBHDtPkvncg5v8= github.com/cloudnative-pg/cnpg-i v0.5.0 h1:/TOzpNT6cwNgrpftTtrnLKdoHgMwd+88vZgXjlVgXeE= diff --git a/internal/cnpgi/restore/restore.go b/internal/cnpgi/restore/restore.go index 0aad1e5..f286565 100644 --- a/internal/cnpgi/restore/restore.go +++ b/internal/cnpgi/restore/restore.go @@ -181,6 +181,9 @@ func (impl JobHookImpl) restoreDataDir( if backup.Status.EndpointURL != "" { options = append(options, "--endpoint-url", backup.Status.EndpointURL) } + + options = barmanConfiguration.Data.AppendRestoreAdditionalCommandArgs(options) + options = append(options, backup.Status.DestinationPath) options = append(options, backup.Status.ServerName) options = append(options, backup.Status.BackupID) diff --git a/web/docs/misc.md b/web/docs/misc.md index 0f03b28..e6594df 100644 --- a/web/docs/misc.md +++ b/web/docs/misc.md @@ -32,17 +32,20 @@ spec: [...] ``` -## Extra Options for Backup and WAL Archiving +## Extra Options for Backup, WAL Archiving, and Restore -You can pass additional command-line arguments to `barman-cloud-backup` and -`barman-cloud-wal-archive` using the `additionalCommandArgs` field in the -`ObjectStore` configuration. +You can pass additional command-line arguments to the underlying +`barman-cloud-*` commands using the corresponding fields in the `ObjectStore` +configuration. - `.spec.configuration.data.additionalCommandArgs`: for `barman-cloud-backup` +- `.spec.configuration.data.restoreAdditionalCommandArgs`: for `barman-cloud-restore` - `.spec.configuration.wal.archiveAdditionalCommandArgs`: for `barman-cloud-wal-archive` +- `.spec.configuration.wal.restoreAdditionalCommandArgs`: for `barman-cloud-wal-restore` -Each field accepts a list of string arguments. If an argument is already -configured elsewhere in the plugin, the duplicate will be ignored. +Each field accepts a list of string arguments. If an argument conflicts with +one already set by the plugin, the user-provided value will be ignored. These +fields are intended to pass options the plugin does not configure automatically. ### Example: Extra Backup Options @@ -58,6 +61,19 @@ spec: - "--read-timeout=60" ``` +### Example: Extra Restore Options + +```yaml +kind: ObjectStore +metadata: + name: my-store +spec: + configuration: + data: + restoreAdditionalCommandArgs: + - "--read-timeout=900" +``` + ### Example: Extra WAL Archive Options ```yaml @@ -72,6 +88,19 @@ spec: - "--read-timeout=60" ``` +### Example: Extra WAL Restore Options + +```yaml +kind: ObjectStore +metadata: + name: my-store +spec: + configuration: + wal: + restoreAdditionalCommandArgs: + - "--read-timeout=60" +``` + For a complete list of supported options, refer to the [official Barman Cloud documentation](https://docs.pgbarman.org/release/latest/). From de2181479f7c1a6501334e22880355404d4bfa57 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 4 Jun 2026 09:18:37 +0200 Subject: [PATCH 011/134] chore(deps): lock file maintenance (#931) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Update | Change | |---|---| | lockFileMaintenance | All locks refreshed | --- > [!WARNING] > Some dependencies could not be looked up. Check the [Dependency Dashboard](../issues/7) for more information. πŸ”§ This Pull Request updates lock files to use the latest dependency versions. --- ### Configuration πŸ“… **Schedule**: (UTC) - Branch creation - "before 4am on monday" - Automerge - At any time (no schedule defined) 🚦 **Automerge**: Enabled. β™» **Rebasing**: Never, or you tick the rebase/retry checkbox. πŸ‘» **Immortal**: This PR will be recreated if closed unmerged. Get [config help](https://redirect.github.com/renovatebot/renovate/discussions) if that's undesired. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/cloudnative-pg/plugin-barman-cloud). Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Leonardo Cecchi --- web/yarn.lock | 1702 ++++++++++++++++++++++++------------------------- 1 file changed, 851 insertions(+), 851 deletions(-) diff --git a/web/yarn.lock b/web/yarn.lock index 948865e..6485435 100644 --- a/web/yarn.lock +++ b/web/yarn.lock @@ -2,15 +2,15 @@ # yarn lockfile v1 -"@algolia/abtesting@1.18.1": - version "1.18.1" - resolved "https://registry.yarnpkg.com/@algolia/abtesting/-/abtesting-1.18.1.tgz#f6f6c221ec463eb3237756d41606c9fb364843dd" - integrity sha512-aehCadlWOGvrT91KUIZpC0MbB8KBW9yUuvTJFd2xesR7le/IsT4nJUnjCCZ4ZqZCeTcPHPV5mo//fZ5oxcSVYw== +"@algolia/abtesting@1.19.0": + version "1.19.0" + resolved "https://registry.yarnpkg.com/@algolia/abtesting/-/abtesting-1.19.0.tgz#2cccf865691a1f321c583ffc632b405e7d4784b9" + integrity sha512-Lhnez3hhXHk25lfxLAMxvkP4fmN3+1RgADhD2ssMDBYuAsDVReeyP+3SGRx+ntq8ijMrLqUyfvO72TB6jsTteQ== dependencies: - "@algolia/client-common" "5.52.1" - "@algolia/requester-browser-xhr" "5.52.1" - "@algolia/requester-fetch" "5.52.1" - "@algolia/requester-node-http" "5.52.1" + "@algolia/client-common" "5.53.0" + "@algolia/requester-browser-xhr" "5.53.0" + "@algolia/requester-fetch" "5.53.0" + "@algolia/requester-node-http" "5.53.0" "@algolia/autocomplete-core@1.19.2": version "1.19.2" @@ -52,155 +52,155 @@ resolved "https://registry.yarnpkg.com/@algolia/autocomplete-shared/-/autocomplete-shared-1.19.8.tgz#5d723d8bdb448efbb1b0e1c7ff94cc18e5b1dc0e" integrity sha512-h5hf2t8ejF6vlOgvLaZzQbWs5SyH2z4PAWygNAvvD/2RI29hdQ54ldUGwqVuj9Srs+n8XUKTPUqb7fvhBhQrnQ== -"@algolia/client-abtesting@5.52.1": - version "5.52.1" - resolved "https://registry.yarnpkg.com/@algolia/client-abtesting/-/client-abtesting-5.52.1.tgz#e356949a304f3c6f30121e18d282cdd8f65b7f67" - integrity sha512-HmXOGBOAOJPounpBzBpuY0zDYeiCpxgHnQmuA7JO6ScukcBdGp3/XM9zJk5pJx/xNGD68mbPGXWpDxGtl6BwDQ== +"@algolia/client-abtesting@5.53.0": + version "5.53.0" + resolved "https://registry.yarnpkg.com/@algolia/client-abtesting/-/client-abtesting-5.53.0.tgz#6662660f570206fe88a8e3cac92cb809aadd9519" + integrity sha512-0ZjA5Hcmaoz5Lj6OG0zhfIyeqzJZnLW2CRJA1W17UwMFGRtZAJ9yJKRvPEDA6gkpsIoQxORTSW6sWFiuYncPNQ== dependencies: - "@algolia/client-common" "5.52.1" - "@algolia/requester-browser-xhr" "5.52.1" - "@algolia/requester-fetch" "5.52.1" - "@algolia/requester-node-http" "5.52.1" + "@algolia/client-common" "5.53.0" + "@algolia/requester-browser-xhr" "5.53.0" + "@algolia/requester-fetch" "5.53.0" + "@algolia/requester-node-http" "5.53.0" -"@algolia/client-analytics@5.52.1": - version "5.52.1" - resolved "https://registry.yarnpkg.com/@algolia/client-analytics/-/client-analytics-5.52.1.tgz#82f50f028f88414a397d7ab2a284b0de61d8492a" - integrity sha512-5oo4+I8iixie9vXhCyNFCzeIr8pqA3FQ//VsLHTDvZAV4ttYOPGvYHGQq5NSalrLx5Jc3dRro/5uDOlnUMcBJg== +"@algolia/client-analytics@5.53.0": + version "5.53.0" + resolved "https://registry.yarnpkg.com/@algolia/client-analytics/-/client-analytics-5.53.0.tgz#7f52e691dfabee1d5476c3d7c100e495de09e0ce" + integrity sha512-kWNodP75iiEaOtemC9F/hlxNBG5E2QUjN1BusnE6m2b4l7Qh/BUO3fGCVsmKJI65VO4VKGGmT43ICvHtTcJ2JQ== dependencies: - "@algolia/client-common" "5.52.1" - "@algolia/requester-browser-xhr" "5.52.1" - "@algolia/requester-fetch" "5.52.1" - "@algolia/requester-node-http" "5.52.1" + "@algolia/client-common" "5.53.0" + "@algolia/requester-browser-xhr" "5.53.0" + "@algolia/requester-fetch" "5.53.0" + "@algolia/requester-node-http" "5.53.0" -"@algolia/client-common@5.52.1": - version "5.52.1" - resolved "https://registry.yarnpkg.com/@algolia/client-common/-/client-common-5.52.1.tgz#303ec8040b918c4b8bb1032d3385db1f1768cfbe" - integrity sha512-qCDoZfx5MpX7XQzvQ3bC4tSEMkQWQMaF/ABtLuoze03Y/flR563CCSws02qIJ23oX7lxl92LsilZjINVyTdtLw== +"@algolia/client-common@5.53.0": + version "5.53.0" + resolved "https://registry.yarnpkg.com/@algolia/client-common/-/client-common-5.53.0.tgz#c8b0d8afc0d202ba71de9c3ac2c7331b92020f75" + integrity sha512-YPN45TXD9Wrse185t/Ta7nktZsqpv97oOjCzp2sblHnCL6rBc9TDeJAg1IGl2UpdwnSD05Zu/5wLB4watOUMyg== -"@algolia/client-insights@5.52.1": - version "5.52.1" - resolved "https://registry.yarnpkg.com/@algolia/client-insights/-/client-insights-5.52.1.tgz#1558869cd0b0a7e59c46c0957535bddcb1eb43f4" - integrity sha512-hnGs0/lsFJ2PWDxNBz7pxreXo/Xz7gxYRcfePBUjsH26ad0kU/sgnVZd9LwWBpsQv65z2jlb5dkyaB9WE9M9FQ== +"@algolia/client-insights@5.53.0": + version "5.53.0" + resolved "https://registry.yarnpkg.com/@algolia/client-insights/-/client-insights-5.53.0.tgz#512a5a5b5c8685c121cdfe79af9cdff538f9cb07" + integrity sha512-qAcYTDJE6m924FDDUQvdD6vh7DYaqOeSpFS74IP37/JRV0v4cGBauyxTF2WzDnokUylQDbqreoFIJZfg0Fitmw== dependencies: - "@algolia/client-common" "5.52.1" - "@algolia/requester-browser-xhr" "5.52.1" - "@algolia/requester-fetch" "5.52.1" - "@algolia/requester-node-http" "5.52.1" + "@algolia/client-common" "5.53.0" + "@algolia/requester-browser-xhr" "5.53.0" + "@algolia/requester-fetch" "5.53.0" + "@algolia/requester-node-http" "5.53.0" -"@algolia/client-personalization@5.52.1": - version "5.52.1" - resolved "https://registry.yarnpkg.com/@algolia/client-personalization/-/client-personalization-5.52.1.tgz#cc0ab06435b0e84dbdae7807131a30c4a5fbbd07" - integrity sha512-2VxxNc/uBysyKvGeBdSM5n9eIDKH8kWD7wd9/yqbJAiVwU4Yv6tU1LSJusHKrXV/aCu1KW7t9Gug9QyeEmtn/Q== +"@algolia/client-personalization@5.53.0": + version "5.53.0" + resolved "https://registry.yarnpkg.com/@algolia/client-personalization/-/client-personalization-5.53.0.tgz#5369cc4ebe5a49dad5f4af959260206c89a6c9ef" + integrity sha512-fQaY+DkSJOpuUVUe8MQTwrdiKAqkJGhpDarB08duBn/sUv7Bkib6MDRQauCcWTWTe4HIW+EbwQP9R4kci1V/Yw== dependencies: - "@algolia/client-common" "5.52.1" - "@algolia/requester-browser-xhr" "5.52.1" - "@algolia/requester-fetch" "5.52.1" - "@algolia/requester-node-http" "5.52.1" + "@algolia/client-common" "5.53.0" + "@algolia/requester-browser-xhr" "5.53.0" + "@algolia/requester-fetch" "5.53.0" + "@algolia/requester-node-http" "5.53.0" -"@algolia/client-query-suggestions@5.52.1": - version "5.52.1" - resolved "https://registry.yarnpkg.com/@algolia/client-query-suggestions/-/client-query-suggestions-5.52.1.tgz#6d1ec4950fe8478f33ac94da68122fd57092cf84" - integrity sha512-O6mPtsw3xEfNOe6gWFpYLeAZAIljNa4Hgna3bq15PwyN7nbjTY0wXJFRbzs/0YVf75Br+SbOQUmjKxXYjDiSiQ== +"@algolia/client-query-suggestions@5.53.0": + version "5.53.0" + resolved "https://registry.yarnpkg.com/@algolia/client-query-suggestions/-/client-query-suggestions-5.53.0.tgz#ce00b5b0ba0d71e8175f4e7b238e3f28f02ee40e" + integrity sha512-o72tsiEZGfeS/dxL9IADfzcZWGEwKDEe5CvtrBuT//3JR+SHuTtHRI2ZTf7D7bcKagcbojvO8hnkHdfoakSlYg== dependencies: - "@algolia/client-common" "5.52.1" - "@algolia/requester-browser-xhr" "5.52.1" - "@algolia/requester-fetch" "5.52.1" - "@algolia/requester-node-http" "5.52.1" + "@algolia/client-common" "5.53.0" + "@algolia/requester-browser-xhr" "5.53.0" + "@algolia/requester-fetch" "5.53.0" + "@algolia/requester-node-http" "5.53.0" -"@algolia/client-search@5.52.1": - version "5.52.1" - resolved "https://registry.yarnpkg.com/@algolia/client-search/-/client-search-5.52.1.tgz#1a87024e25899cd7417c1dc88e4be1f390f38e85" - integrity sha512-gA8oJOV1LnQQkDf91iebNnFInHuW0gRPEgLSOQ7EfipCEjYTHm5swm1DlH9H5RaRw4RrHuzHBegnlzc0MAstcg== +"@algolia/client-search@5.53.0": + version "5.53.0" + resolved "https://registry.yarnpkg.com/@algolia/client-search/-/client-search-5.53.0.tgz#a1b412880462c85a1ac72c830498e0312dde1e0e" + integrity sha512-Ds16IyPm/dNJPCU8OzApo2gwGrgWT5BYHhE3NFwZbpCveqyvPDB9sZDDkJ5DsdOGT2aC+R3i0/M1OVXF2qdgPg== dependencies: - "@algolia/client-common" "5.52.1" - "@algolia/requester-browser-xhr" "5.52.1" - "@algolia/requester-fetch" "5.52.1" - "@algolia/requester-node-http" "5.52.1" + "@algolia/client-common" "5.53.0" + "@algolia/requester-browser-xhr" "5.53.0" + "@algolia/requester-fetch" "5.53.0" + "@algolia/requester-node-http" "5.53.0" "@algolia/events@^4.0.1": version "4.0.1" resolved "https://registry.yarnpkg.com/@algolia/events/-/events-4.0.1.tgz#fd39e7477e7bc703d7f893b556f676c032af3950" integrity sha512-FQzvOCgoFXAbf5Y6mYozw2aj5KCJoA3m4heImceldzPSMbdyS4atVjJzXKMsfX3wnZTFYwkkt8/z8UesLHlSBQ== -"@algolia/ingestion@1.52.1": - version "1.52.1" - resolved "https://registry.yarnpkg.com/@algolia/ingestion/-/ingestion-1.52.1.tgz#6f045c218be76eae38e2ddb2c0d79081f67554b9" - integrity sha512-U9zZfc5xIu9wRxZkt+HceJUAD4VKHKbAyLSloJdEyMRmphXeibfrY9cxqIXBcmPeZzGhn3Imb35Dq8l19PkJhw== +"@algolia/ingestion@1.53.0": + version "1.53.0" + resolved "https://registry.yarnpkg.com/@algolia/ingestion/-/ingestion-1.53.0.tgz#8417cef6430da4fb14234c3c6698726c7a41a2be" + integrity sha512-oNbT6z4NwD8Pou9VPINGlN/tlG1afESh2EbxqnP6rwl95xKVD/Zlciis1PpNeO/9U/rrajc1+7DcfKi03tX1KQ== dependencies: - "@algolia/client-common" "5.52.1" - "@algolia/requester-browser-xhr" "5.52.1" - "@algolia/requester-fetch" "5.52.1" - "@algolia/requester-node-http" "5.52.1" + "@algolia/client-common" "5.53.0" + "@algolia/requester-browser-xhr" "5.53.0" + "@algolia/requester-fetch" "5.53.0" + "@algolia/requester-node-http" "5.53.0" -"@algolia/monitoring@1.52.1": - version "1.52.1" - resolved "https://registry.yarnpkg.com/@algolia/monitoring/-/monitoring-1.52.1.tgz#311045ebe1d1c987ffd3ef987847b13d2ade8b46" - integrity sha512-a3SGNceHmkQfq77iG8Ka+w1pvwfZa/0lzEIgse30fL0kD+yKnd/dg0dQvSfFPAEt2f21DMcGkDSSeJlO3KdQjQ== +"@algolia/monitoring@1.53.0": + version "1.53.0" + resolved "https://registry.yarnpkg.com/@algolia/monitoring/-/monitoring-1.53.0.tgz#091005519a31b04a8b9f2c9f7d13358001a696bb" + integrity sha512-G+KZb/yd+qAOFn/cEvTGeLxQm8aP3a0od50l3z/ylccY+/o4YG3TNcjU1tFQHW4mXC137GPyR7W70R0kRQDLnA== dependencies: - "@algolia/client-common" "5.52.1" - "@algolia/requester-browser-xhr" "5.52.1" - "@algolia/requester-fetch" "5.52.1" - "@algolia/requester-node-http" "5.52.1" + "@algolia/client-common" "5.53.0" + "@algolia/requester-browser-xhr" "5.53.0" + "@algolia/requester-fetch" "5.53.0" + "@algolia/requester-node-http" "5.53.0" -"@algolia/recommend@5.52.1": - version "5.52.1" - resolved "https://registry.yarnpkg.com/@algolia/recommend/-/recommend-5.52.1.tgz#8e197801ed0aabbf1006d7d3f2549f6d8a8c8729" - integrity sha512-z98QEguCFDpxb4S/PyrUK1igqF8tPsdbqOUUO6ON91vJ58w+Gwa6ncrI0oNXSFcrkxA5EqPKPQ2A1PBCn08TYQ== +"@algolia/recommend@5.53.0": + version "5.53.0" + resolved "https://registry.yarnpkg.com/@algolia/recommend/-/recommend-5.53.0.tgz#d45f5538984f208f51f71a4c6b973eb1c1a8a66c" + integrity sha512-6aVfYd55Un6IUgPLbo84WfgFZlS3L0vA1ttzXL5vahHewUJ8jYgd89TzlWRTeej7w70mb9RWsVlFYGmJ/diQww== dependencies: - "@algolia/client-common" "5.52.1" - "@algolia/requester-browser-xhr" "5.52.1" - "@algolia/requester-fetch" "5.52.1" - "@algolia/requester-node-http" "5.52.1" + "@algolia/client-common" "5.53.0" + "@algolia/requester-browser-xhr" "5.53.0" + "@algolia/requester-fetch" "5.53.0" + "@algolia/requester-node-http" "5.53.0" -"@algolia/requester-browser-xhr@5.52.1": - version "5.52.1" - resolved "https://registry.yarnpkg.com/@algolia/requester-browser-xhr/-/requester-browser-xhr-5.52.1.tgz#1cf9162c5f8a4b5a5379f29791c492f352f2f247" - integrity sha512-CI7+/0I11QeZM59Uc8whd2or0kqzFVjpaPn9Qpwll/krHcBAxk24WkAQ6WX+IwDVMfpont4YGbKwAmCre3vE8Q== +"@algolia/requester-browser-xhr@5.53.0": + version "5.53.0" + resolved "https://registry.yarnpkg.com/@algolia/requester-browser-xhr/-/requester-browser-xhr-5.53.0.tgz#bd742734337378090d5c95f80de2b7a933089924" + integrity sha512-ke27DqgzCOlt+RbeEdCxtXxMQOnAOi8ujr2wid0DmDKzR95Kw/f9sBsuhBxtjevCqJRJszfRTLY0B1pbO6IhkA== dependencies: - "@algolia/client-common" "5.52.1" + "@algolia/client-common" "5.53.0" -"@algolia/requester-fetch@5.52.1": - version "5.52.1" - resolved "https://registry.yarnpkg.com/@algolia/requester-fetch/-/requester-fetch-5.52.1.tgz#ee7e2094540a14a3e4416c31214b79f730d89c97" - integrity sha512-S6bDuw9byfOvm3T71cgdoZgrgnZq6hpdMLkx52Louh57nUAmvGQESz2aojOynQHjbTiV55smvAFbgn0qT4tJrg== +"@algolia/requester-fetch@5.53.0": + version "5.53.0" + resolved "https://registry.yarnpkg.com/@algolia/requester-fetch/-/requester-fetch-5.53.0.tgz#1f4b3d933c50d0022de4ce18d235b65325b7024e" + integrity sha512-GngiOqt2Gq4oLno6yXQVj9om+qSO9SWAoduoTOEg79dKZ62brB8OOIvSJG/vDNoanYi6a7Al9uDZwXvi+bcVTg== dependencies: - "@algolia/client-common" "5.52.1" + "@algolia/client-common" "5.53.0" -"@algolia/requester-node-http@5.52.1": - version "5.52.1" - resolved "https://registry.yarnpkg.com/@algolia/requester-node-http/-/requester-node-http-5.52.1.tgz#be0d9c5642f392586bd306bae70befb38f04e0af" - integrity sha512-tqZXM+54rWo4mk5jL5Z/flE11nPmNEdXwFBM5py9DkOmbjeCNemfVd45FyM97XdzfZ0dl9uOJC6PYn1FpkeyQg== +"@algolia/requester-node-http@5.53.0": + version "5.53.0" + resolved "https://registry.yarnpkg.com/@algolia/requester-node-http/-/requester-node-http-5.53.0.tgz#8c25669aaf6fc11a2970d2f62fbda3c603ec11ce" + integrity sha512-6mF9LZMUk0QqWvrnxkxBqhswwz6Xfiwy6/gmTzL5HrlhdVG3ITAqGV2k3XmVThP1h0Ulc3VQwiNCD7/Nr4JNlQ== dependencies: - "@algolia/client-common" "5.52.1" + "@algolia/client-common" "5.53.0" -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.28.6", "@babel/code-frame@^7.29.0": - version "7.29.0" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.29.0.tgz#7cd7a59f15b3cc0dcd803038f7792712a7d0b15c" - integrity sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw== +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.29.7.tgz#f2fbbfea87c44a21590ec515b778b2c26d8866e7" + integrity sha512-Aup7aUOfpbAUg2ROOJN6Iw5f9DMBlzu0mIkm/malLQFN/YQgO48wCj0Kxa3sEHJvPVFg7siR+qRInwXd2qhQKw== dependencies: - "@babel/helper-validator-identifier" "^7.28.5" + "@babel/helper-validator-identifier" "^7.29.7" js-tokens "^4.0.0" picocolors "^1.1.1" -"@babel/compat-data@^7.28.6", "@babel/compat-data@^7.29.3": - version "7.29.3" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.29.3.tgz#e3f5347f0589596c91d227ccb6a541d37fb1307b" - integrity sha512-LIVqM46zQWZhj17qA8wb4nW/ixr2y1Nw+r1etiAWgRM6U1IqP+LNhL1yg440jYZR72jCWcWbLWzIosH+uP1fqg== +"@babel/compat-data@^7.28.6", "@babel/compat-data@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.29.7.tgz#6f0237f0f36d2e51c0570a636faed9d2d0efe629" + integrity sha512-locTkQyKvwIEgBzVrn8693ebc97F2U8ZHjbXwDXJ5Fn2TCpNwTlKcaKLkdHop5c/icOFE7qt7Q9JC5hnKNa6Gg== "@babel/core@^7.21.3", "@babel/core@^7.25.9": - version "7.29.0" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.29.0.tgz#5286ad785df7f79d656e88ce86e650d16ca5f322" - integrity sha512-CGOfOJqWjg2qW/Mb6zNsDm+u5vFQ8DxXfbM09z69p5Z6+mE1ikP2jUXw+j42Pf1XTYED2Rni5f95npYeuwMDQA== + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.29.7.tgz#80c10b17248082968b57a857b91640971f2070f7" + integrity sha512-RgHBCvtjbOK2gXSNBNIkNoEc9qoVEtau3hj8gEqKQuL3HZAibKarWFEI3Lfm6EYKkLalOh8eSrj9b+ch9H/VBA== dependencies: - "@babel/code-frame" "^7.29.0" - "@babel/generator" "^7.29.0" - "@babel/helper-compilation-targets" "^7.28.6" - "@babel/helper-module-transforms" "^7.28.6" - "@babel/helpers" "^7.28.6" - "@babel/parser" "^7.29.0" - "@babel/template" "^7.28.6" - "@babel/traverse" "^7.29.0" - "@babel/types" "^7.29.0" + "@babel/code-frame" "^7.29.7" + "@babel/generator" "^7.29.7" + "@babel/helper-compilation-targets" "^7.29.7" + "@babel/helper-module-transforms" "^7.29.7" + "@babel/helpers" "^7.29.7" + "@babel/parser" "^7.29.7" + "@babel/template" "^7.29.7" + "@babel/traverse" "^7.29.7" + "@babel/types" "^7.29.7" "@jridgewell/remapping" "^2.3.5" convert-source-map "^2.0.0" debug "^4.1.0" @@ -208,54 +208,54 @@ json5 "^2.2.3" semver "^6.3.1" -"@babel/generator@^7.25.9", "@babel/generator@^7.29.0": - version "7.29.1" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.29.1.tgz#d09876290111abbb00ef962a7b83a5307fba0d50" - integrity sha512-qsaF+9Qcm2Qv8SRIMMscAvG4O3lJ0F1GuMo5HR/Bp02LopNgnZBC/EkbevHFeGs4ls/oPz9v+Bsmzbkbe+0dUw== +"@babel/generator@^7.25.9", "@babel/generator@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.29.7.tgz#cca0b8827e6bcf3ba176788e7f3b180ad6db2fa3" + integrity sha512-DkXD5OJQaAQIdZ1bt3UZdEnHAn9Imd3IVBdX03UFe+ony9Ojw5pzr9YVKGDY1jt+Gcn/FnGkNf8r+Vj5NOJWtQ== dependencies: - "@babel/parser" "^7.29.0" - "@babel/types" "^7.29.0" + "@babel/parser" "^7.29.7" + "@babel/types" "^7.29.7" "@jridgewell/gen-mapping" "^0.3.12" "@jridgewell/trace-mapping" "^0.3.28" jsesc "^3.0.2" -"@babel/helper-annotate-as-pure@^7.27.1", "@babel/helper-annotate-as-pure@^7.27.3": - version "7.27.3" - resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.27.3.tgz#f31fd86b915fc4daf1f3ac6976c59be7084ed9c5" - integrity sha512-fXSwMQqitTGeHLBC08Eq5yXz2m37E4pJX1qAU1+2cNedz/ifv/bVXft90VeSav5nFO61EcNgwr0aJxbyPaWBPg== +"@babel/helper-annotate-as-pure@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.29.7.tgz#c70fe3c6ecbdc3fd2dd1b0f498428b88b82ce47f" + integrity sha512-OoK6239jHPuSQOoS0kfTVKn0b/rVTk0seKq4Gd2UMLtmOVLjDC0ki3e+c90Trqv2gMfvJFqkiljrr568+qddiw== dependencies: - "@babel/types" "^7.27.3" + "@babel/types" "^7.29.7" -"@babel/helper-compilation-targets@^7.27.1", "@babel/helper-compilation-targets@^7.28.6": - version "7.28.6" - resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.28.6.tgz#32c4a3f41f12ed1532179b108a4d746e105c2b25" - integrity sha512-JYtls3hqi15fcx5GaSNL7SCTJ2MNmjrkHXg4FSpOA/grxK8KwyZ5bubHsCq8FXCkua6xhuaaBit+3b7+VZRfcA== +"@babel/helper-compilation-targets@^7.28.6", "@babel/helper-compilation-targets@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.29.7.tgz#7a1def704302401c47f64fa85589e974ae217042" + integrity sha512-wem6WaBj4NaVYVdNhLPPVacES6ZJ+KBBfSkTMD3YZxbP3rm3Di85tJU5ljaUNhaOynt+Aj0xruhYuzQBt8n71g== dependencies: - "@babel/compat-data" "^7.28.6" - "@babel/helper-validator-option" "^7.27.1" + "@babel/compat-data" "^7.29.7" + "@babel/helper-validator-option" "^7.29.7" browserslist "^4.24.0" lru-cache "^5.1.1" semver "^6.3.1" -"@babel/helper-create-class-features-plugin@^7.28.6": - version "7.29.3" - resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.29.3.tgz#67328947d956f06fc7b48def269bf0489155fd42" - integrity sha512-RpLYy2sb51oNLjuu1iD3bwBqCBWUzjO0ocp+iaCP/lJtb2CPLcnC2Fftw+4sAzaMELGeWTgExSKADbdo0GFVzA== +"@babel/helper-create-class-features-plugin@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.29.7.tgz#6eddf286f2ec418f740c91d60a83347c55838ddd" + integrity sha512-IY3ZD9Tmooqr3TUhc3DUWxiuo8xx1DWLhd5M7hQ+ZWJamqM2BbalrBJb2MisSLoYorOj75U03qULCxQTY9r3hg== dependencies: - "@babel/helper-annotate-as-pure" "^7.27.3" - "@babel/helper-member-expression-to-functions" "^7.28.5" - "@babel/helper-optimise-call-expression" "^7.27.1" - "@babel/helper-replace-supers" "^7.28.6" - "@babel/helper-skip-transparent-expression-wrappers" "^7.27.1" - "@babel/traverse" "^7.29.0" + "@babel/helper-annotate-as-pure" "^7.29.7" + "@babel/helper-member-expression-to-functions" "^7.29.7" + "@babel/helper-optimise-call-expression" "^7.29.7" + "@babel/helper-replace-supers" "^7.29.7" + "@babel/helper-skip-transparent-expression-wrappers" "^7.29.7" + "@babel/traverse" "^7.29.7" semver "^6.3.1" -"@babel/helper-create-regexp-features-plugin@^7.18.6", "@babel/helper-create-regexp-features-plugin@^7.27.1", "@babel/helper-create-regexp-features-plugin@^7.28.5": - version "7.28.5" - resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.28.5.tgz#7c1ddd64b2065c7f78034b25b43346a7e19ed997" - integrity sha512-N1EhvLtHzOvj7QQOUCCS3NrPJP8c5W6ZXCHDn7Yialuy1iu4r5EmIYkXlKNqT99Ciw+W0mDqWoR6HWMZlFP3hw== +"@babel/helper-create-regexp-features-plugin@^7.18.6", "@babel/helper-create-regexp-features-plugin@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.29.7.tgz#5d4c3f928f315cf6c4184ea2fc3b5b38745b2430" + integrity sha512-907Uymvqgg1dwUA+7IGwFAOSYzQOuzPXKNJ1yxzwPffzkYFg2q2eHi1fIOs6sXkG9NbIUMunnUlkYsfRFNvomg== dependencies: - "@babel/helper-annotate-as-pure" "^7.27.3" + "@babel/helper-annotate-as-pure" "^7.29.7" regexpu-core "^6.3.1" semver "^6.3.1" @@ -270,159 +270,159 @@ lodash.debounce "^4.0.8" resolve "^1.22.11" -"@babel/helper-globals@^7.28.0": - version "7.28.0" - resolved "https://registry.yarnpkg.com/@babel/helper-globals/-/helper-globals-7.28.0.tgz#b9430df2aa4e17bc28665eadeae8aa1d985e6674" - integrity sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw== +"@babel/helper-globals@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/helper-globals/-/helper-globals-7.29.7.tgz#f04a96fbd8473241b1079243f5b3f03a3010ab7b" + integrity sha512-3nQVUAtvkKH9zahfWgw96Jc/uFOmjACE1kQz82E2lqWmHBgjzbNlsC22nuQTfahmWeQtTq5nQ/4Nnd2A1wj4zA== -"@babel/helper-member-expression-to-functions@^7.28.5": - version "7.28.5" - resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.28.5.tgz#f3e07a10be37ed7a63461c63e6929575945a6150" - integrity sha512-cwM7SBRZcPCLgl8a7cY0soT1SptSzAlMH39vwiRpOQkJlh53r5hdHwLSCZpQdVLT39sZt+CRpNwYG4Y2v77atg== +"@babel/helper-member-expression-to-functions@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.29.7.tgz#8dbdb3ce0b5c487e1aec10e13c9a43a500814df8" + integrity sha512-j+7JYmk1JYDtACIGj0QJqqWZjoUpMoEikQGADMaHgCMCSDqd2+P32rfcibUNrGOMWrlzK1WJBdxrB3JJQZwWtg== dependencies: - "@babel/traverse" "^7.28.5" - "@babel/types" "^7.28.5" + "@babel/traverse" "^7.29.7" + "@babel/types" "^7.29.7" -"@babel/helper-module-imports@^7.28.6": - version "7.28.6" - resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.28.6.tgz#60632cbd6ffb70b22823187201116762a03e2d5c" - integrity sha512-l5XkZK7r7wa9LucGw9LwZyyCUscb4x37JWTPz7swwFE/0FMQAGpiWUZn8u9DzkSBWEcK25jmvubfpw2dnAMdbw== +"@babel/helper-module-imports@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.29.7.tgz#ef25048a518e828d7393fac5882ddd73921d7396" + integrity sha512-ejHwrQQYcm9xnTivShn2IDOlIzInN34AXskvq9QicvCtEzq1Vzclu/tKF8Jq1Cg8JG2GL6/EmjgsCT7lXepE3g== dependencies: - "@babel/traverse" "^7.28.6" - "@babel/types" "^7.28.6" + "@babel/traverse" "^7.29.7" + "@babel/types" "^7.29.7" -"@babel/helper-module-transforms@^7.27.1", "@babel/helper-module-transforms@^7.28.6": - version "7.28.6" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.28.6.tgz#9312d9d9e56edc35aeb6e95c25d4106b50b9eb1e" - integrity sha512-67oXFAYr2cDLDVGLXTEABjdBJZ6drElUSI7WKp70NrpyISso3plG9SAGEF6y7zbha/wOzUByWWTJvEDVNIUGcA== +"@babel/helper-module-transforms@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.29.7.tgz#b062747a5997ba138637201328bbff77960574ae" + integrity sha512-UPUVSyXbOh627KiCIGQSgwWzGeBKLkaJ9PJEdrngIwMSzxLR4jS4+f1f1jb7VzBbg8nFLaYotvVPFCTqdrmTAg== dependencies: - "@babel/helper-module-imports" "^7.28.6" - "@babel/helper-validator-identifier" "^7.28.5" - "@babel/traverse" "^7.28.6" + "@babel/helper-module-imports" "^7.29.7" + "@babel/helper-validator-identifier" "^7.29.7" + "@babel/traverse" "^7.29.7" -"@babel/helper-optimise-call-expression@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.27.1.tgz#c65221b61a643f3e62705e5dd2b5f115e35f9200" - integrity sha512-URMGH08NzYFhubNSGJrpUEphGKQwMQYBySzat5cAByY1/YgIRkULnIy3tAMeszlL/so2HbeilYloUmSpd7GdVw== +"@babel/helper-optimise-call-expression@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.29.7.tgz#77b0b5b94f1997fa9d6e3125f445227b1faf9d85" + integrity sha512-+kmGVjcT9RGYzoDwdwEqEvGgKe3BYq+O1iGzjFubaNgZHwYHP6lsF2Yghf4kEuv9BV7tYDZ913aBW9am6YKong== dependencies: - "@babel/types" "^7.27.1" + "@babel/types" "^7.29.7" -"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.27.1", "@babel/helper-plugin-utils@^7.28.6", "@babel/helper-plugin-utils@^7.8.0": - version "7.28.6" - resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.28.6.tgz#6f13ea251b68c8532e985fd532f28741a8af9ac8" - integrity sha512-S9gzZ/bz83GRysI7gAD4wPT/AI3uCnY+9xn+Mx/KPs2JwHJIz1W8PZkg2cqyt3RNOBM8ejcXhV6y8Og7ly/Dug== +"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.28.6", "@babel/helper-plugin-utils@^7.29.7", "@babel/helper-plugin-utils@^7.8.0": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.29.7.tgz#c0a0766f1a13617d8a17407d7ab8f9d486225ea4" + integrity sha512-G7sHYigPY17oO5SYWnfD/0MTBwVR781S/JI643e/JhUYgVgWE/61SoW3NH9KWUKyKq5LVh3npif99Wkt6j86Jw== -"@babel/helper-remap-async-to-generator@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.27.1.tgz#4601d5c7ce2eb2aea58328d43725523fcd362ce6" - integrity sha512-7fiA521aVw8lSPeI4ZOD3vRFkoqkJcS+z4hFo82bFSH/2tNd6eJ5qCVMS5OzDmZh/kaHQeBaeyxK6wljcPtveA== +"@babel/helper-remap-async-to-generator@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.29.7.tgz#34b1f68dd75b86d31df781a29c3ff2df88da82e6" + integrity sha512-16AMiW26DbXWBbr3B8wNozKM0ydMLB892vaOaJW/fPJdnT8vJk5sdkQcU/isqUxyCE0cEoa8wZOcbgDuC4b6Og== dependencies: - "@babel/helper-annotate-as-pure" "^7.27.1" - "@babel/helper-wrap-function" "^7.27.1" - "@babel/traverse" "^7.27.1" + "@babel/helper-annotate-as-pure" "^7.29.7" + "@babel/helper-wrap-function" "^7.29.7" + "@babel/traverse" "^7.29.7" -"@babel/helper-replace-supers@^7.27.1", "@babel/helper-replace-supers@^7.28.6": - version "7.28.6" - resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.28.6.tgz#94aa9a1d7423a00aead3f204f78834ce7d53fe44" - integrity sha512-mq8e+laIk94/yFec3DxSjCRD2Z0TAjhVbEJY3UQrlwVo15Lmt7C2wAUbK4bjnTs4APkwsYLTahXRraQXhb1WCg== +"@babel/helper-replace-supers@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.29.7.tgz#bc3c3964329043c79112e513c1b198f16589ac21" + integrity sha512-atfGXWSeCiF4DnKZIfmJfQRkSw9b9gNNXR1kqKjbhG4pGYCOnkp8OcTB8E3NXjBu8NpheSnOeNKz8KT7UNFTmQ== dependencies: - "@babel/helper-member-expression-to-functions" "^7.28.5" - "@babel/helper-optimise-call-expression" "^7.27.1" - "@babel/traverse" "^7.28.6" + "@babel/helper-member-expression-to-functions" "^7.29.7" + "@babel/helper-optimise-call-expression" "^7.29.7" + "@babel/traverse" "^7.29.7" -"@babel/helper-skip-transparent-expression-wrappers@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.27.1.tgz#62bb91b3abba8c7f1fec0252d9dbea11b3ee7a56" - integrity sha512-Tub4ZKEXqbPjXgWLl2+3JpQAYBJ8+ikpQ2Ocj/q/r0LwE3UhENh7EUabyHjz2kCEsrRY83ew2DQdHluuiDQFzg== +"@babel/helper-skip-transparent-expression-wrappers@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.29.7.tgz#50c95c7e4c4f54936cfa0116428edc559862d551" + integrity sha512-brcMGQaVzIeUb+6/bs1Av0f8YuNNjKY2JyvfRCsFuFsdKccEQ5Ges2y74D74NZ1Rz8lKJ9ksJkfqwQFJ/iNEyQ== dependencies: - "@babel/traverse" "^7.27.1" - "@babel/types" "^7.27.1" + "@babel/traverse" "^7.29.7" + "@babel/types" "^7.29.7" -"@babel/helper-string-parser@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz#54da796097ab19ce67ed9f88b47bb2ec49367687" - integrity sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA== +"@babel/helper-string-parser@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.29.7.tgz#7f0871d99824d23137d60f86fcf6130fd5a1b51f" + integrity sha512-Pb5ijPrZ89GDH8223L4UP8i6QApWxs04RbPQJTeWDV0/keR2E36MeKnyr6LYmUUvqRRI+Iv87SuF1W6ErINzYw== -"@babel/helper-validator-identifier@^7.28.5": - version "7.28.5" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz#010b6938fab7cb7df74aa2bbc06aa503b8fe5fb4" - integrity sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q== +"@babel/helper-validator-identifier@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.29.7.tgz#bd87084ced0c796ec46bda492de6e83d29e89fc2" + integrity sha512-qehxGkRj55h/ff8EMaJ+cYhyaKlHIxqYDn682wQD7RNp9UujOQsHog2uS0r2vzr4pW+sXf90NeeayjcNaX3fFg== -"@babel/helper-validator-option@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz#fa52f5b1e7db1ab049445b421c4471303897702f" - integrity sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg== +"@babel/helper-validator-option@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.29.7.tgz#cf315be940213b354eb4abcc0bd01ebe3f73bc2a" + integrity sha512-N9ZErrD+yW5geCDtBqnOoxmR8+tNKiGuxKlDpuJxfsqpa2dFcexaziGAE/qoHLiDDreVNMupxGmSoNlyvsA3gw== -"@babel/helper-wrap-function@^7.27.1": - version "7.28.6" - resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.28.6.tgz#4e349ff9222dab69a93a019cc296cdd8442e279a" - integrity sha512-z+PwLziMNBeSQJonizz2AGnndLsP2DeGHIxDAn+wdHOGuo4Fo1x1HBPPXeE9TAOPHNNWQKCSlA2VZyYyyibDnQ== +"@babel/helper-wrap-function@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.29.7.tgz#eec72163044548a0935e9d182bf2d547ec5ff483" + integrity sha512-iES0Skag9ERIF68aXadpO6dbXa03mNWK3sEqJaMnLNs/eC3l0lkImdfoy6Y09/SfkpawdAB4RjQ7PVA7TcVGdw== dependencies: - "@babel/template" "^7.28.6" - "@babel/traverse" "^7.28.6" - "@babel/types" "^7.28.6" + "@babel/template" "^7.29.7" + "@babel/traverse" "^7.29.7" + "@babel/types" "^7.29.7" -"@babel/helpers@^7.28.6": - version "7.29.2" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.29.2.tgz#9cfbccb02b8e229892c0b07038052cc1a8709c49" - integrity sha512-HoGuUs4sCZNezVEKdVcwqmZN8GoHirLUcLaYVNBK2J0DadGtdcqgr3BCbvH8+XUo4NGjNl3VOtSjEKNzqfFgKw== +"@babel/helpers@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.29.7.tgz#45abfde7548997e34376c3e69feb475cffb4a607" + integrity sha512-1k2lAGRMfHTcwuNYcCNUmaUffmQv8KWMfh2iJUUeRlwlwH4FdNG7mfPI10NPfLHJFThE4Tyr4mv7kTNZOiPuBg== dependencies: - "@babel/template" "^7.28.6" - "@babel/types" "^7.29.0" + "@babel/template" "^7.29.7" + "@babel/types" "^7.29.7" -"@babel/parser@^7.28.6", "@babel/parser@^7.29.0": - version "7.29.3" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.29.3.tgz#116f70a77958307fceac27747573032f8a62f88e" - integrity sha512-b3ctpQwp+PROvU/cttc4OYl4MzfJUWy6FZg+PMXfzmt/+39iHVF0sDfqay8TQM3JA2EUOyKcFZt75jWriQijsA== +"@babel/parser@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.29.7.tgz#837b87387cbf5ec5530cb634b3c622f68edb9334" + integrity sha512-hnORnjP/1P/zFEndoeX+n+t1RwWRJiJpM/jO7FW32Kn9r5+sJB2JWOdYo4L6k78j15eCwY3Gm/7364B1EMwtNg== dependencies: - "@babel/types" "^7.29.0" + "@babel/types" "^7.29.7" -"@babel/plugin-bugfix-firefox-class-in-computed-class-key@^7.28.5": - version "7.28.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.28.5.tgz#fbde57974707bbfa0376d34d425ff4fa6c732421" - integrity sha512-87GDMS3tsmMSi/3bWOte1UblL+YUTFMV8SZPZ2eSEL17s74Cw/l63rR6NmGVKMYW2GYi85nE+/d6Hw5N0bEk2Q== +"@babel/plugin-bugfix-firefox-class-in-computed-class-key@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.29.7.tgz#2b535896d933a85aa92377eaa3d51a437d54a4e3" + integrity sha512-j8SrR0zLZrRsC09DlszEx8FpMiwukKffYXMK0d5LmOglO7vGG6sz/BR/20yHqWH+Lnn31JTt2PE3hIWNgM2J6w== dependencies: - "@babel/helper-plugin-utils" "^7.27.1" - "@babel/traverse" "^7.28.5" + "@babel/helper-plugin-utils" "^7.29.7" + "@babel/traverse" "^7.29.7" -"@babel/plugin-bugfix-safari-class-field-initializer-scope@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-class-field-initializer-scope/-/plugin-bugfix-safari-class-field-initializer-scope-7.27.1.tgz#43f70a6d7efd52370eefbdf55ae03d91b293856d" - integrity sha512-qNeq3bCKnGgLkEXUuFry6dPlGfCdQNZbn7yUAPCInwAJHMU7THJfrBSozkcWq5sNM6RcF3S8XyQL2A52KNR9IA== +"@babel/plugin-bugfix-safari-class-field-initializer-scope@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-class-field-initializer-scope/-/plugin-bugfix-safari-class-field-initializer-scope-7.29.7.tgz#b00711a9e52bf4fe55ef7e54b2ef4a881bf804c8" + integrity sha512-r8j8escF+U2FUHo0KOhPUdMzUO+jp9fInva6+ACVAF3Y97Ev+5iNZwiqTghmzNeWwDkOPlYuTcfb1vDaoZKmAQ== dependencies: - "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-plugin-utils" "^7.29.7" -"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.27.1.tgz#beb623bd573b8b6f3047bd04c32506adc3e58a72" - integrity sha512-g4L7OYun04N1WyqMNjldFwlfPCLVkgB54A/YCXICZYBsvJJE3kByKv9c9+R/nAfmIfjl2rKYLNyMHboYbZaWaA== +"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.29.7.tgz#2375328852026a3cf6bc0bcf2de7d236f2d5e701" + integrity sha512-GE1TFSiuFeGsCxmYXZl8HwoPrVlwe4rHPFE8weieGKZqnDORK+Ar3vgWMgW+AOxQ6/2TgLSKx9p6W7O4rC6qgQ== dependencies: - "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-plugin-utils" "^7.29.7" -"@babel/plugin-bugfix-safari-rest-destructuring-rhs-array@^7.29.3": - version "7.29.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-rest-destructuring-rhs-array/-/plugin-bugfix-safari-rest-destructuring-rhs-array-7.29.3.tgz#2e14f9335803d892ccb67ef487e23cf9726156fe" - integrity sha512-SRS46DFR4HqzUzCVgi90/xMoL+zeBDBvWdKYXSEzh79kXswNFEglUpMKxR04//dPqwYXWUBJ3mpUd933ru9Kmg== +"@babel/plugin-bugfix-safari-rest-destructuring-rhs-array@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-rest-destructuring-rhs-array/-/plugin-bugfix-safari-rest-destructuring-rhs-array-7.29.7.tgz#759a857c46c4d2a6199685cf71070d81ae5f743a" + integrity sha512-oBNVCvnO5tND+xSopWvV8WNGfpTfgP4Zr/YXXSj8zfmcPktp5Ku/aZlsIowgSD4fjmgHn6sGmB9APVsU5zOdhA== dependencies: - "@babel/helper-plugin-utils" "^7.28.6" - "@babel/helper-skip-transparent-expression-wrappers" "^7.27.1" + "@babel/helper-plugin-utils" "^7.29.7" + "@babel/helper-skip-transparent-expression-wrappers" "^7.29.7" -"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.27.1.tgz#e134a5479eb2ba9c02714e8c1ebf1ec9076124fd" - integrity sha512-oO02gcONcD5O1iTLi/6frMJBIwWEHceWGSGqrpCmEL8nogiS6J9PBlE48CaK20/Jx1LuRml9aDftLgdjXT8+Cw== +"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.29.7.tgz#86de98dd8e03836178231ea96c27dab26016a705" + integrity sha512-QQt9qKHZ2sg/kivaLr7lnQr8HVrQDdBNSfCsTjiDxRuX/K5ORyKq+Bu8Xr0cDE3Dfkv0cw28Ve0EKyKMvulkOw== dependencies: - "@babel/helper-plugin-utils" "^7.27.1" - "@babel/helper-skip-transparent-expression-wrappers" "^7.27.1" - "@babel/plugin-transform-optional-chaining" "^7.27.1" + "@babel/helper-plugin-utils" "^7.29.7" + "@babel/helper-skip-transparent-expression-wrappers" "^7.29.7" + "@babel/plugin-transform-optional-chaining" "^7.29.7" -"@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@^7.28.6": - version "7.28.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.28.6.tgz#0e8289cec28baaf05d54fd08d81ae3676065f69f" - integrity sha512-a0aBScVTlNaiUe35UtfxAN7A/tehvvG4/ByO6+46VPKTRSlfnAFsgKy0FUh+qAkQrDTmhDkT+IBOKlOoMUxQ0g== +"@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.29.7.tgz#f5d892681dbf4b08753436a5e55000d5ba728d6d" + integrity sha512-pn6QacGLgvCcwc+syUhKE/qSjV2D1IHDB84RNxWYSt1mW3K/SCtjinZ2p0cETJxAWBjPy3K/1lHwG5BjjPxNlw== dependencies: - "@babel/helper-plugin-utils" "^7.28.6" - "@babel/traverse" "^7.28.6" + "@babel/helper-plugin-utils" "^7.29.7" + "@babel/traverse" "^7.29.7" "@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2": version "7.21.0-placeholder-for-preset-env.2" @@ -436,33 +436,33 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-import-assertions@^7.28.6": - version "7.28.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.28.6.tgz#ae9bc1923a6ba527b70104dd2191b0cd872c8507" - integrity sha512-pSJUpFHdx9z5nqTSirOCMtYVP2wFgoWhP0p3g8ONK/4IHhLIBd0B9NYqAvIUAhq+OkhO4VM1tENCt0cjlsNShw== +"@babel/plugin-syntax-import-assertions@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.29.7.tgz#c5cd868505269126cc18882e1f01f7b0e0e24b4e" + integrity sha512-/An1OCBN93thpBAGyfsK2pcf0jvju1SAtKkL2Ny++B5Sy6sqgzXDQH1cZxWbF96Wuk+bn41MDA9bLd4VVAw6rw== dependencies: - "@babel/helper-plugin-utils" "^7.28.6" + "@babel/helper-plugin-utils" "^7.29.7" -"@babel/plugin-syntax-import-attributes@^7.28.6": - version "7.28.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.28.6.tgz#b71d5914665f60124e133696f17cd7669062c503" - integrity sha512-jiLC0ma9XkQT3TKJ9uYvlakm66Pamywo+qwL+oL8HJOvc6TWdZXVfhqJr8CCzbSGUAbDOzlGHJC1U+vRfLQDvw== +"@babel/plugin-syntax-import-attributes@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.29.7.tgz#6115264516e95ead0f35a41710906612e447f605" + integrity sha512-zGYcYfq/WmZ4V+kBIXQon9dSSc8ircGZqw9ZaNhhGj9nZkeBu1jHLBDQqYYi5WA9uawvA2sIMbry2nCFhf5Djg== dependencies: - "@babel/helper-plugin-utils" "^7.28.6" + "@babel/helper-plugin-utils" "^7.29.7" -"@babel/plugin-syntax-jsx@^7.27.1", "@babel/plugin-syntax-jsx@^7.28.6": - version "7.28.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.28.6.tgz#f8ca28bbd84883b5fea0e447c635b81ba73997ee" - integrity sha512-wgEmr06G6sIpqr8YDwA2dSRTE3bJ+V0IfpzfSY3Lfgd7YWOaAdlykvJi13ZKBt8cZHfgH1IXN+CL656W3uUa4w== +"@babel/plugin-syntax-jsx@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.29.7.tgz#622c16f9ad63782fe6e83dadc7e40330744b7f1e" + integrity sha512-TSu8+mHCoEaaCDEZ0I3+6mvTBYR4PCxQwf2z9/r5Tbztv6NaLR3B9thGTTxX2WGuGHJqRiAbKPeGTJ5XWXVg6A== dependencies: - "@babel/helper-plugin-utils" "^7.28.6" + "@babel/helper-plugin-utils" "^7.29.7" -"@babel/plugin-syntax-typescript@^7.28.6": - version "7.28.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.28.6.tgz#c7b2ddf1d0a811145b1de800d1abd146af92e3a2" - integrity sha512-+nDNmQye7nlnuuHDboPbGm00Vqg3oO8niRRL27/4LYHUsHYh0zJ1xWOz0uRwNFmM1Avzk8wZbc6rdiYhomzv/A== +"@babel/plugin-syntax-typescript@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.29.7.tgz#7c29388932313ed58413a0343048d75d92fb5b24" + integrity sha512-ngr+82Sh0xMz25TPCZi+nC2iTzjfCdWS2ONXTp/PtSCHCgaCNBpdMqgvJ2ccdLlClVZ7sisIgB914j/JFe+RZA== dependencies: - "@babel/helper-plugin-utils" "^7.28.6" + "@babel/helper-plugin-utils" "^7.29.7" "@babel/plugin-syntax-unicode-sets-regex@^7.18.6": version "7.18.6" @@ -472,536 +472,536 @@ "@babel/helper-create-regexp-features-plugin" "^7.18.6" "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-arrow-functions@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.27.1.tgz#6e2061067ba3ab0266d834a9f94811196f2aba9a" - integrity sha512-8Z4TGic6xW70FKThA5HYEKKyBpOOsucTOD1DjU3fZxDg+K3zBJcXMFnt/4yQiZnf5+MiOMSXQ9PaEK/Ilh1DeA== +"@babel/plugin-transform-arrow-functions@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.29.7.tgz#d651343f562c03f47951bd1802195d0e10605f27" + integrity sha512-N7zArUXWzAMzm+/N0uPBeVB3Fam5lMxtUwMmDK5f/IBBS7a7p1qeUoxd/6CckXoxUdgsntq1Dh8xNW06maZbDQ== dependencies: - "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-plugin-utils" "^7.29.7" -"@babel/plugin-transform-async-generator-functions@^7.29.0": - version "7.29.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.29.0.tgz#63ed829820298f0bf143d5a4a68fb8c06ffd742f" - integrity sha512-va0VdWro4zlBr2JsXC+ofCPB2iG12wPtVGTWFx2WLDOM3nYQZZIGP82qku2eW/JR83sD+k2k+CsNtyEbUqhU6w== +"@babel/plugin-transform-async-generator-functions@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.29.7.tgz#a5365617921d82a1fee33124a1102bb38a1e677d" + integrity sha512-d98gXZkgswvkyohMBABkhm3GeXhYj8psWfwQ2C7gtfrKGTykQa/iOIi+JJhwMjPlZ6Vm2XN+DCf3Es1EoG4ZLA== dependencies: - "@babel/helper-plugin-utils" "^7.28.6" - "@babel/helper-remap-async-to-generator" "^7.27.1" - "@babel/traverse" "^7.29.0" + "@babel/helper-plugin-utils" "^7.29.7" + "@babel/helper-remap-async-to-generator" "^7.29.7" + "@babel/traverse" "^7.29.7" -"@babel/plugin-transform-async-to-generator@^7.28.6": - version "7.28.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.28.6.tgz#bd97b42237b2d1bc90d74bcb486c39be5b4d7e77" - integrity sha512-ilTRcmbuXjsMmcZ3HASTe4caH5Tpo93PkTxF9oG2VZsSWsahydmcEHhix9Ik122RcTnZnUzPbmux4wh1swfv7g== +"@babel/plugin-transform-async-to-generator@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.29.7.tgz#3b5e8f1fb58133cf701bcf0baaf6f01bfd1a8889" + integrity sha512-pcUb2SS+RMo9TWVBwKGI5ShtoG7R+zBsFmCKDa6fe8c+hPr3XJlZgoE5j6i8W7gDjhyvy+85vmYexanvXh3d1w== dependencies: - "@babel/helper-module-imports" "^7.28.6" - "@babel/helper-plugin-utils" "^7.28.6" - "@babel/helper-remap-async-to-generator" "^7.27.1" + "@babel/helper-module-imports" "^7.29.7" + "@babel/helper-plugin-utils" "^7.29.7" + "@babel/helper-remap-async-to-generator" "^7.29.7" -"@babel/plugin-transform-block-scoped-functions@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.27.1.tgz#558a9d6e24cf72802dd3b62a4b51e0d62c0f57f9" - integrity sha512-cnqkuOtZLapWYZUYM5rVIdv1nXYuFVIltZ6ZJ7nIj585QsjKM5dhL2Fu/lICXZ1OyIAFc7Qy+bvDAtTXqGrlhg== +"@babel/plugin-transform-block-scoped-functions@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.29.7.tgz#96d292634434082d6687bcdb81139affedf77e8c" + integrity sha512-cUSmjh72N+rN4PrkFlN1dJwNCwjVp5d38/CQrEsFggkD10UiFlBFgdH3tv5dNsLuHY+3S8db2xCHjhZcv5WgvA== dependencies: - "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-plugin-utils" "^7.29.7" -"@babel/plugin-transform-block-scoping@^7.28.6": - version "7.28.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.28.6.tgz#e1ef5633448c24e76346125c2534eeb359699a99" - integrity sha512-tt/7wOtBmwHPNMPu7ax4pdPz6shjFrmHDghvNC+FG9Qvj7D6mJcoRQIF5dy4njmxR941l6rgtvfSB2zX3VlUIw== +"@babel/plugin-transform-block-scoping@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.29.7.tgz#baa376691ae16244cd14335422fca6900f54e17d" + integrity sha512-ONyr4+AZhKh8yKWInVxU9AXA9EbsyeLcL6V0dJy6M2/62vuvpGm29zzuymbTpdc451GEpDIdAyPLP3r+P61yKQ== dependencies: - "@babel/helper-plugin-utils" "^7.28.6" + "@babel/helper-plugin-utils" "^7.29.7" -"@babel/plugin-transform-class-properties@^7.28.6": - version "7.28.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.28.6.tgz#d274a4478b6e782d9ea987fda09bdb6d28d66b72" - integrity sha512-dY2wS3I2G7D697VHndN91TJr8/AAfXQNt5ynCTI/MpxMsSzHp+52uNivYT5wCPax3whc47DR8Ba7cmlQMg24bw== +"@babel/plugin-transform-class-properties@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.29.7.tgz#034897b8a21beec163332fac2de235b14409abdf" + integrity sha512-GtcpjFvanPfzNQi3eTitsCqtRRmmqzpy/A+yhTR1HaZo1Ly3EA8ZXxlPyHdR8/IuRMYc3E4wdGBewB2QKQjAaA== dependencies: - "@babel/helper-create-class-features-plugin" "^7.28.6" - "@babel/helper-plugin-utils" "^7.28.6" + "@babel/helper-create-class-features-plugin" "^7.29.7" + "@babel/helper-plugin-utils" "^7.29.7" -"@babel/plugin-transform-class-static-block@^7.28.6": - version "7.28.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.28.6.tgz#1257491e8259c6d125ac4d9a6f39f9d2bf3dba70" - integrity sha512-rfQ++ghVwTWTqQ7w8qyDxL1XGihjBss4CmTgGRCTAC9RIbhVpyp4fOeZtta0Lbf+dTNIVJer6ych2ibHwkZqsQ== +"@babel/plugin-transform-class-static-block@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.29.7.tgz#fed8efd19f3dd3e1114ee390707c70912778fd7c" + integrity sha512-kibJgmEdX2iMwsHY2tSZNDgj8PwIlCQz7FK9KuGKO8zsuoUwSEhoNnNVp/emKWrbY4HeO6kkXfdMqRKKKXBm2A== dependencies: - "@babel/helper-create-class-features-plugin" "^7.28.6" - "@babel/helper-plugin-utils" "^7.28.6" + "@babel/helper-create-class-features-plugin" "^7.29.7" + "@babel/helper-plugin-utils" "^7.29.7" -"@babel/plugin-transform-classes@^7.28.6": - version "7.28.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.28.6.tgz#8f6fb79ba3703978e701ce2a97e373aae7dda4b7" - integrity sha512-EF5KONAqC5zAqT783iMGuM2ZtmEBy+mJMOKl2BCvPZ2lVrwvXnB6o+OBWCS+CoeCCpVRF2sA2RBKUxvT8tQT5Q== +"@babel/plugin-transform-classes@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.29.7.tgz#61d3e5aaae0c838acc3204d9db7c8dc05c25815b" + integrity sha512-qV0OGGBVacduzQHE649JyCneOFI/maT+YKsO+K4Yi3xv2wTPNjM/W2o2gdzMwEAZz7fXNTHAe0NcSg30bIN69g== dependencies: - "@babel/helper-annotate-as-pure" "^7.27.3" - "@babel/helper-compilation-targets" "^7.28.6" - "@babel/helper-globals" "^7.28.0" - "@babel/helper-plugin-utils" "^7.28.6" - "@babel/helper-replace-supers" "^7.28.6" - "@babel/traverse" "^7.28.6" + "@babel/helper-annotate-as-pure" "^7.29.7" + "@babel/helper-compilation-targets" "^7.29.7" + "@babel/helper-globals" "^7.29.7" + "@babel/helper-plugin-utils" "^7.29.7" + "@babel/helper-replace-supers" "^7.29.7" + "@babel/traverse" "^7.29.7" -"@babel/plugin-transform-computed-properties@^7.28.6": - version "7.28.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.28.6.tgz#936824fc71c26cb5c433485776d79c8e7b0202d2" - integrity sha512-bcc3k0ijhHbc2lEfpFHgx7eYw9KNXqOerKWfzbxEHUGKnS3sz9C4CNL9OiFN1297bDNfUiSO7DaLzbvHQQQ1BQ== +"@babel/plugin-transform-computed-properties@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.29.7.tgz#95028787ca31901b9a20b5c6d9605c32346f55ad" + integrity sha512-RK7/IyU5phpuCdBAuig5VkzG/EnbDaui5SQGdU9BFrHdV+mV4cUjLMQ9lJDjLNtWHsqtiefpGZUXQP2BiTYMsA== dependencies: - "@babel/helper-plugin-utils" "^7.28.6" - "@babel/template" "^7.28.6" + "@babel/helper-plugin-utils" "^7.29.7" + "@babel/template" "^7.29.7" -"@babel/plugin-transform-destructuring@^7.28.5": - version "7.28.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.28.5.tgz#b8402764df96179a2070bb7b501a1586cf8ad7a7" - integrity sha512-Kl9Bc6D0zTUcFUvkNuQh4eGXPKKNDOJQXVyyM4ZAQPMveniJdxi8XMJwLo+xSoW3MIq81bD33lcUe9kZpl0MCw== +"@babel/plugin-transform-destructuring@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.29.7.tgz#5781ec6947852e27b64c1165f0db431f408090e4" + integrity sha512-iPX8aD6H9zV5s7ZsqTdNocPN/MGQ5sSMnElKrktxjJRMnB2jN/1p2+R7GkfD6CAYoVFqy5A4XnSIUeGgJzIWpg== dependencies: - "@babel/helper-plugin-utils" "^7.27.1" - "@babel/traverse" "^7.28.5" + "@babel/helper-plugin-utils" "^7.29.7" + "@babel/traverse" "^7.29.7" -"@babel/plugin-transform-dotall-regex@^7.28.6": - version "7.28.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.28.6.tgz#def31ed84e0fb6e25c71e53c124e7b76a4ab8e61" - integrity sha512-SljjowuNKB7q5Oayv4FoPzeB74g3QgLt8IVJw9ADvWy3QnUb/01aw8I4AVv8wYnPvQz2GDDZ/g3GhcNyDBI4Bg== +"@babel/plugin-transform-dotall-regex@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.29.7.tgz#b203de9740e4c7ff6b55ce436ed5313b88d70af8" + integrity sha512-3qc18hsD2RdZiyJNDNc7HQpv6xbncwh8FYtxNFFzclSyh/trPD9KkVR9BDECUjDLvb7yJVF15GfYUuC+LMkkiQ== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.28.5" - "@babel/helper-plugin-utils" "^7.28.6" + "@babel/helper-create-regexp-features-plugin" "^7.29.7" + "@babel/helper-plugin-utils" "^7.29.7" -"@babel/plugin-transform-duplicate-keys@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.27.1.tgz#f1fbf628ece18e12e7b32b175940e68358f546d1" - integrity sha512-MTyJk98sHvSs+cvZ4nOauwTTG1JeonDjSGvGGUNHreGQns+Mpt6WX/dVzWBHgg+dYZhkC4X+zTDfkTU+Vy9y7Q== +"@babel/plugin-transform-duplicate-keys@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.29.7.tgz#8f3fe721835cb7a433420841dae90afc962ea7ae" + integrity sha512-6IvRRriEMqnBwD6chtxdLpMYCHWEzN+oL5cyQtjykya19UgzbmKhxmhZgKC/LHxS2nYr9Q/qYPZ5Lr6jOL9+yQ== dependencies: - "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-plugin-utils" "^7.29.7" -"@babel/plugin-transform-duplicate-named-capturing-groups-regex@^7.29.0": - version "7.29.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.29.0.tgz#8014b8a6cfd0e7b92762724443bf0d2400f26df1" - integrity sha512-zBPcW2lFGxdiD8PUnPwJjag2J9otbcLQzvbiOzDxpYXyCuYX9agOwMPGn1prVH0a4qzhCKu24rlH4c1f7yA8rw== +"@babel/plugin-transform-duplicate-named-capturing-groups-regex@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.29.7.tgz#dc6c405e55c01b7657e1827a25332c4ac17e9cac" + integrity sha512-2wiIyo2BjtgU7HufSeDnL9L2O7zr8jmhFKuSr65VpRkUiRKRNpb0mdlk56+XPPKoIrfHqzbMuglDvZun0RISsA== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.28.5" - "@babel/helper-plugin-utils" "^7.28.6" + "@babel/helper-create-regexp-features-plugin" "^7.29.7" + "@babel/helper-plugin-utils" "^7.29.7" -"@babel/plugin-transform-dynamic-import@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.27.1.tgz#4c78f35552ac0e06aa1f6e3c573d67695e8af5a4" - integrity sha512-MHzkWQcEmjzzVW9j2q8LGjwGWpG2mjwaaB0BNQwst3FIjqsg8Ct/mIZlvSPJvfi9y2AC8mi/ktxbFVL9pZ1I4A== +"@babel/plugin-transform-dynamic-import@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.29.7.tgz#a83a6faec5bab5b619adf9d0eac6c1c270123c2a" + integrity sha512-giOlEm/EFjfjr+te9NsdjkUo2v4f8rS/SXPumRVHAtbNcyNlvtREkU1dZzaIDclNpnaVhlCqRdFKhJBjBikzLg== dependencies: - "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-plugin-utils" "^7.29.7" -"@babel/plugin-transform-explicit-resource-management@^7.28.6": - version "7.28.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-explicit-resource-management/-/plugin-transform-explicit-resource-management-7.28.6.tgz#dd6788f982c8b77e86779d1d029591e39d9d8be7" - integrity sha512-Iao5Konzx2b6g7EPqTy40UZbcdXE126tTxVFr/nAIj+WItNxjKSYTEw3RC+A2/ZetmdJsgueL1KhaMCQHkLPIg== +"@babel/plugin-transform-explicit-resource-management@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-explicit-resource-management/-/plugin-transform-explicit-resource-management-7.29.7.tgz#65c8b9f76ec915b02a0e1df703125a0fca58abaa" + integrity sha512-Rstj7coNz8sE+7Ju7ihpHLI564lsK5pUpNNlvptCIC/16E/S5hbl6n3kESPKdNRmqEWlpn5xpS5Q2dvXBsySLw== dependencies: - "@babel/helper-plugin-utils" "^7.28.6" - "@babel/plugin-transform-destructuring" "^7.28.5" + "@babel/helper-plugin-utils" "^7.29.7" + "@babel/plugin-transform-destructuring" "^7.29.7" -"@babel/plugin-transform-exponentiation-operator@^7.28.6": - version "7.28.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.28.6.tgz#5e477eb7eafaf2ab5537a04aaafcf37e2d7f1091" - integrity sha512-WitabqiGjV/vJ0aPOLSFfNY1u9U3R7W36B03r5I2KoNix+a3sOhJ3pKFB3R5It9/UiK78NiO0KE9P21cMhlPkw== +"@babel/plugin-transform-exponentiation-operator@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.29.7.tgz#00bf002fde8794356171f5d4df200f6bc0d5a303" + integrity sha512-zFpMOTLZBdW5LfObqcSbL6kefg4R4eLdmvS0wbN9M6D5Mym/sKm9toOoWyVOa+xDjvCnuWcHls2YonXwHvH3CQ== dependencies: - "@babel/helper-plugin-utils" "^7.28.6" + "@babel/helper-plugin-utils" "^7.29.7" -"@babel/plugin-transform-export-namespace-from@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.27.1.tgz#71ca69d3471edd6daa711cf4dfc3400415df9c23" - integrity sha512-tQvHWSZ3/jH2xuq/vZDy0jNn+ZdXJeM8gHvX4lnJmsc3+50yPlWdZXIc5ay+umX+2/tJIqHqiEqcJvxlmIvRvQ== +"@babel/plugin-transform-export-namespace-from@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.29.7.tgz#d6014f45cec61d7691335c6c9804204bee801d51" + integrity sha512-24B2nOy2TeJSMheqwPD4DDQOV/elLSIlKxjZt4i05H5AgdPdWR3n18HnNrcJ+j76WJd9gbwb9jPjNYUy6RautA== dependencies: - "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-plugin-utils" "^7.29.7" -"@babel/plugin-transform-for-of@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.27.1.tgz#bc24f7080e9ff721b63a70ac7b2564ca15b6c40a" - integrity sha512-BfbWFFEJFQzLCQ5N8VocnCtA8J1CLkNTe2Ms2wocj75dd6VpiqS5Z5quTYcUoo4Yq+DN0rtikODccuv7RU81sw== +"@babel/plugin-transform-for-of@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.29.7.tgz#c65a678592117717aacdb10c1b73a9cb85e830be" + integrity sha512-zeSIHh0+E1Um1WJRXCFlHQYu2ieJNdivLLjlBEp+dIBu3S51n+SZZmIXjxnItw6pz56Cn+KvK68BIBVsxq2JiQ== dependencies: - "@babel/helper-plugin-utils" "^7.27.1" - "@babel/helper-skip-transparent-expression-wrappers" "^7.27.1" + "@babel/helper-plugin-utils" "^7.29.7" + "@babel/helper-skip-transparent-expression-wrappers" "^7.29.7" -"@babel/plugin-transform-function-name@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.27.1.tgz#4d0bf307720e4dce6d7c30fcb1fd6ca77bdeb3a7" - integrity sha512-1bQeydJF9Nr1eBCMMbC+hdwmRlsv5XYOMu03YSWFwNs0HsAmtSxxF1fyuYPqemVldVyFmlCU7w8UE14LupUSZQ== +"@babel/plugin-transform-function-name@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.29.7.tgz#8b87f8a7504dbcd96135167e3fc4f61126a7bd86" + integrity sha512-otRWaHXE6fbAGkePvaj/kvs3HsqXfPhlnzwSOlnFgbqCPMd975dW+4wZ00WFBt+/YlBGcJwNrARQTOJOb4ZrIg== dependencies: - "@babel/helper-compilation-targets" "^7.27.1" - "@babel/helper-plugin-utils" "^7.27.1" - "@babel/traverse" "^7.27.1" + "@babel/helper-compilation-targets" "^7.29.7" + "@babel/helper-plugin-utils" "^7.29.7" + "@babel/traverse" "^7.29.7" -"@babel/plugin-transform-json-strings@^7.28.6": - version "7.28.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.28.6.tgz#4c8c15b2dc49e285d110a4cf3dac52fd2dfc3038" - integrity sha512-Nr+hEN+0geQkzhbdgQVPoqr47lZbm+5fCUmO70722xJZd0Mvb59+33QLImGj6F+DkK3xgDi1YVysP8whD6FQAw== +"@babel/plugin-transform-json-strings@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.29.7.tgz#f57d63dcc05b4481c281acedcd8fc4e3e439a1d4" + integrity sha512-RRnE2+eon1rJAq8MnoF1b5kTpY1vU88twHcvcKMrsqP/jxIRqDVs9iJB5fqPuqyeFAW0wJo4MlUIPpQCq/aRsg== dependencies: - "@babel/helper-plugin-utils" "^7.28.6" + "@babel/helper-plugin-utils" "^7.29.7" -"@babel/plugin-transform-literals@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.27.1.tgz#baaefa4d10a1d4206f9dcdda50d7d5827bb70b24" - integrity sha512-0HCFSepIpLTkLcsi86GG3mTUzxV5jpmbv97hTETW3yzrAij8aqlD36toB1D0daVFJM8NK6GvKO0gslVQmm+zZA== +"@babel/plugin-transform-literals@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.29.7.tgz#b90bd47463326c2a9d779e1bd5e1f88b9f421921" + integrity sha512-DZ/oLP21ZuWx1vKqnoNv6/tvEK48AQOBRai40CX9dTjGluvT/YZCyY3rryDtyUqCEoyNroy5KKPwX2iQCiRvyw== dependencies: - "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-plugin-utils" "^7.29.7" -"@babel/plugin-transform-logical-assignment-operators@^7.28.6": - version "7.28.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.28.6.tgz#53028a3d77e33c50ef30a8fce5ca17065936e605" - integrity sha512-+anKKair6gpi8VsM/95kmomGNMD0eLz1NQ8+Pfw5sAwWH9fGYXT50E55ZpV0pHUHWf6IUTWPM+f/7AAff+wr9A== +"@babel/plugin-transform-logical-assignment-operators@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.29.7.tgz#9b29425adf5c794967aabe4b046a046a167bac2f" + integrity sha512-A0H91hh6W8MFRkp5TqJmMr39jzGD1A1E1Ysiv2O06Sfbhkapm+XyIzxWCEh5kqwOZ1/8QZ0dY3SeQ7XBqfJd5Q== dependencies: - "@babel/helper-plugin-utils" "^7.28.6" + "@babel/helper-plugin-utils" "^7.29.7" -"@babel/plugin-transform-member-expression-literals@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.27.1.tgz#37b88ba594d852418e99536f5612f795f23aeaf9" - integrity sha512-hqoBX4dcZ1I33jCSWcXrP+1Ku7kdqXf1oeah7ooKOIiAdKQ+uqftgCFNOSzA5AMS2XIHEYeGFg4cKRCdpxzVOQ== +"@babel/plugin-transform-member-expression-literals@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.29.7.tgz#1281689fa2fefc17b110d21ebafd0fe9402d5309" + integrity sha512-hl1kwFZCCiDyfH25Xmco9jTrkPgnS9pmOzSG7W5I4SaGbLeqKv417hcU2RKmaxoPEgsoJh7ZPOrnPGq99bHoUg== dependencies: - "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-plugin-utils" "^7.29.7" -"@babel/plugin-transform-modules-amd@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.27.1.tgz#a4145f9d87c2291fe2d05f994b65dba4e3e7196f" - integrity sha512-iCsytMg/N9/oFq6n+gFTvUYDZQOMK5kEdeYxmxt91fcJGycfxVP9CnrxoliM0oumFERba2i8ZtwRUCMhvP1LnA== +"@babel/plugin-transform-modules-amd@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.29.7.tgz#f05ca662c8a1dc4be2f337af9c7e80369c942d6c" + integrity sha512-fxtQoH3m5ywUSIfaH0FGCzWu4McsYon5bD3K4XnskC7f+OyQMj7rsOMi4NvvmJ83WwBAg4UCe+ov4VZlqEvyew== dependencies: - "@babel/helper-module-transforms" "^7.27.1" - "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-module-transforms" "^7.29.7" + "@babel/helper-plugin-utils" "^7.29.7" -"@babel/plugin-transform-modules-commonjs@^7.27.1", "@babel/plugin-transform-modules-commonjs@^7.28.6": - version "7.28.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.28.6.tgz#c0232e0dfe66a734cc4ad0d5e75fc3321b6fdef1" - integrity sha512-jppVbf8IV9iWWwWTQIxJMAJCWBuuKx71475wHwYytrRGQ2CWiDvYlADQno3tcYpS/T2UUWFQp3nVtYfK/YBQrA== +"@babel/plugin-transform-modules-commonjs@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.29.7.tgz#70e6835abf2663dafbe94b8ef1f51de7351ef135" + integrity sha512-j0vCldybPC5b5dwCQOJ21uKtHzt7hxLygJTg9eF1ScfaikEDNfzn94XoW5Fi+seBR0nCyL23xaBFFkq7dTM8XQ== dependencies: - "@babel/helper-module-transforms" "^7.28.6" - "@babel/helper-plugin-utils" "^7.28.6" + "@babel/helper-module-transforms" "^7.29.7" + "@babel/helper-plugin-utils" "^7.29.7" -"@babel/plugin-transform-modules-systemjs@^7.29.4": - version "7.29.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.29.4.tgz#f621105da99919c15cf4bde6fcc7346ef95e7b20" - integrity sha512-N7QmZ0xRZfjHOfZeQLJjwgX2zS9pdGHSVl/cjSGlo4dXMqvurfxXDMKY4RqEKzPozV78VMcd0lxyG13mlbKc4w== +"@babel/plugin-transform-modules-systemjs@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.29.7.tgz#e575dd2ab9882906de120ff7dc9dee9914d8b6f3" + integrity sha512-TM2ZcQLoG2/y4HODiStCo10DibYhWhGWAwVv+EQKmG/7GFl0N+AAmUiXOMKM+aiJ9XBJ9AHVZBvTzMnJ2sM3cQ== dependencies: - "@babel/helper-module-transforms" "^7.28.6" - "@babel/helper-plugin-utils" "^7.28.6" - "@babel/helper-validator-identifier" "^7.28.5" - "@babel/traverse" "^7.29.0" + "@babel/helper-module-transforms" "^7.29.7" + "@babel/helper-plugin-utils" "^7.29.7" + "@babel/helper-validator-identifier" "^7.29.7" + "@babel/traverse" "^7.29.7" -"@babel/plugin-transform-modules-umd@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.27.1.tgz#63f2cf4f6dc15debc12f694e44714863d34cd334" - integrity sha512-iQBE/xC5BV1OxJbp6WG7jq9IWiD+xxlZhLrdwpPkTX3ydmXdvoCpyfJN7acaIBZaOqTfr76pgzqBJflNbeRK+w== +"@babel/plugin-transform-modules-umd@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.29.7.tgz#391d1c0215aca6307257f2f608598dfe55feb6cf" + integrity sha512-B4UkaTK3QpgCwJnrxKfMPKdo92CN7OKXAlpAAnM3UPu0Q0lCCk57ylA9AJbRy2v8dDKOPAAWcoR6CMyeoHwRCA== dependencies: - "@babel/helper-module-transforms" "^7.27.1" - "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-module-transforms" "^7.29.7" + "@babel/helper-plugin-utils" "^7.29.7" -"@babel/plugin-transform-named-capturing-groups-regex@^7.29.0": - version "7.29.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.29.0.tgz#a26cd51e09c4718588fc4cce1c5d1c0152102d6a" - integrity sha512-1CZQA5KNAD6ZYQLPw7oi5ewtDNxH/2vuCh+6SmvgDfhumForvs8a1o9n0UrEoBD8HU4djO2yWngTQlXl1NDVEQ== +"@babel/plugin-transform-named-capturing-groups-regex@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.29.7.tgz#21e75d847b31189842fa7a77703722ed4b43d27d" + integrity sha512-vuFoLwr4qnv2xbZ16SQd6uPcH5FNrLHhk/Jzo++0XJFcaDsr4gjJVg6j398oMHiC+83k/GiBzviwF5KBJkPUtQ== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.28.5" - "@babel/helper-plugin-utils" "^7.28.6" + "@babel/helper-create-regexp-features-plugin" "^7.29.7" + "@babel/helper-plugin-utils" "^7.29.7" -"@babel/plugin-transform-new-target@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.27.1.tgz#259c43939728cad1706ac17351b7e6a7bea1abeb" - integrity sha512-f6PiYeqXQ05lYq3TIfIDu/MtliKUbNwkGApPUvyo6+tc7uaR4cPjPe7DFPr15Uyycg2lZU6btZ575CuQoYh7MQ== +"@babel/plugin-transform-new-target@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.29.7.tgz#714147ce7947e1b49cbd84137ca2e75e92b2a067" + integrity sha512-fEo41GmsOUhOBlw8ioo6zvjX5Xc2Lqkzlyfqbpsk3eB6TReV18uhxZ0esfEokVbY2+PVJAQHNKxER6lGrzNd3A== dependencies: - "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-plugin-utils" "^7.29.7" -"@babel/plugin-transform-nullish-coalescing-operator@^7.28.6": - version "7.28.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.28.6.tgz#9bc62096e90ab7a887f3ca9c469f6adec5679757" - integrity sha512-3wKbRgmzYbw24mDJXT7N+ADXw8BC/imU9yo9c9X9NKaLF1fW+e5H1U5QjMUBe4Qo4Ox/o++IyUkl1sVCLgevKg== +"@babel/plugin-transform-nullish-coalescing-operator@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.29.7.tgz#8a54cdf88c3f50433a6173117a286195b67714cc" + integrity sha512-idmp1dFaekP9GbcMvG24Kvw2BfhFZjHnNJCkV4WuIY4PskJzwI3f1N5OdgYke38T7rftO6ERulFRn2cFeZwRkg== dependencies: - "@babel/helper-plugin-utils" "^7.28.6" + "@babel/helper-plugin-utils" "^7.29.7" -"@babel/plugin-transform-numeric-separator@^7.28.6": - version "7.28.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.28.6.tgz#1310b0292762e7a4a335df5f580c3320ee7d9e9f" - integrity sha512-SJR8hPynj8outz+SlStQSwvziMN4+Bq99it4tMIf5/Caq+3iOc0JtKyse8puvyXkk3eFRIA5ID/XfunGgO5i6w== +"@babel/plugin-transform-numeric-separator@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.29.7.tgz#0266d5cd42ab87ec40fee45a4e36483cfdcbc66a" + integrity sha512-zR7fv/z14OjgHl4AgRtkDBvBMhIzCxqV/qN/2BCRC7LjFwvuzjYe7gDWxC4Wl/SNsLM6SE1IWvRPYMgSJaUvNw== dependencies: - "@babel/helper-plugin-utils" "^7.28.6" + "@babel/helper-plugin-utils" "^7.29.7" -"@babel/plugin-transform-object-rest-spread@^7.28.6": - version "7.28.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.28.6.tgz#fdd4bc2d72480db6ca42aed5c051f148d7b067f7" - integrity sha512-5rh+JR4JBC4pGkXLAcYdLHZjXudVxWMXbB6u6+E9lRL5TrGVbHt1TjxGbZ8CkmYw9zjkB7jutzOROArsqtncEA== +"@babel/plugin-transform-object-rest-spread@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.29.7.tgz#e0d5060241803922c545676613cc8acbbda0d266" + integrity sha512-Ld98jn4c0smUywL57m7SgsHq3OpThOa6LqZJif3G6jYOovPleoFhVrBJ1WegRApSFB2wu4+RelAj9AC9G08Z4A== dependencies: - "@babel/helper-compilation-targets" "^7.28.6" - "@babel/helper-plugin-utils" "^7.28.6" - "@babel/plugin-transform-destructuring" "^7.28.5" - "@babel/plugin-transform-parameters" "^7.27.7" - "@babel/traverse" "^7.28.6" + "@babel/helper-compilation-targets" "^7.29.7" + "@babel/helper-plugin-utils" "^7.29.7" + "@babel/plugin-transform-destructuring" "^7.29.7" + "@babel/plugin-transform-parameters" "^7.29.7" + "@babel/traverse" "^7.29.7" -"@babel/plugin-transform-object-super@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.27.1.tgz#1c932cd27bf3874c43a5cac4f43ebf970c9871b5" - integrity sha512-SFy8S9plRPbIcxlJ8A6mT/CxFdJx/c04JEctz4jf8YZaVS2px34j7NXRrlGlHkN/M2gnpL37ZpGRGVFLd3l8Ng== +"@babel/plugin-transform-object-super@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.29.7.tgz#e89283d14fa3c35817d4493ffc6bc649aa10e4eb" + integrity sha512-Ea/diGcw0twB5IlZPO5sgET6fJsLJqPABqTuFWIR+iMPGPZJkATEIWx0wa+aEQ5UY1CBQyP/gkAiLEqn1vBiQA== dependencies: - "@babel/helper-plugin-utils" "^7.27.1" - "@babel/helper-replace-supers" "^7.27.1" + "@babel/helper-plugin-utils" "^7.29.7" + "@babel/helper-replace-supers" "^7.29.7" -"@babel/plugin-transform-optional-catch-binding@^7.28.6": - version "7.28.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.28.6.tgz#75107be14c78385978201a49c86414a150a20b4c" - integrity sha512-R8ja/Pyrv0OGAvAXQhSTmWyPJPml+0TMqXlO5w+AsMEiwb2fg3WkOvob7UxFSL3OIttFSGSRFKQsOhJ/X6HQdQ== +"@babel/plugin-transform-optional-catch-binding@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.29.7.tgz#729664f79985be504eba112c51de9f71d009030b" + integrity sha512-sLsyndxK2VwX6yNUOakMb7Sh553ZTe/vVM1XJ+9Z5aW1ytsc8xOIwmyk05NNjN60vkc5/KqoTH6hB4V41LJhng== dependencies: - "@babel/helper-plugin-utils" "^7.28.6" + "@babel/helper-plugin-utils" "^7.29.7" -"@babel/plugin-transform-optional-chaining@^7.27.1", "@babel/plugin-transform-optional-chaining@^7.28.6": - version "7.28.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.28.6.tgz#926cf150bd421fc8362753e911b4a1b1ce4356cd" - integrity sha512-A4zobikRGJTsX9uqVFdafzGkqD30t26ck2LmOzAuLL8b2x6k3TIqRiT2xVvA9fNmFeTX484VpsdgmKNA0bS23w== +"@babel/plugin-transform-optional-chaining@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.29.7.tgz#b84a1b574b3c73001023092567e16c492b720e51" + integrity sha512-6GM1dhvK3gNODkXcEcMCOLEDCLSoZ/sBbro2Ax8HURyasQ4NshagQixkRFdh5niI6E4gmA/jYI/4aT7rRos3ZQ== dependencies: - "@babel/helper-plugin-utils" "^7.28.6" - "@babel/helper-skip-transparent-expression-wrappers" "^7.27.1" + "@babel/helper-plugin-utils" "^7.29.7" + "@babel/helper-skip-transparent-expression-wrappers" "^7.29.7" -"@babel/plugin-transform-parameters@^7.27.7": - version "7.27.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.27.7.tgz#1fd2febb7c74e7d21cf3b05f7aebc907940af53a" - integrity sha512-qBkYTYCb76RRxUM6CcZA5KRu8K4SM8ajzVeUgVdMVO9NN9uI/GaVmBg/WKJJGnNokV9SY8FxNOVWGXzqzUidBg== +"@babel/plugin-transform-parameters@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.29.7.tgz#a5ddc3b9bfb534814cb8334cbeba47d9cf9db090" + integrity sha512-ZDOBqV/qLYJI0YElr8DcENEyARsFQeESqWXH6gZlghYXuPPjvweuDhP4VyEi4BlUBlLRFZVjxoZDMjxhLW766g== dependencies: - "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-plugin-utils" "^7.29.7" -"@babel/plugin-transform-private-methods@^7.28.6": - version "7.28.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.28.6.tgz#c76fbfef3b86c775db7f7c106fff544610bdb411" - integrity sha512-piiuapX9CRv7+0st8lmuUlRSmX6mBcVeNQ1b4AYzJxfCMuBfB0vBXDiGSmm03pKJw1v6cZ8KSeM+oUnM6yAExg== +"@babel/plugin-transform-private-methods@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.29.7.tgz#cea8bd3ab99533892897a02999d5b752584ad145" + integrity sha512-/6Rz4DK1ETDEM/bWHsPHcaEe7ZaT1EqSXjtSP/L0DijOYuaUhiRiOKcwpZ8P7zR4xXEHc2ITdiCgBm9Tpyv9ug== dependencies: - "@babel/helper-create-class-features-plugin" "^7.28.6" - "@babel/helper-plugin-utils" "^7.28.6" + "@babel/helper-create-class-features-plugin" "^7.29.7" + "@babel/helper-plugin-utils" "^7.29.7" -"@babel/plugin-transform-private-property-in-object@^7.28.6": - version "7.28.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.28.6.tgz#4fafef1e13129d79f1d75ac180c52aafefdb2811" - integrity sha512-b97jvNSOb5+ehyQmBpmhOCiUC5oVK4PMnpRvO7+ymFBoqYjeDHIU9jnrNUuwHOiL9RpGDoKBpSViarV+BU+eVA== +"@babel/plugin-transform-private-property-in-object@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.29.7.tgz#4a2f6be5aba47be7afbdb4cd7903c46edf3a7661" + integrity sha512-+BNo06dnrzdNNqCm1X6YUaVv0DKk8Q+JYcoZfOkLhYWNCXzlwTSRq8zGWayT1csjcpNXV9CQTBRRbmTLZac5cA== dependencies: - "@babel/helper-annotate-as-pure" "^7.27.3" - "@babel/helper-create-class-features-plugin" "^7.28.6" - "@babel/helper-plugin-utils" "^7.28.6" + "@babel/helper-annotate-as-pure" "^7.29.7" + "@babel/helper-create-class-features-plugin" "^7.29.7" + "@babel/helper-plugin-utils" "^7.29.7" -"@babel/plugin-transform-property-literals@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.27.1.tgz#07eafd618800591e88073a0af1b940d9a42c6424" - integrity sha512-oThy3BCuCha8kDZ8ZkgOg2exvPYUlprMukKQXI1r1pJ47NCvxfkEy8vK+r/hT9nF0Aa4H1WUPZZjHTFtAhGfmQ== +"@babel/plugin-transform-property-literals@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.29.7.tgz#d45817cd72f9e134ab1f7fbb79264cfcb85cf636" + integrity sha512-bOMRLQuI0A5ZqHq3OWJ89/rXpJ/NJrbVhXiP4zwPGMs6kpcVsuTUNjwoE30K0Qm3mf48a/TnRYYD6vPNqcg6jA== dependencies: - "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-plugin-utils" "^7.29.7" "@babel/plugin-transform-react-constant-elements@^7.21.3": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.27.1.tgz#6c6b50424e749a6e48afd14cf7b92f98cb9383f9" - integrity sha512-edoidOjl/ZxvYo4lSBOQGDSyToYVkTAwyVoa2tkuYTSmjrB1+uAedoL5iROVLXkxH+vRgA7uP4tMg2pUJpZ3Ug== + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.29.7.tgz#8264440ea2ffc5ec405aebd7eac074815d6e28b1" + integrity sha512-J0wGhKan+rIiE2OhfhRptySLrJ6SjQYM6b6N1FMlhyhCcw1Mig8vQjWchyB+bgHGDvaWo6Diu6CLRMra2uMtmg== dependencies: - "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-plugin-utils" "^7.29.7" -"@babel/plugin-transform-react-display-name@^7.28.0": - version "7.28.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.28.0.tgz#6f20a7295fea7df42eb42fed8f896813f5b934de" - integrity sha512-D6Eujc2zMxKjfa4Zxl4GHMsmhKKZ9VpcqIchJLvwTxad9zWIYulwYItBovpDOoNLISpcZSXoDJ5gaGbQUDqViA== +"@babel/plugin-transform-react-display-name@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.29.7.tgz#bf161a6d750267b79db7ff6f8fb89c3369b02df3" + integrity sha512-+1wdDMGNb4UPeY3Q4L5yLiYe6TXPXubs4NjrgRFw13hPRLJfEMw2Q5OXkee6/IfdqePIeW4Jjwe3aBh7SdKz4Q== dependencies: - "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-plugin-utils" "^7.29.7" -"@babel/plugin-transform-react-jsx-development@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.27.1.tgz#47ff95940e20a3a70e68ad3d4fcb657b647f6c98" - integrity sha512-ykDdF5yI4f1WrAolLqeF3hmYU12j9ntLQl/AOG1HAS21jxyg1Q0/J/tpREuYLfatGdGmXp/3yS0ZA76kOlVq9Q== +"@babel/plugin-transform-react-jsx-development@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.29.7.tgz#64e6aacb5cb43b9e80d3d5f19ddefc158a624f09" + integrity sha512-Xfy3UVMF04+ypnFbkhvfqtmvwfe92qwQdbGZVonhE+6v35GzlofmOnA1szaZqzb9xYWr0nl1e5EMmzi0DNON1g== dependencies: - "@babel/plugin-transform-react-jsx" "^7.27.1" + "@babel/plugin-transform-react-jsx" "^7.29.7" -"@babel/plugin-transform-react-jsx@^7.27.1": - version "7.28.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.28.6.tgz#f51cb70a90b9529fbb71ee1f75ea27b7078eed62" - integrity sha512-61bxqhiRfAACulXSLd/GxqmAedUSrRZIu/cbaT18T1CetkTmtDN15it7i80ru4DVqRK1WMxQhXs+Lf9kajm5Ow== +"@babel/plugin-transform-react-jsx@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.29.7.tgz#3d16a0e5773f079400a8c82a190709cdf92ee204" + integrity sha512-WsZulLVBUHXVj2cUcPVx6UE21TpalB6bHbSFErKT0Ib++ax24jjXe73FqlWvdylFOjiuPHYi6VCcgRad1ItN+A== dependencies: - "@babel/helper-annotate-as-pure" "^7.27.3" - "@babel/helper-module-imports" "^7.28.6" - "@babel/helper-plugin-utils" "^7.28.6" - "@babel/plugin-syntax-jsx" "^7.28.6" - "@babel/types" "^7.28.6" + "@babel/helper-annotate-as-pure" "^7.29.7" + "@babel/helper-module-imports" "^7.29.7" + "@babel/helper-plugin-utils" "^7.29.7" + "@babel/plugin-syntax-jsx" "^7.29.7" + "@babel/types" "^7.29.7" -"@babel/plugin-transform-react-pure-annotations@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.27.1.tgz#339f1ce355eae242e0649f232b1c68907c02e879" - integrity sha512-JfuinvDOsD9FVMTHpzA/pBLisxpv1aSf+OIV8lgH3MuWrks19R27e6a6DipIg4aX1Zm9Wpb04p8wljfKrVSnPA== +"@babel/plugin-transform-react-pure-annotations@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.29.7.tgz#76445c90112dd0a7371b63264563bfa9a4fcd6e3" + integrity sha512-H5E+HBgDpr6Q5t+Aj11tL7XkIui1jhbIoArVQnqjgXo5/3YxkN7ZEBcWF4RQlB0T4rrxJQbXS6kiFV6B7XTqUA== dependencies: - "@babel/helper-annotate-as-pure" "^7.27.1" - "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-annotate-as-pure" "^7.29.7" + "@babel/helper-plugin-utils" "^7.29.7" -"@babel/plugin-transform-regenerator@^7.29.0": - version "7.29.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.29.0.tgz#dec237cec1b93330876d6da9992c4abd42c9d18b" - integrity sha512-FijqlqMA7DmRdg/aINBSs04y8XNTYw/lr1gJ2WsmBnnaNw1iS43EPkJW+zK7z65auG3AWRFXWj+NcTQwYptUog== +"@babel/plugin-transform-regenerator@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.29.7.tgz#0f42626a7dbb0e7a7f52e036d3e43deebdc3ea4e" + integrity sha512-rNNFV0DBAJp988xW2DOntfDoYn1eR8GGF5AT5vYc+rjyfaQkM242c9tZUHHPe7KYaiJizXPWhQTzzdbXySyhBw== dependencies: - "@babel/helper-plugin-utils" "^7.28.6" + "@babel/helper-plugin-utils" "^7.29.7" -"@babel/plugin-transform-regexp-modifiers@^7.28.6": - version "7.28.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regexp-modifiers/-/plugin-transform-regexp-modifiers-7.28.6.tgz#7ef0163bd8b4a610481b2509c58cf217f065290b" - integrity sha512-QGWAepm9qxpaIs7UM9FvUSnCGlb8Ua1RhyM4/veAxLwt3gMat/LSGrZixyuj4I6+Kn9iwvqCyPTtbdxanYoWYg== +"@babel/plugin-transform-regexp-modifiers@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regexp-modifiers/-/plugin-transform-regexp-modifiers-7.29.7.tgz#68311c0c10af2198212528863f8542843e424025" + integrity sha512-mB5Fs0VWrJ42ZCmc8114v60qetdaUVNkj9PmSZRmanCZM3S9hm0CFRLjRmYIsuXav14l2jvZ+4T8iiCGnhj3nQ== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.28.5" - "@babel/helper-plugin-utils" "^7.28.6" + "@babel/helper-create-regexp-features-plugin" "^7.29.7" + "@babel/helper-plugin-utils" "^7.29.7" -"@babel/plugin-transform-reserved-words@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.27.1.tgz#40fba4878ccbd1c56605a4479a3a891ac0274bb4" - integrity sha512-V2ABPHIJX4kC7HegLkYoDpfg9PVmuWy/i6vUM5eGK22bx4YVFD3M5F0QQnWQoDs6AGsUWTVOopBiMFQgHaSkVw== +"@babel/plugin-transform-reserved-words@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.29.7.tgz#a6feeb179b36a5f1fc6e3154c1eb727bdbe35876" + integrity sha512-5+YhdpVgmfSmwZyLMftfaiffLRMHjzIRHFHHLdibcSyJm2pasMrKHrO3Ptrt2DRshjvpgjEJJ1zVW14WPq/6QA== dependencies: - "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-plugin-utils" "^7.29.7" "@babel/plugin-transform-runtime@^7.25.9": - version "7.29.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.29.0.tgz#a5fded13cc656700804bfd6e5ebd7fffd5266803" - integrity sha512-jlaRT5dJtMaMCV6fAuLbsQMSwz/QkvaHOHOSXRitGGwSpR1blCY4KUKoyP2tYO8vJcqYe8cEj96cqSztv3uF9w== + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.29.7.tgz#7c7fb6e2a46dce67e278b6cc84421c1d16da5695" + integrity sha512-xmAscdE/AsqRW7vutbPNoUmu/nF5SrLKPs7aoJgEjo35lLKA/Bc0i2rMv/hr1+Y0o1bQCiVtith3u2vdgRL39Q== dependencies: - "@babel/helper-module-imports" "^7.28.6" - "@babel/helper-plugin-utils" "^7.28.6" + "@babel/helper-module-imports" "^7.29.7" + "@babel/helper-plugin-utils" "^7.29.7" babel-plugin-polyfill-corejs2 "^0.4.14" babel-plugin-polyfill-corejs3 "^0.13.0" babel-plugin-polyfill-regenerator "^0.6.5" semver "^6.3.1" -"@babel/plugin-transform-shorthand-properties@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.27.1.tgz#532abdacdec87bfee1e0ef8e2fcdee543fe32b90" - integrity sha512-N/wH1vcn4oYawbJ13Y/FxcQrWk63jhfNa7jef0ih7PHSIHX2LB7GWE1rkPrOnka9kwMxb6hMl19p7lidA+EHmQ== +"@babel/plugin-transform-shorthand-properties@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.29.7.tgz#25c0436b98f4bd9ca4b98e1fbd662743bbaab9bf" + integrity sha512-I+WYbGBAiCn7nA6xBrlgPH+MB7HWb4u8pv5S0Pv7OtwNvIFvCCb24YlttKEeUFVurfBCEaOTnuhlqsb7f0Z5Dg== dependencies: - "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-plugin-utils" "^7.29.7" -"@babel/plugin-transform-spread@^7.28.6": - version "7.28.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.28.6.tgz#40a2b423f6db7b70f043ad027a58bcb44a9757b6" - integrity sha512-9U4QObUC0FtJl05AsUcodau/RWDytrU6uKgkxu09mLR9HLDAtUMoPuuskm5huQsoktmsYpI+bGmq+iapDcriKA== +"@babel/plugin-transform-spread@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.29.7.tgz#a128bcdd6b5e5e47054907b2e50bc19c3f856edd" + integrity sha512-/u5K1QWada7tbYNqTjMh96718g9NTwh9tfPJMsSmVsQwGT447FskV+KcfeXkXq2GWki4EM/MuTdmBec+hOuVTQ== dependencies: - "@babel/helper-plugin-utils" "^7.28.6" - "@babel/helper-skip-transparent-expression-wrappers" "^7.27.1" + "@babel/helper-plugin-utils" "^7.29.7" + "@babel/helper-skip-transparent-expression-wrappers" "^7.29.7" -"@babel/plugin-transform-sticky-regex@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.27.1.tgz#18984935d9d2296843a491d78a014939f7dcd280" - integrity sha512-lhInBO5bi/Kowe2/aLdBAawijx+q1pQzicSgnkB6dUPc1+RC8QmJHKf2OjvU+NZWitguJHEaEmbV6VWEouT58g== +"@babel/plugin-transform-sticky-regex@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.29.7.tgz#a42c0fd1fa42f7e98e1e0c7757f72a1bbca3a015" + integrity sha512-BCHzNYJGe9l7EpwwDBN/ztlL2NYFFq8hp9ddjtUEM9f2O7S7kKV/lL6Fwo7IF7NSkYhPK2vO+86nIGltA90MsA== dependencies: - "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-plugin-utils" "^7.29.7" -"@babel/plugin-transform-template-literals@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.27.1.tgz#1a0eb35d8bb3e6efc06c9fd40eb0bcef548328b8" - integrity sha512-fBJKiV7F2DxZUkg5EtHKXQdbsbURW3DZKQUWphDum0uRP6eHGGa/He9mc0mypL680pb+e/lDIthRohlv8NCHkg== +"@babel/plugin-transform-template-literals@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.29.7.tgz#ada97d8e0832bca8edb315888aa654b1570f3835" + integrity sha512-NCSEJ4sLFU2gqAub45HYh4fus2yQ36rr6ei6vpU7NdoJqCpxvEG8E6eJpscGyXP3VHD2Ny+fSXr04k1hoUrFqA== dependencies: - "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-plugin-utils" "^7.29.7" -"@babel/plugin-transform-typeof-symbol@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.27.1.tgz#70e966bb492e03509cf37eafa6dcc3051f844369" - integrity sha512-RiSILC+nRJM7FY5srIyc4/fGIwUhyDuuBSdWn4y6yT6gm652DpCHZjIipgn6B7MQ1ITOUnAKWixEUjQRIBIcLw== +"@babel/plugin-transform-typeof-symbol@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.29.7.tgz#d848a4677c1ee3485ab017f4018f04597798911c" + integrity sha512-223mNGoTkBiTEWFoK+Q6Go3tueMRclO8vxxxxquNCYuNI4jWOofFKJRRDu6SDrB8Sgo1UEGW9T4GAQ8ZyRso1A== dependencies: - "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-plugin-utils" "^7.29.7" -"@babel/plugin-transform-typescript@^7.28.5": - version "7.28.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.28.6.tgz#1e93d96da8adbefdfdade1d4956f73afa201a158" - integrity sha512-0YWL2RFxOqEm9Efk5PvreamxPME8OyY0wM5wh5lHjF+VtVhdneCWGzZeSqzOfiobVqQaNCd2z0tQvnI9DaPWPw== +"@babel/plugin-transform-typescript@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.29.7.tgz#f0449c3df7037bbe232043476851c38f5e4a7615" + integrity sha512-jK52h8LaLc7JarhQV2ofeFMts4H7vnOXnqZNA6fYglBTZewRBE51KWt3BUltW1P+KoPsYkHoJeXePuz4zo2LMw== dependencies: - "@babel/helper-annotate-as-pure" "^7.27.3" - "@babel/helper-create-class-features-plugin" "^7.28.6" - "@babel/helper-plugin-utils" "^7.28.6" - "@babel/helper-skip-transparent-expression-wrappers" "^7.27.1" - "@babel/plugin-syntax-typescript" "^7.28.6" + "@babel/helper-annotate-as-pure" "^7.29.7" + "@babel/helper-create-class-features-plugin" "^7.29.7" + "@babel/helper-plugin-utils" "^7.29.7" + "@babel/helper-skip-transparent-expression-wrappers" "^7.29.7" + "@babel/plugin-syntax-typescript" "^7.29.7" -"@babel/plugin-transform-unicode-escapes@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.27.1.tgz#3e3143f8438aef842de28816ece58780190cf806" - integrity sha512-Ysg4v6AmF26k9vpfFuTZg8HRfVWzsh1kVfowA23y9j/Gu6dOuahdUVhkLqpObp3JIv27MLSii6noRnuKN8H0Mg== +"@babel/plugin-transform-unicode-escapes@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.29.7.tgz#1e99554b0cddfd650d649a9f2b996049893e5720" + integrity sha512-jCfXxSjf94lf4E0hKE0AByxF6F3/pVFqRdUUNkDJhsY0m1ZKjnN6ZYyMeHNpzflxb/0q5b7t3p+BE+SLF1WOtA== dependencies: - "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-plugin-utils" "^7.29.7" -"@babel/plugin-transform-unicode-property-regex@^7.28.6": - version "7.28.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.28.6.tgz#63a7a6c21a0e75dae9b1861454111ea5caa22821" - integrity sha512-4Wlbdl/sIZjzi/8St0evF0gEZrgOswVO6aOzqxh1kDZOl9WmLrHq2HtGhnOJZmHZYKP8WZ1MDLCt5DAWwRo57A== +"@babel/plugin-transform-unicode-property-regex@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.29.7.tgz#44444afc73768c2190fac4d95f7716817b7f204a" + integrity sha512-OgZ+zoAJgZLUCunsTRQ5LAjOywDv5zzZ2/hQ5aMw1pGXyY2rtE8/chXYUmu3AlVHKpm10KEdG9aMwbI/K76ZGw== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.28.5" - "@babel/helper-plugin-utils" "^7.28.6" + "@babel/helper-create-regexp-features-plugin" "^7.29.7" + "@babel/helper-plugin-utils" "^7.29.7" -"@babel/plugin-transform-unicode-regex@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.27.1.tgz#25948f5c395db15f609028e370667ed8bae9af97" - integrity sha512-xvINq24TRojDuyt6JGtHmkVkrfVV3FPT16uytxImLeBZqW3/H52yN+kM1MGuyPkIQxrzKwPHs5U/MP3qKyzkGw== +"@babel/plugin-transform-unicode-regex@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.29.7.tgz#c3064b293ff7f1794b71f7650eec8db9896d3e59" + integrity sha512-7D/x/23/d/3VqZ0QA+LGbZMlGwZjztBygSWWWsfTPoQ1oQ6Q1P6Mr3d0kk42XabyUVw+fha3LqdRsFqeKqvCyA== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.27.1" - "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-create-regexp-features-plugin" "^7.29.7" + "@babel/helper-plugin-utils" "^7.29.7" -"@babel/plugin-transform-unicode-sets-regex@^7.28.6": - version "7.28.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.28.6.tgz#924912914e5df9fe615ec472f88ff4788ce04d4e" - integrity sha512-/wHc/paTUmsDYN7SZkpWxogTOBNnlx7nBQYfy6JJlCT7G3mVhltk3e++N7zV0XfgGsrqBxd4rJQt9H16I21Y1Q== +"@babel/plugin-transform-unicode-sets-regex@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.29.7.tgz#b03ac9f27326f6197e8e574add83bbf33fc34ecd" + integrity sha512-BLOhLht9DOJwIxlmp91wHvkXv1lguuHS3/FwUO8HL1H0u8s4hR1gASVFyilu9iGtcTRYqjTZmlsFFeQletntEg== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.28.5" - "@babel/helper-plugin-utils" "^7.28.6" + "@babel/helper-create-regexp-features-plugin" "^7.29.7" + "@babel/helper-plugin-utils" "^7.29.7" "@babel/preset-env@^7.20.2", "@babel/preset-env@^7.25.9": - version "7.29.5" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.29.5.tgz#c48b7ed94582c8b685e21b8b42de8633ec289268" - integrity sha512-/69t2aEzGKHD76DyLbHysF/QH2LJOB8iFnYO37unDTKBTubzcMRv0f3H5EiN1Q6ajOd/eB7dAInF0qdFVS06kA== + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.29.7.tgz#5e2ab5e764b493fdefc99c43aeaa70a9533a37fd" + integrity sha512-GYzX36n1nsciIb0uyH0GHwxwtNwPQIcpxSeiVLDtG/B7jB5xXgchnmL1f/jCX5o+pwnaDBtO60ONSJhEBJfxYA== dependencies: - "@babel/compat-data" "^7.29.3" - "@babel/helper-compilation-targets" "^7.28.6" - "@babel/helper-plugin-utils" "^7.28.6" - "@babel/helper-validator-option" "^7.27.1" - "@babel/plugin-bugfix-firefox-class-in-computed-class-key" "^7.28.5" - "@babel/plugin-bugfix-safari-class-field-initializer-scope" "^7.27.1" - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.27.1" - "@babel/plugin-bugfix-safari-rest-destructuring-rhs-array" "^7.29.3" - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.27.1" - "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly" "^7.28.6" + "@babel/compat-data" "^7.29.7" + "@babel/helper-compilation-targets" "^7.29.7" + "@babel/helper-plugin-utils" "^7.29.7" + "@babel/helper-validator-option" "^7.29.7" + "@babel/plugin-bugfix-firefox-class-in-computed-class-key" "^7.29.7" + "@babel/plugin-bugfix-safari-class-field-initializer-scope" "^7.29.7" + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.29.7" + "@babel/plugin-bugfix-safari-rest-destructuring-rhs-array" "^7.29.7" + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.29.7" + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly" "^7.29.7" "@babel/plugin-proposal-private-property-in-object" "7.21.0-placeholder-for-preset-env.2" - "@babel/plugin-syntax-import-assertions" "^7.28.6" - "@babel/plugin-syntax-import-attributes" "^7.28.6" + "@babel/plugin-syntax-import-assertions" "^7.29.7" + "@babel/plugin-syntax-import-attributes" "^7.29.7" "@babel/plugin-syntax-unicode-sets-regex" "^7.18.6" - "@babel/plugin-transform-arrow-functions" "^7.27.1" - "@babel/plugin-transform-async-generator-functions" "^7.29.0" - "@babel/plugin-transform-async-to-generator" "^7.28.6" - "@babel/plugin-transform-block-scoped-functions" "^7.27.1" - "@babel/plugin-transform-block-scoping" "^7.28.6" - "@babel/plugin-transform-class-properties" "^7.28.6" - "@babel/plugin-transform-class-static-block" "^7.28.6" - "@babel/plugin-transform-classes" "^7.28.6" - "@babel/plugin-transform-computed-properties" "^7.28.6" - "@babel/plugin-transform-destructuring" "^7.28.5" - "@babel/plugin-transform-dotall-regex" "^7.28.6" - "@babel/plugin-transform-duplicate-keys" "^7.27.1" - "@babel/plugin-transform-duplicate-named-capturing-groups-regex" "^7.29.0" - "@babel/plugin-transform-dynamic-import" "^7.27.1" - "@babel/plugin-transform-explicit-resource-management" "^7.28.6" - "@babel/plugin-transform-exponentiation-operator" "^7.28.6" - "@babel/plugin-transform-export-namespace-from" "^7.27.1" - "@babel/plugin-transform-for-of" "^7.27.1" - "@babel/plugin-transform-function-name" "^7.27.1" - "@babel/plugin-transform-json-strings" "^7.28.6" - "@babel/plugin-transform-literals" "^7.27.1" - "@babel/plugin-transform-logical-assignment-operators" "^7.28.6" - "@babel/plugin-transform-member-expression-literals" "^7.27.1" - "@babel/plugin-transform-modules-amd" "^7.27.1" - "@babel/plugin-transform-modules-commonjs" "^7.28.6" - "@babel/plugin-transform-modules-systemjs" "^7.29.4" - "@babel/plugin-transform-modules-umd" "^7.27.1" - "@babel/plugin-transform-named-capturing-groups-regex" "^7.29.0" - "@babel/plugin-transform-new-target" "^7.27.1" - "@babel/plugin-transform-nullish-coalescing-operator" "^7.28.6" - "@babel/plugin-transform-numeric-separator" "^7.28.6" - "@babel/plugin-transform-object-rest-spread" "^7.28.6" - "@babel/plugin-transform-object-super" "^7.27.1" - "@babel/plugin-transform-optional-catch-binding" "^7.28.6" - "@babel/plugin-transform-optional-chaining" "^7.28.6" - "@babel/plugin-transform-parameters" "^7.27.7" - "@babel/plugin-transform-private-methods" "^7.28.6" - "@babel/plugin-transform-private-property-in-object" "^7.28.6" - "@babel/plugin-transform-property-literals" "^7.27.1" - "@babel/plugin-transform-regenerator" "^7.29.0" - "@babel/plugin-transform-regexp-modifiers" "^7.28.6" - "@babel/plugin-transform-reserved-words" "^7.27.1" - "@babel/plugin-transform-shorthand-properties" "^7.27.1" - "@babel/plugin-transform-spread" "^7.28.6" - "@babel/plugin-transform-sticky-regex" "^7.27.1" - "@babel/plugin-transform-template-literals" "^7.27.1" - "@babel/plugin-transform-typeof-symbol" "^7.27.1" - "@babel/plugin-transform-unicode-escapes" "^7.27.1" - "@babel/plugin-transform-unicode-property-regex" "^7.28.6" - "@babel/plugin-transform-unicode-regex" "^7.27.1" - "@babel/plugin-transform-unicode-sets-regex" "^7.28.6" + "@babel/plugin-transform-arrow-functions" "^7.29.7" + "@babel/plugin-transform-async-generator-functions" "^7.29.7" + "@babel/plugin-transform-async-to-generator" "^7.29.7" + "@babel/plugin-transform-block-scoped-functions" "^7.29.7" + "@babel/plugin-transform-block-scoping" "^7.29.7" + "@babel/plugin-transform-class-properties" "^7.29.7" + "@babel/plugin-transform-class-static-block" "^7.29.7" + "@babel/plugin-transform-classes" "^7.29.7" + "@babel/plugin-transform-computed-properties" "^7.29.7" + "@babel/plugin-transform-destructuring" "^7.29.7" + "@babel/plugin-transform-dotall-regex" "^7.29.7" + "@babel/plugin-transform-duplicate-keys" "^7.29.7" + "@babel/plugin-transform-duplicate-named-capturing-groups-regex" "^7.29.7" + "@babel/plugin-transform-dynamic-import" "^7.29.7" + "@babel/plugin-transform-explicit-resource-management" "^7.29.7" + "@babel/plugin-transform-exponentiation-operator" "^7.29.7" + "@babel/plugin-transform-export-namespace-from" "^7.29.7" + "@babel/plugin-transform-for-of" "^7.29.7" + "@babel/plugin-transform-function-name" "^7.29.7" + "@babel/plugin-transform-json-strings" "^7.29.7" + "@babel/plugin-transform-literals" "^7.29.7" + "@babel/plugin-transform-logical-assignment-operators" "^7.29.7" + "@babel/plugin-transform-member-expression-literals" "^7.29.7" + "@babel/plugin-transform-modules-amd" "^7.29.7" + "@babel/plugin-transform-modules-commonjs" "^7.29.7" + "@babel/plugin-transform-modules-systemjs" "^7.29.7" + "@babel/plugin-transform-modules-umd" "^7.29.7" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.29.7" + "@babel/plugin-transform-new-target" "^7.29.7" + "@babel/plugin-transform-nullish-coalescing-operator" "^7.29.7" + "@babel/plugin-transform-numeric-separator" "^7.29.7" + "@babel/plugin-transform-object-rest-spread" "^7.29.7" + "@babel/plugin-transform-object-super" "^7.29.7" + "@babel/plugin-transform-optional-catch-binding" "^7.29.7" + "@babel/plugin-transform-optional-chaining" "^7.29.7" + "@babel/plugin-transform-parameters" "^7.29.7" + "@babel/plugin-transform-private-methods" "^7.29.7" + "@babel/plugin-transform-private-property-in-object" "^7.29.7" + "@babel/plugin-transform-property-literals" "^7.29.7" + "@babel/plugin-transform-regenerator" "^7.29.7" + "@babel/plugin-transform-regexp-modifiers" "^7.29.7" + "@babel/plugin-transform-reserved-words" "^7.29.7" + "@babel/plugin-transform-shorthand-properties" "^7.29.7" + "@babel/plugin-transform-spread" "^7.29.7" + "@babel/plugin-transform-sticky-regex" "^7.29.7" + "@babel/plugin-transform-template-literals" "^7.29.7" + "@babel/plugin-transform-typeof-symbol" "^7.29.7" + "@babel/plugin-transform-unicode-escapes" "^7.29.7" + "@babel/plugin-transform-unicode-property-regex" "^7.29.7" + "@babel/plugin-transform-unicode-regex" "^7.29.7" + "@babel/plugin-transform-unicode-sets-regex" "^7.29.7" "@babel/preset-modules" "0.1.6-no-external-plugins" babel-plugin-polyfill-corejs2 "^0.4.15" babel-plugin-polyfill-corejs3 "^0.14.0" @@ -1019,62 +1019,62 @@ esutils "^2.0.2" "@babel/preset-react@^7.18.6", "@babel/preset-react@^7.25.9": - version "7.28.5" - resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.28.5.tgz#6fcc0400fa79698433d653092c3919bb4b0878d9" - integrity sha512-Z3J8vhRq7CeLjdC58jLv4lnZ5RKFUJWqH5emvxmv9Hv3BD1T9R/Im713R4MTKwvFaV74ejZ3sM01LyEKk4ugNQ== + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.29.7.tgz#2ed18366e38c2081bbf1760dc01e88fa5674eb17" + integrity sha512-C+PV1TFUPTmBQGoPBL8j2QmLpZ117YTCwxIZeJOM96GbYMFSc7/pOXU5lVykwnZxyTqQxRsvoRk6f2FktZgGHA== dependencies: - "@babel/helper-plugin-utils" "^7.27.1" - "@babel/helper-validator-option" "^7.27.1" - "@babel/plugin-transform-react-display-name" "^7.28.0" - "@babel/plugin-transform-react-jsx" "^7.27.1" - "@babel/plugin-transform-react-jsx-development" "^7.27.1" - "@babel/plugin-transform-react-pure-annotations" "^7.27.1" + "@babel/helper-plugin-utils" "^7.29.7" + "@babel/helper-validator-option" "^7.29.7" + "@babel/plugin-transform-react-display-name" "^7.29.7" + "@babel/plugin-transform-react-jsx" "^7.29.7" + "@babel/plugin-transform-react-jsx-development" "^7.29.7" + "@babel/plugin-transform-react-pure-annotations" "^7.29.7" "@babel/preset-typescript@^7.21.0", "@babel/preset-typescript@^7.25.9": - version "7.28.5" - resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.28.5.tgz#540359efa3028236958466342967522fd8f2a60c" - integrity sha512-+bQy5WOI2V6LJZpPVxY+yp66XdZ2yifu0Mc1aP5CQKgjn4QM5IN2i5fAZ4xKop47pr8rpVhiAeu+nDQa12C8+g== + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.29.7.tgz#de9be1f47b785c979ec7b3a71f4cd8bae5267b62" + integrity sha512-/Foi8vKY2EVbed/1eZx0gJEEwHAIxogrySI7rULcRIvhZzbvoE/b5qG5Ghc0WKAFKOHA9SD1x7RsFlOYdutIiQ== dependencies: - "@babel/helper-plugin-utils" "^7.27.1" - "@babel/helper-validator-option" "^7.27.1" - "@babel/plugin-syntax-jsx" "^7.27.1" - "@babel/plugin-transform-modules-commonjs" "^7.27.1" - "@babel/plugin-transform-typescript" "^7.28.5" + "@babel/helper-plugin-utils" "^7.29.7" + "@babel/helper-validator-option" "^7.29.7" + "@babel/plugin-syntax-jsx" "^7.29.7" + "@babel/plugin-transform-modules-commonjs" "^7.29.7" + "@babel/plugin-transform-typescript" "^7.29.7" "@babel/runtime@^7.1.2", "@babel/runtime@^7.10.3", "@babel/runtime@^7.12.13", "@babel/runtime@^7.12.5", "@babel/runtime@^7.25.9": - version "7.29.2" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.29.2.tgz#9a6e2d05f4b6692e1801cd4fb176ad823930ed5e" - integrity sha512-JiDShH45zKHWyGe4ZNVRrCjBz8Nh9TMmZG1kh4QTK8hCBTWBi8Da+i7s1fJw7/lYpM4ccepSNfqzZ/QvABBi5g== + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.29.7.tgz#12022450c45a4da6d8d8287b18a4ff2ddb23f768" + integrity sha512-Nq8OhGWiZIZGV6hLHoyAKLLcJihP/xFeBMGJoUrxTX2psI8dCifzLhZISFb+VWS3wFMRDmCGw5R+dOySCqPLhw== -"@babel/template@^7.28.6": - version "7.28.6" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.28.6.tgz#0e7e56ecedb78aeef66ce7972b082fce76a23e57" - integrity sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ== +"@babel/template@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.29.7.tgz#4d9d4004f645cdd304de958c725162784ecac700" + integrity sha512-puq+Gf35oI24FeN11LkoUQFqv9uwNeWpxXZi/Ji3rRIoKAzKnxRaZ+Gkj0vKS9ZCiTESfng1N9LyOyXvo+m+Gg== dependencies: - "@babel/code-frame" "^7.28.6" - "@babel/parser" "^7.28.6" - "@babel/types" "^7.28.6" + "@babel/code-frame" "^7.29.7" + "@babel/parser" "^7.29.7" + "@babel/types" "^7.29.7" -"@babel/traverse@^7.25.9", "@babel/traverse@^7.27.1", "@babel/traverse@^7.28.5", "@babel/traverse@^7.28.6", "@babel/traverse@^7.29.0": - version "7.29.0" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.29.0.tgz#f323d05001440253eead3c9c858adbe00b90310a" - integrity sha512-4HPiQr0X7+waHfyXPZpWPfWL/J7dcN1mx9gL6WdQVMbPnF3+ZhSMs8tCxN7oHddJE9fhNE7+lxdnlyemKfJRuA== +"@babel/traverse@^7.25.9", "@babel/traverse@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.29.7.tgz#c47b07a41b95da0907d026b5dd894d98de7d2f2d" + integrity sha512-EhlfNQtZ+NK22w5BM61ciuiq1m58ed33Wr1Xan//ZRTy6hgjnwyCffRYwzsGXdASJSUJ1guZILsErh1eQcl+zw== dependencies: - "@babel/code-frame" "^7.29.0" - "@babel/generator" "^7.29.0" - "@babel/helper-globals" "^7.28.0" - "@babel/parser" "^7.29.0" - "@babel/template" "^7.28.6" - "@babel/types" "^7.29.0" + "@babel/code-frame" "^7.29.7" + "@babel/generator" "^7.29.7" + "@babel/helper-globals" "^7.29.7" + "@babel/parser" "^7.29.7" + "@babel/template" "^7.29.7" + "@babel/types" "^7.29.7" debug "^4.3.1" -"@babel/types@^7.21.3", "@babel/types@^7.27.1", "@babel/types@^7.27.3", "@babel/types@^7.28.5", "@babel/types@^7.28.6", "@babel/types@^7.29.0", "@babel/types@^7.4.4": - version "7.29.0" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.29.0.tgz#9f5b1e838c446e72cf3cd4b918152b8c605e37c7" - integrity sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A== +"@babel/types@^7.21.3", "@babel/types@^7.29.7", "@babel/types@^7.4.4": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.29.7.tgz#8005e31d82712ee7adaef6e23c63b71a62770a92" + integrity sha512-4zBIxpPzowiZpusoFkyGVwakdRJUyuH5PxQ/PrqghfdFWWasvnCdPfQXHrenDai+gyLARulZjZowCOj6fjT4pA== dependencies: - "@babel/helper-string-parser" "^7.27.1" - "@babel/helper-validator-identifier" "^7.28.5" + "@babel/helper-string-parser" "^7.29.7" + "@babel/helper-validator-identifier" "^7.29.7" "@colors/colors@1.5.0": version "1.5.0" @@ -1985,9 +1985,9 @@ immediate "^3.2.3" "@easyops-cn/docusaurus-search-local@^0.55.0": - version "0.55.1" - resolved "https://registry.yarnpkg.com/@easyops-cn/docusaurus-search-local/-/docusaurus-search-local-0.55.1.tgz#a0ee40e598c10138d328db04183584b51a8cb0d3" - integrity sha512-jmBKj1J+tajqNrCvECwKCQYTWwHVZDGApy8lLOYEPe+Dm0/f3Ccdw8BP5/OHNpltr7WDNY2roQXn+TWn2f1kig== + version "0.55.2" + resolved "https://registry.yarnpkg.com/@easyops-cn/docusaurus-search-local/-/docusaurus-search-local-0.55.2.tgz#563ab1f8fd7bc18541d889f4d5001a3ef85c5a1e" + integrity sha512-dI/riu+MbDxkAjAHAdc0uahjXRaWKvbIPe9IAmA6AGcUfnVb9xd8s2I/6wEPTOXsAd6eFqn4Yis3WBWh3KUd3g== dependencies: "@docusaurus/plugin-content-docs" "^2 || ^3" "@docusaurus/theme-translations" "^2 || ^3" @@ -2132,74 +2132,74 @@ resolved "https://registry.yarnpkg.com/@jsonjoy.com/codegen/-/codegen-1.0.0.tgz#5c23f796c47675f166d23b948cdb889184b93207" integrity sha512-E8Oy+08cmCf0EK/NMxpaJZmOxPqM+6iSe2S4nlSBrPZOORoDJILxtbSUEDKQyTamm/BVAhIGllOBNU79/dwf0g== -"@jsonjoy.com/fs-core@4.57.2": - version "4.57.2" - resolved "https://registry.yarnpkg.com/@jsonjoy.com/fs-core/-/fs-core-4.57.2.tgz#e28f357ba9983ce53577ba34fc72d344f19ec459" - integrity sha512-SVjwklkpIV5wrynpYtuYnfYH1QF4/nDuLBX7VXdb+3miglcAgBVZb/5y0cOsehRV/9Vb+3UqhkMq3/NR3ztdkQ== +"@jsonjoy.com/fs-core@4.57.3": + version "4.57.3" + resolved "https://registry.yarnpkg.com/@jsonjoy.com/fs-core/-/fs-core-4.57.3.tgz#e44bf1396a6d8c4a9a752084e57022617ea0f5f5" + integrity sha512-IvO50vkGydDZwS1e9rz/JXEtCCt9XvqxoGI6FlrVIvVm4/HpygMKW4ETtREWtMTsN5CLJ9FR6GuCduoQPZLBiw== dependencies: - "@jsonjoy.com/fs-node-builtins" "4.57.2" - "@jsonjoy.com/fs-node-utils" "4.57.2" + "@jsonjoy.com/fs-node-builtins" "4.57.3" + "@jsonjoy.com/fs-node-utils" "4.57.3" thingies "^2.5.0" -"@jsonjoy.com/fs-fsa@4.57.2": - version "4.57.2" - resolved "https://registry.yarnpkg.com/@jsonjoy.com/fs-fsa/-/fs-fsa-4.57.2.tgz#ec6dd492ff8c104a0c1eae74959a013960fe8969" - integrity sha512-fhO8+iR2I+OCw668ISDJdn1aArc9zx033sWejIyzQ8RBeXa9bDSaUeA3ix0poYOfrj1KdOzytmYNv2/uLDfV6g== +"@jsonjoy.com/fs-fsa@4.57.3": + version "4.57.3" + resolved "https://registry.yarnpkg.com/@jsonjoy.com/fs-fsa/-/fs-fsa-4.57.3.tgz#097106d9688d9384419e3bac893b71e41a71f05d" + integrity sha512-JlIDGUWPl7Y6zl+/ISnZuh8z2aMr/xoR66D18zlaVAuL192CvlNJEzOlzp27x4P52HRtDnCSOk6f59vTsmp5vw== dependencies: - "@jsonjoy.com/fs-core" "4.57.2" - "@jsonjoy.com/fs-node-builtins" "4.57.2" - "@jsonjoy.com/fs-node-utils" "4.57.2" + "@jsonjoy.com/fs-core" "4.57.3" + "@jsonjoy.com/fs-node-builtins" "4.57.3" + "@jsonjoy.com/fs-node-utils" "4.57.3" thingies "^2.5.0" -"@jsonjoy.com/fs-node-builtins@4.57.2": - version "4.57.2" - resolved "https://registry.yarnpkg.com/@jsonjoy.com/fs-node-builtins/-/fs-node-builtins-4.57.2.tgz#9174b87e70213b38caf1ac8669b130c4dfd6a909" - integrity sha512-xhiegylRmhw43Ki2HO1ZBL7DQ5ja/qpRsL29VtQ2xuUHiuDGbgf2uD4p9Qd8hJI5P6RCtGYD50IXHXVq/Ocjcg== +"@jsonjoy.com/fs-node-builtins@4.57.3": + version "4.57.3" + resolved "https://registry.yarnpkg.com/@jsonjoy.com/fs-node-builtins/-/fs-node-builtins-4.57.3.tgz#b6b34ed532554916e186977d00c19ffcafb3515f" + integrity sha512-JAI3PqNuY8BR7ovy4h0bADLrqJLIcUauONNZfyTxUnj3Wf3tpTYe39eJ6z7FzYyA+tdMt33VpiQQUikGr3QOBw== -"@jsonjoy.com/fs-node-to-fsa@4.57.2": - version "4.57.2" - resolved "https://registry.yarnpkg.com/@jsonjoy.com/fs-node-to-fsa/-/fs-node-to-fsa-4.57.2.tgz#8542449b72dfc48f3bfe311a7b0af5323f9bc926" - integrity sha512-18LmWTSONhoAPW+IWRuf8w/+zRolPFGPeGwMxlAhhfY11EKzX+5XHDBPAw67dBF5dxDErHJbl40U+3IXSDRXSQ== +"@jsonjoy.com/fs-node-to-fsa@4.57.3": + version "4.57.3" + resolved "https://registry.yarnpkg.com/@jsonjoy.com/fs-node-to-fsa/-/fs-node-to-fsa-4.57.3.tgz#020509740459a9d42f61d40c87613c2ec24b7022" + integrity sha512-uZGxyC0zDmcmW5bfHd4YivAZ54BLlbF9G0K5rBaksI/tZdJSGM7/AC+1TY7yvFu0Wc6gUHR7mFwf6SbQ3J1BTQ== dependencies: - "@jsonjoy.com/fs-fsa" "4.57.2" - "@jsonjoy.com/fs-node-builtins" "4.57.2" - "@jsonjoy.com/fs-node-utils" "4.57.2" + "@jsonjoy.com/fs-fsa" "4.57.3" + "@jsonjoy.com/fs-node-builtins" "4.57.3" + "@jsonjoy.com/fs-node-utils" "4.57.3" -"@jsonjoy.com/fs-node-utils@4.57.2": - version "4.57.2" - resolved "https://registry.yarnpkg.com/@jsonjoy.com/fs-node-utils/-/fs-node-utils-4.57.2.tgz#c3234c03b1e59d609a0915572dd6f450be0463b1" - integrity sha512-rsPSJgekz43IlNbLyAM/Ab+ouYLWGp5DDBfYBNNEqDaSpsbXfthBn29Q4muFA9L0F+Z3mKo+CWlgSCXrf+mOyQ== +"@jsonjoy.com/fs-node-utils@4.57.3": + version "4.57.3" + resolved "https://registry.yarnpkg.com/@jsonjoy.com/fs-node-utils/-/fs-node-utils-4.57.3.tgz#25fb8dbf0406c1cd5a9e0a22274f1e45bf6d460c" + integrity sha512-quCil8AvfcOxob4pn0drGdcQWpkPVgkt9q1+EjeyXXT40/L3l5lvYrr6hR8LmHu0eg+DNNaUwqjLT6Hr7V4sdQ== dependencies: - "@jsonjoy.com/fs-node-builtins" "4.57.2" + "@jsonjoy.com/fs-node-builtins" "4.57.3" -"@jsonjoy.com/fs-node@4.57.2": - version "4.57.2" - resolved "https://registry.yarnpkg.com/@jsonjoy.com/fs-node/-/fs-node-4.57.2.tgz#8db2875df19683683e5852053e0099e233dc45d2" - integrity sha512-nX2AdL6cOFwLdju9G4/nbRnYevmCJbh7N7hvR3gGm97Cs60uEjyd0rpR+YBS7cTg175zzl22pGKXR5USaQMvKg== +"@jsonjoy.com/fs-node@4.57.3": + version "4.57.3" + resolved "https://registry.yarnpkg.com/@jsonjoy.com/fs-node/-/fs-node-4.57.3.tgz#edf03464f451d1bdd59bafc39f707d804524b364" + integrity sha512-089gZoKvbeOsT2jeBaVKSz91oFXQWFG7a62sMY6gVMHnoWbyGzTb6OVUP/V7G3wLQLJ555BEsHt8SD1nj1dgaQ== dependencies: - "@jsonjoy.com/fs-core" "4.57.2" - "@jsonjoy.com/fs-node-builtins" "4.57.2" - "@jsonjoy.com/fs-node-utils" "4.57.2" - "@jsonjoy.com/fs-print" "4.57.2" - "@jsonjoy.com/fs-snapshot" "4.57.2" + "@jsonjoy.com/fs-core" "4.57.3" + "@jsonjoy.com/fs-node-builtins" "4.57.3" + "@jsonjoy.com/fs-node-utils" "4.57.3" + "@jsonjoy.com/fs-print" "4.57.3" + "@jsonjoy.com/fs-snapshot" "4.57.3" glob-to-regex.js "^1.0.0" thingies "^2.5.0" -"@jsonjoy.com/fs-print@4.57.2": - version "4.57.2" - resolved "https://registry.yarnpkg.com/@jsonjoy.com/fs-print/-/fs-print-4.57.2.tgz#286c4ceda19225a5c54aaad657ad9f466d5bd0c1" - integrity sha512-wK9NSow48i4DbDl9F1CQE5TqnyZOJ04elU3WFG5aJ76p+YxO/ulyBBQvKsessPxdo381Bc2pcEoyPujMOhcRqQ== +"@jsonjoy.com/fs-print@4.57.3": + version "4.57.3" + resolved "https://registry.yarnpkg.com/@jsonjoy.com/fs-print/-/fs-print-4.57.3.tgz#b282395741a226a74550a7b6c14c9c81f57484d8" + integrity sha512-ITwaLZpGIqD9jHndwMvDFZDIvbVzGRsJZDQ5HKln0vyMculu1c1nb7zbEBgY8BVSBZ9S2xO138OWIBGeRsrF3Q== dependencies: - "@jsonjoy.com/fs-node-utils" "4.57.2" + "@jsonjoy.com/fs-node-utils" "4.57.3" tree-dump "^1.1.0" -"@jsonjoy.com/fs-snapshot@4.57.2": - version "4.57.2" - resolved "https://registry.yarnpkg.com/@jsonjoy.com/fs-snapshot/-/fs-snapshot-4.57.2.tgz#800424a076638a605dad5ef1540915bc0167d7f8" - integrity sha512-GdduDZuoP5V/QCgJkx9+BZ6SC0EZ/smXAdTS7PfMqgMTGXLlt/bH/FqMYaqB9JmLf05sJPtO0XRbAwwkEEPbVw== +"@jsonjoy.com/fs-snapshot@4.57.3": + version "4.57.3" + resolved "https://registry.yarnpkg.com/@jsonjoy.com/fs-snapshot/-/fs-snapshot-4.57.3.tgz#db3e113b77189d37f63d7f01c50d5e883ba2409b" + integrity sha512-wdNaG2DxCtvj9lKldAnEV3ycYPEpk+p2cP2lHD1qdxkoQGlWUtQverqvG9KZSkm6BHFha4PP6XRZbpARNfHRxA== dependencies: "@jsonjoy.com/buffers" "^17.65.0" - "@jsonjoy.com/fs-node-utils" "4.57.2" + "@jsonjoy.com/fs-node-utils" "4.57.3" "@jsonjoy.com/json-pack" "^17.65.0" "@jsonjoy.com/util" "^17.65.0" @@ -3295,24 +3295,24 @@ algoliasearch-helper@^3.26.0: "@algolia/events" "^4.0.1" algoliasearch@^5.37.0: - version "5.52.1" - resolved "https://registry.yarnpkg.com/algoliasearch/-/algoliasearch-5.52.1.tgz#4405146139ccbd79ae45a3c61abe047b281107b5" - integrity sha512-fHA8+kXTbjagw3jkLiaS7KKrH8qe2DyOsiUhGlN4cdT77PEsfqXZl7ewDk1hsg+pJnPlnE50XtLxjR91iJOpmg== + version "5.53.0" + resolved "https://registry.yarnpkg.com/algoliasearch/-/algoliasearch-5.53.0.tgz#393d1990fc1d3164d2684c09b11c797de0fbb0c9" + integrity sha512-OGW1q6b91CRSSeiOnM8LxuR5NYJ2esvw66jUZ4IIvdv+ItNkx3pwLuyR+jaCdbGee4ov5WgUnyPryyh11xvByQ== dependencies: - "@algolia/abtesting" "1.18.1" - "@algolia/client-abtesting" "5.52.1" - "@algolia/client-analytics" "5.52.1" - "@algolia/client-common" "5.52.1" - "@algolia/client-insights" "5.52.1" - "@algolia/client-personalization" "5.52.1" - "@algolia/client-query-suggestions" "5.52.1" - "@algolia/client-search" "5.52.1" - "@algolia/ingestion" "1.52.1" - "@algolia/monitoring" "1.52.1" - "@algolia/recommend" "5.52.1" - "@algolia/requester-browser-xhr" "5.52.1" - "@algolia/requester-fetch" "5.52.1" - "@algolia/requester-node-http" "5.52.1" + "@algolia/abtesting" "1.19.0" + "@algolia/client-abtesting" "5.53.0" + "@algolia/client-analytics" "5.53.0" + "@algolia/client-common" "5.53.0" + "@algolia/client-insights" "5.53.0" + "@algolia/client-personalization" "5.53.0" + "@algolia/client-query-suggestions" "5.53.0" + "@algolia/client-search" "5.53.0" + "@algolia/ingestion" "1.53.0" + "@algolia/monitoring" "1.53.0" + "@algolia/recommend" "5.53.0" + "@algolia/requester-browser-xhr" "5.53.0" + "@algolia/requester-fetch" "5.53.0" + "@algolia/requester-node-http" "5.53.0" ansi-align@^3.0.1: version "3.0.1" @@ -3471,9 +3471,9 @@ balanced-match@^1.0.0: integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== baseline-browser-mapping@^2.10.12: - version "2.10.32" - resolved "https://registry.yarnpkg.com/baseline-browser-mapping/-/baseline-browser-mapping-2.10.32.tgz#b6b553a4285fdd606327a617de36a5351e3aaa64" - integrity sha512-wbPvpyjJPC0zdfdKXxqEL3Ea+bOMD/87X4lftiJkkaBiuG6ALQy1SLmEd7BSmVCuwCQsBrCamgBoLyfFDD1EPg== + version "2.10.33" + resolved "https://registry.yarnpkg.com/baseline-browser-mapping/-/baseline-browser-mapping-2.10.33.tgz#27c299b096404978831958d429f48390424c4f9b" + integrity sha512-bA6+tcSLpz2tIEdDXZPpPTIuxBcC4+w6SieaYyfigIa4h8GlFxbA17v22Vx3JUtuZQj9SgOsnbK+aTBzyDyEuw== batch@0.6.1: version "0.6.1" @@ -3550,9 +3550,9 @@ boxen@^7.0.0: wrap-ansi "^8.1.0" brace-expansion@^1.1.7: - version "1.1.14" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.14.tgz#d9de602370d91347cd9ddad1224d4fd701eb348b" - integrity sha512-MWPGfDxnyzKU7rNOW9SP/c50vi3xrmrua/+6hfPbCS2ABNWfx24vPidzvC7krjU/RTo235sV776ymlsMtGKj8g== + version "1.1.15" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.15.tgz#a6d90d54067236e5f42570a3b7378d594d9b7738" + integrity sha512-EwOCDEex4quD37XhqM3omwtMoJjr//isUZz1JopUNWms+4Z2ViyM/k1YIRePpoVNnQhENnxtFjLaxNHrT7xIUg== dependencies: balanced-match "^1.0.0" concat-map "0.0.1" @@ -4476,9 +4476,9 @@ ee-first@1.1.1: integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== electron-to-chromium@^1.5.328: - version "1.5.361" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.361.tgz#b993bc7b34ea83f348aa1787a608ecf12e39b909" - integrity sha512-Q6Hts7N9FnJc5LeGRINFvLhCI9xZmNtTDe5ZbcVezQz7cU4a8Aua3GH1b8J2XY8Al9PF+OCwYqhgsOOheMdvkA== + version "1.5.364" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.364.tgz#38af950b724b22b937c342c0c4b361bd2fb50669" + integrity sha512-G/dYE3+AYhyHwzTwg8UbnXf7zqMERYh7l2jJ3QujhFsH8agSYwtnGAR2aZ7f0AakIKJXd5En/Hre4igIUrdlYw== emoji-regex@^8.0.0: version "8.0.0" @@ -4518,10 +4518,10 @@ encoding-sniffer@^0.2.1: iconv-lite "^0.6.3" whatwg-encoding "^3.1.1" -enhanced-resolve@^5.21.4: - version "5.22.0" - resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.22.0.tgz#43c5caad657c6fce58fc6142e5ca6fa8528ed460" - integrity sha512-xYcDWrpELkFzz9SpZ3PlI6Eu6eD93Yf0WLDRxikGhWJ3MAir2SNZTIVCVZqZ/NUyx8AdMc2gT9C0gPiw18kG+A== +enhanced-resolve@^5.22.0: + version "5.22.1" + resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.22.1.tgz#c34bc3f414298496fc244b21bbe316440782da17" + integrity sha512-6QEuw3zoX1SJQc7b87aBXke/no+mG2bTBgw29gWMQonLmpEkWoCAVkl+M49e48AZlWzxiDzDZzYdp6kobcyLww== dependencies: graceful-fs "^4.2.4" tapable "^2.3.3" @@ -5144,9 +5144,9 @@ has-yarn@^3.0.0: integrity sha512-IrsVwUHhEULx3R8f/aA8AHuEzAorplsab/v8HBzEiIukwq5i/EC+xmOW+HfP1OaDP+2JkgT1yILHN2O3UFIbcA== hasown@^2.0.2, hasown@^2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.3.tgz#5e5c2b15b60370a4c7930c383dfb76bf17bc403c" - integrity sha512-ej4AhfhfL2Q2zpMmLo7U1Uv9+PyhIZpgQLGT1F9miIGmiCJIoCgSmczFdrc97mWT4kVY72KA+WnnhJ5pghSvSg== + version "2.0.4" + resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.4.tgz#8c62d8cb90beb2aad5d0a5b67581ad9854c3f003" + integrity sha512-T2UbfbBEF32wiepXIsMlTW9+dDYC6wMh/t/vYA4tuOMKqWz/n3vr1NFSxQiyP+zk2mXsoMA/i/7qV6LKut1t1A== dependencies: function-bind "^1.1.2" @@ -5812,9 +5812,9 @@ js-yaml@^3.13.1: esprima "^4.0.0" js-yaml@^4.1.0: - version "4.1.1" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.1.tgz#854c292467705b699476e1a2decc0c8a3458806b" - integrity sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA== + version "4.2.0" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.2.0.tgz#2bd9e85682dd91bd469afb809d816043b3d49524" + integrity sha512-ePWsvanv0DWuDRsW8dnt+R4jQ31SCRCQ7hhNcPXZPsoBZiemuZNYGf7adZdqX2D86j6rvKp3RpCxVTSb8WQlOw== dependencies: argparse "^2.0.1" @@ -5889,12 +5889,12 @@ latest-version@^7.0.0: package-json "^8.1.0" launch-editor@^2.6.1: - version "2.13.2" - resolved "https://registry.yarnpkg.com/launch-editor/-/launch-editor-2.13.2.tgz#41d51baaf8afb393224b89bd2bcb4e02f2306405" - integrity sha512-4VVDnbOpLXy/s8rdRCSXb+zfMeFR0WlJWpET1iA9CQdlZDfwyLjUuGQzXU4VeOoey6AicSAluWan7Etga6Kcmg== + version "2.14.0" + resolved "https://registry.yarnpkg.com/launch-editor/-/launch-editor-2.14.0.tgz#acef0cfda90ead4e0ab7fecb8ad0e1453bc7d3a6" + integrity sha512-Pj3ZOx9dD1BClS7YcSQx0An1PCF9wz4JpvbEmKvDxQtm0jxlkk5NhW8x0SBAKA/acHBKZaqdd5FFOWlXo500JA== dependencies: picocolors "^1.1.1" - shell-quote "^1.8.3" + shell-quote "^1.8.4" leven@^3.1.0: version "3.1.0" @@ -6247,18 +6247,18 @@ media-typer@0.3.0: integrity sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ== memfs@^4.43.1: - version "4.57.2" - resolved "https://registry.yarnpkg.com/memfs/-/memfs-4.57.2.tgz#5f74e977c9a14681ea10d427b3ce5d7db5f817e7" - integrity sha512-2nWzSsJzrukurSDna4Z0WywuScK4Id3tSKejgu74u8KCdW4uNrseKRSIDg75C6Yw5ZRqBe0F0EtMNlTbUq8bAQ== + version "4.57.3" + resolved "https://registry.yarnpkg.com/memfs/-/memfs-4.57.3.tgz#dceeff71e88dbb8d3892786be90f83e303d1d287" + integrity sha512-dlvqataP1zUOlfj6pv9wgCSC5pRIooNntXgdLfR7FWlcKi1p8fMfJADtHp/+8Dhu5JFvMHNh7L0QVcuaaBKqqA== dependencies: - "@jsonjoy.com/fs-core" "4.57.2" - "@jsonjoy.com/fs-fsa" "4.57.2" - "@jsonjoy.com/fs-node" "4.57.2" - "@jsonjoy.com/fs-node-builtins" "4.57.2" - "@jsonjoy.com/fs-node-to-fsa" "4.57.2" - "@jsonjoy.com/fs-node-utils" "4.57.2" - "@jsonjoy.com/fs-print" "4.57.2" - "@jsonjoy.com/fs-snapshot" "4.57.2" + "@jsonjoy.com/fs-core" "4.57.3" + "@jsonjoy.com/fs-fsa" "4.57.3" + "@jsonjoy.com/fs-node" "4.57.3" + "@jsonjoy.com/fs-node-builtins" "4.57.3" + "@jsonjoy.com/fs-node-to-fsa" "4.57.3" + "@jsonjoy.com/fs-node-utils" "4.57.3" + "@jsonjoy.com/fs-print" "4.57.3" + "@jsonjoy.com/fs-snapshot" "4.57.3" "@jsonjoy.com/json-pack" "^1.11.0" "@jsonjoy.com/util" "^1.9.0" glob-to-regex.js "^1.0.1" @@ -8477,7 +8477,7 @@ shebang-regex@^3.0.0: resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== -shell-quote@^1.8.3: +shell-quote@^1.8.4: version "1.8.4" resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.8.4.tgz#2edd9a4dcefc96649e2e2cb12f637b1f1d92a190" integrity sha512-VsC6n6vz1ihYYyZZwX7YZSF5l5x36ca17OC+a69h94YqB7X6XLwf+5MOgynYir2SLFUbl8gIYvBo8K8RoNQ6bQ== @@ -8814,9 +8814,9 @@ tapable@^2.0.0, tapable@^2.2.1, tapable@^2.3.0, tapable@^2.3.3: integrity sha512-uxc/zpqFg6x7C8vOE7lh6Lbda8eEL9zmVm/PLeTPBRhh1xCgdWaQ+J1CUieGpIfm2HdtsUpRv+HshiasBMcc6A== terser-webpack-plugin@^5.3.9, terser-webpack-plugin@^5.5.0: - version "5.6.0" - resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-5.6.0.tgz#8e7caad248183ab9e91ff08a83b0fc9f0439c3c3" - integrity sha512-Eum+5ajkaOhf5KbM26osvv21kLD7BaGqQ1UA4Ami4arYwylmGUQTgHFpHDdmJod1q4QXa66p0to/FBKID+J1vA== + version "5.6.1" + resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-5.6.1.tgz#47bc41bd8b8fab8383b62ec763b7394829097e7b" + integrity sha512-201R5j+sJpK8nFWwKVyNfZot8FaJbLZDq5evriVzbV1wDtSXDjRUDRfJzHpAaxFDMEhsZL1QkeqM61wgsS3KaQ== dependencies: "@jridgewell/trace-mapping" "^0.3.25" jest-worker "^27.4.5" @@ -8943,9 +8943,9 @@ typescript@~6.0.0: integrity sha512-WRNW+sJgj5OBN4/0JpHFqtqzhpbnV0GuB+OozA9gCL7a993SmU+1JBZCzLNxYsbMfIeDL+lTsphD5jN5N+n0zg== undici@^7.19.0: - version "7.25.0" - resolved "https://registry.yarnpkg.com/undici/-/undici-7.25.0.tgz#7d72fc429a0421769ca2966fd07cac875c85b781" - integrity sha512-xXnp4kTyor2Zq+J1FfPI6Eq3ew5h6Vl0F/8d9XU5zZQf1tX9s2Su1/3PiMmUANFULpmksxkClamIZcaUqryHsQ== + version "7.26.0" + resolved "https://registry.yarnpkg.com/undici/-/undici-7.26.0.tgz#d413a2b5752e3e71e003bb268dec32b9a0ad0ce7" + integrity sha512-3O9Tf67pGhgOv9jM35AbhkXAKi13f3oy3aE4CSgr+TckGeY+/iu97ZXN+J7DpHPzLbVApFd1IFhcnBjREYXYcg== unicode-canonical-property-names-ecmascript@^2.0.0: version "2.0.1" @@ -9255,15 +9255,15 @@ webpack-merge@^6.0.1: flat "^5.0.2" wildcard "^2.0.1" -webpack-sources@^3.4.1: +webpack-sources@^3.5.0: version "3.5.0" resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-3.5.0.tgz#87bf7f5801a4e985b1f1c92b64b9620a02f76d08" integrity sha512-HPuy+uuoTCaaoEoI1LQ3JN9+vrPBvEesnnX1jADHy728cHSMlq4wUc4afYqahq2B1mhQVZxCXOkNTnXltr+2vQ== webpack@^5.88.1, webpack@^5.95.0: - version "5.107.1" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.107.1.tgz#01ad63131b7c413f607cc00a8136f467c1f10af0" - integrity sha512-mvdIWxj/H6QsfgDdH9djne3a5dYcmEmtsXGESkypaGN5jXjF/b+9KDlmTDQ2TKlFUeA2fI9Y65kihD30JOdB+Q== + version "5.107.2" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.107.2.tgz#dea14dcb177b46b29de15f952f7303691ee2b596" + integrity sha512-v7RhXaJbpMlV0D7hC7lb2EbnxkoeUqf9qhKr6lozx3Q48pmFrqqNRmZFUEGmi7pSwm6fCQ2H1IjvCkHqdpVdjQ== dependencies: "@types/estree" "^1.0.8" "@types/json-schema" "^7.0.15" @@ -9274,7 +9274,7 @@ webpack@^5.88.1, webpack@^5.95.0: acorn-import-phases "^1.0.3" browserslist "^4.28.1" chrome-trace-event "^1.0.2" - enhanced-resolve "^5.21.4" + enhanced-resolve "^5.22.0" es-module-lexer "^2.1.0" eslint-scope "5.1.1" events "^3.2.0" @@ -9287,7 +9287,7 @@ webpack@^5.88.1, webpack@^5.95.0: tapable "^2.3.0" terser-webpack-plugin "^5.5.0" watchpack "^2.5.1" - webpack-sources "^3.4.1" + webpack-sources "^3.5.0" webpackbar@^7.0.0: version "7.0.0" From f7088258fd0ca1bca2e7dc15753be495d7dcc022 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 4 Jun 2026 10:32:50 +0200 Subject: [PATCH 012/134] fix(deps): update all non-major go dependencies to 8e1642e (#939) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [github.com/cloudnative-pg/barman-cloud](https://redirect.github.com/cloudnative-pg/barman-cloud) | require | digest | `213211e` β†’ `8e1642e` | --- ### Configuration πŸ“… **Schedule**: (UTC) - Branch creation - At any time (no schedule defined) - Automerge - At any time (no schedule defined) 🚦 **Automerge**: Enabled. β™» **Rebasing**: Never, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/cloudnative-pg/plugin-barman-cloud). Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 6 ++---- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/go.mod b/go.mod index 0775552..8b2af83 100644 --- a/go.mod +++ b/go.mod @@ -5,7 +5,7 @@ go 1.26.3 require ( github.com/cert-manager/cert-manager v1.20.2 github.com/cloudnative-pg/api v1.29.1 - github.com/cloudnative-pg/barman-cloud v0.5.2-0.20260603073812-213211ec5e6f + github.com/cloudnative-pg/barman-cloud v0.5.2-0.20260604071807-8e1642e2ce0e github.com/cloudnative-pg/cloudnative-pg v1.29.1 github.com/cloudnative-pg/cnpg-i v0.5.0 github.com/cloudnative-pg/cnpg-i-machinery v0.4.2 diff --git a/go.sum b/go.sum index 462cd03..f7c406f 100644 --- a/go.sum +++ b/go.sum @@ -20,10 +20,8 @@ github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UF github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/cloudnative-pg/api v1.29.1 h1:FWr8S7EQeOfdhYXyr2cof8wUXLARZiiQt5Qa6ltED7w= github.com/cloudnative-pg/api v1.29.1/go.mod h1:QtWF3yzSvIfORMHaSkPAk/o3bhCJwEHJgN3riyRiz3o= -github.com/cloudnative-pg/barman-cloud v0.5.2-0.20260513095406-dac43abc6cf6 h1:FxIX5u8Kf1aJQnmW/5eRo+1hx/okApecnIJAmvliaJ8= -github.com/cloudnative-pg/barman-cloud v0.5.2-0.20260513095406-dac43abc6cf6/go.mod h1:VrubJGTgO94O2+m4EX68/wlbDmluc6ITL/VjTcMN3H4= -github.com/cloudnative-pg/barman-cloud v0.5.2-0.20260603073812-213211ec5e6f h1:37XPQQ7PY1tffCXS4QuRK7eSDIzn6oeF8h3cIteN2SE= -github.com/cloudnative-pg/barman-cloud v0.5.2-0.20260603073812-213211ec5e6f/go.mod h1:jCaMsQwJJ0f/49TIdSad1Ayjv52IoJXMZBhozqilY/g= +github.com/cloudnative-pg/barman-cloud v0.5.2-0.20260604071807-8e1642e2ce0e h1:s79/J9WrvhBnbcDk6/p1KcRdZzXhjAoASSgA4Ik6YSw= +github.com/cloudnative-pg/barman-cloud v0.5.2-0.20260604071807-8e1642e2ce0e/go.mod h1:jCaMsQwJJ0f/49TIdSad1Ayjv52IoJXMZBhozqilY/g= github.com/cloudnative-pg/cloudnative-pg v1.29.1 h1:ZNEt1TMlnQKXI1kho2UqQuqdfvIvjGln4kN7C1lsmGA= github.com/cloudnative-pg/cloudnative-pg v1.29.1/go.mod h1:Sbgx9jVmkle4/gR2U5JHrzDd74sRPOBHDtPkvncg5v8= github.com/cloudnative-pg/cnpg-i v0.5.0 h1:/TOzpNT6cwNgrpftTtrnLKdoHgMwd+88vZgXjlVgXeE= From 40aa4b21b88e2e323226c391078240d365653de9 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 4 Jun 2026 12:21:08 +0200 Subject: [PATCH 013/134] fix(deps): update all non-major go dependencies to 5d46599 (#940) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [github.com/cloudnative-pg/barman-cloud](https://redirect.github.com/cloudnative-pg/barman-cloud) | require | digest | `8e1642e` β†’ `5d46599` | Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 8b2af83..f33fd96 100644 --- a/go.mod +++ b/go.mod @@ -5,7 +5,7 @@ go 1.26.3 require ( github.com/cert-manager/cert-manager v1.20.2 github.com/cloudnative-pg/api v1.29.1 - github.com/cloudnative-pg/barman-cloud v0.5.2-0.20260604071807-8e1642e2ce0e + github.com/cloudnative-pg/barman-cloud v0.5.2-0.20260604074245-5d4659922a82 github.com/cloudnative-pg/cloudnative-pg v1.29.1 github.com/cloudnative-pg/cnpg-i v0.5.0 github.com/cloudnative-pg/cnpg-i-machinery v0.4.2 diff --git a/go.sum b/go.sum index f7c406f..d84c437 100644 --- a/go.sum +++ b/go.sum @@ -20,8 +20,8 @@ github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UF github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/cloudnative-pg/api v1.29.1 h1:FWr8S7EQeOfdhYXyr2cof8wUXLARZiiQt5Qa6ltED7w= github.com/cloudnative-pg/api v1.29.1/go.mod h1:QtWF3yzSvIfORMHaSkPAk/o3bhCJwEHJgN3riyRiz3o= -github.com/cloudnative-pg/barman-cloud v0.5.2-0.20260604071807-8e1642e2ce0e h1:s79/J9WrvhBnbcDk6/p1KcRdZzXhjAoASSgA4Ik6YSw= -github.com/cloudnative-pg/barman-cloud v0.5.2-0.20260604071807-8e1642e2ce0e/go.mod h1:jCaMsQwJJ0f/49TIdSad1Ayjv52IoJXMZBhozqilY/g= +github.com/cloudnative-pg/barman-cloud v0.5.2-0.20260604074245-5d4659922a82 h1:XKuLJWTREfjUHAw97LHA1qTcuv93oMu7ILASUYNFjpc= +github.com/cloudnative-pg/barman-cloud v0.5.2-0.20260604074245-5d4659922a82/go.mod h1:jCaMsQwJJ0f/49TIdSad1Ayjv52IoJXMZBhozqilY/g= github.com/cloudnative-pg/cloudnative-pg v1.29.1 h1:ZNEt1TMlnQKXI1kho2UqQuqdfvIvjGln4kN7C1lsmGA= github.com/cloudnative-pg/cloudnative-pg v1.29.1/go.mod h1:Sbgx9jVmkle4/gR2U5JHrzDd74sRPOBHDtPkvncg5v8= github.com/cloudnative-pg/cnpg-i v0.5.0 h1:/TOzpNT6cwNgrpftTtrnLKdoHgMwd+88vZgXjlVgXeE= From c45472efcb26dde72d4476458475d223b9aa97cb Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 4 Jun 2026 13:25:17 +0200 Subject: [PATCH 014/134] chore(deps): update dependency dagger/dagger to v0.21.4 (#929) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Update | Change | |---|---|---| | [dagger/dagger](https://redirect.github.com/dagger/dagger) | patch | `0.21.0` β†’ `0.21.4` | Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/ci.yml | 2 +- .github/workflows/release-please.yml | 2 +- .github/workflows/release-publish.yml | 2 +- Taskfile.yml | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index e44f3fc..94caf5b 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -44,7 +44,7 @@ jobs: - name: Install Dagger env: # renovate: datasource=github-tags depName=dagger/dagger versioning=semver - DAGGER_VERSION: 0.21.0 + DAGGER_VERSION: 0.21.4 run: | curl -L https://dl.dagger.io/dagger/install.sh | BIN_DIR=$HOME/.local/bin sh - name: Run CI task diff --git a/.github/workflows/release-please.yml b/.github/workflows/release-please.yml index 92a43ed..17be530 100644 --- a/.github/workflows/release-please.yml +++ b/.github/workflows/release-please.yml @@ -31,7 +31,7 @@ jobs: - name: Install Dagger env: # renovate: datasource=github-tags depName=dagger/dagger versioning=semver - DAGGER_VERSION: 0.21.0 + DAGGER_VERSION: 0.21.4 run: | curl -L https://dl.dagger.io/dagger/install.sh | BIN_DIR=$HOME/.local/bin sh - name: Create image and manifest diff --git a/.github/workflows/release-publish.yml b/.github/workflows/release-publish.yml index 9470cc0..4951770 100644 --- a/.github/workflows/release-publish.yml +++ b/.github/workflows/release-publish.yml @@ -21,7 +21,7 @@ jobs: - name: Install Dagger env: # renovate: datasource=github-tags depName=dagger/dagger versioning=semver - DAGGER_VERSION: 0.21.0 + DAGGER_VERSION: 0.21.4 run: | curl -L https://dl.dagger.io/dagger/install.sh | BIN_DIR=$HOME/.local/bin sh - name: Create image and manifest diff --git a/Taskfile.yml b/Taskfile.yml index 69052ea..cd61a31 100644 --- a/Taskfile.yml +++ b/Taskfile.yml @@ -206,7 +206,7 @@ tasks: - start-build-network vars: # renovate: datasource=github-tags depName=dagger/dagger versioning=semver - DAGGER_VERSION: 0.21.0 + DAGGER_VERSION: 0.21.4 DAGGER_ENGINE_IMAGE: registry.dagger.io/engine:v{{ .DAGGER_VERSION }} cmds: - > From 7ea2b15da055457cc21b6599de0205439c252cb8 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 4 Jun 2026 17:08:42 +0200 Subject: [PATCH 015/134] chore(deps): update all cloudnative-pg daggerverse dependencies to e7f1192 (#938) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Update | Change | |---|---|---| | commitlint | digest | `21755df` β†’ `e7f1192` | | controller-gen | digest | `21755df` β†’ `e7f1192` | | crd-gen-refs | digest | `21755df` β†’ `e7f1192` | | spellcheck | digest | `21755df` β†’ `e7f1192` | | uncommitted | digest | `21755df` β†’ `e7f1192` | Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Taskfile.yml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/Taskfile.yml b/Taskfile.yml index cd61a31..1670dc3 100644 --- a/Taskfile.yml +++ b/Taskfile.yml @@ -46,7 +46,7 @@ tasks: - wordlist-ordered env: # renovate: datasource=git-refs depName=spellcheck lookupName=https://github.com/cloudnative-pg/daggerverse currentValue=main - DAGGER_SPELLCHECK_SHA: 21755df1a27febff19b28dbe6ae57116f6088bb0 + DAGGER_SPELLCHECK_SHA: e7f11923ad316021146ee34e3db9dc2d66cbb2d1 cmds: - > GITHUB_REF= dagger -s call -m github.com/cloudnative-pg/daggerverse/spellcheck@${DAGGER_SPELLCHECK_SHA} @@ -60,7 +60,7 @@ tasks: desc: Check for conventional commits env: # renovate: datasource=git-refs depName=commitlint lookupName=https://github.com/cloudnative-pg/daggerverse currentValue=main - DAGGER_COMMITLINT_SHA: 21755df1a27febff19b28dbe6ae57116f6088bb0 + DAGGER_COMMITLINT_SHA: e7f11923ad316021146ee34e3db9dc2d66cbb2d1 cmds: - > GITHUB_REF= dagger -s call -m github.com/cloudnative-pg/daggerverse/commitlint@${DAGGER_COMMITLINT_SHA} @@ -74,7 +74,7 @@ tasks: - wordlist-ordered env: # renovate: datasource=git-refs depName=uncommitted lookupName=https://github.com/cloudnative-pg/daggerverse currentValue=main - DAGGER_UNCOMMITTED_SHA: 21755df1a27febff19b28dbe6ae57116f6088bb0 + DAGGER_UNCOMMITTED_SHA: e7f11923ad316021146ee34e3db9dc2d66cbb2d1 cmds: - GITHUB_REF= dagger -s call -m github.com/cloudnative-pg/daggerverse/uncommitted@${DAGGER_UNCOMMITTED_SHA} check-uncommitted --source . stdout sources: @@ -86,7 +86,7 @@ tasks: - controller-gen env: # renovate: datasource=git-refs depName=crd-gen-refs lookupName=https://github.com/cloudnative-pg/daggerverse currentValue=main - DAGGER_CRDGENREF_SHA: 21755df1a27febff19b28dbe6ae57116f6088bb0 + DAGGER_CRDGENREF_SHA: e7f11923ad316021146ee34e3db9dc2d66cbb2d1 # renovate: datasource=go depName=github.com/elastic/crd-ref-docs CRDREFDOCS_VERSION: v0.3.0 cmds: @@ -381,7 +381,7 @@ tasks: run: once env: # renovate: datasource=git-refs depName=controller-gen lookupName=https://github.com/cloudnative-pg/daggerverse currentValue=main - DAGGER_CONTROLLER_GEN_SHA: 21755df1a27febff19b28dbe6ae57116f6088bb0 + DAGGER_CONTROLLER_GEN_SHA: e7f11923ad316021146ee34e3db9dc2d66cbb2d1 cmds: - > GITHUB_REF= dagger -s call -m github.com/cloudnative-pg/daggerverse/controller-gen@${DAGGER_CONTROLLER_GEN_SHA} From fd333cb51b99f2fbcbea83c720ca417ca4962a59 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 4 Jun 2026 17:56:10 +0200 Subject: [PATCH 016/134] chore(deps): update documentation dependencies to v19.2.7 (#930) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) | |---|---|---|---| | [react](https://react.dev/) ([source](https://redirect.github.com/facebook/react/tree/HEAD/packages/react)) | [`19.2.6` β†’ `19.2.7`](https://renovatebot.com/diffs/npm/react/19.2.6/19.2.7) | ![age](https://developer.mend.io/api/mc/badges/age/npm/react/19.2.7?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/react/19.2.6/19.2.7?slim=true) | | [react-dom](https://react.dev/) ([source](https://redirect.github.com/facebook/react/tree/HEAD/packages/react-dom)) | [`19.2.6` β†’ `19.2.7`](https://renovatebot.com/diffs/npm/react-dom/19.2.6/19.2.7) | ![age](https://developer.mend.io/api/mc/badges/age/npm/react-dom/19.2.7?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/react-dom/19.2.6/19.2.7?slim=true) | Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- web/yarn.lock | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/web/yarn.lock b/web/yarn.lock index 6485435..37620ea 100644 --- a/web/yarn.lock +++ b/web/yarn.lock @@ -7885,9 +7885,9 @@ rc@1.2.8: strip-json-comments "~2.0.1" react-dom@^19.0.0: - version "19.2.6" - resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-19.2.6.tgz#44a81b0bcca22da814c00847d09d01c8615529b7" - integrity sha512-0prMI+hvBbPjsWnxDLxlCGyM8PN6UuWjEUCYmZhO67xIV9Xasa/r/vDnq+Xyq4Lo27g8QSbO5YzARu0D1Sps3g== + version "19.2.7" + resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-19.2.7.tgz#0450dc9ae9ddbff76ef196401cd8b8c7fb466ccc" + integrity sha512-t0BRVXvbiE/o20Hfw669rLbMCDWtYZLvmJigy2f0MxsXF+71pxhR3xOkspmsO8h3ZlNzyibAmtCa3l4lYKk6gQ== dependencies: scheduler "^0.27.0" @@ -7967,9 +7967,9 @@ react-router@5.3.4, react-router@^5.3.4: tiny-warning "^1.0.0" react@^19.0.0: - version "19.2.6" - resolved "https://registry.yarnpkg.com/react/-/react-19.2.6.tgz#3dadb8e12b2a7934c1d5317973e5dce1301f9a4d" - integrity sha512-sfWGGfavi0xr8Pg0sVsyHMAOziVYKgPLNrS7ig+ivMNb3wbCBw3KxtflsGBAwD3gYQlE/AEZsTLgToRrSCjb0Q== + version "19.2.7" + resolved "https://registry.yarnpkg.com/react/-/react-19.2.7.tgz#1f47a1bfc06f8ec885752c6f4af14369a9f8260b" + integrity sha512-HNe9WslTbXmFK8o8cmwgAeJFSBvt1bPdHCVKtaaV+WlAN36mpT4hcRpwbf3fY56ar2oIXzsBpOAiIRHAdY0OlQ== readable-stream@^2.0.1: version "2.3.8" From 3efe655ed561047ba5a3afb9d2d253fd008d8cb2 Mon Sep 17 00:00:00 2001 From: Marco Nenciarini Date: Mon, 8 Jun 2026 09:17:21 +0200 Subject: [PATCH 017/134] ci: stop Dagger from shallow-cloning the working tree (#947) In GitHub Actions pull request builds, Dagger's telemetry git-label collection runs `git fetch --depth 1` against the working tree whenever GITHUB_REF is a refs/pull/ ref, which turns the checkout into a shallow clone. Once shallow, `git merge-base origin/main HEAD` finds no common ancestor and the commitlint task (--from=origin/main) fails on every pull request. Most dagger invocations already prefix GITHUB_REF= to suppress this; a few were missing it. Prefix the remaining calls so Dagger never shallow-fetches the host repository. Upstream Dagger bug: dagger/dagger#13351 Signed-off-by: Marco Nenciarini --- Taskfile.yml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/Taskfile.yml b/Taskfile.yml index 1670dc3..b7e0b1b 100644 --- a/Taskfile.yml +++ b/Taskfile.yml @@ -122,7 +122,7 @@ tasks: docusaurus-version-is-aligned: desc: Verify that a documentation version exists for the current version of the plugin cmds: - - $(dagger -s call -m dagger/check-doc-version has-version-documentation --src .) + - $(GITHUB_REF= dagger -s call -m dagger/check-doc-version has-version-documentation --src .) src: - .release-please-manifest.json - ./web/versions.json @@ -366,12 +366,12 @@ tasks: DAGGER_DOCKER_SHA: ee12c1a4a2630e194ec20c5a9959183e3a78c192 cmds: - > - dagger call -m github.com/purpleclay/daggerverse/docker@${DAGGER_DOCKER_SHA} + GITHUB_REF= dagger call -m github.com/purpleclay/daggerverse/docker@${DAGGER_DOCKER_SHA} --registry ghcr.io --username $REGISTRY_USER --password env:REGISTRY_PASSWORD build --dir . --file containers/Dockerfile.plugin --args GO_VERSION={{.GO_VERSION}} --platform linux/amd64 --platform linux/arm64 publish --ref {{.PLUGIN_IMAGE_NAME}} --tags {{.IMAGE_VERSION}} - > - dagger call -m github.com/purpleclay/daggerverse/docker@${DAGGER_DOCKER_SHA} + GITHUB_REF= dagger call -m github.com/purpleclay/daggerverse/docker@${DAGGER_DOCKER_SHA} --registry ghcr.io --username $REGISTRY_USER --password env:REGISTRY_PASSWORD build --dir . --file containers/Dockerfile.sidecar --args GO_VERSION={{.GO_VERSION}} --platform linux/amd64 --platform linux/arm64 publish --ref {{.SIDECAR_IMAGE_NAME}} --tags {{.IMAGE_VERSION}} @@ -456,13 +456,13 @@ tasks: DAGGER_KUSTOMIZE_SHA: ff27cd50f6b4eed2e3753c520632cd6099e1ce52 cmds: - > - dagger -s call -m https://github.com/sagikazarmark/daggerverse/kustomize@${DAGGER_KUSTOMIZE_SHA} + GITHUB_REF= dagger -s call -m https://github.com/sagikazarmark/daggerverse/kustomize@${DAGGER_KUSTOMIZE_SHA} edit --source . --dir kubernetes set image --image plugin-barman-cloud={{.PLUGIN_IMAGE_NAME}}:{{.IMAGE_VERSION}} set secret --secret plugin-barman-cloud --from-literal SIDECAR_IMAGE={{.SIDECAR_IMAGE_NAME}}:{{.IMAGE_VERSION}} directory directory --path kubernetes export --path manifest-build - > - dagger -s call -m github.com/sagikazarmark/daggerverse/kustomize@${DAGGER_KUSTOMIZE_SHA} + GITHUB_REF= dagger -s call -m github.com/sagikazarmark/daggerverse/kustomize@${DAGGER_KUSTOMIZE_SHA} build --source . --dir manifest-build export --path manifest.yaml sources: - ./config/**/*.yaml @@ -489,7 +489,7 @@ tasks: msg: not a tag, failing cmds: - > - dagger -s call -m github.com/sagikazarmark/daggerverse/gh@${DAGGER_GH_SHA} + GITHUB_REF= dagger -s call -m github.com/sagikazarmark/daggerverse/gh@${DAGGER_GH_SHA} with-source --source . run --repo {{.GITHUB_REPOSITORY}} --token env:GITHUB_TOKEN --cmd "release upload {{.GITHUB_REF_NAME}} manifest.yaml" From bb7845dd621115026744c9f1b32cb2fd0cb4a729 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niccol=C3=B2=20Fei?= Date: Mon, 8 Jun 2026 11:08:15 +0200 Subject: [PATCH 018/134] fix(scheme): register meta types for CNPG scheme group version (#943) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit After the controller-runtime v0.24.0 upgrade (58f4fed), the instance sidecar logged "v1.GetOptions is not suitable for converting to postgresql.cnpg.io/v1" on every WAL archive, which broke retention policy enforcement. Register the standard meta types with metav1.AddToGroupVersion after the AddKnownTypes call in internal/cnpgi/common/scheme.go and internal/scheme/cnpg.go. Closes #942 Signed-off-by: NiccolΓ² Fei --- internal/cnpgi/common/scheme.go | 2 ++ internal/scheme/cnpg.go | 2 ++ 2 files changed, 4 insertions(+) diff --git a/internal/cnpgi/common/scheme.go b/internal/cnpgi/common/scheme.go index 8f74015..b2acb53 100644 --- a/internal/cnpgi/common/scheme.go +++ b/internal/cnpgi/common/scheme.go @@ -25,6 +25,7 @@ import ( cnpgv1 "github.com/cloudnative-pg/cloudnative-pg/api/v1" "github.com/cloudnative-pg/machinery/pkg/log" "github.com/spf13/viper" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/runtime" "k8s.io/apimachinery/pkg/runtime/schema" utilruntime "k8s.io/apimachinery/pkg/util/runtime" @@ -58,6 +59,7 @@ func GenerateScheme(ctx context.Context) *runtime.Scheme { &cnpgv1.Backup{}, &cnpgv1.BackupList{}, &cnpgv1.ScheduledBackup{}, &cnpgv1.ScheduledBackupList{}, ) + metav1.AddToGroupVersion(result, schemeGroupVersion) schemeLog := log.FromContext(ctx) schemeLog.Info("CNPG types registration", "schemeGroupVersion", schemeGroupVersion) diff --git a/internal/scheme/cnpg.go b/internal/scheme/cnpg.go index 43146c3..c6d436a 100644 --- a/internal/scheme/cnpg.go +++ b/internal/scheme/cnpg.go @@ -25,6 +25,7 @@ import ( cnpgv1 "github.com/cloudnative-pg/cloudnative-pg/api/v1" "github.com/cloudnative-pg/machinery/pkg/log" "github.com/spf13/viper" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/runtime" "k8s.io/apimachinery/pkg/runtime/schema" ) @@ -49,6 +50,7 @@ func AddCNPGToScheme(ctx context.Context, s *runtime.Scheme) { &cnpgv1.Backup{}, &cnpgv1.BackupList{}, &cnpgv1.ScheduledBackup{}, &cnpgv1.ScheduledBackupList{}, ) + metav1.AddToGroupVersion(s, schemeGroupVersion) log.FromContext(ctx).Info("CNPG types registration", "schemeGroupVersion", schemeGroupVersion) } From 2ae62d22144794fadb056404ca17531993c80467 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 9 Jun 2026 08:58:50 +0200 Subject: [PATCH 019/134] chore(deps): lock file maintenance documentation dependencies (#948) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Update | Change | |---|---| | lockFileMaintenance | All locks refreshed | --- > [!WARNING] > Some dependencies could not be looked up. Check the [Dependency Dashboard](../issues/7) for more information. πŸ”§ This Pull Request updates lock files to use the latest dependency versions. --- ### Configuration πŸ“… **Schedule**: (UTC) - Branch creation - "before 4am on monday" - Automerge - At any time (no schedule defined) 🚦 **Automerge**: Enabled. β™» **Rebasing**: Never, or you tick the rebase/retry checkbox. πŸ‘» **Immortal**: This PR will be recreated if closed unmerged. Get [config help](https://redirect.github.com/renovatebot/renovate/discussions) if that's undesired. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/cloudnative-pg/plugin-barman-cloud). Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- web/yarn.lock | 218 +++++++++++++++++++++++++------------------------- 1 file changed, 109 insertions(+), 109 deletions(-) diff --git a/web/yarn.lock b/web/yarn.lock index 37620ea..323e05b 100644 --- a/web/yarn.lock +++ b/web/yarn.lock @@ -2008,24 +2008,24 @@ tslib "^2.4.0" "@emnapi/core@^1.4.3": - version "1.10.0" - resolved "https://registry.yarnpkg.com/@emnapi/core/-/core-1.10.0.tgz#380ccc8f2412ea22d1d972df7f8ee23a3b9c7467" - integrity sha512-yq6OkJ4p82CAfPl0u9mQebQHKPJkY7WrIuk205cTYnYe+k2Z8YBh11FrbRG/H6ihirqcacOgl2BIO8oyMQLeXw== + version "1.11.0" + resolved "https://registry.yarnpkg.com/@emnapi/core/-/core-1.11.0.tgz#8a655042dbbb10d0266670c9903c34a7001c705b" + integrity sha512-l9Oo58x0HOP5znGzVhYW9U3e5wVuA4LAZU2AGezTmkhO1CgQRFDhDg4nneHsu/t3WniXg9QrG2nIXL/ZS8ln8Q== dependencies: - "@emnapi/wasi-threads" "1.2.1" + "@emnapi/wasi-threads" "1.2.2" tslib "^2.4.0" "@emnapi/runtime@^1.4.3": - version "1.10.0" - resolved "https://registry.yarnpkg.com/@emnapi/runtime/-/runtime-1.10.0.tgz#4b260c0d3534204e98c6110b8db1a987d26ec87c" - integrity sha512-ewvYlk86xUoGI0zQRNq/mC+16R1QeDlKQy21Ki3oSYXNgLb45GV1P6A0M+/s6nyCuNDqe5VpaY84BzXGwVbwFA== + version "1.11.0" + resolved "https://registry.yarnpkg.com/@emnapi/runtime/-/runtime-1.11.0.tgz#ce16b3674ff7266bbf50f9668bde8a04f3014d4e" + integrity sha512-55coeOFKHv1ywEcUXJtWU5f+Jr/W5tZDvZig8DLKSwUN1JpROQ4rk/SNOQiFWmaR/VKF4zuFyW1B8JduOSv6Pg== dependencies: tslib "^2.4.0" -"@emnapi/wasi-threads@1.2.1": - version "1.2.1" - resolved "https://registry.yarnpkg.com/@emnapi/wasi-threads/-/wasi-threads-1.2.1.tgz#28fed21a1ba1ce797c44a070abc94d42f3ae8548" - integrity sha512-uTII7OYF+/Mes/MrcIOYp5yOtSMLBWSIoLPpcgwipoiKbli6k322tcoFsxoIIxPDqW01SQGAgko4EzZi2BNv2w== +"@emnapi/wasi-threads@1.2.2": + version "1.2.2" + resolved "https://registry.yarnpkg.com/@emnapi/wasi-threads/-/wasi-threads-1.2.2.tgz#4c93becf5bfa3b13d1bbdcc06aee38321ad8139a" + integrity sha512-c95qOXkHdydNKhscBTebqEC1CVAZpyqOfVfBzQ1qgzyl3gfeldUjIggDbIZgDKsHLgnsM+igH7TJ/eAasaVuMA== dependencies: tslib "^2.4.0" @@ -2132,74 +2132,74 @@ resolved "https://registry.yarnpkg.com/@jsonjoy.com/codegen/-/codegen-1.0.0.tgz#5c23f796c47675f166d23b948cdb889184b93207" integrity sha512-E8Oy+08cmCf0EK/NMxpaJZmOxPqM+6iSe2S4nlSBrPZOORoDJILxtbSUEDKQyTamm/BVAhIGllOBNU79/dwf0g== -"@jsonjoy.com/fs-core@4.57.3": - version "4.57.3" - resolved "https://registry.yarnpkg.com/@jsonjoy.com/fs-core/-/fs-core-4.57.3.tgz#e44bf1396a6d8c4a9a752084e57022617ea0f5f5" - integrity sha512-IvO50vkGydDZwS1e9rz/JXEtCCt9XvqxoGI6FlrVIvVm4/HpygMKW4ETtREWtMTsN5CLJ9FR6GuCduoQPZLBiw== +"@jsonjoy.com/fs-core@4.57.6": + version "4.57.6" + resolved "https://registry.yarnpkg.com/@jsonjoy.com/fs-core/-/fs-core-4.57.6.tgz#6ac35419d48a8ca558b357203f2fd6153135647f" + integrity sha512-uI++Wx6VkBJqVmkb4ZeExwAVpZiA2Do5NrEtXoDk0Pdvce3ytFXJoviT1sLOj16+qDIMnD5nWPfOhVpnDmRJKg== dependencies: - "@jsonjoy.com/fs-node-builtins" "4.57.3" - "@jsonjoy.com/fs-node-utils" "4.57.3" + "@jsonjoy.com/fs-node-builtins" "4.57.6" + "@jsonjoy.com/fs-node-utils" "4.57.6" thingies "^2.5.0" -"@jsonjoy.com/fs-fsa@4.57.3": - version "4.57.3" - resolved "https://registry.yarnpkg.com/@jsonjoy.com/fs-fsa/-/fs-fsa-4.57.3.tgz#097106d9688d9384419e3bac893b71e41a71f05d" - integrity sha512-JlIDGUWPl7Y6zl+/ISnZuh8z2aMr/xoR66D18zlaVAuL192CvlNJEzOlzp27x4P52HRtDnCSOk6f59vTsmp5vw== +"@jsonjoy.com/fs-fsa@4.57.6": + version "4.57.6" + resolved "https://registry.yarnpkg.com/@jsonjoy.com/fs-fsa/-/fs-fsa-4.57.6.tgz#385890464f57146ba71bd057ad98c961d144b96c" + integrity sha512-pKkw/yC5CzSZKhIIUIsH1przOa+K5jGmZIg1sWaSF24JojyrUFbjcQv7QrcGAudriei6HQ6R0BFj+V8NbQinJw== dependencies: - "@jsonjoy.com/fs-core" "4.57.3" - "@jsonjoy.com/fs-node-builtins" "4.57.3" - "@jsonjoy.com/fs-node-utils" "4.57.3" + "@jsonjoy.com/fs-core" "4.57.6" + "@jsonjoy.com/fs-node-builtins" "4.57.6" + "@jsonjoy.com/fs-node-utils" "4.57.6" thingies "^2.5.0" -"@jsonjoy.com/fs-node-builtins@4.57.3": - version "4.57.3" - resolved "https://registry.yarnpkg.com/@jsonjoy.com/fs-node-builtins/-/fs-node-builtins-4.57.3.tgz#b6b34ed532554916e186977d00c19ffcafb3515f" - integrity sha512-JAI3PqNuY8BR7ovy4h0bADLrqJLIcUauONNZfyTxUnj3Wf3tpTYe39eJ6z7FzYyA+tdMt33VpiQQUikGr3QOBw== +"@jsonjoy.com/fs-node-builtins@4.57.6": + version "4.57.6" + resolved "https://registry.yarnpkg.com/@jsonjoy.com/fs-node-builtins/-/fs-node-builtins-4.57.6.tgz#76a2a3300c9d0f1d5e45ec45785f2aacaec212be" + integrity sha512-V4DgEFT3Cg5S9fCMOZSCVdTxdJWWLBO0WnAazV7hnCM96u5zXHyW/ubDAfcSVwqjkMJ50W1Y44IXtxRoIwaCVg== -"@jsonjoy.com/fs-node-to-fsa@4.57.3": - version "4.57.3" - resolved "https://registry.yarnpkg.com/@jsonjoy.com/fs-node-to-fsa/-/fs-node-to-fsa-4.57.3.tgz#020509740459a9d42f61d40c87613c2ec24b7022" - integrity sha512-uZGxyC0zDmcmW5bfHd4YivAZ54BLlbF9G0K5rBaksI/tZdJSGM7/AC+1TY7yvFu0Wc6gUHR7mFwf6SbQ3J1BTQ== +"@jsonjoy.com/fs-node-to-fsa@4.57.6": + version "4.57.6" + resolved "https://registry.yarnpkg.com/@jsonjoy.com/fs-node-to-fsa/-/fs-node-to-fsa-4.57.6.tgz#dbccc7d784b1e237c4d6a82f8d4ee39a2361da8c" + integrity sha512-+JptNw3iifihxH2rEXrninDzX4FFVW8JD/wPR8GbJPAeL9CQUSblrlumOPB5gZuS7tYRX+PJPLtT7XzKoRhv/Q== dependencies: - "@jsonjoy.com/fs-fsa" "4.57.3" - "@jsonjoy.com/fs-node-builtins" "4.57.3" - "@jsonjoy.com/fs-node-utils" "4.57.3" + "@jsonjoy.com/fs-fsa" "4.57.6" + "@jsonjoy.com/fs-node-builtins" "4.57.6" + "@jsonjoy.com/fs-node-utils" "4.57.6" -"@jsonjoy.com/fs-node-utils@4.57.3": - version "4.57.3" - resolved "https://registry.yarnpkg.com/@jsonjoy.com/fs-node-utils/-/fs-node-utils-4.57.3.tgz#25fb8dbf0406c1cd5a9e0a22274f1e45bf6d460c" - integrity sha512-quCil8AvfcOxob4pn0drGdcQWpkPVgkt9q1+EjeyXXT40/L3l5lvYrr6hR8LmHu0eg+DNNaUwqjLT6Hr7V4sdQ== +"@jsonjoy.com/fs-node-utils@4.57.6": + version "4.57.6" + resolved "https://registry.yarnpkg.com/@jsonjoy.com/fs-node-utils/-/fs-node-utils-4.57.6.tgz#67f1caff1ced836d8206bd769ecf3a4d3f04ca35" + integrity sha512-foyUrfS7WmYEUzqYXSNxmJBcSj04TABrkpFabwO9SCDCpVCfJ+qG+2sk5FjfiflG2n0SDFZDCJ6vYlJAEpxJFg== dependencies: - "@jsonjoy.com/fs-node-builtins" "4.57.3" + "@jsonjoy.com/fs-node-builtins" "4.57.6" -"@jsonjoy.com/fs-node@4.57.3": - version "4.57.3" - resolved "https://registry.yarnpkg.com/@jsonjoy.com/fs-node/-/fs-node-4.57.3.tgz#edf03464f451d1bdd59bafc39f707d804524b364" - integrity sha512-089gZoKvbeOsT2jeBaVKSz91oFXQWFG7a62sMY6gVMHnoWbyGzTb6OVUP/V7G3wLQLJ555BEsHt8SD1nj1dgaQ== +"@jsonjoy.com/fs-node@4.57.6": + version "4.57.6" + resolved "https://registry.yarnpkg.com/@jsonjoy.com/fs-node/-/fs-node-4.57.6.tgz#1772c9e34c044bc7a65bce49e3882c7e2907a140" + integrity sha512-Kbn1jdkvDN4F2+BhoB6mMu7NCbhP0bgA5NcI1aJj/Q5UcU+I1JLLW+dEQean33iV4tXv35AzBVKPICnDltBpxw== dependencies: - "@jsonjoy.com/fs-core" "4.57.3" - "@jsonjoy.com/fs-node-builtins" "4.57.3" - "@jsonjoy.com/fs-node-utils" "4.57.3" - "@jsonjoy.com/fs-print" "4.57.3" - "@jsonjoy.com/fs-snapshot" "4.57.3" + "@jsonjoy.com/fs-core" "4.57.6" + "@jsonjoy.com/fs-node-builtins" "4.57.6" + "@jsonjoy.com/fs-node-utils" "4.57.6" + "@jsonjoy.com/fs-print" "4.57.6" + "@jsonjoy.com/fs-snapshot" "4.57.6" glob-to-regex.js "^1.0.0" thingies "^2.5.0" -"@jsonjoy.com/fs-print@4.57.3": - version "4.57.3" - resolved "https://registry.yarnpkg.com/@jsonjoy.com/fs-print/-/fs-print-4.57.3.tgz#b282395741a226a74550a7b6c14c9c81f57484d8" - integrity sha512-ITwaLZpGIqD9jHndwMvDFZDIvbVzGRsJZDQ5HKln0vyMculu1c1nb7zbEBgY8BVSBZ9S2xO138OWIBGeRsrF3Q== +"@jsonjoy.com/fs-print@4.57.6": + version "4.57.6" + resolved "https://registry.yarnpkg.com/@jsonjoy.com/fs-print/-/fs-print-4.57.6.tgz#62be13d03362a4f8c1c711a4f81d4bcd5178a3bd" + integrity sha512-96eAn4Dudtt67LTeuU47yUD+pg9/G/oKpI10zei9ljk3X3WK4lYKc+n3cpaPCAbKPzoyfxl0mXm8f8Y7BOSFXw== dependencies: - "@jsonjoy.com/fs-node-utils" "4.57.3" + "@jsonjoy.com/fs-node-utils" "4.57.6" tree-dump "^1.1.0" -"@jsonjoy.com/fs-snapshot@4.57.3": - version "4.57.3" - resolved "https://registry.yarnpkg.com/@jsonjoy.com/fs-snapshot/-/fs-snapshot-4.57.3.tgz#db3e113b77189d37f63d7f01c50d5e883ba2409b" - integrity sha512-wdNaG2DxCtvj9lKldAnEV3ycYPEpk+p2cP2lHD1qdxkoQGlWUtQverqvG9KZSkm6BHFha4PP6XRZbpARNfHRxA== +"@jsonjoy.com/fs-snapshot@4.57.6": + version "4.57.6" + resolved "https://registry.yarnpkg.com/@jsonjoy.com/fs-snapshot/-/fs-snapshot-4.57.6.tgz#6bde49a518a0ae4a9469a046fa4359c12f4f588d" + integrity sha512-V57CMzbOgTzUWGOWQ8GzHQdpJP6JnrYVNCtTBNxVYEnlVRvo4uEJqHhtAT8vhDFrIuJOXLrTL1Fki4h5oI7xxg== dependencies: "@jsonjoy.com/buffers" "^17.65.0" - "@jsonjoy.com/fs-node-utils" "4.57.3" + "@jsonjoy.com/fs-node-utils" "4.57.6" "@jsonjoy.com/json-pack" "^17.65.0" "@jsonjoy.com/util" "^17.65.0" @@ -2908,9 +2908,9 @@ "@types/unist" "*" "@types/mdx@^2.0.0": - version "2.0.13" - resolved "https://registry.yarnpkg.com/@types/mdx/-/mdx-2.0.13.tgz#68f6877043d377092890ff5b298152b0a21671bd" - integrity sha512-+OWZQfAYyio6YkJb3HLxDrvnx6SWWDbC0zVPfBRzUk0/nqoDyf6dNxQi3eArPe8rJ473nobTMQ/8Zk+LxJ+Yuw== + version "2.0.14" + resolved "https://registry.yarnpkg.com/@types/mdx/-/mdx-2.0.14.tgz#c1e54113265b152021ab0afe0434e3cadd90bfe3" + integrity sha512-T48PeuJtvLosNTPVhfnIp3i/n3a4g4Bad7YCq5k64D4u7NwDrAotikQ+5+sjtUvBmxCMlbo3dVL+C2dP0rWHzg== "@types/mime@^1": version "1.3.5" @@ -2923,9 +2923,9 @@ integrity sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA== "@types/node@*": - version "25.9.1" - resolved "https://registry.yarnpkg.com/@types/node/-/node-25.9.1.tgz#3bda556db500ae4319c08e7fc9ab94f19013ba0b" - integrity sha512-xfrlY7UD5rMJk3ZVJP8BNzS28J36YJg+xp+LPXV1TdWxr8uMH5A860QNxYDGQe/ylDSgjxE52Q9VnO7p75tJxg== + version "25.9.2" + resolved "https://registry.yarnpkg.com/@types/node/-/node-25.9.2.tgz#fc8958e757994b71fee516f9634bdb03d1b19e9f" + integrity sha512-G05zqtJhcDLb8uslf5EjCxXg9G1KQxiV8OS0R26IC//Eoyitzqe8z37I7cqvnZlrlSfgocQRfSn/AHBZJJFyGw== dependencies: undici-types ">=7.24.0 <7.24.7" @@ -2976,9 +2976,9 @@ "@types/react" "*" "@types/react@*": - version "19.2.15" - resolved "https://registry.yarnpkg.com/@types/react/-/react-19.2.15.tgz#9e2c6a4251a290f5c525c3143caa872fa6e01e0d" - integrity sha512-eRwcGNHve+E8qtEQSSRl6urh+rFop4v8gm6O8rGv25CodbvFdLjA1vVQ1KkiFE0w0UPOnb8tDiFKL5lp0rtY5Q== + version "19.2.17" + resolved "https://registry.yarnpkg.com/@types/react/-/react-19.2.17.tgz#dccac365baa0f1734ec270ff4b51c89465e8dc7f" + integrity sha512-MXfmqaVPEVgkBT/aY0aGCkRWWtByiYQXo3xdQ8r5RzuFrPiRn8Gar2tQdXSUQ2GKV3bkXckek89V8wQBY2Q/Aw== dependencies: csstype "^3.2.2" @@ -3471,9 +3471,9 @@ balanced-match@^1.0.0: integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== baseline-browser-mapping@^2.10.12: - version "2.10.33" - resolved "https://registry.yarnpkg.com/baseline-browser-mapping/-/baseline-browser-mapping-2.10.33.tgz#27c299b096404978831958d429f48390424c4f9b" - integrity sha512-bA6+tcSLpz2tIEdDXZPpPTIuxBcC4+w6SieaYyfigIa4h8GlFxbA17v22Vx3JUtuZQj9SgOsnbK+aTBzyDyEuw== + version "2.10.34" + resolved "https://registry.yarnpkg.com/baseline-browser-mapping/-/baseline-browser-mapping-2.10.34.tgz#dedb606362446777cfe328d30d4ee15056d06303" + integrity sha512-IMDedajPifLnHNY0X9n8hKxRTQ6/eTHwr5bDo04WnuqxyKw6LYtQywCuuqPZwhl3aBXMvQpJov42GLCwRRdQzw== batch@0.6.1: version "0.6.1" @@ -3680,9 +3680,9 @@ caniuse-api@^3.0.0: lodash.uniq "^4.5.0" caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001782, caniuse-lite@^1.0.30001787: - version "1.0.30001793" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001793.tgz#238887ddf5fcfc8c36d872394d0a78a517312a72" - integrity sha512-iwSsYWaCOoh26cV8NwNRViHlrfUvYsHDfRVcbtmw0Kg6PJIZZXwMkj1442FYLBGkeUf1juAsU3DTfxW579mrPA== + version "1.0.30001797" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001797.tgz#1332709e1439f01ff92085dd17001e0a45897ec0" + integrity sha512-l8xKG+gwAIExZGl9FrF7KUwuOmk6wbEPC9Xoy/RtnWv1XG0Q4LFlagaLpUv3Kiza3W/wm27zy0yWJEieYKAP6w== ccount@^2.0.0: version "2.0.1" @@ -4476,9 +4476,9 @@ ee-first@1.1.1: integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== electron-to-chromium@^1.5.328: - version "1.5.364" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.364.tgz#38af950b724b22b937c342c0c4b361bd2fb50669" - integrity sha512-G/dYE3+AYhyHwzTwg8UbnXf7zqMERYh7l2jJ3QujhFsH8agSYwtnGAR2aZ7f0AakIKJXd5En/Hre4igIUrdlYw== + version "1.5.368" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.368.tgz#8e8d4600c5f5f01e891f8f843b4a941afb640412" + integrity sha512-7RckJJK4uESJF9PxvfMWd3TGqIiieUTG4HxnKaKuIpGbcr+r2ZEB3g2gAhCP3Fqm42vJSzLfgab9eva/C4/XVw== emoji-regex@^8.0.0: version "8.0.0" @@ -4519,9 +4519,9 @@ encoding-sniffer@^0.2.1: whatwg-encoding "^3.1.1" enhanced-resolve@^5.22.0: - version "5.22.1" - resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.22.1.tgz#c34bc3f414298496fc244b21bbe316440782da17" - integrity sha512-6QEuw3zoX1SJQc7b87aBXke/no+mG2bTBgw29gWMQonLmpEkWoCAVkl+M49e48AZlWzxiDzDZzYdp6kobcyLww== + version "5.23.0" + resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.23.0.tgz#dfdf8d1c9065e4b52f8a598356138931c07305f9" + integrity sha512-yJN/BOOLxcOW2aQgeif9mSnaUB8KtvmMMp56oA1kx1CRfBKbhZm2pJ+NBY+3eOboHxix8lfjWpHE0Ei5U8RbSA== dependencies: graceful-fs "^4.2.4" tapable "^2.3.3" @@ -5889,9 +5889,9 @@ latest-version@^7.0.0: package-json "^8.1.0" launch-editor@^2.6.1: - version "2.14.0" - resolved "https://registry.yarnpkg.com/launch-editor/-/launch-editor-2.14.0.tgz#acef0cfda90ead4e0ab7fecb8ad0e1453bc7d3a6" - integrity sha512-Pj3ZOx9dD1BClS7YcSQx0An1PCF9wz4JpvbEmKvDxQtm0jxlkk5NhW8x0SBAKA/acHBKZaqdd5FFOWlXo500JA== + version "2.14.1" + resolved "https://registry.yarnpkg.com/launch-editor/-/launch-editor-2.14.1.tgz#f7e0da3f58aaea03fea01074d840b5f739ed7ddc" + integrity sha512-QWBrQsMpH7gPr965dsKD/3cKWiNoTjpATQf++Xq63N6sKRGMwlVXz41O1IZTMfZQgBctD/K5Zt06+/I6pP6+HA== dependencies: picocolors "^1.1.1" shell-quote "^1.8.4" @@ -6247,18 +6247,18 @@ media-typer@0.3.0: integrity sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ== memfs@^4.43.1: - version "4.57.3" - resolved "https://registry.yarnpkg.com/memfs/-/memfs-4.57.3.tgz#dceeff71e88dbb8d3892786be90f83e303d1d287" - integrity sha512-dlvqataP1zUOlfj6pv9wgCSC5pRIooNntXgdLfR7FWlcKi1p8fMfJADtHp/+8Dhu5JFvMHNh7L0QVcuaaBKqqA== + version "4.57.6" + resolved "https://registry.yarnpkg.com/memfs/-/memfs-4.57.6.tgz#ec7c83388eb6822ff1046a576292743afbd22fa5" + integrity sha512-WQK+DGjKCnPdpSyJUXphz+COF2uEhhsxQ3VIWBSbzpbbXuch3h4FePMqXrXGdLjsTgo4JFzBFsP6AWd9pVazGw== dependencies: - "@jsonjoy.com/fs-core" "4.57.3" - "@jsonjoy.com/fs-fsa" "4.57.3" - "@jsonjoy.com/fs-node" "4.57.3" - "@jsonjoy.com/fs-node-builtins" "4.57.3" - "@jsonjoy.com/fs-node-to-fsa" "4.57.3" - "@jsonjoy.com/fs-node-utils" "4.57.3" - "@jsonjoy.com/fs-print" "4.57.3" - "@jsonjoy.com/fs-snapshot" "4.57.3" + "@jsonjoy.com/fs-core" "4.57.6" + "@jsonjoy.com/fs-fsa" "4.57.6" + "@jsonjoy.com/fs-node" "4.57.6" + "@jsonjoy.com/fs-node-builtins" "4.57.6" + "@jsonjoy.com/fs-node-to-fsa" "4.57.6" + "@jsonjoy.com/fs-node-utils" "4.57.6" + "@jsonjoy.com/fs-print" "4.57.6" + "@jsonjoy.com/fs-snapshot" "4.57.6" "@jsonjoy.com/json-pack" "^1.11.0" "@jsonjoy.com/util" "^1.9.0" glob-to-regex.js "^1.0.1" @@ -6853,9 +6853,9 @@ node-emoji@^2.1.0: skin-tone "^2.0.0" node-releases@^2.0.36: - version "2.0.46" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.46.tgz#d188a129a83f5e03a101aacb58f260f2ee8faaa1" - integrity sha512-GYVXHE2KnrzAfsAjl4uP++evGFCrAU1jta4ubEjIG7YWt/64Gqv66a30yKwWczVjA6j3bM4nBwH7Pk1JmDHaxQ== + version "2.0.47" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.47.tgz#521bb2786da8eb140b748841c0b3b3a75334ffc4" + integrity sha512-Uzmd6LXpouKo8EUK68IjH4+E01w/hXyV3R3g/geCJo+rXLNfh1xucB+LOzYEOQPSiUK3h/xZf0cQGcSsmyL2Og== normalize-path@^3.0.0, normalize-path@~3.0.0: version "3.0.0" @@ -7796,9 +7796,9 @@ prop-types@^15.6.2, prop-types@^15.7.2: react-is "^16.13.1" property-information@^7.0.0: - version "7.1.0" - resolved "https://registry.yarnpkg.com/property-information/-/property-information-7.1.0.tgz#b622e8646e02b580205415586b40804d3e8bfd5d" - integrity sha512-TwEZ+X+yCJmYfL7TPUOcvBZ4QfoT5YenQiJuX//0th53DE6w0xxLEtfK3iyryQFddXuvkIk51EEgrJQ0WJkOmQ== + version "7.2.0" + resolved "https://registry.yarnpkg.com/property-information/-/property-information-7.2.0.tgz#0809b34264e995c0bfcd3227028a1e35210af80a" + integrity sha512-IAtzIB6sUiWaJYrX9smp3V46pBGbBeLFRGdh25kg1334VcBlD8HzhPeNIWQH9zhGmo2itIe25EHt9dQP7G5hmg== proto-list@~1.2.1: version "1.2.4" @@ -8372,9 +8372,9 @@ semver@^6.3.1: integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== semver@^7.3.5, semver@^7.3.7, semver@^7.5.4: - version "7.8.1" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.8.1.tgz#bf4970b5e70fda0686363cc18bfe8805d5ed957e" - integrity sha512-rkVq3IXh+4FDGch+KwzX3aV9W3kO54GyEgpvBzSyctDA6Xtd7RJQV1xmXbeQp5v7+VzLOfVqiutSE6GICgPFvg== + version "7.8.2" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.8.2.tgz#194bd65723a28cf82542d2bf176b91c26b343be1" + integrity sha512-c8jsqUZm3omBOI66G90z1Dyw5z622G8oLG+omfsHBJf3CWQTlOcwOjvOG6wtiNfW6anKm/eA39LMwMtMez2TiQ== send@~0.19.0, send@~0.19.1: version "0.19.2" @@ -8943,9 +8943,9 @@ typescript@~6.0.0: integrity sha512-WRNW+sJgj5OBN4/0JpHFqtqzhpbnV0GuB+OozA9gCL7a993SmU+1JBZCzLNxYsbMfIeDL+lTsphD5jN5N+n0zg== undici@^7.19.0: - version "7.26.0" - resolved "https://registry.yarnpkg.com/undici/-/undici-7.26.0.tgz#d413a2b5752e3e71e003bb268dec32b9a0ad0ce7" - integrity sha512-3O9Tf67pGhgOv9jM35AbhkXAKi13f3oy3aE4CSgr+TckGeY+/iu97ZXN+J7DpHPzLbVApFd1IFhcnBjREYXYcg== + version "7.27.2" + resolved "https://registry.yarnpkg.com/undici/-/undici-7.27.2.tgz#f8fae968ee68377cfc61713d9cd152773716804f" + integrity sha512-uZsKNuzQxDMUY6M3pIMvy5tvlGmtq8XJ2oLAkfRKGNu+1VQAIvLy2xIVG5ATZl5wDXl/tddByAWCizRbOme+TA== unicode-canonical-property-names-ecmascript@^2.0.0: version "2.0.1" @@ -9300,9 +9300,9 @@ webpackbar@^7.0.0: std-env "^3.7.0" websocket-driver@>=0.5.1, websocket-driver@^0.7.4: - version "0.7.4" - resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.7.4.tgz#89ad5295bbf64b480abcba31e4953aca706f5760" - integrity sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg== + version "0.7.5" + resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.7.5.tgz#569d22764ab21f2de20af0e74b411e8ae5a0fa46" + integrity sha512-ZL2+3c7kMBdIRCMz6l8jQMHyGVxj+UL+xVk74Ombiciboca8rHa15L86B19E5oh1pL9Ii/uj54gtsIrZGMo6zA== dependencies: http-parser-js ">=0.5.1" safe-buffer ">=5.1.0" From 787d2b35ad4f86a0c125e4996194ec8fe7957de7 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 9 Jun 2026 10:10:25 +0200 Subject: [PATCH 020/134] fix(deps): update all non-major go dependencies to bd68198 (#950) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [github.com/cloudnative-pg/barman-cloud](https://redirect.github.com/cloudnative-pg/barman-cloud) | require | digest | `5d46599` β†’ `bd68198` | Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- go.mod | 4 ++-- go.sum | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/go.mod b/go.mod index f33fd96..5acb085 100644 --- a/go.mod +++ b/go.mod @@ -5,7 +5,7 @@ go 1.26.3 require ( github.com/cert-manager/cert-manager v1.20.2 github.com/cloudnative-pg/api v1.29.1 - github.com/cloudnative-pg/barman-cloud v0.5.2-0.20260604074245-5d4659922a82 + github.com/cloudnative-pg/barman-cloud v0.5.2-0.20260609065833-bd68198c31dc github.com/cloudnative-pg/cloudnative-pg v1.29.1 github.com/cloudnative-pg/cnpg-i v0.5.0 github.com/cloudnative-pg/cnpg-i-machinery v0.4.2 @@ -114,7 +114,7 @@ require ( golang.org/x/net v0.53.0 // indirect golang.org/x/oauth2 v0.36.0 // indirect golang.org/x/sync v0.20.0 // indirect - golang.org/x/sys v0.45.0 // indirect + golang.org/x/sys v0.46.0 // indirect golang.org/x/term v0.42.0 // indirect golang.org/x/text v0.36.0 // indirect golang.org/x/time v0.15.0 // indirect diff --git a/go.sum b/go.sum index d84c437..c26f737 100644 --- a/go.sum +++ b/go.sum @@ -20,8 +20,8 @@ github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UF github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/cloudnative-pg/api v1.29.1 h1:FWr8S7EQeOfdhYXyr2cof8wUXLARZiiQt5Qa6ltED7w= github.com/cloudnative-pg/api v1.29.1/go.mod h1:QtWF3yzSvIfORMHaSkPAk/o3bhCJwEHJgN3riyRiz3o= -github.com/cloudnative-pg/barman-cloud v0.5.2-0.20260604074245-5d4659922a82 h1:XKuLJWTREfjUHAw97LHA1qTcuv93oMu7ILASUYNFjpc= -github.com/cloudnative-pg/barman-cloud v0.5.2-0.20260604074245-5d4659922a82/go.mod h1:jCaMsQwJJ0f/49TIdSad1Ayjv52IoJXMZBhozqilY/g= +github.com/cloudnative-pg/barman-cloud v0.5.2-0.20260609065833-bd68198c31dc h1:EWlG0LDO3XxVEG/HGDzRZPG0pgULkA8KmYWOSsbBDD0= +github.com/cloudnative-pg/barman-cloud v0.5.2-0.20260609065833-bd68198c31dc/go.mod h1:UAjYZ7LaVswcdi9Kg8mbTtf5MhG6FCP5RlrmqUmZ+VY= github.com/cloudnative-pg/cloudnative-pg v1.29.1 h1:ZNEt1TMlnQKXI1kho2UqQuqdfvIvjGln4kN7C1lsmGA= github.com/cloudnative-pg/cloudnative-pg v1.29.1/go.mod h1:Sbgx9jVmkle4/gR2U5JHrzDd74sRPOBHDtPkvncg5v8= github.com/cloudnative-pg/cnpg-i v0.5.0 h1:/TOzpNT6cwNgrpftTtrnLKdoHgMwd+88vZgXjlVgXeE= @@ -275,8 +275,8 @@ golang.org/x/oauth2 v0.36.0 h1:peZ/1z27fi9hUOFCAZaHyrpWG5lwe0RJEEEeH0ThlIs= golang.org/x/oauth2 v0.36.0/go.mod h1:YDBUJMTkDnJS+A4BP4eZBjCqtokkg1hODuPjwiGPO7Q= golang.org/x/sync v0.20.0 h1:e0PTpb7pjO8GAtTs2dQ6jYa5BWYlMuX047Dco/pItO4= golang.org/x/sync v0.20.0/go.mod h1:9xrNwdLfx4jkKbNva9FpL6vEN7evnE43NNNJQ2LF3+0= -golang.org/x/sys v0.45.0 h1:dO4czNzziLiiXplLQgBCEpCvXQ3dnkn0SdaZSYdQ+FY= -golang.org/x/sys v0.45.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= +golang.org/x/sys v0.46.0 h1:noSf2Fq6F8DBgS+LysIkx7rIExoNHJsxOAtPp4rthXw= +golang.org/x/sys v0.46.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= golang.org/x/term v0.42.0 h1:UiKe+zDFmJobeJ5ggPwOshJIVt6/Ft0rcfrXZDLWAWY= golang.org/x/term v0.42.0/go.mod h1:Dq/D+snpsbazcBG5+F9Q1n2rXV8Ma+71xEjTRufARgY= golang.org/x/text v0.36.0 h1:JfKh3XmcRPqZPKevfXVpI1wXPTqbkE5f7JA92a55Yxg= From 8c9373e0740f80822260411b56286525d34025a5 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 9 Jun 2026 11:30:16 +0200 Subject: [PATCH 021/134] chore(deps): refresh pip-compile outputs (#949) This PR contains the following updates: | Update | Change | |---|---| | lockFileMaintenance | All locks refreshed | Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- containers/sidecar-requirements.txt | 42 ++++++++++++++--------------- 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/containers/sidecar-requirements.txt b/containers/sidecar-requirements.txt index 93819b9..983c21a 100644 --- a/containers/sidecar-requirements.txt +++ b/containers/sidecar-requirements.txt @@ -14,21 +14,21 @@ azure-identity==1.25.3 \ --hash=sha256:ab23c0d63015f50b630ef6c6cf395e7262f439ce06e5d07a64e874c724f8d9e6 \ --hash=sha256:f4d0b956a8146f30333e071374171f3cfa7bdb8073adb8c3814b65567aa7447c # via barman -azure-storage-blob==12.29.0 \ - --hash=sha256:2824ddd7ebc9056034ebc76b17971a38e9aa5835abb0d565b9700493f2a6c657 \ - --hash=sha256:ccf8a1bcd5e49df83ab85aab793b579e5ba2eeea2ad8900b2f62ca3a37dc391f +azure-storage-blob==12.30.0 \ + --hash=sha256:2cd74d4d5731e5eb6b8d5c5056ee115a5e88f8fdf22517b739836fda685018be \ + --hash=sha256:d415ac50b67a8da6b3ae7e9f1014b1b55cd7aafa0b8d4ca9b380568dc7360423 # via barman barman==3.19.1 \ --hash=sha256:0a6a9e1babf97687732d8b2a3eb79ea95d55246a5257b9433865cb6e755221c0 \ --hash=sha256:2f71c4a1f1ba53f694cbdf838bb9906d8ba02b97d1fd3041196e8999bec7a1ee # via -r sidecar-requirements.in -boto3==1.43.18 \ - --hash=sha256:33138883e984eb1937d1553da699182c8ad2099138091e885b65c9accbccea16 \ - --hash=sha256:7b62ce5c0a51428d692aa4f2adc9dc2a4a4c2989bf65a0a12834eeffa99b0b84 +boto3==1.43.25 \ + --hash=sha256:91f3deb0dfc32403a187f57c19a78dc8e38d25ee2967a511fa8905acf00cc074 \ + --hash=sha256:e4e2515533a1593eb2302e9eda5baf4e1510abb219b41dd0db4696cc21bc5039 # via barman -botocore==1.43.18 \ - --hash=sha256:dc8c105351b49688c667065cd5a45fc5b9db982657cefc9e3fbfb9417a55c7df \ - --hash=sha256:e2610fce16df9f89deab5f3c163430a814e6804034eb95bef8957c8db60b7dbc +botocore==1.43.25 \ + --hash=sha256:ef1d210ac9085ea0e5fc6ad2e63f0c7e97103c74f52156bf944289aaf6278d1b \ + --hash=sha256:faab543ca6ae6f8fdc5f6318240bebfb8c05cd25823715fe02aad7edf0c4b383 # via # boto3 # s3transfer @@ -446,9 +446,9 @@ cryptography==48.0.0 \ # google-auth # msal # pyjwt -google-api-core==2.30.3 \ - --hash=sha256:a85761ba72c444dad5d611c2220633480b2b6be2521eca69cca2dbb3ffd6bfe8 \ - --hash=sha256:e601a37f148585319b26db36e219df68c5d07b6382cff2d580e83404e44d641b +google-api-core==2.31.0 \ + --hash=sha256:2be84ee0f584c48e6bde1b36766e23348b361fb7e55e56135fc76ce1c397f9c2 \ + --hash=sha256:ef79fb3784c71cbac89cbd03301ba0c8fb8ad2aa95d7f9204dd9628f7adf59ab # via # google-cloud-core # google-cloud-storage @@ -463,9 +463,9 @@ google-cloud-core==2.6.0 \ --hash=sha256:6d63ac8e5eca6d9e4319d0a1e2265fadcd7f1049904378caecfa01cf52dd869e \ --hash=sha256:e76149739f90fac1fc6757c09f47eaccb3145b54adbd7759b0f7c4b235f46c83 # via google-cloud-storage -google-cloud-storage==3.10.1 \ - --hash=sha256:97db9aa4460727982040edd2bd13ff3d5e2260b5331ad22895802da1fc2a5286 \ - --hash=sha256:a72f656759b7b99bda700f901adcb3425a828d4a29f911bc26b3ea79c5b1217f +google-cloud-storage==3.11.0 \ + --hash=sha256:498bf37c999028f69a245f586b5e50d89f59df1fafc0e3a93783ac56be2a456b \ + --hash=sha256:cfcc33aa6b899ec9dd1771286f8e79fbed5c35c1c174718071b079aa827f37c2 # via barman google-crc32c==1.8.0 \ --hash=sha256:014a7e68d623e9a4222d663931febc3033c5c7c9730785727de2a81f87d5bab8 \ @@ -504,17 +504,17 @@ google-crc32c==1.8.0 \ # via # google-cloud-storage # google-resumable-media -google-resumable-media==2.9.0 \ - --hash=sha256:c8901e88e389af8bed64d9696c74d8bad961865eb2236e13e0bfca9bb0a65ca3 \ - --hash=sha256:f7cfb224846a9dd444d125115dfbe8ef02a2b893e78f087762fe716a255a734b +google-resumable-media==2.10.0 \ + --hash=sha256:88152884bee37b2bf36a0ab81ad8c7fd12212c9803dd981d77c1b35b02d34e7c \ + --hash=sha256:e324bc9d0fdae4c52a08ae90456edc4e71ece858399e1217ac0eb3a51d6bc6ee # via google-cloud-storage googleapis-common-protos==1.75.0 \ --hash=sha256:53a062ff3c32552fbd62c11fe23768b78e4ddf0494d5e5fd97d3f4689c75fbbd \ --hash=sha256:961ed60399c457ceb0ee8f285a84c870aabc9c6a832b9d37bb281b5bebde43ed # via google-api-core -idna==3.17 \ - --hash=sha256:466e48829084efe2548012b855df21540b96f2e20e51bd124c851536556a592c \ - --hash=sha256:5eb0cb53bc467c12eadcf6de83163ad8527cec9416f44b9b61b19caedad2b87f +idna==3.18 \ + --hash=sha256:7f952cbe720b688055e3f87de14f5c3e5fdaa8bc3928985c4077ca689de849a2 \ + --hash=sha256:ffb385a7e039654cef1ab9ef32c6fafe283c0c0467bba1d9029738ce4a14a848 # via requests isodate==0.7.2 \ --hash=sha256:28009937d8031054830160fce6d409ed342816b543597cece116d966c6d99e15 \ From a3819c9aaef7fbe8acd38a29ab4faed7b047c1e6 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 9 Jun 2026 18:22:55 +0200 Subject: [PATCH 022/134] chore(deps): lock file maintenance documentation dependencies (#951) This PR contains the following updates: | Update | Change | |---|---| | lockFileMaintenance | All locks refreshed | Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- web/yarn.lock | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/web/yarn.lock b/web/yarn.lock index 323e05b..dec8967 100644 --- a/web/yarn.lock +++ b/web/yarn.lock @@ -4476,9 +4476,9 @@ ee-first@1.1.1: integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== electron-to-chromium@^1.5.328: - version "1.5.368" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.368.tgz#8e8d4600c5f5f01e891f8f843b4a941afb640412" - integrity sha512-7RckJJK4uESJF9PxvfMWd3TGqIiieUTG4HxnKaKuIpGbcr+r2ZEB3g2gAhCP3Fqm42vJSzLfgab9eva/C4/XVw== + version "1.5.370" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.370.tgz#47dbc6565e5f13991a483e10cddff4bf0933de96" + integrity sha512-D5tSHJReAb/Kf3Hu9F/GO4lJuSWzEWHwvQ/kKSUP7pimNgvxkSKj+gUQhHpKKACwrin7rS3byU7IxreF56rl5g== emoji-regex@^8.0.0: version "8.0.0" @@ -7699,9 +7699,9 @@ postcss-selector-parser@^6.0.11, postcss-selector-parser@^6.0.16: util-deprecate "^1.0.2" postcss-selector-parser@^7.0.0: - version "7.1.1" - resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-7.1.1.tgz#e75d2e0d843f620e5df69076166f4e16f891cb9f" - integrity sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg== + version "7.1.2" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-7.1.2.tgz#e2dc51fc26c007a29bc3195ee9e68ca6df52e32e" + integrity sha512-Wjvt4scRFouioIInHf51IFNP4ltJ2EngJM+cZPGiqbKetBfmP3vpdPV8ID2S6JS6/jdo74N8+aEYH9lQr2C6sA== dependencies: cssesc "^3.0.0" util-deprecate "^1.0.2" @@ -8372,9 +8372,9 @@ semver@^6.3.1: integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== semver@^7.3.5, semver@^7.3.7, semver@^7.5.4: - version "7.8.2" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.8.2.tgz#194bd65723a28cf82542d2bf176b91c26b343be1" - integrity sha512-c8jsqUZm3omBOI66G90z1Dyw5z622G8oLG+omfsHBJf3CWQTlOcwOjvOG6wtiNfW6anKm/eA39LMwMtMez2TiQ== + version "7.8.3" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.8.3.tgz#c350de61c2a1ddbc96d7fae3e5b6fcf92d477fbe" + integrity sha512-wnilbGyMxzbY7dNOl7jpKbLSjcfeweJWU5j4+u5qW+6/wuGD9KzIGOyZnQVSBM9E7DtWaaH3CyHkppYrKYoxwg== send@~0.19.0, send@~0.19.1: version "0.19.2" @@ -8482,7 +8482,7 @@ shell-quote@^1.8.4: resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.8.4.tgz#2edd9a4dcefc96649e2e2cb12f637b1f1d92a190" integrity sha512-VsC6n6vz1ihYYyZZwX7YZSF5l5x36ca17OC+a69h94YqB7X6XLwf+5MOgynYir2SLFUbl8gIYvBo8K8RoNQ6bQ== -side-channel-list@^1.0.0: +side-channel-list@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/side-channel-list/-/side-channel-list-1.0.1.tgz#c2e0b5a14a540aebee3bbc6c3f8666cc9b509127" integrity sha512-mjn/0bi/oUURjc5Xl7IaWi/OJJJumuoJFQJfDDyO46+hBWsfaVM65TBHq2eoZBhzl9EchxOijpkbRC8SVBQU0w== @@ -8512,13 +8512,13 @@ side-channel-weakmap@^1.0.2: side-channel-map "^1.0.1" side-channel@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.1.0.tgz#c3fcff9c4da932784873335ec9765fa94ff66bc9" - integrity sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw== + version "1.1.1" + resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.1.1.tgz#ea02c62e05dc4bea67d4442f0fb71ee192f8e0ab" + integrity sha512-6x6dK6zJdpTzF4sQeNYxwtvBzf6Eg4GtlesS94HOvTudUeyK2WXAaIfmDgsyslYrRBeFIlsi54AYsFGUuhmvrQ== dependencies: es-errors "^1.3.0" - object-inspect "^1.13.3" - side-channel-list "^1.0.0" + object-inspect "^1.13.4" + side-channel-list "^1.0.1" side-channel-map "^1.0.1" side-channel-weakmap "^1.0.2" From 5c8ddf37504d0d17cb3d5f66849f57ab7d368994 Mon Sep 17 00:00:00 2001 From: Marco Nenciarini Date: Tue, 9 Jun 2026 22:52:10 +0200 Subject: [PATCH 023/134] docs(release): documentation for release 0.13.0 (#952) Signed-off-by: Marco Nenciarini --- .../version-0.13.0/compression.md | 45 ++ web/versioned_docs/version-0.13.0/concepts.md | 177 ++++++ web/versioned_docs/version-0.13.0/images.md | 37 ++ .../version-0.13.0/installation.mdx | 109 ++++ web/versioned_docs/version-0.13.0/intro.md | 86 +++ .../version-0.13.0/migration.md | 274 ++++++++ web/versioned_docs/version-0.13.0/misc.md | 126 ++++ .../version-0.13.0/object_stores.md | 497 +++++++++++++++ .../version-0.13.0/observability.md | 24 + .../version-0.13.0/parameters.md | 19 + .../version-0.13.0/plugin-barman-cloud.v1.md | 108 ++++ .../version-0.13.0/resource-name-migration.md | 219 +++++++ .../version-0.13.0/retention.md | 38 ++ .../version-0.13.0/troubleshooting.md | 591 ++++++++++++++++++ .../version-0.13.0/upgrades.mdx | 16 + web/versioned_docs/version-0.13.0/usage.md | 283 +++++++++ .../version-0.13.0-sidebars.json | 8 + web/versions.json | 1 + 18 files changed, 2658 insertions(+) create mode 100644 web/versioned_docs/version-0.13.0/compression.md create mode 100644 web/versioned_docs/version-0.13.0/concepts.md create mode 100644 web/versioned_docs/version-0.13.0/images.md create mode 100644 web/versioned_docs/version-0.13.0/installation.mdx create mode 100644 web/versioned_docs/version-0.13.0/intro.md create mode 100644 web/versioned_docs/version-0.13.0/migration.md create mode 100644 web/versioned_docs/version-0.13.0/misc.md create mode 100644 web/versioned_docs/version-0.13.0/object_stores.md create mode 100644 web/versioned_docs/version-0.13.0/observability.md create mode 100644 web/versioned_docs/version-0.13.0/parameters.md create mode 100644 web/versioned_docs/version-0.13.0/plugin-barman-cloud.v1.md create mode 100644 web/versioned_docs/version-0.13.0/resource-name-migration.md create mode 100644 web/versioned_docs/version-0.13.0/retention.md create mode 100644 web/versioned_docs/version-0.13.0/troubleshooting.md create mode 100644 web/versioned_docs/version-0.13.0/upgrades.mdx create mode 100644 web/versioned_docs/version-0.13.0/usage.md create mode 100644 web/versioned_sidebars/version-0.13.0-sidebars.json diff --git a/web/versioned_docs/version-0.13.0/compression.md b/web/versioned_docs/version-0.13.0/compression.md new file mode 100644 index 0000000..cfc6355 --- /dev/null +++ b/web/versioned_docs/version-0.13.0/compression.md @@ -0,0 +1,45 @@ +--- +sidebar_position: 80 +--- + +# Compression + + + +By default, backups and WAL files are archived **uncompressed**. However, the +Barman Cloud Plugin supports multiple compression algorithms via +`barman-cloud-backup` and `barman-cloud-wal-archive`, allowing you to optimize +for space, speed, or a balance of both. + +### Supported Compression Algorithms + +- `bzip2` +- `gzip` +- `lz4` +- `snappy` +- `xz` (WAL only) +- `zstd` (WAL only) + +Compression settings for base backups and WAL archives are configured +independently. For implementation details, refer to the corresponding API +definitions: + +- [`DataBackupConfiguration`](https://pkg.go.dev/github.com/cloudnative-pg/barman-cloud/pkg/api#DataBackupConfiguration) +- [`WALBackupConfiguration`](https://pkg.go.dev/github.com/cloudnative-pg/barman-cloud/pkg/api#WalBackupConfiguration) + +:::important +Compression impacts both performance and storage efficiency. Choose the right +algorithm based on your recovery time objectives (RTO), storage capacity, and +network throughput. +::: + +## Compression Benchmark (on MinIO) + +| Compression | Backup Time (ms) | Restore Time (ms) | Uncompressed Size (MB) | Compressed Size (MB) | Ratio | +| ----------- | ---------------- | ----------------- | ---------------------- | -------------------- | ----- | +| None | 10,927 | 7,553 | 395 | 395 | 1.0:1 | +| bzip2 | 25,404 | 13,886 | 395 | 67 | 5.9:1 | +| gzip | 116,281 | 3,077 | 395 | 91 | 4.3:1 | +| snappy | 8,134 | 8,341 | 395 | 166 | 2.4:1 | + +Numbers come from a 2021 Barman proof of concept ([EnterpriseDB/barman#344](https://github.com/EnterpriseDB/barman/issues/344#issuecomment-992547396)), which predates `lz4` support for base backups. `lz4` is not yet benchmarked. diff --git a/web/versioned_docs/version-0.13.0/concepts.md b/web/versioned_docs/version-0.13.0/concepts.md new file mode 100644 index 0000000..3832df3 --- /dev/null +++ b/web/versioned_docs/version-0.13.0/concepts.md @@ -0,0 +1,177 @@ +--- +sidebar_position: 10 +--- + +# Main Concepts + + + +:::important +Before proceeding, make sure to review the following sections of the +CloudNativePG documentation: + +- [**Backup**](https://cloudnative-pg.io/documentation/current/backup/) +- [**WAL Archiving**](https://cloudnative-pg.io/documentation/current/wal_archiving/) +- [**Recovery**](https://cloudnative-pg.io/documentation/current/recovery/) +::: + +The **Barman Cloud Plugin** enables **hot (online) backups** of PostgreSQL +clusters in CloudNativePG through [`barman-cloud`](https://pgbarman.org), +supporting continuous physical backups and WAL archiving to an **object +store**β€”without interrupting write operations. + +It also supports both **full recovery** and **Point-in-Time Recovery (PITR)** +of a PostgreSQL cluster. + +## The Object Store + +At the core is the [`ObjectStore` custom resource (CRD)](plugin-barman-cloud.v1.md#objectstorespec), +which acts as the interface between the PostgreSQL cluster and the target +object storage system. It allows you to configure: + +- **Authentication and bucket location** via the `.spec.configuration` section +- **WAL archiving** settingsβ€”such as compression type, parallelism, and + server-side encryptionβ€”under `.spec.configuration.wal` +- **Base backup options**β€”with similar settings for compression, concurrency, + and encryptionβ€”under `.spec.configuration.data` +- **Retention policies** to manage the life-cycle of archived WALs and backups + via `.spec.configuration.retentionPolicy` + +WAL files are archived in the `wals` directory, while base backups are stored +as **tarballs** in the `base` directory, following the +[Barman Cloud convention](https://docs.pgbarman.org/cloud/latest/usage/#object-store-layout). + +The plugin also offers advanced capabilities, including +[backup tagging](misc.md#backup-object-tagging) and +[extra options for backups and WAL archiving](misc.md#extra-options-for-backup-and-wal-archiving). + +:::tip +For details, refer to the +[API reference for the `ObjectStore` resource](plugin-barman-cloud.v1.md#objectstorespec). +::: + +## Integration with a CloudNativePG Cluster + +CloudNativePG can delegate continuous backup and recovery responsibilities to +the **Barman Cloud Plugin** by configuring the `.spec.plugins` section of a +`Cluster` resource. This setup requires a corresponding `ObjectStore` resource +to be defined. + +:::important +While it is technically possible to reuse the same `ObjectStore` for multiple +`Cluster` resources within the same namespace, it is strongly recommended to +dedicate one object store per PostgreSQL cluster to ensure data isolation and +operational clarity. +::: + +The following example demonstrates how to configure a CloudNativePG cluster +named `cluster-example` to use a previously defined `ObjectStore` (also named +`cluster-example`) in the same namespace. Setting `isWALArchiver: true` enables +WAL archiving through the plugin: + +```yaml +apiVersion: postgresql.cnpg.io/v1 +kind: Cluster +metadata: + name: cluster-example +spec: + # Other cluster settings... + plugins: + - name: barman-cloud.cloudnative-pg.io + isWALArchiver: true + parameters: + barmanObjectName: cluster-example +``` + +## Backup of a Postgres Cluster + +Once the object store is defined and the `Cluster` is configured to use the +Barman Cloud Plugin, **WAL archiving is activated immediately** on the +PostgreSQL primary. + +Physical base backups are seamlessly managed by CloudNativePG using the +`Backup` and `ScheduledBackup` resources, respectively for +[on-demand](https://cloudnative-pg.io/documentation/current/backup/#on-demand-backups) +and +[scheduled](https://cloudnative-pg.io/documentation/current/backup/#scheduled-backups) +backups. + +To use the Barman Cloud Plugin, you must set the `method` to `plugin` and +configure the `pluginConfiguration` section as shown: + +```yaml +[...] +spec: + method: plugin + pluginConfiguration: + name: barman-cloud.cloudnative-pg.io + [...] +``` + +With this configuration, CloudNativePG supports: + +- Backups from both **primary** and **standby** instances +- Backups from **designated primaries** in a distributed topology using + [replica clusters](https://cloudnative-pg.io/documentation/current/replica_cluster/) + +:::tip +For details on how to back up from a standby, refer to the official documentation: +[Backup from a standby](https://cloudnative-pg.io/documentation/current/backup/#backup-from-a-standby). +::: + +:::important +Both backup and WAL archiving operations are executed by sidecar containers +running in the same pod as the PostgreSQL `Cluster` primary instanceβ€”except +when backups are taken from a standby, in which case the sidecar runs alongside +the standby pod. +The sidecar containers use a [dedicated container image](images.md) that +includes only the supported version of Barman Cloud. +::: + +## Recovery of a Postgres Cluster + +In PostgreSQL, *recovery* refers to the process of starting a database instance +from an existing backup. The Barman Cloud Plugin integrates with CloudNativePG +to support both **full recovery** and **Point-in-Time Recovery (PITR)** from an +object store. + +Recovery in this context is *not in-place*: it bootstraps a brand-new +PostgreSQL cluster from a backup and replays the necessary WAL files to reach +the desired recovery target. + +To perform a recovery, define an *external cluster* that references the +appropriate `ObjectStore`, and use it as the source in the `bootstrap` section +of the target cluster: + +```yaml +[...] +spec: + [...] + bootstrap: + recovery: + source: source + externalClusters: + - name: source + plugin: + name: barman-cloud.cloudnative-pg.io + parameters: + barmanObjectName: cluster-example + serverName: cluster-example + [...] +``` + +The critical element here is the `externalClusters` section of the `Cluster` +resource, where the `plugin` stanza instructs CloudNativePG to use the Barman +Cloud Plugin to access the object store for recovery. + +This same mechanism can be used for a variety of scenarios enabled by the +CloudNativePG API, including: + +* **Full cluster recovery** from the latest backup +* **Point-in-Time Recovery (PITR)** +* Bootstrapping **replica clusters** in a distributed topology + +:::tip +For complete instructions and advanced use cases, refer to the official +[Recovery documentation](https://cloudnative-pg.io/documentation/current/recovery/). +::: diff --git a/web/versioned_docs/version-0.13.0/images.md b/web/versioned_docs/version-0.13.0/images.md new file mode 100644 index 0000000..f6c32d3 --- /dev/null +++ b/web/versioned_docs/version-0.13.0/images.md @@ -0,0 +1,37 @@ +--- +sidebar_position: 99 +--- + +# Container Images + + + +The Barman Cloud Plugin is distributed using two container images: + +- One for deploying the plugin components +- One for the sidecar that runs alongside each PostgreSQL instance in a + CloudNativePG `Cluster` using the plugin + +## Plugin Container Image + +The plugin image contains the logic required to operate the Barman Cloud Plugin +within your Kubernetes environment with CloudNativePG. It is published on the +GitHub Container Registry at `ghcr.io/cloudnative-pg/plugin-barman-cloud`. + +This image is built from the +[`Dockerfile.plugin`](https://github.com/cloudnative-pg/plugin-barman-cloud/blob/main/containers/Dockerfile.plugin) +in the plugin repository. + +## Sidecar Container Image + +The sidecar image is used within each PostgreSQL pod in the cluster. It +includes the latest supported version of Barman Cloud and is responsible for +performing WAL archiving and backups on behalf of CloudNativePG. + +It is available at `ghcr.io/cloudnative-pg/plugin-barman-cloud-sidecar` and is +built from the +[`Dockerfile.sidecar`](https://github.com/cloudnative-pg/plugin-barman-cloud/blob/main/containers/Dockerfile.sidecar). + +These sidecar images are designed to work seamlessly with the +[`minimal` PostgreSQL container images](https://github.com/cloudnative-pg/postgres-containers?tab=readme-ov-file#minimal-images) +maintained by the CloudNativePG Community. diff --git a/web/versioned_docs/version-0.13.0/installation.mdx b/web/versioned_docs/version-0.13.0/installation.mdx new file mode 100644 index 0000000..027d1e8 --- /dev/null +++ b/web/versioned_docs/version-0.13.0/installation.mdx @@ -0,0 +1,109 @@ +--- +sidebar_position: 20 +--- + +# Installation + +:::important +1. The plugin **must** be installed in the same namespace as the CloudNativePG + operator (typically `cnpg-system`). + +2. Keep in mind that the operator's **listening namespaces** may differ from its + installation namespace. Double-check this to avoid configuration issues. +::: + +## Verifying the Requirements + +Before installing the plugin, make sure the [requirements](intro.md#requirements) are met. + +### CloudNativePG Version + +Ensure you're running a version of CloudNativePG that is compatible with the +plugin. If installed in the default `cnpg-system` namespace, you can verify the +version with: + +```sh +kubectl get deployment -n cnpg-system cnpg-controller-manager \ + -o jsonpath="{.spec.template.spec.containers[*].image}" +``` + +Example output: + +```output +ghcr.io/cloudnative-pg/cloudnative-pg:1.26.0 +``` + +The version **must be 1.26 or newer**. + +### cert-manager + +Use the [cmctl](https://cert-manager.io/docs/reference/cmctl/#installation) +tool to confirm that `cert-manager` is installed and available: + +```sh +cmctl check api +``` + +Example output: + +```output +The cert-manager API is ready +``` + +Both checks are required before proceeding with the installation. + +## Installing the Barman Cloud Plugin + +import { InstallationSnippet } from '@site/src/components/Installation'; + +Install the plugin using `kubectl` by applying the manifest for the latest +release: + + + +Example output: + +```output +customresourcedefinition.apiextensions.k8s.io/objectstores.barmancloud.cnpg.io created +serviceaccount/plugin-barman-cloud created +role.rbac.authorization.k8s.io/leader-election-role created +clusterrole.rbac.authorization.k8s.io/metrics-auth-role created +clusterrole.rbac.authorization.k8s.io/metrics-reader created +clusterrole.rbac.authorization.k8s.io/objectstore-editor-role created +clusterrole.rbac.authorization.k8s.io/objectstore-viewer-role created +clusterrole.rbac.authorization.k8s.io/plugin-barman-cloud created +rolebinding.rbac.authorization.k8s.io/leader-election-rolebinding created +clusterrolebinding.rbac.authorization.k8s.io/metrics-auth-rolebinding created +clusterrolebinding.rbac.authorization.k8s.io/plugin-barman-cloud-binding created +secret/plugin-barman-cloud-8tfddg42gf created +service/barman-cloud created +deployment.apps/barman-cloud configured +certificate.cert-manager.io/barman-cloud-client created +certificate.cert-manager.io/barman-cloud-server created +issuer.cert-manager.io/selfsigned-issuer created +``` + +Finally, check that the deployment is up and running: + +```sh +kubectl rollout status deployment \ + -n cnpg-system barman-cloud +``` + +Example output: + +```output +deployment "barman-cloud" successfully rolled out +``` + +This confirms that the plugin is deployed and ready to use. + +## Testing the latest development snapshot + +You can also test the latest development snapshot of the plugin with the +following command: + +```sh +kubectl apply -f \ + https://raw.githubusercontent.com/cloudnative-pg/plugin-barman-cloud/refs/heads/main/manifest.yaml +``` diff --git a/web/versioned_docs/version-0.13.0/intro.md b/web/versioned_docs/version-0.13.0/intro.md new file mode 100644 index 0000000..9781d0d --- /dev/null +++ b/web/versioned_docs/version-0.13.0/intro.md @@ -0,0 +1,86 @@ +--- +sidebar_position: 1 +sidebar_label: "Introduction" +--- + +# Barman Cloud Plugin + + + +The **Barman Cloud Plugin** for [CloudNativePG](https://cloudnative-pg.io/) +enables online continuous physical backups of PostgreSQL clusters to object storage +using the `barman-cloud` suite from the [Barman](https://docs.pgbarman.org/release/latest/) +project. + +:::important +If you plan to migrate your existing CloudNativePG cluster to the new +plugin-based approach using the Barman Cloud Plugin, see +["Migrating from Built-in CloudNativePG Backup"](migration.md) +for detailed instructions. +::: + +## Requirements + +Before using the Barman Cloud Plugin, ensure that the following components are +installed and properly configured: + +- [CloudNativePG](https://cloudnative-pg.io) version 1.26 or later + + - We strongly recommend version 1.27.0 or later, which includes improved + error handling and status reporting for the plugin. + - If you are running an earlier release, refer to the + [upgrade guide](https://cloudnative-pg.io/documentation/current/installation_upgrade). + +- [cert-manager](https://cert-manager.io/) + + - The recommended way to enable secure TLS communication between the plugin + and the operator. + - Alternatively, you can provide your own certificate bundles. See the + [CloudNativePG documentation on TLS configuration](https://cloudnative-pg.io/documentation/current/cnpg_i/#configuring-tls-certificates). + +- [`kubectl-cnpg`](https://cloudnative-pg.io/documentation/current/kubectl-plugin/) + plugin (optional but recommended) + + - Simplifies debugging and monitoring with additional status and inspection + commands. + - Multiple installation options are available in the + [installation guide](https://cloudnative-pg.io/documentation/current/kubectl-plugin/#install). + +## Key Features + +This plugin provides the following capabilities: + +- Physical online backup of the data directory +- Physical restore of the data directory +- Write-Ahead Log (WAL) archiving +- WAL restore +- Full cluster recovery +- Point-in-Time Recovery (PITR) +- Seamless integration with replica clusters for bootstrap and WAL restore from archive + +:::important +The Barman Cloud Plugin is designed to **replace the in-tree object storage support** +previously provided via the `.spec.backup.barmanObjectStore` section in the +`Cluster` resource. +Backups created using the in-tree approach are fully supported and compatible +with this plugin. +::: + +## Supported Object Storage Providers + +The plugin works with all storage backends supported by `barman-cloud`, including: + +- **Amazon S3** +- **Google Cloud Storage** +- **Microsoft Azure Blob Storage** + +In addition, the following S3-compatible and simulator solutions have been +tested and verified: + +- [MinIO](https://min.io/) – An S3-compatible storage solution +- [Azurite](https://github.com/Azure/Azurite) – A simulator for Azure Blob Storage +- [fake-gcs-server](https://github.com/fsouza/fake-gcs-server) – A simulator for Google Cloud Storage + +:::tip +For more details, refer to [Object Store Providers](object_stores.md). +::: diff --git a/web/versioned_docs/version-0.13.0/migration.md b/web/versioned_docs/version-0.13.0/migration.md new file mode 100644 index 0000000..2c99ada --- /dev/null +++ b/web/versioned_docs/version-0.13.0/migration.md @@ -0,0 +1,274 @@ +--- +sidebar_position: 40 +--- + +# Migrating from Built-in CloudNativePG Backup + + + +The in-tree support for Barman Cloud in CloudNativePG is **deprecated starting +from version 1.26** and will be removed in a future release. + +If you're currently relying on the built-in Barman Cloud integration, you can +migrate seamlessly to the new **plugin-based architecture** using the Barman +Cloud Plugin, without data loss. Follow these steps: + +- [Install the Barman Cloud Plugin](installation.mdx) +- Create an `ObjectStore` resource by translating the contents of the + `.spec.backup.barmanObjectStore` section from your existing `Cluster` + definition +- Modify the `Cluster` resource in a single atomic change to switch from + in-tree backup to the plugin +- Update any `ScheduledBackup` resources to use the plugin +- Update the `externalClusters` configuration, where applicable + +:::tip +For a working example, refer to [this commit](https://github.com/cloudnative-pg/cnpg-playground/commit/596f30e252896edf8f734991c3538df87630f6f7) +from the [CloudNativePG Playground project](https://github.com/cloudnative-pg/cnpg-playground), +which demonstrates a full migration. +::: + +--- + +## Step 1: Define the `ObjectStore` + +Begin by creating an `ObjectStore` resource in the same namespace as your +PostgreSQL `Cluster`. + +There is a **direct mapping** between the `.spec.backup.barmanObjectStore` +section in CloudNativePG and the `.spec.configuration` field in the +`ObjectStore` CR. The conversion is mostly mechanical, with one key difference: + +:::warning +In the plugin architecture, retention policies are defined as part of the `ObjectStore`. +In contrast, the in-tree implementation defined them at the `Cluster` level. +::: + +If your `Cluster` used `.spec.backup.retentionPolicy`, move that configuration +to `.spec.retentionPolicy` in the `ObjectStore`. + +--- + +### Example + +Here’s an excerpt from a traditional in-tree CloudNativePG backup configuration +taken from the CloudNativePG Playground project: + +```yaml +apiVersion: postgresql.cnpg.io/v1 +kind: Cluster +metadata: + name: pg-eu +spec: + # [...] + backup: + barmanObjectStore: + destinationPath: s3://backups/ + endpointURL: http://minio-eu:9000 + s3Credentials: + accessKeyId: + name: minio-eu + key: ACCESS_KEY_ID + secretAccessKey: + name: minio-eu + key: ACCESS_SECRET_KEY + wal: + compression: gzip +``` + +This configuration translates to the following `ObjectStore` resource for the +plugin: + +```yaml +apiVersion: barmancloud.cnpg.io/v1 +kind: ObjectStore +metadata: + name: minio-eu +spec: + configuration: + destinationPath: s3://backups/ + endpointURL: http://minio-eu:9000 + s3Credentials: + accessKeyId: + name: minio-eu + key: ACCESS_KEY_ID + secretAccessKey: + name: minio-eu + key: ACCESS_SECRET_KEY + wal: + compression: gzip +``` + +As you can see, the contents of `barmanObjectStore` have been copied directly +under the `configuration` field of the `ObjectStore` resource, using the same +secret references. + +## Step 2: Update the `Cluster` for plugin WAL archiving + +Once the `ObjectStore` resource is in place, update the `Cluster` resource as +follows in a single atomic change: + +- Remove the `.spec.backup.barmanObjectStore` section +- Remove `.spec.backup.retentionPolicy` if it was defined (as it is now in the + `ObjectStore`) +- Remove the entire `spec.backup` section if it is now empty +- Add `barman-cloud.cloudnative-pg.io` to the `plugins` list, as described in + [Configuring WAL archiving](usage.md#configuring-wal-archiving) + +This will trigger a rolling update of the `Cluster`, switching continuous +backup from the in-tree implementation to the plugin-based approach. + +### Example + +The updated `pg-eu` cluster will have this configuration instead of the +previous `backup` section: + +```yaml + plugins: + - name: barman-cloud.cloudnative-pg.io + isWALArchiver: true + parameters: + barmanObjectName: minio-eu +``` + +--- + +## Step 3: Update the `ScheduledBackup` + +After switching the `Cluster` to use the plugin, update your `ScheduledBackup` +resources to match. + +Set the backup `method` to `plugin` and reference the plugin name via +`pluginConfiguration`, as shown in ["Performing a base backup"](usage.md#performing-a-base-backup). + +### Example + +Original in-tree `ScheduledBackup`: + +```yaml +apiVersion: postgresql.cnpg.io/v1 +kind: ScheduledBackup +metadata: + name: pg-eu-backup +spec: + cluster: + name: pg-eu + schedule: '0 0 0 * * *' + backupOwnerReference: self +``` + +Updated version using the plugin: + +```yaml +apiVersion: postgresql.cnpg.io/v1 +kind: ScheduledBackup +metadata: + name: pg-eu-backup +spec: + cluster: + name: pg-eu + schedule: '0 0 0 * * *' + backupOwnerReference: self + method: plugin + pluginConfiguration: + name: barman-cloud.cloudnative-pg.io +``` + +--- + +## Step 4: Update the `externalClusters` configuration + +If your `Cluster` relies on one or more external clusters that use the in-tree +Barman Cloud integration, you need to update those configurations to use the +plugin-based architecture. + +When a replica cluster fetches WAL files or base backups from an external +source that used the built-in backup method, follow these steps: + +1. Create a corresponding `ObjectStore` resource for the external cluster, as + shown in [Step 1](#step-1-define-the-objectstore) +2. Update the `externalClusters` section of your replica cluster to use the + plugin instead of the in-tree `barmanObjectStore` field + +### Example + +Consider the original configuration using in-tree Barman Cloud: + +```yaml +apiVersion: postgresql.cnpg.io/v1 +kind: Cluster +metadata: + name: pg-us +spec: + # [...] + externalClusters: + - name: pg-eu + barmanObjectStore: + destinationPath: s3://backups/ + endpointURL: http://minio-eu:9000 + serverName: pg-eu + s3Credentials: + accessKeyId: + name: minio-eu + key: ACCESS_KEY_ID + secretAccessKey: + name: minio-eu + key: ACCESS_SECRET_KEY + wal: + compression: gzip +``` + +Create the `ObjectStore` resource for the external cluster: + +```yaml +apiVersion: barmancloud.cnpg.io/v1 +kind: ObjectStore +metadata: + name: minio-eu +spec: + configuration: + destinationPath: s3://backups/ + endpointURL: http://minio-eu:9000 + s3Credentials: + accessKeyId: + name: minio-eu + key: ACCESS_KEY_ID + secretAccessKey: + name: minio-eu + key: ACCESS_SECRET_KEY + wal: + compression: gzip +``` + +Update the external cluster configuration to use the plugin: + +```yaml +apiVersion: postgresql.cnpg.io/v1 +kind: Cluster +metadata: + name: pg-us +spec: + # [...] + externalClusters: + - name: pg-eu + plugin: + name: barman-cloud.cloudnative-pg.io + parameters: + barmanObjectName: minio-eu + serverName: pg-eu +``` + +## Step 5: Verify your metrics + +When migrating from the in-core solution to the plugin-based approach, you need +to monitor a different set of metrics, as described in the +["Observability"](observability.md) section. + +The table below summarizes the name changes between the old in-core metrics and +the new plugin-based ones: + +| Old metric name | New metric name | +| ------------------------------------------------ | ---------------------------------------------------------------- | +| `cnpg_collector_last_failed_backup_timestamp` | `barman_cloud_cloudnative_pg_io_last_failed_backup_timestamp` | +| `cnpg_collector_last_available_backup_timestamp` | `barman_cloud_cloudnative_pg_io_last_available_backup_timestamp` | +| `cnpg_collector_first_recoverability_point` | `barman_cloud_cloudnative_pg_io_first_recoverability_point` | diff --git a/web/versioned_docs/version-0.13.0/misc.md b/web/versioned_docs/version-0.13.0/misc.md new file mode 100644 index 0000000..e6594df --- /dev/null +++ b/web/versioned_docs/version-0.13.0/misc.md @@ -0,0 +1,126 @@ +--- +sidebar_position: 90 +--- + +# Miscellaneous + + + +## Backup Object Tagging + +You can attach key-value metadata tags to backup artifactsβ€”such as base +backups, WAL files, and history filesβ€”via the `.spec.configuration` section of +the `ObjectStore` resource. + +- `tags`: applied to base backups and WAL files +- `historyTags`: applied to history files only + +### Example + +```yaml +apiVersion: barmancloud.cnpg.io/v1 +kind: ObjectStore +metadata: + name: my-store +spec: + configuration: + [...] + tags: + backupRetentionPolicy: "expire" + historyTags: + backupRetentionPolicy: "keep" + [...] +``` + +## Extra Options for Backup, WAL Archiving, and Restore + +You can pass additional command-line arguments to the underlying +`barman-cloud-*` commands using the corresponding fields in the `ObjectStore` +configuration. + +- `.spec.configuration.data.additionalCommandArgs`: for `barman-cloud-backup` +- `.spec.configuration.data.restoreAdditionalCommandArgs`: for `barman-cloud-restore` +- `.spec.configuration.wal.archiveAdditionalCommandArgs`: for `barman-cloud-wal-archive` +- `.spec.configuration.wal.restoreAdditionalCommandArgs`: for `barman-cloud-wal-restore` + +Each field accepts a list of string arguments. If an argument conflicts with +one already set by the plugin, the user-provided value will be ignored. These +fields are intended to pass options the plugin does not configure automatically. + +### Example: Extra Backup Options + +```yaml +kind: ObjectStore +metadata: + name: my-store +spec: + configuration: + data: + additionalCommandArgs: + - "--min-chunk-size=5MB" + - "--read-timeout=60" +``` + +### Example: Extra Restore Options + +```yaml +kind: ObjectStore +metadata: + name: my-store +spec: + configuration: + data: + restoreAdditionalCommandArgs: + - "--read-timeout=900" +``` + +### Example: Extra WAL Archive Options + +```yaml +kind: ObjectStore +metadata: + name: my-store +spec: + configuration: + wal: + archiveAdditionalCommandArgs: + - "--max-concurrency=1" + - "--read-timeout=60" +``` + +### Example: Extra WAL Restore Options + +```yaml +kind: ObjectStore +metadata: + name: my-store +spec: + configuration: + wal: + restoreAdditionalCommandArgs: + - "--read-timeout=60" +``` + +For a complete list of supported options, refer to the +[official Barman Cloud documentation](https://docs.pgbarman.org/release/latest/). + +## Enable the pprof debug server for the sidecar + +You can enable the instance sidecar's pprof debug HTTP server by adding the `--pprof-server=
` flag to the container's +arguments via `.spec.instanceSidecarConfiguration.additionalContainerArgs`. + +Pass a bind address in the form `:` (for example, `0.0.0.0:6061`). +An empty value disables the server (disabled by default). + +### Example + +```yaml +apiVersion: barmancloud.cnpg.io/v1 +kind: ObjectStore +metadata: + name: my-store +spec: + instanceSidecarConfiguration: + additionalContainerArgs: + - "--pprof-server=0.0.0.0:6061" +``` diff --git a/web/versioned_docs/version-0.13.0/object_stores.md b/web/versioned_docs/version-0.13.0/object_stores.md new file mode 100644 index 0000000..11b1ff8 --- /dev/null +++ b/web/versioned_docs/version-0.13.0/object_stores.md @@ -0,0 +1,497 @@ +--- +sidebar_position: 50 +--- + +# Object Store Providers + + + +The Barman Cloud Plugin enables the storage of PostgreSQL cluster backup files +in any object storage service supported by the +[Barman Cloud infrastructure](https://docs.pgbarman.org/release/latest/). + +Currently, Barman Cloud supports the following providers: + +- [Amazon S3](#aws-s3) +- [Microsoft Azure Blob Storage](#azure-blob-storage) +- [Google Cloud Storage](#google-cloud-storage) + +You may also use any S3- or Azure-compatible implementation of the above +services. + +To configure object storage with Barman Cloud, you must define an +[`ObjectStore` object](plugin-barman-cloud.v1.md#objectstore), which +establishes the connection between your PostgreSQL cluster and the object +storage backend. + +Configuration details β€” particularly around authentication β€” will vary depending on +the specific object storage provider you are using. + +The following sections detail the setup for each. + +:::note Authentication Methods +The Barman Cloud Plugin does not independently test all authentication methods +supported by `barman-cloud`. The plugin's responsibility is limited to passing +the provided credentials to `barman-cloud`, which then handles authentication +according to its own implementation. Users should refer to the +[Barman Cloud documentation](https://docs.pgbarman.org/release/latest/) to +verify that their chosen authentication method is supported and properly +configured. +::: + +--- + +## AWS S3 + +[AWS Simple Storage Service (S3)](https://aws.amazon.com/s3/) is one of the +most widely adopted object storage solutions. + +The Barman Cloud plugin for CloudNativePG integrates with S3 through two +primary authentication mechanisms: + +- [IAM Roles for Service Accounts (IRSA)](https://docs.aws.amazon.com/eks/latest/userguide/iam-roles-for-service-accounts.html) β€” + recommended for clusters running on EKS +- Access keys β€” using `ACCESS_KEY_ID` and `ACCESS_SECRET_KEY` credentials + +### Access Keys + +To authenticate using access keys, you’ll need: + +- `ACCESS_KEY_ID`: the public key used to authenticate to S3 +- `ACCESS_SECRET_KEY`: the corresponding secret key +- `ACCESS_SESSION_TOKEN`: (optional) a temporary session token, if required + +These credentials must be stored securely in a Kubernetes secret: + +```sh +kubectl create secret generic aws-creds \ + --from-literal=ACCESS_KEY_ID= \ + --from-literal=ACCESS_SECRET_KEY= +# --from-literal=ACCESS_SESSION_TOKEN= # if required +``` + +The credentials will be encrypted at rest if your Kubernetes environment +supports it. + +You can then reference the secret in your `ObjectStore` definition: + +```yaml +apiVersion: barmancloud.cnpg.io/v1 +kind: ObjectStore +metadata: + name: aws-store +spec: + configuration: + destinationPath: "s3://BUCKET_NAME/path/to/folder" + s3Credentials: + accessKeyId: + name: aws-creds + key: ACCESS_KEY_ID + secretAccessKey: + name: aws-creds + key: ACCESS_SECRET_KEY + [...] +``` + +### IAM Role for Service Account (IRSA) + +To use IRSA with EKS, configure the service account of the PostgreSQL cluster +with the appropriate annotation: + +```yaml +apiVersion: postgresql.cnpg.io/v1 +kind: Cluster +metadata: + [...] +spec: + serviceAccountTemplate: + metadata: + annotations: + eks.amazonaws.com/role-arn: arn:[...] + [...] +``` + +### S3 Lifecycle Policy + +Barman Cloud uploads backup files to S3 but does not modify them afterward. +To enhance data durability and protect against accidental or malicious loss, +it's recommended to implement the following best practices: + +- Enable object versioning +- Enable object locking to prevent objects from being deleted or overwritten + for a defined period or indefinitely (this provides an additional layer of + protection against accidental deletion and ransomware attacks) +- Set lifecycle rules to expire current versions a few days after your Barman + retention window +- Expire non-current versions after a longer period + +These strategies help you safeguard backups without requiring broad delete +permissions, ensuring both security and compliance with minimal operational +overhead. + +### S3-Compatible Storage Providers + +You can use S3-compatible services like **MinIO**, **Linode (Akamai) Object Storage**, +or **DigitalOcean Spaces** by specifying a custom `endpointURL`. + +Example with Linode (Akamai) Object Storage (`us-east1`): + +```yaml +apiVersion: barmancloud.cnpg.io/v1 +kind: ObjectStore +metadata: + name: linode-store +spec: + configuration: + destinationPath: "s3://BUCKET_NAME/" + endpointURL: "https://us-east1.linodeobjects.com" + s3Credentials: + [...] + [...] +``` + +Recent changes to the [boto3 implementation](https://github.com/boto/boto3/issues/4392) +of [Amazon S3 Data Integrity Protections](https://docs.aws.amazon.com/sdkref/latest/guide/feature-dataintegrity.html) +may lead to the `x-amz-content-sha256` error when using the Barman Cloud +Plugin. + +If you encounter this issue (see [GitHub issue #393](https://github.com/cloudnative-pg/plugin-barman-cloud/issues/393)), +you can apply the following workaround by setting specific environment +variables in the `ObjectStore` resource: + +```yaml +apiVersion: barmancloud.cnpg.io/v1 +kind: ObjectStore +metadata: + name: linode-store +spec: + instanceSidecarConfiguration: + env: + - name: AWS_REQUEST_CHECKSUM_CALCULATION + value: when_required + - name: AWS_RESPONSE_CHECKSUM_VALIDATION + value: when_required + [...] +``` + +These settings ensure that checksum calculations and validations are only +applied when explicitly required, avoiding compatibility issues with certain +S3-compatible storage providers. + +Example with DigitalOcean Spaces (SFO3, path-style): + +```yaml +apiVersion: barmancloud.cnpg.io/v1 +kind: ObjectStore +metadata: + name: digitalocean-store +spec: + configuration: + destinationPath: "s3://BUCKET_NAME/path/to/folder" + endpointURL: "https://sfo3.digitaloceanspaces.com" + s3Credentials: + [...] + [...] +``` + +### Using Object Storage with a Private CA + +For object storage services (e.g., MinIO) that use HTTPS with certificates +signed by a private CA, set the `endpointCA` field in the `ObjectStore` +definition. Unless you already have it, create a Kubernetes `Secret` with the +CA bundle: + +```sh +kubectl create secret generic my-ca-secret --from-file=ca.crt +``` + +Then reference it: + +```yaml +apiVersion: barmancloud.cnpg.io/v1 +kind: ObjectStore +metadata: + name: minio-store +spec: + configuration: + endpointURL: + endpointCA: + name: my-ca-secret + key: ca.crt + [...] +``` + + +:::note +If you want `ConfigMaps` and `Secrets` to be **automatically** reloaded by +instances, you can add a label with the key `cnpg.io/reload` to the +`Secrets`/`ConfigMaps`. Otherwise, you will have to reload the instances using the +`kubectl cnpg reload` subcommand. +::: + +--- + +## Azure Blob Storage + +[Azure Blob Storage](https://azure.microsoft.com/en-us/services/storage/blobs/) +is Microsoft’s cloud-based object storage solution. + +Barman Cloud supports the following authentication methods: + +- [Connection String](https://learn.microsoft.com/en-us/azure/storage/common/storage-configure-connection-string) +- Storage Account Name + [Storage Account Access Key](https://learn.microsoft.com/en-us/azure/storage/common/storage-account-keys-manage) +- Storage Account Name + [Storage Account SAS Token](https://learn.microsoft.com/en-us/azure/storage/blobs/sas-service-create) +- [Azure AD Managed Identity](https://learn.microsoft.com/en-us/entra/identity/managed-identities-azure-resources/overview) +- [Default Azure Credentials](https://learn.microsoft.com/en-us/dotnet/api/azure.identity.defaultazurecredential?view=azure-dotnet) + +### Azure AD Managed Identity + +This method avoids storing credentials in Kubernetes by enabling the +usage of [Azure Managed Identities](https://learn.microsoft.com/en-us/entra/identity/managed-identities-azure-resources/overview) authentication mechanism. +This can be enabled by setting the `inheritFromAzureAD` option to `true`. +Managed Identity can be configured for the AKS Cluster by following +the [Azure documentation](https://learn.microsoft.com/en-us/azure/aks/use-managed-identity?pivots=system-assigned). + +```yaml +apiVersion: barmancloud.cnpg.io/v1 +kind: ObjectStore +metadata: + name: azure-store +spec: + configuration: + destinationPath: "" + azureCredentials: + inheritFromAzureAD: true + [...] +``` + +### Default Azure Credentials + +The `useDefaultAzureCredentials` option enables the default Azure credentials +flow, which uses [`DefaultAzureCredential`](https://learn.microsoft.com/en-us/python/api/azure-identity/azure.identity.defaultazurecredential) +to automatically discover and use available credentials in the following order: + +1. **Environment Variables** β€” `AZURE_CLIENT_ID`, `AZURE_CLIENT_SECRET`, and `AZURE_TENANT_ID` for Service Principal authentication +2. **Managed Identity** β€” Uses the managed identity assigned to the pod +3. **Azure CLI** β€” Uses credentials from the Azure CLI if available +4. **Azure PowerShell** β€” Uses credentials from Azure PowerShell if available + +This approach is particularly useful for getting started with development and testing; it allows +the SDK to attempt multiple authentication mechanisms seamlessly across different environments. +However, this is not recommended for production. Please refer to the +[official Azure guidance](https://learn.microsoft.com/en-us/dotnet/azure/sdk/authentication/credential-chains?tabs=dac#usage-guidance-for-defaultazurecredential) +for a comprehensive understanding of `DefaultAzureCredential`. + +```yaml +apiVersion: barmancloud.cnpg.io/v1 +kind: ObjectStore +metadata: + name: azure-store +spec: + configuration: + destinationPath: "" + azureCredentials: + useDefaultAzureCredentials: true + [...] +``` + +### Access Key, SAS Token, or Connection String + +Store credentials in a Kubernetes secret: + +```sh +kubectl create secret generic azure-creds \ + --from-literal=AZURE_STORAGE_ACCOUNT= \ + --from-literal=AZURE_STORAGE_KEY= \ + --from-literal=AZURE_STORAGE_SAS_TOKEN= \ + --from-literal=AZURE_STORAGE_CONNECTION_STRING= +``` + +Then reference the required keys in your `ObjectStore`: + +```yaml +apiVersion: barmancloud.cnpg.io/v1 +kind: ObjectStore +metadata: + name: azure-store +spec: + configuration: + destinationPath: "" + azureCredentials: + connectionString: + name: azure-creds + key: AZURE_CONNECTION_STRING + storageAccount: + name: azure-creds + key: AZURE_STORAGE_ACCOUNT + storageKey: + name: azure-creds + key: AZURE_STORAGE_KEY + storageSasToken: + name: azure-creds + key: AZURE_STORAGE_SAS_TOKEN + [...] +``` + +For Azure Blob, the destination path format is: + +``` +://..core.windows.net// +``` + +### Azure-Compatible Providers + +If you're using a different implementation (e.g., Azurite or emulator): + +``` +://:/// +``` + +--- + +## Google Cloud Storage + +[Google Cloud Storage](https://cloud.google.com/storage/) is supported with two +authentication modes: + +- **GKE Workload Identity** (recommended inside Google Kubernetes Engine) +- **Service Account JSON key** via the `GOOGLE_APPLICATION_CREDENTIALS` environment variable + +### GKE Workload Identity + +Use the [Workload Identity authentication](https://cloud.google.com/kubernetes-engine/docs/how-to/workload-identity) +when running in GKE: + +1. Set `googleCredentials.gkeEnvironment` to `true` in the `ObjectStore` + resource +2. Annotate the `serviceAccountTemplate` in the `Cluster` resource with the GCP + service account + +For example, in the `ObjectStore` resource: + +```yaml +apiVersion: barmancloud.cnpg.io/v1 +kind: ObjectStore +metadata: + name: google-store +spec: + configuration: + destinationPath: "gs:///" + googleCredentials: + gkeEnvironment: true +``` + +And in the `Cluster` resource: + +```yaml +apiVersion: postgresql.cnpg.io/v1 +kind: Cluster +spec: + serviceAccountTemplate: + metadata: + annotations: + iam.gke.io/gcp-service-account: [...].iam.gserviceaccount.com +``` + +### Service Account JSON Key + +Follow Google’s [authentication setup](https://cloud.google.com/docs/authentication/getting-started), +then: + +```sh +kubectl create secret generic backup-creds --from-file=gcsCredentials=gcs_credentials_file.json +``` + +```yaml +apiVersion: barmancloud.cnpg.io/v1 +kind: ObjectStore +metadata: + name: google-store +spec: + configuration: + destinationPath: "gs:///" + googleCredentials: + applicationCredentials: + name: backup-creds + key: gcsCredentials + [...] +``` + +:::important +This authentication method generates a JSON file within the container +with all the credentials required to access your Google Cloud Storage +bucket. As a result, if someone gains access to the `Pod`, they will also have +write permissions to the bucket. +::: + +--- + + +## MinIO Object Store + +In order to use the Tenant resource you first need to deploy the +[MinIO operator](https://docs.min.io/community/minio-object-store/operations/deployments/installation.html). +For the latest documentation of MinIO, please refer to the +[MinIO official documentation](https://docs.min.io/community/minio-object-store/). + +MinIO Object Store's API is compatible with S3, and the default configuration of the Tenant +will create these services: +- `-console` on port 9090 (with autocert) or 9443 (without autocert) +- `-hl` on port 9000 +Where `` is the `metadata.name` you assigned to your Tenant resource. + +:::note +The `-console` service will only be available if you have enabled the +[MinIO Console](https://docs.min.io/community/minio-object-store/administration/minio-console.html). + +For example, the following Tenant: +```yml +apiVersion: minio.min.io/v2 +kind: Tenant +metadata: + name: cnpg-backups +spec: + [...] +``` +would have services called `cnpg-backups-console` and `cnpg-backups-hl` respectively. + +The `console` service is for managing the tenant, while the `hl` service exposes the S3 +compatible API. If your tenant is configured with `requestAutoCert` you will communicate +to these services over HTTPS, if not you will use HTTP. + +For authentication you can use your username and password, or create an access key. +Whichever method you choose, it has to be stored as a secret. + +```sh +kubectl create secret generic minio-creds \ + --from-literal=MINIO_ACCESS_KEY= \ + --from-literal=MINIO_SECRET_KEY= +``` + +Finally, create the Barman ObjectStore: + +```yaml +apiVersion: barmancloud.cnpg.io/v1 +kind: ObjectStore +metadata: + name: minio-store +spec: + configuration: + destinationPath: s3://BUCKET_NAME/ + endpointURL: http://-hl:9000 + s3Credentials: + accessKeyId: + name: minio-creds + key: MINIO_ACCESS_KEY + secretAccessKey: + name: minio-creds + key: MINIO_SECRET_KEY + [...] +``` + +:::important +Verify on `s3://BUCKET_NAME/` the presence of archived WAL files before +proceeding with a backup. +::: + +--- diff --git a/web/versioned_docs/version-0.13.0/observability.md b/web/versioned_docs/version-0.13.0/observability.md new file mode 100644 index 0000000..274b973 --- /dev/null +++ b/web/versioned_docs/version-0.13.0/observability.md @@ -0,0 +1,24 @@ +--- +sidebar_position: 55 +--- + +# Observability + + + +The Barman Cloud Plugin exposes the following metrics through the native +Prometheus exporter of the instance manager: + +- `barman_cloud_cloudnative_pg_io_last_failed_backup_timestamp`: + the UNIX timestamp of the most recent failed backup. + +- `barman_cloud_cloudnative_pg_io_last_available_backup_timestamp`: + the UNIX timestamp of the most recent successfully available backup. + +- `barman_cloud_cloudnative_pg_io_first_recoverability_point`: + the UNIX timestamp representing the earliest point in time from which the + cluster can be recovered. + +These metrics supersede the previously available in-core metrics that used the +`cnpg_collector` prefix. The new metrics are exposed under the +`barman_cloud_cloudnative_pg_io` prefix instead. diff --git a/web/versioned_docs/version-0.13.0/parameters.md b/web/versioned_docs/version-0.13.0/parameters.md new file mode 100644 index 0000000..ca0cd2b --- /dev/null +++ b/web/versioned_docs/version-0.13.0/parameters.md @@ -0,0 +1,19 @@ +--- +sidebar_position: 100 +--- + +# Parameters + + + +The following parameters are available for the Barman Cloud Plugin: + +- `barmanObjectName`: references the `ObjectStore` resource to be used by the + plugin. +- `serverName`: Specifies the server name in the object store. + +:::important +The `serverName` parameter in the `ObjectStore` resource is retained solely for +API compatibility with the in-tree `barmanObjectStore` and must always be left empty. +When needed, use the `serverName` plugin parameter in the Cluster configuration instead. +::: diff --git a/web/versioned_docs/version-0.13.0/plugin-barman-cloud.v1.md b/web/versioned_docs/version-0.13.0/plugin-barman-cloud.v1.md new file mode 100644 index 0000000..7bd607c --- /dev/null +++ b/web/versioned_docs/version-0.13.0/plugin-barman-cloud.v1.md @@ -0,0 +1,108 @@ +# API Reference + +## Packages +- [barmancloud.cnpg.io/v1](#barmancloudcnpgiov1) + + +## barmancloud.cnpg.io/v1 + +Package v1 contains API Schema definitions for the barmancloud v1 API group + +### Resource Types +- [ObjectStore](#objectstore) + + + +#### InstanceSidecarConfiguration + + + +InstanceSidecarConfiguration defines the configuration for the sidecar that runs in the instance pods. + + + +_Appears in:_ +- [ObjectStoreSpec](#objectstorespec) + +| Field | Description | Required | Default | Validation | +| --- | --- | --- | --- | --- | +| `env` _[EnvVar](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#envvar-v1-core) array_ | The environment to be explicitly passed to the sidecar | | | | +| `retentionPolicyIntervalSeconds` _integer_ | The retentionCheckInterval defines the frequency at which the
system checks and enforces retention policies. | | 1800 | | +| `resources` _[ResourceRequirements](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcerequirements-v1-core)_ | Resources define cpu/memory requests and limits for the sidecar that runs in the instance pods. | | | | +| `additionalContainerArgs` _string array_ | AdditionalContainerArgs is an optional list of command-line arguments
to be passed to the sidecar container when it starts.
The provided arguments are appended to the container’s default arguments. | | | | +| `logLevel` _string_ | The log level for PostgreSQL instances. Valid values are: `error`, `warning`, `info` (default), `debug`, `trace` | | info | Enum: [error warning info debug trace]
| + + +#### ObjectStore + + + +ObjectStore is the Schema for the objectstores API. + + + + + +| Field | Description | Required | Default | Validation | +| --- | --- | --- | --- | --- | +| `apiVersion` _string_ | `barmancloud.cnpg.io/v1` | True | | | +| `kind` _string_ | `ObjectStore` | True | | | +| `metadata` _[ObjectMeta](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#objectmeta-v1-meta)_ | Refer to Kubernetes API documentation for fields of `metadata`. | True | | | +| `spec` _[ObjectStoreSpec](#objectstorespec)_ | Specification of the desired behavior of the ObjectStore.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status | True | | | +| `status` _[ObjectStoreStatus](#objectstorestatus)_ | Most recently observed status of the ObjectStore. This data may not be up to
date. Populated by the system. Read-only.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status | | | | + + +#### ObjectStoreSpec + + + +ObjectStoreSpec defines the desired state of ObjectStore. + + + +_Appears in:_ +- [ObjectStore](#objectstore) + +| Field | Description | Required | Default | Validation | +| --- | --- | --- | --- | --- | +| `configuration` _[BarmanObjectStoreConfiguration](https://pkg.go.dev/github.com/cloudnative-pg/barman-cloud/pkg/api#BarmanObjectStoreConfiguration)_ | The configuration for the barman-cloud tool suite | True | | | +| `retentionPolicy` _string_ | RetentionPolicy is the retention policy to be used for backups
and WALs (i.e. '60d'). The retention policy is expressed in the form
of `XXu` where `XX` is a positive integer and `u` is in `[dwm]` -
days, weeks, months. | | | Pattern: `^[1-9][0-9]*[dwm]$`
| +| `instanceSidecarConfiguration` _[InstanceSidecarConfiguration](#instancesidecarconfiguration)_ | The configuration for the sidecar that runs in the instance pods | | | | + + +#### ObjectStoreStatus + + + +ObjectStoreStatus defines the observed state of ObjectStore. + + + +_Appears in:_ +- [ObjectStore](#objectstore) + +| Field | Description | Required | Default | Validation | +| --- | --- | --- | --- | --- | +| `serverRecoveryWindow` _object (keys:string, values:[RecoveryWindow](#recoverywindow))_ | ServerRecoveryWindow maps each server to its recovery window | True | | | + + +#### RecoveryWindow + + + +RecoveryWindow represents the time span between the first +recoverability point and the last successful backup of a PostgreSQL +server, defining the period during which data can be restored. + + + +_Appears in:_ +- [ObjectStoreStatus](#objectstorestatus) + +| Field | Description | Required | Default | Validation | +| --- | --- | --- | --- | --- | +| `firstRecoverabilityPoint` _[Time](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#time-v1-meta)_ | The first recoverability point in a PostgreSQL server refers to
the earliest point in time to which the database can be
restored. | True | | | +| `lastSuccessfulBackupTime` _[Time](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#time-v1-meta)_ | The last successful backup time | True | | | +| `lastFailedBackupTime` _[Time](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#time-v1-meta)_ | The last failed backup time | True | | | + + diff --git a/web/versioned_docs/version-0.13.0/resource-name-migration.md b/web/versioned_docs/version-0.13.0/resource-name-migration.md new file mode 100644 index 0000000..f5c1cc3 --- /dev/null +++ b/web/versioned_docs/version-0.13.0/resource-name-migration.md @@ -0,0 +1,219 @@ +--- +sidebar_position: 90 +--- + +# Resource name migration guide + + + +:::warning +Before proceeding with the migration process, please: +1. **Read this guide in its entirety** to understand what changes will be made +2. **Test in a non-production environment** first if possible +3. **Ensure you have proper backups** of your cluster configuration + +This migration will delete old RBAC resources only after the +`plugin-barman-cloud` upgrade. While the operation is designed to be safe, you +should review and understand the changes before proceeding. The maintainers of +this project are not responsible for any issues that may arise during +migration. + +**Note:** This guide assumes you are using the default `cnpg-system` namespace. +::: + +## Overview + +Starting from version **0.8.0**, the `plugin-barman-cloud` deployment manifests +use more specific, prefixed resource names to avoid conflicts with other +components deployed in the same Kubernetes cluster. + +## What Changed + +The following resources have been renamed to use proper prefixes. + +### Cluster-scoped Resources + +| Old Name | New Name | +|----------------------------|------------------------------------------| +| `metrics-auth-role` | `barman-plugin-metrics-auth-role` | +| `metrics-auth-rolebinding` | `barman-plugin-metrics-auth-rolebinding` | +| `metrics-reader` | `barman-plugin-metrics-reader` | +| `objectstore-viewer-role` | `barman-plugin-objectstore-viewer-role` | +| `objectstore-editor-role` | `barman-plugin-objectstore-editor-role` | + +### Namespace-scoped Resources + +| Old Name | New Name | Namespace | +|-------------------------------|---------------------------------------------|---------------| +| `leader-election-role` | `barman-plugin-leader-election-role` | `cnpg-system` | +| `leader-election-rolebinding` | `barman-plugin-leader-election-rolebinding` | `cnpg-system` | + +## Why This Change? + +Using generic names for cluster-wide resources is discouraged as they may +conflict with other components deployed in the same cluster. The new names make +it clear that these resources belong to the Barman Cloud plugin and help avoid +naming collisions. + +## Migration Instructions + +This three steps migration process is straightforward and can be completed with +a few `kubectl` commands. + +### Step 1: Upgrade plugin-barman-cloud + +Please refer to the [Installation](installation.mdx) section to deploy the new +`plugin-barman-cloud` release. + +### Step 2: Delete Old Cluster-scoped Resources + +:::danger Verify Resources Before Deletion +**IMPORTANT**: The old resource names are generic and could potentially belong +to other components in your cluster. + +**Before deleting each resource, verify it belongs to the Barman Cloud plugin +by checking:** +- For `objectstore-*` roles: Look for `barmancloud.cnpg.io` in the API groups +- For `metrics-*` roles: Check if they reference the `plugin-barman-cloud` + ServiceAccount in `cnpg-system` namespace +- For other roles: Look for labels like `app.kubernetes.io/name: plugin-barman-cloud` + +If a resource doesn't have these indicators, **DO NOT DELETE IT** as it may +belong to another application. + +Carefully review the output of each verification command before proceeding with +the `delete`. +::: + +:::tip Dry Run First +You can add `--dry-run=client` to any `kubectl delete` command to preview what +would be deleted without actually removing anything. +::: + +**Only proceed if you've verified these resources belong to the Barman Cloud +plugin (see warning above).** + +For each resource below, first verify it belongs to Barman Cloud, then delete +it: + +```bash +# 1. Check metrics-auth-rolebinding FIRST (we'll check the role after) +# Look for references to plugin-barman-cloud ServiceAccount +kubectl describe clusterrolebinding metrics-auth-rolebinding +# If it references plugin-barman-cloud ServiceAccount in cnpg-system namespace, +# delete it: +kubectl delete clusterrolebinding metrics-auth-rolebinding + +# 2. Check metrics-auth-role +# Look for references to authentication.k8s.io and authorization.k8s.io +kubectl describe clusterrole metrics-auth-role +# Verify it's not being used by any other rolebindings: +kubectl get clusterrolebinding -o json \ + | jq -r '.items[] | select(.roleRef.name=="metrics-auth-role") \ + | .metadata.name' +# If the above returns nothing (role is not in use) and the role looks like the +# Barman Cloud one, delete it (see warnings section): +kubectl delete clusterrole metrics-auth-role + +# 3. Check objectstore-viewer-role +# Look for barmancloud.cnpg.io API group or +# for `app.kubernetes.io/name: plugin-barman-cloud` label +kubectl describe clusterrole objectstore-viewer-role +# If it shows barmancloud.cnpg.io in API groups, delete it: +kubectl delete clusterrole objectstore-viewer-role + +# 4. Check objectstore-editor-role +# Look for barmancloud.cnpg.io API group or +# for `app.kubernetes.io/name: plugin-barman-cloud` label +kubectl describe clusterrole objectstore-editor-role +# If it shows barmancloud.cnpg.io in API groups, delete it: +kubectl delete clusterrole objectstore-editor-role + +# 5. Check metrics-reader (MOST DANGEROUS - very generic name) +# First, check if it's being used by any rolebindings OTHER than barman's: +kubectl get clusterrolebinding -o json | jq -r '.items[] \ + | select(.roleRef.name=="metrics-reader") \ + | "\(.metadata.name) -> \(.subjects[0].name) in \(.subjects[0].namespace)"' +# If this shows ANY rolebindings, review them carefully. Only proceed if +# they're all Barman-related. Then check the role itself: +kubectl describe clusterrole metrics-reader +# If it ONLY has nonResourceURLs: /metrics and NO other rolebindings use it, +# delete it: +kubectl delete clusterrole metrics-reader +``` + +:::warning +The `metrics-reader` role is particularly dangerous to delete blindly. Many +monitoring systems use this exact name. Only delete it if: + +1. You've verified it ONLY grants access to `/metrics` +2. No other rolebindings reference it (checked with the jq command above) +3. You're certain it was created by the Barman Cloud plugin + +If you're unsure, it's safer to leave it and let the new +`barman-plugin-metrics-reader` role coexist with it. +::: + +If any resource is not found during the `describe` command, that's okay - it +means it was never created or already deleted. Simply skip the delete command +for that resource. + +### Step 3: Delete Old Namespace-scoped Resources + +Delete the old namespace-scoped resources in the `cnpg-system` namespace: + +```bash +# Delete the old leader-election resources +kubectl delete role leader-election-role -n cnpg-system +kubectl delete rolebinding leader-election-rolebinding -n cnpg-system +``` + +If any resource is not found, that's okay - it means it was never created or +already deleted. + +## Impact + +- **Permissions:** If you have custom RBAC rules or tools that reference the + old resource names, they will need to be updated. +- **External Users:** If end users have been granted the + `objectstore-viewer-role` or `objectstore-editor-role`, they will need to be + re-granted the new role names (`barman-plugin-objectstore-viewer-role` and + `barman-plugin-objectstore-editor-role`). + +## Verification + +After migration, verify that the new resources are created: + +```bash +# Check cluster-scoped resources +kubectl get clusterrole | grep barman +kubectl get clusterrolebinding | grep barman + +# Check namespace-scoped resources +kubectl get role,rolebinding -n cnpg-system | grep barman +``` + +You should see the new prefixed resource names. + +## Troubleshooting + +### Plugin Not Starting After Migration + +If the plugin fails to start after migration, check: + +1. **ServiceAccount permissions:** Ensure the `plugin-barman-cloud` ServiceAccount is bound to the new roles: + ```bash + kubectl get clusterrolebinding barman-plugin-metrics-auth-rolebinding -o yaml + kubectl get rolebinding barman-plugin-leader-election-rolebinding -n cnpg-system -o yaml + ``` + +2. **Role references:** Verify that the rolebindings reference the correct role names: + ```bash + kubectl describe rolebinding barman-plugin-leader-election-rolebinding -n cnpg-system + kubectl describe clusterrolebinding barman-plugin-metrics-auth-rolebinding + ``` + +## Support + +If you encounter issues during migration, please open an issue on the [GitHub +repository](https://github.com/cloudnative-pg/plugin-barman-cloud/issues). diff --git a/web/versioned_docs/version-0.13.0/retention.md b/web/versioned_docs/version-0.13.0/retention.md new file mode 100644 index 0000000..fefbd08 --- /dev/null +++ b/web/versioned_docs/version-0.13.0/retention.md @@ -0,0 +1,38 @@ +--- +sidebar_position: 60 +--- + +# Retention Policies + + + +The Barman Cloud Plugin supports **automated cleanup of obsolete backups** via +retention policies, configured in the `.spec.retentionPolicy` field of the +`ObjectStore` resource. + +:::note +This feature uses the `barman-cloud-backup-delete` command with the +`--retention-policy "RECOVERY WINDOW OF {{ value }} {{ unit }}"` syntax. +::: + +#### Example: 30-Day Retention Policy + +```yaml +apiVersion: barmancloud.cnpg.io/v1 +kind: ObjectStore +metadata: + name: my-store +spec: + [...] + retentionPolicy: "30d" +```` + +:::note +A **recovery window retention policy** ensures the cluster can be restored to +any point in time between the calculated *Point of Recoverability* (PoR) and +the latest WAL archive. The PoR is defined as `current time - recovery window`. +The **first valid backup** is the most recent backup completed before the PoR. +Backups older than that are marked as *obsolete* and deleted after the next +backup completes. +::: + diff --git a/web/versioned_docs/version-0.13.0/troubleshooting.md b/web/versioned_docs/version-0.13.0/troubleshooting.md new file mode 100644 index 0000000..fe57262 --- /dev/null +++ b/web/versioned_docs/version-0.13.0/troubleshooting.md @@ -0,0 +1,591 @@ +--- +sidebar_position: 90 +--- + +# Troubleshooting + + + +This guide helps you diagnose and resolve common issues with the Barman Cloud +plugin. + +:::important +We are continuously improving the integration between CloudNativePG and the +Barman Cloud plugin as it moves toward greater stability and maturity. For this +reason, we recommend using the latest available version of both components. +See the [*Requirements* section](intro.md#requirements) for details. +::: + +:::note +The following commands assume you installed the CloudNativePG operator in +the default `cnpg-system` namespace. If you installed it in a different +namespace, adjust the commands accordingly. +::: + +## Viewing Logs + +To troubleshoot effectively, you’ll often need to review logs from multiple +sources: + +```sh +# View operator logs (includes plugin interaction logs) +kubectl logs -n cnpg-system deployment/cnpg-controller-manager -f + +# View plugin manager logs +kubectl logs -n cnpg-system deployment/barman-cloud -f + +# View sidecar container logs (Barman Cloud operations) +kubectl logs -n -c plugin-barman-cloud -f + +# View all containers in a pod +kubectl logs -n --all-containers=true + +# View previous container logs (if container restarted) +kubectl logs -n -c plugin-barman-cloud --previous +``` + +## Common Issues + +### Plugin Installation Issues + +#### Plugin pods not starting + +**Symptoms:** + +- Plugin pods stuck in `CrashLoopBackOff` or `Error` +- Plugin deployment not ready + +**Possible causes and solutions:** + +1. **Certificate issues** + + ```sh + # Check if cert-manager is installed and running + kubectl get pods -n cert-manager + + # Check if the plugin certificate is created + kubectl get certificates -n cnpg-system + ``` + + If cert-manager is not installed, install it first: + + ```sh + # Note: other installation methods for cert-manager are available + kubectl apply -f \ + https://github.com/cert-manager/cert-manager/releases/latest/download/cert-manager.yaml + ``` + + If you are using your own certificates without cert-manager, you will need + to verify the entire certificate chain yourself. + + +2. **Image pull errors** + + ```sh + # Check pod events for image pull errors + kubectl describe pod -n cnpg-system -l app=barman-cloud + ``` + + Verify the image exists and you have proper credentials if using a private + registry. + + +3. **Resource constraints** + + ```sh + # Check node resources + kubectl top nodes + kubectl describe nodes + ``` + + Make sure your cluster has sufficient CPU and memory resources. + +### Backup Failures + +#### Quick Backup Troubleshooting Checklist + +When a backup fails, follow these steps in order: + +1. **Check backup status**: + + ```sh + kubectl get backups.postgresql.cnpg.io -n + ``` +2. **Get error details and target pod**: + + ```sh + kubectl describe backups.postgresql.cnpg.io \ + -n + + kubectl get backups.postgresql.cnpg.io \ + -n \ + -o jsonpath='{.status.instanceID.podName}' + ``` +3. **Check the target pod’s sidecar logs**: + + ```sh + TARGET_POD=$(kubectl get backups.postgresql.cnpg.io \ + -n \ + -o jsonpath='{.status.instanceID.podName}') + + kubectl logs \ + -n $TARGET_POD -c plugin-barman-cloud \ + --tail=100 | grep -E "ERROR|FATAL|panic" + ``` +4. **Check cluster events**: + + ```sh + kubectl get events -n \ + --field-selector involvedObject.name= \ + --sort-by='.lastTimestamp' + ``` +5. **Verify plugin is running**: + + ```sh + kubectl get pods \ + -n cnpg-system -l app=barman-cloud + ``` +6. **Check operator logs**: + + ```sh + kubectl logs \ + -n cnpg-system deployment/cnpg-controller-manager \ + --tail=100 | grep -i "backup\|plugin" + ``` +7. **Check plugin manager logs**: + + ```sh + kubectl logs \ + -n cnpg-system deployment/barman-cloud --tail=100 + ``` + +#### Backup job fails immediately + +**Symptoms:** + +- Backup pods terminate with error +- No backup files appear in object storage +- Backup shows `failed` phase with various error messages + +**Common failure modes and solutions:** + +1. **"requested plugin is not available" errors** + + ``` + requested plugin is not available: barman + requested plugin is not available: barman-cloud + requested plugin is not available: barman-cloud.cloudnative-pg.io + ``` + + **Cause:** The plugin name in the Cluster configuration doesn’t match the + deployed plugin, or the plugin isn’t registered. + + **Solution:** + + a. **Check plugin registration:** + + ```sh + # If you have the `cnpg` plugin installed (v1.27.0+) + kubectl cnpg status -n + ``` + + Look for the "Plugins status" section: + ``` + Plugins status + Name Version Status Reported Operator Capabilities + ---- ------- ------ ------------------------------ + barman-cloud.cloudnative-pg.io 0.6.0 N/A Reconciler Hooks, Lifecycle Service + ``` + + b. **Verify plugin name in `Cluster` spec**: + + ```yaml + apiVersion: postgresql.cnpg.io/v1 + kind: Cluster + spec: + plugins: + - name: barman-cloud.cloudnative-pg.io + parameters: + barmanObjectName: + ``` + + c. **Check plugin deployment is running**: + + ```sh + kubectl get deployment -n cnpg-system barman-cloud + ``` + +2. **"rpc error: code = Unknown desc = panic caught: assignment to entry in nil map" errors** + + **Cause:** Misconfiguration in the `ObjectStore` (e.g., typo or missing field). + + **Solution:** + + - Review sidecar logs for details + - Verify `ObjectStore` configuration and secrets + - Common issues include: + - Missing or incorrect secret references + - Typos in configuration parameters + - Missing required environment variables in secrets + +#### Backup performance issues + +**Symptoms:** + +- Backups take extremely long +- Backups timeout + +**Plugin-specific considerations:** + +1. **Check `ObjectStore` parallelism settings** + - Adjust `maxParallel` in `ObjectStore` configuration + - Monitor sidecar container resource usage during backups + +2. **Verify plugin resource allocation** + - Check if the sidecar container has sufficient CPU/memory + - Review plugin container logs for resource-related warnings + +:::tip +For Barman-specific features like compression, encryption, and performance +tuning, refer to the [Barman documentation](https://docs.pgbarman.org/latest/). +::: + +### WAL Archiving Issues + +#### WAL archiving stops + +**Symptoms:** + +- WAL files accumulate on the primary +- Cluster shows WAL archiving warnings +- Sidecar logs show WAL errors + +**Debugging steps:** + +1. **Check plugin sidecar logs for WAL archiving errors** + ```sh + # Check recent WAL archive operations in sidecar + kubectl logs -n -c plugin-barman-cloud \ + --tail=50 | grep -i wal + ``` + +2. **Check ObjectStore configuration for WAL settings** + - Ensure ObjectStore has proper WAL retention settings + - Verify credentials have permissions for WAL operations + +### Restore Issues + +#### Restore fails during recovery + +**Symptoms:** + +- New cluster stuck in recovery +- Plugin sidecar shows restore errors +- PostgreSQL won’t start + +**Debugging steps:** + +1. **Check plugin sidecar logs during restore** + + ```sh + # Check the sidecar logs on the recovering cluster pods + kubectl logs -n \ + -c plugin-barman-cloud --tail=100 + + # Look for restore-related errors + kubectl logs -n \ + -c plugin-barman-cloud | grep -E "restore|recovery|ERROR" + ``` + +2. **Verify plugin can access backups** + + ```sh + # Check if `ObjectStore` is properly configured for restore + kubectl get objectstores.barmancloud.cnpg.io \ + -n -o yaml + + # Check PostgreSQL recovery logs + kubectl logs -n \ + -c postgres | grep -i recovery + ``` + +:::tip +For detailed Barman restore operations and troubleshooting, refer to the +[Barman documentation](https://docs.pgbarman.org/latest/barman-cloud-restore.html). +::: + +#### Point-in-time recovery (PITR) configuration issues + +**Symptoms:** + +- PITR doesn’t reach target time +- WAL access errors +- Recovery halts early + +**Debugging steps:** + +1. **Verify PITR configuration in the `Cluster` spec** + + ```yaml + apiVersion: postgresql.cnpg.io/v1 + kind: Cluster + metadata: + name: + spec: + storage: + size: 1Gi + + bootstrap: + recovery: + source: origin + recoveryTarget: + targetTime: "2024-01-15T10:30:00Z" + + externalClusters: + - name: origin + plugin: + enabled: true + name: barman-cloud.cloudnative-pg.io + parameters: + barmanObjectName: + serverName: + ``` + +2. **Check sidecar logs for WAL-related errors** + + ```sh + kubectl logs -n \ + -c plugin-barman-cloud | grep -i wal + ``` + +:::note +Timestamps without an explicit timezone suffix +(e.g., `2024-01-15 10:30:00`) are interpreted as UTC. +::: + +:::warning +Always specify an explicit timezone in your timestamp to avoid ambiguity. +For example, use `2024-01-15T10:30:00Z` or `2024-01-15T10:30:00+02:00` +instead of `2024-01-15 10:30:00`. +::: + +:::note +For detailed PITR configuration and WAL management, see the +[Barman PITR documentation](https://docs.pgbarman.org/latest/). +::: + +### Plugin Configuration Issues + +#### Plugin cannot connect to object storage + +**Symptoms:** + +- Sidecar logs show connection errors +- Backups fail with authentication or network errors +- `ObjectStore` resource reports errors + +**Solution:** + +1. **Verify `ObjectStore` CRD configuration and secrets** + + ```sh + # Check ObjectStore resource status + kubectl get objectstores.barmancloud.cnpg.io \ + -n -o yaml + + # Verify the secret exists and has correct keys for your provider + kubectl get secret -n \ + -o jsonpath='{.data}' | jq 'keys' + ``` + +2. **Check sidecar logs for connectivity issues** + ```sh + kubectl logs -n \ + -c plugin-barman-cloud | grep -E "connect|timeout|SSL|cert" + ``` + +3. **Adjust provider-specific settings (endpoint, path style, etc.)** + - See [Object Store Configuration](object_stores.md) for provider-specific settings + - Ensure `endpointURL` is set correctly for your storage provider + - Verify network policies allow egress to your storage provider + +## Diagnostic Commands + +### Using the `cnpg` plugin for `kubectl` + +The `cnpg` plugin for `kubectl` provides extended debugging capabilities. +Keep it updated: + +```sh +# Install or update the `cnpg` plugin +kubectl krew install cnpg +# Or using an alternative method: https://cloudnative-pg.io/documentation/current/kubectl-plugin/#install + +# Check plugin status (requires CNPG 1.27.0+) +kubectl cnpg status -n + +# View cluster status in detail +kubectl cnpg status -n --verbose +``` + +## Getting Help + +If problems persist: + +1. **Check the documentation** + + - [Installation Guide](installation.mdx) + - [Object Store Configuration](object_stores.md) (for provider-specific settings) + - [Usage Examples](usage.md) + + +2. **Gather diagnostic information** + + ```sh + # Create a diagnostic bundle (⚠️ sanitize these before sharing!) + kubectl get objectstores.barmancloud.cnpg.io -A -o yaml > /tmp/objectstores.yaml + kubectl get clusters.postgresql.cnpg.io -A -o yaml > /tmp/clusters.yaml + kubectl logs -n cnpg-system deployment/barman-cloud --tail=1000 > /tmp/plugin.log + ``` + + +3. **Community support** + + - CloudNativePG Slack: [#cloudnativepg-users](https://cloud-native.slack.com/messages/cloudnativepg-users) + - GitHub Issues: [plugin-barman-cloud](https://github.com/cloudnative-pg/plugin-barman-cloud/issues) + + +4. **Include when reporting** + + - CloudNativePG version + - Plugin version + - Kubernetes version + - Cloud provider and region + - Relevant configuration (⚠️ sanitize/redact sensitive information) + - Error messages and logs + - Steps to reproduce + +## Known Issues and Limitations + +### Current Known Issues + +1. **Migration compatibility**: After migrating from in-tree backup to the + plugin, the `kubectl cnpg backup` command syntax has changed + ([#353](https://github.com/cloudnative-pg/plugin-barman-cloud/issues/353)): + + ```sh + # Old command (in-tree, no longer works after migration) + kubectl cnpg backup -n \ + --method=barmanObjectStore + + # New command (plugin-based) + kubectl cnpg backup -n \ + --method=plugin --plugin-name=barman-cloud.cloudnative-pg.io + ``` + +### Plugin Limitations + +1. **Installation method**: Currently only supports manifest and Kustomize + installation ([#351](https://github.com/cloudnative-pg/plugin-barman-cloud/issues/351) - + Helm chart requested) + +2. **Sidecar resource sharing**: The plugin sidecar container shares pod + resources with PostgreSQL + +3. **Plugin restart behavior**: Restarting the sidecar container requires + restarting the entire PostgreSQL pod + +## Recap of General Debugging Steps + +### Check Backup Status and Identify the Target Instance + +```sh +# List all backups and their status +kubectl get backups.postgresql.cnpg.io -n + +# Get detailed backup information including error messages and target instance +kubectl describe backups.postgresql.cnpg.io \ + -n + +# Extract the target pod name from a failed backup +kubectl get backups.postgresql.cnpg.io \ + -n \ + -o jsonpath='{.status.instanceID.podName}' + +# Get more details including the target pod, method, phase, and error +kubectl get backups.postgresql.cnpg.io \ + -n \ + -o jsonpath='Pod: {.status.instanceID.podName}{"\n"}Method: {.status.method}{"\n"}Phase: {.status.phase}{"\n"}Error: {.status.error}{"\n"}' + +# Check the cluster status for backup-related information +kubectl cnpg status -n --verbose +``` + +### Check Sidecar Logs on the Backup Target Pod + +```sh +# Identify which pod was the backup target (from the previous step) +TARGET_POD=$(kubectl get backups.postgresql.cnpg.io \ + -n \ + -o jsonpath='{.status.instanceID.podName}') +echo "Backup target pod: $TARGET_POD" + +# Check the sidecar logs on the specific target pod +kubectl logs -n $TARGET_POD \ + -c plugin-barman-cloud --tail=100 + +# Follow the logs in real time +kubectl logs -n $TARGET_POD \ + -c plugin-barman-cloud -f + +# Check for specific errors in the target pod around the backup time +kubectl logs -n $TARGET_POD \ + -c plugin-barman-cloud --since=10m | grep -E "ERROR|FATAL|panic|failed" + +# Alternative: List all cluster pods and their roles +kubectl get pods -n -l cnpg.io/cluster= \ + -o custom-columns=NAME:.metadata.name,ROLE:.metadata.labels.cnpg\\.io/instanceRole,INSTANCE:.metadata.labels.cnpg\\.io/instanceName + +# Check sidecar logs on ALL cluster pods (if the target is unclear) +for pod in $(kubectl get pods -n -l cnpg.io/cluster= -o name); do + echo "=== Checking $pod ===" + kubectl logs -n $pod -c plugin-barman-cloud \ + --tail=20 | grep -i error || echo "No errors found" +done +``` + +### Check Events for Backup-Related Issues + +```sh +# Check events for the cluster +kubectl get events -n \ + --field-selector involvedObject.name= + +# Check events for failed backups +kubectl get events -n \ + --field-selector involvedObject.kind=Backup + +# Get all recent events in the namespace +kubectl get events -n --sort-by='.lastTimestamp' | tail -20 +``` + +### Verify `ObjectStore` Configuration + +```sh +# Check the ObjectStore resource +kubectl get objectstores.barmancloud.cnpg.io \ + -n -o yaml + +# Verify the secret exists and has the correct keys +kubectl get secret -n -o yaml +# Alternatively +kubectl get secret -n -o jsonpath='{.data}' | jq 'keys' +``` + +### Common Error Messages and Solutions + +* **"AccessDenied" or "403 Forbidden"** β€” Check cloud credentials and bucket permissions. +* **"NoSuchBucket"** β€” Verify the bucket exists and the endpoint URL is correct. +* **"Connection timeout"** β€” Check network connectivity and firewall rules. +* **"SSL certificate problem"** β€” For self-signed certificates, verify the CA bundle configuration. + diff --git a/web/versioned_docs/version-0.13.0/upgrades.mdx b/web/versioned_docs/version-0.13.0/upgrades.mdx new file mode 100644 index 0000000..0ab9ddb --- /dev/null +++ b/web/versioned_docs/version-0.13.0/upgrades.mdx @@ -0,0 +1,16 @@ +--- +sidebar_position: 25 +--- + +# Upgrades + + + +You can upgrade the plugin simply by installing the new version. Unless +explicitly stated below or in the release notes, no special steps are required. + +## Upgrading to version 0.8.x from previous versions + +Version **0.8.0** introduces breaking changes to resource naming. +To complete the upgrade successfully, follow the instructions in the +["Resource name migration guide"](resource-name-migration.md). diff --git a/web/versioned_docs/version-0.13.0/usage.md b/web/versioned_docs/version-0.13.0/usage.md new file mode 100644 index 0000000..6406d38 --- /dev/null +++ b/web/versioned_docs/version-0.13.0/usage.md @@ -0,0 +1,283 @@ +--- +sidebar_position: 30 +--- + +# Using the Barman Cloud Plugin + + + +After [installing the plugin](installation.mdx) in the same namespace as the +CloudNativePG operator, enabling your PostgreSQL cluster to use the Barman +Cloud Plugin involves just a few steps: + +- Defining the object store containing your WAL archive and base backups, using + your preferred [provider](object_stores.md) +- Instructing the Postgres cluster to use the Barman Cloud Plugin + +From that moment, you’ll be able to issue on-demand backups or define a backup +schedule, as well as rely on the object store for recovery operations. + +The rest of this page details each step, using MinIO as object store provider. + +## Defining the `ObjectStore` + +An `ObjectStore` resource must be created for each object store used in your +PostgreSQL architecture. Here's an example configuration using MinIO: + +```yaml +apiVersion: barmancloud.cnpg.io/v1 +kind: ObjectStore +metadata: + name: minio-store +spec: + configuration: + destinationPath: s3://backups/ + endpointURL: http://minio:9000 + s3Credentials: + accessKeyId: + name: minio + key: ACCESS_KEY_ID + secretAccessKey: + name: minio + key: ACCESS_SECRET_KEY + wal: + compression: gzip +``` + +The `.spec.configuration` schema follows the same format as the +[in-tree barman-cloud support](https://pkg.go.dev/github.com/cloudnative-pg/barman-cloud/pkg/api#BarmanObjectStoreConfiguration). +Refer to [the CloudNativePG documentation](https://cloudnative-pg.io/documentation/current/appendixes/backup_barmanobjectstore/) +for additional details. + +:::important +The `serverName` parameter in the `ObjectStore` resource is retained solely for +API compatibility with the in-tree `barmanObjectStore` and must always be left empty. +When needed, use the `serverName` plugin parameter in the Cluster configuration instead. +::: + +## Configuring WAL Archiving + +Once the `ObjectStore` is defined, you can configure your PostgreSQL cluster +to archive WALs by referencing the store in the `.spec.plugins` section: + +```yaml +apiVersion: postgresql.cnpg.io/v1 +kind: Cluster +metadata: + name: cluster-example +spec: + instances: 3 + imagePullPolicy: Always + plugins: + - name: barman-cloud.cloudnative-pg.io + isWALArchiver: true + parameters: + barmanObjectName: minio-store + storage: + size: 1Gi +``` + +This configuration enables both WAL archiving and data directory backups. + +## Performing a Base Backup + +Once WAL archiving is enabled, the cluster is ready for backups. Backups can be +created either declaratively (with YAML manifests) or imperatively (with the +`cnpg` plugin). + +### Declarative approach (YAML manifest) + +Create a backup resource by applying a YAML manifest: + +```yaml +apiVersion: postgresql.cnpg.io/v1 +kind: Backup +metadata: + name: backup-example +spec: + cluster: + name: cluster-example + method: plugin + pluginConfiguration: + name: barman-cloud.cloudnative-pg.io +``` + +### Imperative approach (using the `cnpg` plugin) + +The quickest way to trigger an on-demand backup is with the `cnpg` plugin: + +```bash +kubectl cnpg backup -n \ + --method=plugin \ + --plugin-name=barman-cloud.cloudnative-pg.io +``` + +:::note Migration from in-tree backups +If you are migrating from the in-tree backup system, note the change in syntax: + +```bash +# Old command (in-tree backup) +kubectl cnpg backup -n --method=barmanObjectStore + +# New command (plugin-based backup) +kubectl cnpg backup -n \ + --method=plugin \ + --plugin-name=barman-cloud.cloudnative-pg.io +``` +::: + +## Restoring a Cluster + +To restore a cluster from an object store, create a new `Cluster` resource that +references the store containing the backup. Below is an example configuration: + +```yaml +apiVersion: postgresql.cnpg.io/v1 +kind: Cluster +metadata: + name: cluster-restore +spec: + instances: 3 + imagePullPolicy: IfNotPresent + bootstrap: + recovery: + source: source + externalClusters: + - name: source + plugin: + name: barman-cloud.cloudnative-pg.io + parameters: + barmanObjectName: minio-store + serverName: cluster-example + storage: + size: 1Gi +``` + +:::important +The above configuration does **not** enable WAL archiving for the restored cluster. +::: + +To enable WAL archiving for the restored cluster, include the `.spec.plugins` +section alongside the `externalClusters.plugin` section, as shown below: + +```yaml +apiVersion: postgresql.cnpg.io/v1 +kind: Cluster +metadata: + name: cluster-restore +spec: + instances: 3 + imagePullPolicy: IfNotPresent + bootstrap: + recovery: + source: source + plugins: + - name: barman-cloud.cloudnative-pg.io + isWALArchiver: true + parameters: + # Backup Object Store (push, read-write) + barmanObjectName: minio-store-bis + externalClusters: + - name: source + plugin: + name: barman-cloud.cloudnative-pg.io + parameters: + # Recovery Object Store (pull, read-only) + barmanObjectName: minio-store + serverName: cluster-example + storage: + size: 1Gi +``` + +The same object store may be used for both transaction log archiving and +restoring a cluster, or you can configure separate stores for these purposes. + +## Configuring Replica Clusters + +You can set up a distributed topology by combining the previously defined +configurations with the `.spec.replica` section. Below is an example of how to +define a replica cluster: + +```yaml +apiVersion: postgresql.cnpg.io/v1 +kind: Cluster +metadata: + name: cluster-dc-a +spec: + instances: 3 + primaryUpdateStrategy: unsupervised + + storage: + storageClass: csi-hostpath-sc + size: 1Gi + + plugins: + - name: barman-cloud.cloudnative-pg.io + isWALArchiver: true + parameters: + barmanObjectName: minio-store-a + + replica: + self: cluster-dc-a + primary: cluster-dc-a + source: cluster-dc-b + + externalClusters: + - name: cluster-dc-a + plugin: + name: barman-cloud.cloudnative-pg.io + parameters: + barmanObjectName: minio-store-a + + - name: cluster-dc-b + plugin: + name: barman-cloud.cloudnative-pg.io + parameters: + barmanObjectName: minio-store-b +``` + +## Configuring the plugin instance sidecar + +The Barman Cloud Plugin runs as a sidecar container next to each PostgreSQL +instance pod. It manages backup, WAL archiving, and restore processes. + +Configuration comes from multiple `ObjectStore` resources: + +1. The one referenced in the + `.spec.plugins` section of the `Cluster`. This is the + object store used for WAL archiving and base backups. +2. The one referenced in the external cluster + used in the `.spec.replica.source` section of the `Cluster`. This is + used by the log-shipping designated primary to get the WAL files. +3. The one referenced in the + `.spec.bootstrap.recovery.source` section of the `Cluster`. Used by + the initial recovery job to create the cluster from an existing backup. + +You can fine-tune sidecar behavior in the `.spec.instanceSidecarConfiguration` +of your ObjectStore. These settings apply to all PostgreSQL instances that use +this object store. Any updates take effect at the next `Cluster` reconciliation, +and could generate a rollout of the `Cluster`. + +```yaml +apiVersion: barmancloud.cnpg.io/v1 +kind: ObjectStore +metadata: + name: minio-store +spec: + configuration: + # [...] + instanceSidecarConfiguration: + retentionPolicyIntervalSeconds: 1800 + resources: + requests: + memory: "XXX" + cpu: "YYY" + limits: + memory: "XXX" + cpu: "YYY" +``` + +:::note +If more than one `ObjectStore` applies, the `instanceSidecarConfiguration` of +the one set in `.spec.plugins` has priority. +::: diff --git a/web/versioned_sidebars/version-0.13.0-sidebars.json b/web/versioned_sidebars/version-0.13.0-sidebars.json new file mode 100644 index 0000000..1fd014a --- /dev/null +++ b/web/versioned_sidebars/version-0.13.0-sidebars.json @@ -0,0 +1,8 @@ +{ + "docs": [ + { + "type": "autogenerated", + "dirName": "." + } + ] +} diff --git a/web/versions.json b/web/versions.json index a788550..dcc6cd5 100644 --- a/web/versions.json +++ b/web/versions.json @@ -1,4 +1,5 @@ [ + "0.13.0", "0.12.0", "0.11.0", "0.10.0", From aa1ef41245576e45f8ee5c11b79c3b6b74682c9e Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 10 Jun 2026 09:13:22 +0200 Subject: [PATCH 024/134] chore(deps): lock file maintenance documentation dependencies (#953) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Update | Change | |---|---| | lockFileMaintenance | All locks refreshed | πŸ”§ This Pull Request updates lock files to use the latest dependency versions. Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- web/yarn.lock | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/web/yarn.lock b/web/yarn.lock index dec8967..2beea9a 100644 --- a/web/yarn.lock +++ b/web/yarn.lock @@ -3471,9 +3471,9 @@ balanced-match@^1.0.0: integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== baseline-browser-mapping@^2.10.12: - version "2.10.34" - resolved "https://registry.yarnpkg.com/baseline-browser-mapping/-/baseline-browser-mapping-2.10.34.tgz#dedb606362446777cfe328d30d4ee15056d06303" - integrity sha512-IMDedajPifLnHNY0X9n8hKxRTQ6/eTHwr5bDo04WnuqxyKw6LYtQywCuuqPZwhl3aBXMvQpJov42GLCwRRdQzw== + version "2.10.35" + resolved "https://registry.yarnpkg.com/baseline-browser-mapping/-/baseline-browser-mapping-2.10.35.tgz#f0f2232e0de2d2f82cc491bcf830b05ed05937c6" + integrity sha512-honAfLBde0HAFLdNyBEfuuENkF6zR+ozxqxa/2zJKHBe1qzLqyTSeRKpdPEHAP03rlDGyQOPnCSxnVpVqQo9Mg== batch@0.6.1: version "0.6.1" @@ -4476,9 +4476,9 @@ ee-first@1.1.1: integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== electron-to-chromium@^1.5.328: - version "1.5.370" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.370.tgz#47dbc6565e5f13991a483e10cddff4bf0933de96" - integrity sha512-D5tSHJReAb/Kf3Hu9F/GO4lJuSWzEWHwvQ/kKSUP7pimNgvxkSKj+gUQhHpKKACwrin7rS3byU7IxreF56rl5g== + version "1.5.371" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.371.tgz#fa5684f2a514c57368823f9e75553f9a7c5ef0be" + integrity sha512-e9htk9mAYL6AzmkEhSvVVw7IWGSBJ/Bqdn2eRyRLrj1g6sncN4WbFt5qnILYoCktktr45pyjIrOiRvBThQ808w== emoji-regex@^8.0.0: version "8.0.0" @@ -8372,9 +8372,9 @@ semver@^6.3.1: integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== semver@^7.3.5, semver@^7.3.7, semver@^7.5.4: - version "7.8.3" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.8.3.tgz#c350de61c2a1ddbc96d7fae3e5b6fcf92d477fbe" - integrity sha512-wnilbGyMxzbY7dNOl7jpKbLSjcfeweJWU5j4+u5qW+6/wuGD9KzIGOyZnQVSBM9E7DtWaaH3CyHkppYrKYoxwg== + version "7.8.4" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.8.4.tgz#c73eceebae0616934be8dff28a7fd70757c8e696" + integrity sha512-rUCObTnP32Q08R2uuIrt7r9PlEonuTmtuXYcW6s5kjdlj3xbnwe+21yXptAUYcMAABLkYYTtnmzb3w3EDZfueA== send@~0.19.0, send@~0.19.1: version "0.19.2" From 99e5de906b51ee2d45656ce8ac23b9df1837dbb0 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 10 Jun 2026 09:33:27 +0200 Subject: [PATCH 025/134] chore(deps): refresh pip-compile outputs (#954) This PR contains the following updates: | Update | Change | |---|---| | lockFileMaintenance | All locks refreshed | Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- containers/sidecar-requirements.txt | 112 ++++++++++++++-------------- 1 file changed, 56 insertions(+), 56 deletions(-) diff --git a/containers/sidecar-requirements.txt b/containers/sidecar-requirements.txt index 983c21a..0de45f5 100644 --- a/containers/sidecar-requirements.txt +++ b/containers/sidecar-requirements.txt @@ -22,13 +22,13 @@ barman==3.19.1 \ --hash=sha256:0a6a9e1babf97687732d8b2a3eb79ea95d55246a5257b9433865cb6e755221c0 \ --hash=sha256:2f71c4a1f1ba53f694cbdf838bb9906d8ba02b97d1fd3041196e8999bec7a1ee # via -r sidecar-requirements.in -boto3==1.43.25 \ - --hash=sha256:91f3deb0dfc32403a187f57c19a78dc8e38d25ee2967a511fa8905acf00cc074 \ - --hash=sha256:e4e2515533a1593eb2302e9eda5baf4e1510abb219b41dd0db4696cc21bc5039 +boto3==1.43.26 \ + --hash=sha256:33f027b7911dffe84f4896b66024c228eb856f4cf8c1ff3465be0eae1f413731 \ + --hash=sha256:7c88bfbde6abcf062d04ac410a1cf4eaf8675f025f35f3ad9accc9b0224ce6b9 # via barman -botocore==1.43.25 \ - --hash=sha256:ef1d210ac9085ea0e5fc6ad2e63f0c7e97103c74f52156bf944289aaf6278d1b \ - --hash=sha256:faab543ca6ae6f8fdc5f6318240bebfb8c05cd25823715fe02aad7edf0c4b383 +botocore==1.43.26 \ + --hash=sha256:eeb92265bae289555182a46341c998a656ab49c0dbdb762c65b30fe354fcc9e8 \ + --hash=sha256:fd9280ac868194afcee59c7def62e0031fb4b599f7ef85360d30c7e42357c1dc # via # boto3 # s3transfer @@ -390,56 +390,56 @@ cramjam==2.11.0 \ # via # barman # python-snappy -cryptography==48.0.0 \ - --hash=sha256:0890f502ddf7d9c6426129c3f49f5c0a39278ed7cd6322c8755ffca6ee675a13 \ - --hash=sha256:0c558d2cdffd8f4bbb30fc7134c74d2ca9a476f830bb053074498fbc86f41ed6 \ - --hash=sha256:16cd65b9330583e4619939b3a3843eec1e6e789744bb01e7c7e2e62e33c239c8 \ - --hash=sha256:18349bbc56f4743c8b12dc32e2bccb2cf83ee8b69a3bba74ef8ae857e26b3d25 \ - --hash=sha256:1e2d54c8be6152856a36f0882ab231e70f8ec7f14e93cf87db8a2ed056bf160c \ - --hash=sha256:22a5cb272895dce158b2cacdfdc3debd299019659f42947dbdac6f32d68fe832 \ - --hash=sha256:27241b1dc9962e056062a8eef1991d02c3a24569c95975bd2322a8a52c6e5e12 \ - --hash=sha256:2b4d59804e8408e2fea7d1fbaf218e5ec984325221db76e6a241a9abd6cdd95c \ - --hash=sha256:2eb992bbd4661238c5a397594c83f5b4dc2bc5b848c365c8f991b6780efcc5c7 \ - --hash=sha256:369a6348999f94bbd53435c894377b20ab95f25a9065c283570e70150d8abc3c \ - --hash=sha256:3cb07a3ed6431663cd321ea8a000a1314c74211f823e4177fefa2255e057d1ec \ - --hash=sha256:40ba1f85eaa6959837b1d51c9767e230e14612eea4ef110ee8854ada22da1bf5 \ - --hash=sha256:4defde8685ae324a9eb9d818717e93b4638ef67070ac9bc15b8ca85f63048355 \ - --hash=sha256:55b7718303bf06a5753dcdccf2f3945cf18ad7bffde41b61226e4db31ab89a9c \ - --hash=sha256:561215ea3879cb1cbbf272867e2efda62476f240fb58c64de6b393ae19246741 \ - --hash=sha256:58d00498e8933e4a194f3076aee1b4a97dfec1a6da444535755822fe5d8b0b86 \ - --hash=sha256:59baa2cb386c4f0b9905bd6eb4c2a79a69a128408fd31d32ca4d7102d4156321 \ - --hash=sha256:5a5ed8fde7a1d09376ca0b40e68cd59c69fe23b1f9768bd5824f54681626032a \ - --hash=sha256:5b012212e08b8dd5edc78ef54da83dd9892fd9105323b3993eff6bea65dc21d7 \ - --hash=sha256:5c3932f4436d1cccb036cb0eaef46e6e2db91035166f1ad6505c3c9d5a635920 \ - --hash=sha256:614d0949f4790582d2cc25553abd09dd723025f0c0e7c67376a1d77196743d6e \ - --hash=sha256:76341972e1eff8b4bea859f09c0d3e64b96ce931b084f9b9b7db8ef364c30eff \ - --hash=sha256:77a2ccbbe917f6710e05ba9adaa25fb5075620bf3ea6fb751997875aff4ae4bd \ - --hash=sha256:7995ef305d7165c3f11ae07f2517e5a4f1d5c18da1376a0a9ed496336b69e5f3 \ - --hash=sha256:7ce4bfae76319a532a2dc68f82cc32f5676ee792a983187dac07183690e5c66f \ - --hash=sha256:7e8eac43dfca5c4cccc6dad9a80504436fca53bb9bc3100a2386d730fbe6b602 \ - --hash=sha256:84cf79f0dc8b36ac5da873481716e87aef31fcfa0444f9e1d8b4b2cece142855 \ - --hash=sha256:8c7378637d7d88016fa6791c159f698b3d3eed28ebf844ac36b9dc04a14dae18 \ - --hash=sha256:8cd666227ef7af430aa5914a9910e0ddd703e75f039cef0825cd0da71b6b711a \ - --hash=sha256:906cbf0670286c6e0044156bc7d4af9cbb0ef6db9f73e52c3ec56ba6bdde5336 \ - --hash=sha256:9071196d81abc88b3516ac8cdfad32e2b66dd4a5393a8e68a961e9161ddc6239 \ - --hash=sha256:9249e3cd978541d665967ac2cb2787fd6a62bddf1e75b3e347a594d7dacf4f74 \ - --hash=sha256:984a20b0f62a26f48a3396c72e4bc34c66e356d356bf370053066b3b6d54634a \ - --hash=sha256:9be5aafa5736574f8f15f262adc81b2a9869e2cfe9014d52a44633905b40d52c \ - --hash=sha256:9c459db21422be75e2809370b829a87eb37f74cd785fc4aa9ea1e5f43b47cda4 \ - --hash=sha256:9ccdac7d40688ecb5a3b4a604b8a88c8002e3442d6c60aead1db2a89a041560c \ - --hash=sha256:a0e692c683f4df67815a2d258b324e66f4738bd7a96a218c826dce4f4bd05d8f \ - --hash=sha256:a5da777e32ffed6f85a7b2b3f7c5cbc88c146bfcd0a1d7baf5fcc6c52ee35dd4 \ - --hash=sha256:a64697c641c7b1b2178e573cbc31c7c6684cd56883a478d75143dbb7118036db \ - --hash=sha256:ad64688338ed4bc1a6618076ba75fd7194a5f1797ac60b47afe926285adb3166 \ - --hash=sha256:bd72e68b06bb1e96913f97dd4901119bc17f39d4586a5adf2d3e47bc2b9d58b5 \ - --hash=sha256:c17dfe85494deaeddc5ce251aebd1d60bbe6afc8b62071bb0b469431a000124f \ - --hash=sha256:c18684a7f0cc9a3cb60328f496b8e3372def7c5d2df39ac267878b05565aaaae \ - --hash=sha256:cc90c0b39b2e3c65ef52c804b72e3c58f8a04ab2a1871272798e5f9572c17d20 \ - --hash=sha256:db63bf618e5dea46c07de12e900fe1cdd2541e6dc9dbae772a70b7d4d4765f6a \ - --hash=sha256:ea8990436d914540a40ab24b6a77c0969695ed52f4a4874c5137ccf7045a7057 \ - --hash=sha256:ecde28a596bead48b0cfd2a1b4416c3d43074c2d785e3a398d7ec1fc4d0f7fbb \ - --hash=sha256:f5333311663ea94f75dd408665686aaf426563556bb5283554a3539177e03b8c \ - --hash=sha256:fdfef35d751d510fcef5252703621574364fec16418c4a1e5e1055248401054b +cryptography==48.0.1 \ + --hash=sha256:08a597acce1ff37f347400087776599e2348a3a8bc53b44120e463cd274efe4a \ + --hash=sha256:09f73a725d582cef64b91281a322cd798d14a33b2b6f2b7ad9531dc336d84c02 \ + --hash=sha256:0df56b056bc17c1b7d6821dfa65216e62bd232d8ab05eb3db44e71d235651471 \ + --hash=sha256:0ee6ea481db1ab889cba043ec1eda17bb9c1ea79db6722f779c3667f9f70322f \ + --hash=sha256:15254441469dd6bf027039453288e2072124f8b6603563f5d759e1c9b69273fa \ + --hash=sha256:266f4ee051abb2f725b74ef8072b521ce1feacf685a3364fa6a6b45548db791a \ + --hash=sha256:2c37f2461406063b417837f5f3daab668652acd82423efcd7f0a9f04be972de1 \ + --hash=sha256:32143b24adb918f078134e1e230f1eb8cc04886b92c28b5f0041aaf3e5699225 \ + --hash=sha256:33842cf0888951cef5bc7ac724ab844a42044c1727b967b7f8997289a0464f92 \ + --hash=sha256:3752f2dbc8f07a30aad2932c986cea495b03bb554887828225da104f732852b6 \ + --hash=sha256:39489bfca54c7a1f6b297efcd8bc608ab92d16c4ca631b0cad4da46724588b24 \ + --hash=sha256:3e4a1a3232eef2e6c732827d5722db29a0cc8b27af2a4d865b094cf954be9ca1 \ + --hash=sha256:3fd2ca57062b241c856670b073487d2e86c4637937ca5601e48f97bf8e11fc8f \ + --hash=sha256:42fcd8e26fe555d9b3577a135f5091fefa0aa4e99129c23fb56787a1bd4ada72 \ + --hash=sha256:43c5835e2cb98c8733d86f57d6fc879b613f5c3478607281c3e36daffc6dd8a6 \ + --hash=sha256:48fe40804d4caa2288f24e70ca8c64c42dd826da0ad7e4f1b41b2128d679e6c8 \ + --hash=sha256:4ab0a343c807bbcd90c971cd1ecf072937cd01847a9e002bef88fb47ac6be577 \ + --hash=sha256:4fdc69f8e4316bcf0c8c8ec1f26f285d12e8142d88d96c876a59a03be3f6ae67 \ + --hash=sha256:6184ca7b174f28d7c703f1290d4b297217c45355f77a98f67e9b7f14549ac54a \ + --hash=sha256:66fd0771e7b9c6dcd44cf1120690d2338d16d72795cf40cae2786a39eba65429 \ + --hash=sha256:6b2c0c3e6ccf3ade7750f836ef3ee36eea250cc467d45c256895573ac08cc6f1 \ + --hash=sha256:735824ec41b7f74a7c45fb1591349333e4c696cb6c044e5f46356e560143e4cd \ + --hash=sha256:7e234ac052af99f2700826a5c29ea99d9c1b1f80341cde62d11c8154dc8e0bd9 \ + --hash=sha256:869c3b8a53bfe27147832df48b32adadf558249d50e76cb3769d40e986b13265 \ + --hash=sha256:86be3b1b0b6bf09482fb50a979c508d2950ed95f5621ec77f4e385962006b83a \ + --hash=sha256:86fe77abb1bd87afb251d4d02ada7ecf53a32cee9b67d976abb2e45a13297475 \ + --hash=sha256:88c852a0ae366e262e5a1744b685e6a433dc8788dd2a277e418bf4904203609d \ + --hash=sha256:8ace4507d1e6533c125f4fac754f8bb8b6a74c08e92179dabd7e16571a3efbf3 \ + --hash=sha256:92a46e1d638daa264ba2971c0b0489c9409787943efae4d60ffda3d091ef832c \ + --hash=sha256:9621de99d2da096006b629979efd8ae7eb2d8b822488d0c89ee4000c306c59b1 \ + --hash=sha256:9a49ca6c81417f6a5edb50375a60cccdd70fa0a91a5211829dbea74eba94d2ac \ + --hash=sha256:9bd3f92d76217892b15df84ca256c2c113d386fdda7a7d8691aeeced976507c6 \ + --hash=sha256:9de21387aa95e2a895823d0745b430bed4f33503ba9ab5e0b5311f33e37d66d2 \ + --hash=sha256:b024e784ad6c077ee0147b35ea9cbfc1e34e1fd4c1dcca214c2794d73a12df08 \ + --hash=sha256:b4e391975f038e66432328639620a4aff2d307513b004f1ca06d6225bced815c \ + --hash=sha256:b74ca3b8e5ecdd833bf6a002ca41b4793bb27fb8f1c06ffaf2643c9e9140e31b \ + --hash=sha256:b7a2d1a937a738a881737cec135a38bb61470589b17515b9f73f571d0ae10401 \ + --hash=sha256:b9a32b876490d66c8bcc9963ef220199569748434ab01a9d6aaeabf88e7f5158 \ + --hash=sha256:bd81490cd5801d755cf97bb68ac191f14b708470b1c7cf4580f669b9c9264cd8 \ + --hash=sha256:c1400da5e32a43253392277eac7490a60e497d810a63dd5608d71bbd7af507c9 \ + --hash=sha256:d069066deead00ac7f090be101be875a06855908f7ec004c27b8fefb4acfb411 \ + --hash=sha256:d5d30989c6917b478b5817902e85fddaea2261efa8648383d965381ccb9e1ac4 \ + --hash=sha256:df637c05205ea7c1d7fbcbe54bbfea648a52951155f997af13d895d0ecc96991 \ + --hash=sha256:e361afba8918070d376df76f408a4f67fec0ee9cff81a99e48fe9a233ef59e17 \ + --hash=sha256:eb86ce1af36fe65041b6db9a8bb064ee621a7e5fded0f80d475ec243477cd242 \ + --hash=sha256:f0d27a5696721ef7a672b8c810f6aded391058e0b9486e63e6d93baf765da691 \ + --hash=sha256:f2ceef93cb096aa3c4cc4b5c94ca6131f9196d28c64d6111533402a9b2054d41 \ + --hash=sha256:f817adc181390bd54f2f700107a7419040fb7c1bdf2fc26f36551a06a68c3345 \ + --hash=sha256:fe0180af5bf9236518a087e35bf2d9a347d5f5f51e63c579d683ddff424e3d46 # via # azure-identity # azure-storage-blob From 1cd26c92867bd27a8cc14beab8e455cf3b64cb10 Mon Sep 17 00:00:00 2001 From: Peggie Date: Wed, 10 Jun 2026 10:55:17 +0200 Subject: [PATCH 026/134] chore(main): release 0.13.0 (#860) Signed-off-by: Peggie --- .release-please-manifest.json | 2 +- CHANGELOG.md | 31 ++++++++++++++++++++++++++++ internal/cnpgi/metadata/constants.go | 2 +- 3 files changed, 33 insertions(+), 2 deletions(-) diff --git a/.release-please-manifest.json b/.release-please-manifest.json index 8032c17..ed21d28 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "0.12.0" + ".": "0.13.0" } diff --git a/CHANGELOG.md b/CHANGELOG.md index fb5c7a2..646a771 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,36 @@ # Changelog +## [0.13.0](https://github.com/cloudnative-pg/plugin-barman-cloud/compare/v0.12.0...v0.13.0) (2026-06-10) + + +### Features + +* Configure k8s recommended labels on subresources ([#865](https://github.com/cloudnative-pg/plugin-barman-cloud/issues/865)) ([4bbaf18](https://github.com/cloudnative-pg/plugin-barman-cloud/commit/4bbaf18cd30174229d98e23151d2d257c90b561a)), closes [#545](https://github.com/cloudnative-pg/plugin-barman-cloud/issues/545) +* Pass additionalCommandArgs to barman-cloud-restore ([#914](https://github.com/cloudnative-pg/plugin-barman-cloud/issues/914)) ([c5f149b](https://github.com/cloudnative-pg/plugin-barman-cloud/commit/c5f149b86a38fd2af33045d785c2e9a69a7e340a)), closes [#821](https://github.com/cloudnative-pg/plugin-barman-cloud/issues/821) + + +### Bug Fixes + +* Add lz4 compression support for base backups ([#868](https://github.com/cloudnative-pg/plugin-barman-cloud/issues/868)) ([e30154b](https://github.com/cloudnative-pg/plugin-barman-cloud/commit/e30154b938b053f688b5ab520000233e164df6b6)), closes [#867](https://github.com/cloudnative-pg/plugin-barman-cloud/issues/867) +* Classify WAL restore errors with precise gRPC statuses ([#927](https://github.com/cloudnative-pg/plugin-barman-cloud/issues/927)) ([aaf6120](https://github.com/cloudnative-pg/plugin-barman-cloud/commit/aaf6120eaaf96d805d26fe4550b1f9c14dd8e02f)) +* **deps:** Update all non-major go dependencies ([#877](https://github.com/cloudnative-pg/plugin-barman-cloud/issues/877)) ([a81f6e3](https://github.com/cloudnative-pg/plugin-barman-cloud/commit/a81f6e3d73ee348df22439f2daf062f4be598910)) +* **deps:** Update all non-major go dependencies ([#898](https://github.com/cloudnative-pg/plugin-barman-cloud/issues/898)) ([acdbfb8](https://github.com/cloudnative-pg/plugin-barman-cloud/commit/acdbfb8b10f93cf52f874ec893905709d9bcaa8b)) +* **deps:** Update all non-major go dependencies to 5d46599 ([#940](https://github.com/cloudnative-pg/plugin-barman-cloud/issues/940)) ([40aa4b2](https://github.com/cloudnative-pg/plugin-barman-cloud/commit/40aa4b21b88e2e323226c391078240d365653de9)) +* **deps:** Update all non-major go dependencies to 8e1642e ([#939](https://github.com/cloudnative-pg/plugin-barman-cloud/issues/939)) ([f708825](https://github.com/cloudnative-pg/plugin-barman-cloud/commit/f7088258fd0ca1bca2e7dc15753be495d7dcc022)) +* **deps:** Update all non-major go dependencies to bd68198 ([#950](https://github.com/cloudnative-pg/plugin-barman-cloud/issues/950)) ([787d2b3](https://github.com/cloudnative-pg/plugin-barman-cloud/commit/787d2b35ad4f86a0c125e4996194ec8fe7957de7)) +* **deps:** Update documentation dependencies to v3.10.1 ([#878](https://github.com/cloudnative-pg/plugin-barman-cloud/issues/878)) ([6cf473d](https://github.com/cloudnative-pg/plugin-barman-cloud/commit/6cf473d5e8a16e204364b53bb0718d541c8c99ac)) +* **deps:** Update k8s.io/utils digest to ff6756f ([#894](https://github.com/cloudnative-pg/plugin-barman-cloud/issues/894)) ([b7389e1](https://github.com/cloudnative-pg/plugin-barman-cloud/commit/b7389e18e5ec216a601722bb6686b11c49745b03)) +* **deps:** Update kubernetes monorepo to v0.35.4 ([#853](https://github.com/cloudnative-pg/plugin-barman-cloud/issues/853)) ([21f811a](https://github.com/cloudnative-pg/plugin-barman-cloud/commit/21f811a3f22b8f87ca9230a131f57f832c086fcf)) +* **deps:** Update kubernetes monorepo to v0.36.1 ([#909](https://github.com/cloudnative-pg/plugin-barman-cloud/issues/909)) ([99eb4a3](https://github.com/cloudnative-pg/plugin-barman-cloud/commit/99eb4a3fe5f4503c76f9afea08164d8e511c4f5b)) +* **deps:** Update module github.com/cloudnative-pg/cloudnative-pg to v1.29.1 [security] ([#902](https://github.com/cloudnative-pg/plugin-barman-cloud/issues/902)) ([ba5063f](https://github.com/cloudnative-pg/plugin-barman-cloud/commit/ba5063f01393309459e02c30078c34b429f8f21b)) +* **deps:** Update module github.com/cloudnative-pg/machinery to v0.5.0 ([#925](https://github.com/cloudnative-pg/plugin-barman-cloud/issues/925)) ([ef4b711](https://github.com/cloudnative-pg/plugin-barman-cloud/commit/ef4b7111372877eed087b9178d157dd0d1084bf8)) +* **deps:** Update module github.com/onsi/ginkgo/v2 to v2.28.2 ([#874](https://github.com/cloudnative-pg/plugin-barman-cloud/issues/874)) ([8cb32e5](https://github.com/cloudnative-pg/plugin-barman-cloud/commit/8cb32e5a5153347a6b05bf63816bcbc9d94f4d67)) +* **deps:** Update module google.golang.org/grpc to v1.81.0 ([#884](https://github.com/cloudnative-pg/plugin-barman-cloud/issues/884)) ([6fdecfd](https://github.com/cloudnative-pg/plugin-barman-cloud/commit/6fdecfde21b7a5cd05bc3f53895243fbf8537770)) +* **deps:** Update module sigs.k8s.io/controller-runtime to v0.24.0 ([#880](https://github.com/cloudnative-pg/plugin-barman-cloud/issues/880)) ([58f4fed](https://github.com/cloudnative-pg/plugin-barman-cloud/commit/58f4fed40ba788f76f706e148bebf1892a2dd609)) +* **deps:** Update module sigs.k8s.io/controller-runtime to v0.24.1 ([#910](https://github.com/cloudnative-pg/plugin-barman-cloud/issues/910)) ([9be87b0](https://github.com/cloudnative-pg/plugin-barman-cloud/commit/9be87b0d9c87c0df7f1f72caa33bf848fbc16582)) +* **docs:** Update broken link to CloudNativePG documentation ([#904](https://github.com/cloudnative-pg/plugin-barman-cloud/issues/904)) ([43f92fb](https://github.com/cloudnative-pg/plugin-barman-cloud/commit/43f92fbcf1f57d95bbca22cb63c9697d75fc0dbc)), closes [#729](https://github.com/cloudnative-pg/plugin-barman-cloud/issues/729) +* **scheme:** Register meta types for CNPG scheme group version ([#943](https://github.com/cloudnative-pg/plugin-barman-cloud/issues/943)) ([bb7845d](https://github.com/cloudnative-pg/plugin-barman-cloud/commit/bb7845dd621115026744c9f1b32cb2fd0cb4a729)), closes [#942](https://github.com/cloudnative-pg/plugin-barman-cloud/issues/942) + ## [0.12.0](https://github.com/cloudnative-pg/plugin-barman-cloud/compare/v0.11.0...v0.12.0) (2026-04-13) diff --git a/internal/cnpgi/metadata/constants.go b/internal/cnpgi/metadata/constants.go index fb45da6..bd67daf 100644 --- a/internal/cnpgi/metadata/constants.go +++ b/internal/cnpgi/metadata/constants.go @@ -63,7 +63,7 @@ const ( // Data is the metadata of this plugin. var Data = identity.GetPluginMetadataResponse{ Name: PluginName, - Version: "0.12.0", // x-release-please-version + Version: "0.13.0", // x-release-please-version DisplayName: "BarmanCloudInstance", ProjectUrl: "https://github.com/cloudnative-pg/plugin-barman-cloud", RepositoryUrl: "https://github.com/cloudnative-pg/plugin-barman-cloud", From 139afeefae275fc254475d29a225ab740191209e Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 11 Jun 2026 11:53:53 +0200 Subject: [PATCH 027/134] chore(deps): update dependency dagger/dagger to v0.21.5 (#955) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Update | Change | |---|---|---| | [dagger/dagger](https://redirect.github.com/dagger/dagger) | patch | `0.21.4` β†’ `0.21.5` | --- ### Release Notes
dagger/dagger (dagger/dagger) ### [`v0.21.5`](https://redirect.github.com/dagger/dagger/releases/tag/v0.21.5) [Compare Source](https://redirect.github.com/dagger/dagger/compare/v0.21.4...v0.21.5) ##### v0.21.5 - 2026-06-10 ##### Added - Added expand option to container.exists by [@​alexcb](https://redirect.github.com/alexcb) in [#​13310](https://redirect.github.com/dagger/dagger/pull/13310) - Support both Dang v1 and v2, routed by module engineVersion by [@​vito](https://redirect.github.com/vito) in [#​13388](https://redirect.github.com/dagger/dagger/pull/13388) ##### Changed - Prune local cache during disk pressure by [@​sipsma](https://redirect.github.com/sipsma) in [#​13375](https://redirect.github.com/dagger/dagger/pull/13375) - Persist trivial core objects by [@​sipsma](https://redirect.github.com/sipsma) in [#​13387](https://redirect.github.com/dagger/dagger/pull/13387) ##### Fixed - Correct namespaced type-name mangling and cross-dependency interface dispatch in Dang by [@​vito](https://redirect.github.com/vito) in [#​13377](https://redirect.github.com/dagger/dagger/pull/13377) - Surface exec errors correctly on the Bun runtime in the TypeScript SDK by [@​marcosnils](https://redirect.github.com/marcosnils) in [#​13395](https://redirect.github.com/dagger/dagger/pull/13395) - Ignore host xattrs for local filesync import identity by [@​sipsma](https://redirect.github.com/sipsma) in [#​13389](https://redirect.github.com/dagger/dagger/pull/13389) - Don't shallow-clone the user's repo for git telemetry labels by [@​marcosnils](https://redirect.github.com/marcosnils) in [#​13363](https://redirect.github.com/dagger/dagger/pull/13363) - Preserve pending lazy container parents by [@​sipsma](https://redirect.github.com/sipsma) in [#​13365](https://redirect.github.com/dagger/dagger/pull/13365) - Preserve withChanges parent layers by [@​dagger-codex](https://redirect.github.com/dagger-codex)\[bot] + [@​shykes](https://redirect.github.com/shykes) in [#​13342](https://redirect.github.com/dagger/dagger/pull/13342) - Treat incomplete image metadata as cache miss by [@​sipsma](https://redirect.github.com/sipsma) in [#​13346](https://redirect.github.com/dagger/dagger/pull/13346) - Cache registry image metadata by [@​dagger-codex](https://redirect.github.com/dagger-codex)\[bot] + [@​shykes](https://redirect.github.com/shykes) in [#​13341](https://redirect.github.com/dagger/dagger/pull/13341) - Don't require id field for interface conformance in Dang by [@​vito](https://redirect.github.com/vito) in [#​13318](https://redirect.github.com/dagger/dagger/pull/13318) - Use module-local check names for scale-out by [@​dagger-codex](https://redirect.github.com/dagger-codex)\[bot] + [@​tiborvass](https://redirect.github.com/tiborvass) in [#​13329](https://redirect.github.com/dagger/dagger/pull/13329) - Fix snapshot owner lease attach/remove race by [@​sipsma](https://redirect.github.com/sipsma) in [#​13321](https://redirect.github.com/dagger/dagger/pull/13321) - Follow source symlinks when copying directory contents in layercopy by [@​marcosnils](https://redirect.github.com/marcosnils) in [#​13326](https://redirect.github.com/dagger/dagger/pull/13326) ##### What to do next? - Read the [documentation](https://docs.dagger.io) - Join our [Discord server](https://discord.gg/dagger-io) - Follow us on [Twitter](https://twitter.com/dagger_io)
--- ### Configuration πŸ“… **Schedule**: (UTC) - Branch creation - At any time (no schedule defined) - Automerge - At any time (no schedule defined) 🚦 **Automerge**: Enabled. β™» **Rebasing**: Never, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/cloudnative-pg/plugin-barman-cloud). Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/ci.yml | 2 +- .github/workflows/release-please.yml | 2 +- .github/workflows/release-publish.yml | 2 +- Taskfile.yml | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 94caf5b..615346b 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -44,7 +44,7 @@ jobs: - name: Install Dagger env: # renovate: datasource=github-tags depName=dagger/dagger versioning=semver - DAGGER_VERSION: 0.21.4 + DAGGER_VERSION: 0.21.5 run: | curl -L https://dl.dagger.io/dagger/install.sh | BIN_DIR=$HOME/.local/bin sh - name: Run CI task diff --git a/.github/workflows/release-please.yml b/.github/workflows/release-please.yml index 17be530..8a981de 100644 --- a/.github/workflows/release-please.yml +++ b/.github/workflows/release-please.yml @@ -31,7 +31,7 @@ jobs: - name: Install Dagger env: # renovate: datasource=github-tags depName=dagger/dagger versioning=semver - DAGGER_VERSION: 0.21.4 + DAGGER_VERSION: 0.21.5 run: | curl -L https://dl.dagger.io/dagger/install.sh | BIN_DIR=$HOME/.local/bin sh - name: Create image and manifest diff --git a/.github/workflows/release-publish.yml b/.github/workflows/release-publish.yml index 4951770..0a687a1 100644 --- a/.github/workflows/release-publish.yml +++ b/.github/workflows/release-publish.yml @@ -21,7 +21,7 @@ jobs: - name: Install Dagger env: # renovate: datasource=github-tags depName=dagger/dagger versioning=semver - DAGGER_VERSION: 0.21.4 + DAGGER_VERSION: 0.21.5 run: | curl -L https://dl.dagger.io/dagger/install.sh | BIN_DIR=$HOME/.local/bin sh - name: Create image and manifest diff --git a/Taskfile.yml b/Taskfile.yml index b7e0b1b..801decd 100644 --- a/Taskfile.yml +++ b/Taskfile.yml @@ -206,7 +206,7 @@ tasks: - start-build-network vars: # renovate: datasource=github-tags depName=dagger/dagger versioning=semver - DAGGER_VERSION: 0.21.4 + DAGGER_VERSION: 0.21.5 DAGGER_ENGINE_IMAGE: registry.dagger.io/engine:v{{ .DAGGER_VERSION }} cmds: - > From 09d0201fcffbf22df9cd5234409f7d6cb79c4b14 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 16 Jun 2026 09:12:33 +0200 Subject: [PATCH 028/134] chore(deps): lock file maintenance documentation dependencies (#959) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Update | Change | |---|---| | lockFileMaintenance | All locks refreshed | πŸ”§ This Pull Request updates lock files to use the latest dependency versions. --- ### Configuration πŸ“… **Schedule**: (UTC) - Branch creation - "before 4am on monday" - Automerge - At any time (no schedule defined) 🚦 **Automerge**: Enabled. β™» **Rebasing**: Never, or you tick the rebase/retry checkbox. πŸ‘» **Immortal**: This PR will be recreated if closed unmerged. Get [config help](https://redirect.github.com/renovatebot/renovate/discussions) if that's undesired. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/cloudnative-pg/plugin-barman-cloud). Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- web/yarn.lock | 591 +++++++++++++++++++++++++------------------------- 1 file changed, 295 insertions(+), 296 deletions(-) diff --git a/web/yarn.lock b/web/yarn.lock index 2beea9a..ec56d53 100644 --- a/web/yarn.lock +++ b/web/yarn.lock @@ -2,15 +2,15 @@ # yarn lockfile v1 -"@algolia/abtesting@1.19.0": - version "1.19.0" - resolved "https://registry.yarnpkg.com/@algolia/abtesting/-/abtesting-1.19.0.tgz#2cccf865691a1f321c583ffc632b405e7d4784b9" - integrity sha512-Lhnez3hhXHk25lfxLAMxvkP4fmN3+1RgADhD2ssMDBYuAsDVReeyP+3SGRx+ntq8ijMrLqUyfvO72TB6jsTteQ== +"@algolia/abtesting@1.20.0": + version "1.20.0" + resolved "https://registry.yarnpkg.com/@algolia/abtesting/-/abtesting-1.20.0.tgz#0cbfa218156c1f522d49f2818c31447d356a1f19" + integrity sha512-5CqkS592H3+24b6H6CQ2RVpphdmAuIElZzv0Hngqo/ZEZpUZJ+KGLcueBhx33fv2wYBXyuuvskG5aQ7Ti+lR0g== dependencies: - "@algolia/client-common" "5.53.0" - "@algolia/requester-browser-xhr" "5.53.0" - "@algolia/requester-fetch" "5.53.0" - "@algolia/requester-node-http" "5.53.0" + "@algolia/client-common" "5.54.0" + "@algolia/requester-browser-xhr" "5.54.0" + "@algolia/requester-fetch" "5.54.0" + "@algolia/requester-node-http" "5.54.0" "@algolia/autocomplete-core@1.19.2": version "1.19.2" @@ -52,126 +52,126 @@ resolved "https://registry.yarnpkg.com/@algolia/autocomplete-shared/-/autocomplete-shared-1.19.8.tgz#5d723d8bdb448efbb1b0e1c7ff94cc18e5b1dc0e" integrity sha512-h5hf2t8ejF6vlOgvLaZzQbWs5SyH2z4PAWygNAvvD/2RI29hdQ54ldUGwqVuj9Srs+n8XUKTPUqb7fvhBhQrnQ== -"@algolia/client-abtesting@5.53.0": - version "5.53.0" - resolved "https://registry.yarnpkg.com/@algolia/client-abtesting/-/client-abtesting-5.53.0.tgz#6662660f570206fe88a8e3cac92cb809aadd9519" - integrity sha512-0ZjA5Hcmaoz5Lj6OG0zhfIyeqzJZnLW2CRJA1W17UwMFGRtZAJ9yJKRvPEDA6gkpsIoQxORTSW6sWFiuYncPNQ== +"@algolia/client-abtesting@5.54.0": + version "5.54.0" + resolved "https://registry.yarnpkg.com/@algolia/client-abtesting/-/client-abtesting-5.54.0.tgz#d8e0f66dd4d33c38dd3536b9f309cf6bfa5da97e" + integrity sha512-IXnH1x3DBsPQA4/FRO0Pvkfy79tKy5Qr+ugAV9jdcGkpzHc476D0WV1MFJ+pZxtbts0xh2JqzUVmYEqA6LkOpA== dependencies: - "@algolia/client-common" "5.53.0" - "@algolia/requester-browser-xhr" "5.53.0" - "@algolia/requester-fetch" "5.53.0" - "@algolia/requester-node-http" "5.53.0" + "@algolia/client-common" "5.54.0" + "@algolia/requester-browser-xhr" "5.54.0" + "@algolia/requester-fetch" "5.54.0" + "@algolia/requester-node-http" "5.54.0" -"@algolia/client-analytics@5.53.0": - version "5.53.0" - resolved "https://registry.yarnpkg.com/@algolia/client-analytics/-/client-analytics-5.53.0.tgz#7f52e691dfabee1d5476c3d7c100e495de09e0ce" - integrity sha512-kWNodP75iiEaOtemC9F/hlxNBG5E2QUjN1BusnE6m2b4l7Qh/BUO3fGCVsmKJI65VO4VKGGmT43ICvHtTcJ2JQ== +"@algolia/client-analytics@5.54.0": + version "5.54.0" + resolved "https://registry.yarnpkg.com/@algolia/client-analytics/-/client-analytics-5.54.0.tgz#9da08afc41c17a683362a65e39df694186e16b79" + integrity sha512-pBpRqm1wpE0GnGy2rNLk9rjDn0Le4iywNRtnAWblLeqfjxpWKg8lWnk7nmSoTShFO31sz2jatXXzxK2lz8ipbA== dependencies: - "@algolia/client-common" "5.53.0" - "@algolia/requester-browser-xhr" "5.53.0" - "@algolia/requester-fetch" "5.53.0" - "@algolia/requester-node-http" "5.53.0" + "@algolia/client-common" "5.54.0" + "@algolia/requester-browser-xhr" "5.54.0" + "@algolia/requester-fetch" "5.54.0" + "@algolia/requester-node-http" "5.54.0" -"@algolia/client-common@5.53.0": - version "5.53.0" - resolved "https://registry.yarnpkg.com/@algolia/client-common/-/client-common-5.53.0.tgz#c8b0d8afc0d202ba71de9c3ac2c7331b92020f75" - integrity sha512-YPN45TXD9Wrse185t/Ta7nktZsqpv97oOjCzp2sblHnCL6rBc9TDeJAg1IGl2UpdwnSD05Zu/5wLB4watOUMyg== +"@algolia/client-common@5.54.0": + version "5.54.0" + resolved "https://registry.yarnpkg.com/@algolia/client-common/-/client-common-5.54.0.tgz#c9afb4677dc401d1e0fad6fc5c6c07ce5ef1fe0c" + integrity sha512-WbuwRUlFvSOsuxqTDjSSmgusuF5KFt+oFPzobvPDvodra6EWnVwUXjz0elkNSsnsIlZGtcXlX3LhxkO7rF90jw== -"@algolia/client-insights@5.53.0": - version "5.53.0" - resolved "https://registry.yarnpkg.com/@algolia/client-insights/-/client-insights-5.53.0.tgz#512a5a5b5c8685c121cdfe79af9cdff538f9cb07" - integrity sha512-qAcYTDJE6m924FDDUQvdD6vh7DYaqOeSpFS74IP37/JRV0v4cGBauyxTF2WzDnokUylQDbqreoFIJZfg0Fitmw== +"@algolia/client-insights@5.54.0": + version "5.54.0" + resolved "https://registry.yarnpkg.com/@algolia/client-insights/-/client-insights-5.54.0.tgz#191f0086ad96e78cb2807cab293a3374e77e9123" + integrity sha512-/HNLVi3kPI+JhO59WbglLjPM2c4uECU+x4gk1iADseKtE5eYqJ/RJ+FIwM8xzPFKhFJaw+8hVq4lkd0nn8HDDg== dependencies: - "@algolia/client-common" "5.53.0" - "@algolia/requester-browser-xhr" "5.53.0" - "@algolia/requester-fetch" "5.53.0" - "@algolia/requester-node-http" "5.53.0" + "@algolia/client-common" "5.54.0" + "@algolia/requester-browser-xhr" "5.54.0" + "@algolia/requester-fetch" "5.54.0" + "@algolia/requester-node-http" "5.54.0" -"@algolia/client-personalization@5.53.0": - version "5.53.0" - resolved "https://registry.yarnpkg.com/@algolia/client-personalization/-/client-personalization-5.53.0.tgz#5369cc4ebe5a49dad5f4af959260206c89a6c9ef" - integrity sha512-fQaY+DkSJOpuUVUe8MQTwrdiKAqkJGhpDarB08duBn/sUv7Bkib6MDRQauCcWTWTe4HIW+EbwQP9R4kci1V/Yw== +"@algolia/client-personalization@5.54.0": + version "5.54.0" + resolved "https://registry.yarnpkg.com/@algolia/client-personalization/-/client-personalization-5.54.0.tgz#92611c484655d8da5dc42d80c08e89636558c1c2" + integrity sha512-6TolyyDRumIKeLGBGSFAZsSIJ8hrm6NFCGR1jO7pQTiOtSWgAIxcFE5/JRpZ3g+unG4OkNOFy+I0dUEquIDbig== dependencies: - "@algolia/client-common" "5.53.0" - "@algolia/requester-browser-xhr" "5.53.0" - "@algolia/requester-fetch" "5.53.0" - "@algolia/requester-node-http" "5.53.0" + "@algolia/client-common" "5.54.0" + "@algolia/requester-browser-xhr" "5.54.0" + "@algolia/requester-fetch" "5.54.0" + "@algolia/requester-node-http" "5.54.0" -"@algolia/client-query-suggestions@5.53.0": - version "5.53.0" - resolved "https://registry.yarnpkg.com/@algolia/client-query-suggestions/-/client-query-suggestions-5.53.0.tgz#ce00b5b0ba0d71e8175f4e7b238e3f28f02ee40e" - integrity sha512-o72tsiEZGfeS/dxL9IADfzcZWGEwKDEe5CvtrBuT//3JR+SHuTtHRI2ZTf7D7bcKagcbojvO8hnkHdfoakSlYg== +"@algolia/client-query-suggestions@5.54.0": + version "5.54.0" + resolved "https://registry.yarnpkg.com/@algolia/client-query-suggestions/-/client-query-suggestions-5.54.0.tgz#f0870521076609f0dd57432b82bef19a7d036a43" + integrity sha512-AxW2MLBhjBtGX5kIZrVLO2SP2vRkZxJw5qHGxnQJfLcYhA04mFNP0fWRtHshlcVnDk9M8L9lwfr2lGpf3Er+hw== dependencies: - "@algolia/client-common" "5.53.0" - "@algolia/requester-browser-xhr" "5.53.0" - "@algolia/requester-fetch" "5.53.0" - "@algolia/requester-node-http" "5.53.0" + "@algolia/client-common" "5.54.0" + "@algolia/requester-browser-xhr" "5.54.0" + "@algolia/requester-fetch" "5.54.0" + "@algolia/requester-node-http" "5.54.0" -"@algolia/client-search@5.53.0": - version "5.53.0" - resolved "https://registry.yarnpkg.com/@algolia/client-search/-/client-search-5.53.0.tgz#a1b412880462c85a1ac72c830498e0312dde1e0e" - integrity sha512-Ds16IyPm/dNJPCU8OzApo2gwGrgWT5BYHhE3NFwZbpCveqyvPDB9sZDDkJ5DsdOGT2aC+R3i0/M1OVXF2qdgPg== +"@algolia/client-search@5.54.0": + version "5.54.0" + resolved "https://registry.yarnpkg.com/@algolia/client-search/-/client-search-5.54.0.tgz#ec49bbb4592e93a971af23f119e0244a123afc5d" + integrity sha512-ngdgVGp05lJzUyA+sUzr0MDZ7AMtANcJpwIzq4ZsfpZL5B3S7A4XYfMcU2sECZc3bx3ysOhYcdbbaTjc3ve0WQ== dependencies: - "@algolia/client-common" "5.53.0" - "@algolia/requester-browser-xhr" "5.53.0" - "@algolia/requester-fetch" "5.53.0" - "@algolia/requester-node-http" "5.53.0" + "@algolia/client-common" "5.54.0" + "@algolia/requester-browser-xhr" "5.54.0" + "@algolia/requester-fetch" "5.54.0" + "@algolia/requester-node-http" "5.54.0" "@algolia/events@^4.0.1": version "4.0.1" resolved "https://registry.yarnpkg.com/@algolia/events/-/events-4.0.1.tgz#fd39e7477e7bc703d7f893b556f676c032af3950" integrity sha512-FQzvOCgoFXAbf5Y6mYozw2aj5KCJoA3m4heImceldzPSMbdyS4atVjJzXKMsfX3wnZTFYwkkt8/z8UesLHlSBQ== -"@algolia/ingestion@1.53.0": - version "1.53.0" - resolved "https://registry.yarnpkg.com/@algolia/ingestion/-/ingestion-1.53.0.tgz#8417cef6430da4fb14234c3c6698726c7a41a2be" - integrity sha512-oNbT6z4NwD8Pou9VPINGlN/tlG1afESh2EbxqnP6rwl95xKVD/Zlciis1PpNeO/9U/rrajc1+7DcfKi03tX1KQ== +"@algolia/ingestion@1.54.0": + version "1.54.0" + resolved "https://registry.yarnpkg.com/@algolia/ingestion/-/ingestion-1.54.0.tgz#2fd01d4f4c4dbc90a987325302fc997c2beabb48" + integrity sha512-hee59Z7FgZ6/13FYL05ANPwRJY1pfvIlrwC8eBZYdiRFXTJVvf94IyTWOxLqRVpbseDP6eQQTW+PT7/DxTZIng== dependencies: - "@algolia/client-common" "5.53.0" - "@algolia/requester-browser-xhr" "5.53.0" - "@algolia/requester-fetch" "5.53.0" - "@algolia/requester-node-http" "5.53.0" + "@algolia/client-common" "5.54.0" + "@algolia/requester-browser-xhr" "5.54.0" + "@algolia/requester-fetch" "5.54.0" + "@algolia/requester-node-http" "5.54.0" -"@algolia/monitoring@1.53.0": - version "1.53.0" - resolved "https://registry.yarnpkg.com/@algolia/monitoring/-/monitoring-1.53.0.tgz#091005519a31b04a8b9f2c9f7d13358001a696bb" - integrity sha512-G+KZb/yd+qAOFn/cEvTGeLxQm8aP3a0od50l3z/ylccY+/o4YG3TNcjU1tFQHW4mXC137GPyR7W70R0kRQDLnA== +"@algolia/monitoring@1.54.0": + version "1.54.0" + resolved "https://registry.yarnpkg.com/@algolia/monitoring/-/monitoring-1.54.0.tgz#05e6019095cb8eb3ef43c9328992ad90a33c9a92" + integrity sha512-diCjZVbIO7Pzw98tEKqLWIAgmQBI3Zt1sHsXyAPNGZgn32derpIXTnjjpJbZl+uAhSSznd6SfxFGdC9uYdN1TA== dependencies: - "@algolia/client-common" "5.53.0" - "@algolia/requester-browser-xhr" "5.53.0" - "@algolia/requester-fetch" "5.53.0" - "@algolia/requester-node-http" "5.53.0" + "@algolia/client-common" "5.54.0" + "@algolia/requester-browser-xhr" "5.54.0" + "@algolia/requester-fetch" "5.54.0" + "@algolia/requester-node-http" "5.54.0" -"@algolia/recommend@5.53.0": - version "5.53.0" - resolved "https://registry.yarnpkg.com/@algolia/recommend/-/recommend-5.53.0.tgz#d45f5538984f208f51f71a4c6b973eb1c1a8a66c" - integrity sha512-6aVfYd55Un6IUgPLbo84WfgFZlS3L0vA1ttzXL5vahHewUJ8jYgd89TzlWRTeej7w70mb9RWsVlFYGmJ/diQww== +"@algolia/recommend@5.54.0": + version "5.54.0" + resolved "https://registry.yarnpkg.com/@algolia/recommend/-/recommend-5.54.0.tgz#5320031101788363852e5c74bd36b74a3efea1d6" + integrity sha512-6zeslypRAGWDgVJEJYAPuqmyquHvnw4MQwG+XXdrw5dTNDjXYIcCJdQQcCY06xPF9tUvmzy/1vHiH9QxhgwuOQ== dependencies: - "@algolia/client-common" "5.53.0" - "@algolia/requester-browser-xhr" "5.53.0" - "@algolia/requester-fetch" "5.53.0" - "@algolia/requester-node-http" "5.53.0" + "@algolia/client-common" "5.54.0" + "@algolia/requester-browser-xhr" "5.54.0" + "@algolia/requester-fetch" "5.54.0" + "@algolia/requester-node-http" "5.54.0" -"@algolia/requester-browser-xhr@5.53.0": - version "5.53.0" - resolved "https://registry.yarnpkg.com/@algolia/requester-browser-xhr/-/requester-browser-xhr-5.53.0.tgz#bd742734337378090d5c95f80de2b7a933089924" - integrity sha512-ke27DqgzCOlt+RbeEdCxtXxMQOnAOi8ujr2wid0DmDKzR95Kw/f9sBsuhBxtjevCqJRJszfRTLY0B1pbO6IhkA== +"@algolia/requester-browser-xhr@5.54.0": + version "5.54.0" + resolved "https://registry.yarnpkg.com/@algolia/requester-browser-xhr/-/requester-browser-xhr-5.54.0.tgz#90326acee59cf7eb002f3c959932f0f565e01e4b" + integrity sha512-iHZax214LPXd7XizQ4BNnTsegl8f3IeKm8JcrmSNZ/5x1rZ5xLkbG/anltAWtLpoRNnfpr4Z80YdYeVVPpx6wQ== dependencies: - "@algolia/client-common" "5.53.0" + "@algolia/client-common" "5.54.0" -"@algolia/requester-fetch@5.53.0": - version "5.53.0" - resolved "https://registry.yarnpkg.com/@algolia/requester-fetch/-/requester-fetch-5.53.0.tgz#1f4b3d933c50d0022de4ce18d235b65325b7024e" - integrity sha512-GngiOqt2Gq4oLno6yXQVj9om+qSO9SWAoduoTOEg79dKZ62brB8OOIvSJG/vDNoanYi6a7Al9uDZwXvi+bcVTg== +"@algolia/requester-fetch@5.54.0": + version "5.54.0" + resolved "https://registry.yarnpkg.com/@algolia/requester-fetch/-/requester-fetch-5.54.0.tgz#cb08734a88394d8c5c80973f33cfb076557c1c68" + integrity sha512-YKtuG5YwPxZ+kkfd4HmUO7Z9aICPUSMlHslzKTmtMMhxGnetxEqGj9T/v2r/PdcuOUC5oW0CHe8akJk8cpS3gQ== dependencies: - "@algolia/client-common" "5.53.0" + "@algolia/client-common" "5.54.0" -"@algolia/requester-node-http@5.53.0": - version "5.53.0" - resolved "https://registry.yarnpkg.com/@algolia/requester-node-http/-/requester-node-http-5.53.0.tgz#8c25669aaf6fc11a2970d2f62fbda3c603ec11ce" - integrity sha512-6mF9LZMUk0QqWvrnxkxBqhswwz6Xfiwy6/gmTzL5HrlhdVG3ITAqGV2k3XmVThP1h0Ulc3VQwiNCD7/Nr4JNlQ== +"@algolia/requester-node-http@5.54.0": + version "5.54.0" + resolved "https://registry.yarnpkg.com/@algolia/requester-node-http/-/requester-node-http-5.54.0.tgz#2d32cc6cfa5972653e6b3cb942c804d38d2a83ac" + integrity sha512-zyZDJ4WS5TnjZZ5pqywTBFO9olW7QMtY2kf2dbLnu+UTzfc9ri/HGf27jRN2NTbX9FcRPxSqPqzUhF/BZIx0VA== dependencies: - "@algolia/client-common" "5.53.0" + "@algolia/client-common" "5.54.0" "@babel/code-frame@^7.0.0", "@babel/code-frame@^7.29.7": version "7.29.7" @@ -2008,17 +2008,17 @@ tslib "^2.4.0" "@emnapi/core@^1.4.3": - version "1.11.0" - resolved "https://registry.yarnpkg.com/@emnapi/core/-/core-1.11.0.tgz#8a655042dbbb10d0266670c9903c34a7001c705b" - integrity sha512-l9Oo58x0HOP5znGzVhYW9U3e5wVuA4LAZU2AGezTmkhO1CgQRFDhDg4nneHsu/t3WniXg9QrG2nIXL/ZS8ln8Q== + version "1.11.1" + resolved "https://registry.yarnpkg.com/@emnapi/core/-/core-1.11.1.tgz#b9e1064f3a6b1631e241e638eb48d736bfd372a6" + integrity sha512-RSvbQmHzdKzNsLYa/wHrbc3KN4sYLKAdPZxqiM2HATqv/SBk2/ENSHpvXGaLOMcsAyz0poEGqkmmKYG3OWiJEQ== dependencies: "@emnapi/wasi-threads" "1.2.2" tslib "^2.4.0" "@emnapi/runtime@^1.4.3": - version "1.11.0" - resolved "https://registry.yarnpkg.com/@emnapi/runtime/-/runtime-1.11.0.tgz#ce16b3674ff7266bbf50f9668bde8a04f3014d4e" - integrity sha512-55coeOFKHv1ywEcUXJtWU5f+Jr/W5tZDvZig8DLKSwUN1JpROQ4rk/SNOQiFWmaR/VKF4zuFyW1B8JduOSv6Pg== + version "1.11.1" + resolved "https://registry.yarnpkg.com/@emnapi/runtime/-/runtime-1.11.1.tgz#58f1f3d5d81a9b12f793ab688c96371901027c24" + integrity sha512-vgj7R3y3Wgx24IQaGPA/R6YFXLHVMOZ0uVEyIQPaWs+rd1AzfEMXlAC22FYwO1XkKR6NPsq7mUandH8oIRdZFw== dependencies: tslib "^2.4.0" @@ -2132,74 +2132,74 @@ resolved "https://registry.yarnpkg.com/@jsonjoy.com/codegen/-/codegen-1.0.0.tgz#5c23f796c47675f166d23b948cdb889184b93207" integrity sha512-E8Oy+08cmCf0EK/NMxpaJZmOxPqM+6iSe2S4nlSBrPZOORoDJILxtbSUEDKQyTamm/BVAhIGllOBNU79/dwf0g== -"@jsonjoy.com/fs-core@4.57.6": - version "4.57.6" - resolved "https://registry.yarnpkg.com/@jsonjoy.com/fs-core/-/fs-core-4.57.6.tgz#6ac35419d48a8ca558b357203f2fd6153135647f" - integrity sha512-uI++Wx6VkBJqVmkb4ZeExwAVpZiA2Do5NrEtXoDk0Pdvce3ytFXJoviT1sLOj16+qDIMnD5nWPfOhVpnDmRJKg== +"@jsonjoy.com/fs-core@4.57.7": + version "4.57.7" + resolved "https://registry.yarnpkg.com/@jsonjoy.com/fs-core/-/fs-core-4.57.7.tgz#5d4bfbc95147407c8265d4bb67605c0c18c762a1" + integrity sha512-GDKuYHjP7vAI1kjBo73V+STKr9XIMZknW/xirpRW/EcShX0IKSev/ALafeRfC8Q331nodrXUFu04PugPB0MAhw== dependencies: - "@jsonjoy.com/fs-node-builtins" "4.57.6" - "@jsonjoy.com/fs-node-utils" "4.57.6" + "@jsonjoy.com/fs-node-builtins" "4.57.7" + "@jsonjoy.com/fs-node-utils" "4.57.7" thingies "^2.5.0" -"@jsonjoy.com/fs-fsa@4.57.6": - version "4.57.6" - resolved "https://registry.yarnpkg.com/@jsonjoy.com/fs-fsa/-/fs-fsa-4.57.6.tgz#385890464f57146ba71bd057ad98c961d144b96c" - integrity sha512-pKkw/yC5CzSZKhIIUIsH1przOa+K5jGmZIg1sWaSF24JojyrUFbjcQv7QrcGAudriei6HQ6R0BFj+V8NbQinJw== +"@jsonjoy.com/fs-fsa@4.57.7": + version "4.57.7" + resolved "https://registry.yarnpkg.com/@jsonjoy.com/fs-fsa/-/fs-fsa-4.57.7.tgz#2c09a99ea9af292af7447c9eb78537763bf85433" + integrity sha512-1rWsah2nZtRbNeP+c61QcfGfVrJXBmBD0Hm7Akvv4C9MKEasXnbiOS//iH3T3HwUSSBATGrfSp0Xi8nlNhATeQ== dependencies: - "@jsonjoy.com/fs-core" "4.57.6" - "@jsonjoy.com/fs-node-builtins" "4.57.6" - "@jsonjoy.com/fs-node-utils" "4.57.6" + "@jsonjoy.com/fs-core" "4.57.7" + "@jsonjoy.com/fs-node-builtins" "4.57.7" + "@jsonjoy.com/fs-node-utils" "4.57.7" thingies "^2.5.0" -"@jsonjoy.com/fs-node-builtins@4.57.6": - version "4.57.6" - resolved "https://registry.yarnpkg.com/@jsonjoy.com/fs-node-builtins/-/fs-node-builtins-4.57.6.tgz#76a2a3300c9d0f1d5e45ec45785f2aacaec212be" - integrity sha512-V4DgEFT3Cg5S9fCMOZSCVdTxdJWWLBO0WnAazV7hnCM96u5zXHyW/ubDAfcSVwqjkMJ50W1Y44IXtxRoIwaCVg== +"@jsonjoy.com/fs-node-builtins@4.57.7": + version "4.57.7" + resolved "https://registry.yarnpkg.com/@jsonjoy.com/fs-node-builtins/-/fs-node-builtins-4.57.7.tgz#cc0fd121f58705878ce9b3f372fc00bd7d897ce3" + integrity sha512-LWqfY1m+uAosjwM1RrKhMkUnP9jcq1RUczHsNO779ovm1E9v8I/pmj04eBAcoBjhC7ltcPbNFGyRJ5JqSJ7Jdg== -"@jsonjoy.com/fs-node-to-fsa@4.57.6": - version "4.57.6" - resolved "https://registry.yarnpkg.com/@jsonjoy.com/fs-node-to-fsa/-/fs-node-to-fsa-4.57.6.tgz#dbccc7d784b1e237c4d6a82f8d4ee39a2361da8c" - integrity sha512-+JptNw3iifihxH2rEXrninDzX4FFVW8JD/wPR8GbJPAeL9CQUSblrlumOPB5gZuS7tYRX+PJPLtT7XzKoRhv/Q== +"@jsonjoy.com/fs-node-to-fsa@4.57.7": + version "4.57.7" + resolved "https://registry.yarnpkg.com/@jsonjoy.com/fs-node-to-fsa/-/fs-node-to-fsa-4.57.7.tgz#2c4b1807bd1a7be599536d47fedf802706b6b366" + integrity sha512-9T0zC9LKcAWXDoTLRdLMoJ0seOvJ5bgDKq1tSBoQAFQpPDstQUeV1Oe7PLypdu7F2D3ddRstmwgeNUEN/VaZ4Q== dependencies: - "@jsonjoy.com/fs-fsa" "4.57.6" - "@jsonjoy.com/fs-node-builtins" "4.57.6" - "@jsonjoy.com/fs-node-utils" "4.57.6" + "@jsonjoy.com/fs-fsa" "4.57.7" + "@jsonjoy.com/fs-node-builtins" "4.57.7" + "@jsonjoy.com/fs-node-utils" "4.57.7" -"@jsonjoy.com/fs-node-utils@4.57.6": - version "4.57.6" - resolved "https://registry.yarnpkg.com/@jsonjoy.com/fs-node-utils/-/fs-node-utils-4.57.6.tgz#67f1caff1ced836d8206bd769ecf3a4d3f04ca35" - integrity sha512-foyUrfS7WmYEUzqYXSNxmJBcSj04TABrkpFabwO9SCDCpVCfJ+qG+2sk5FjfiflG2n0SDFZDCJ6vYlJAEpxJFg== +"@jsonjoy.com/fs-node-utils@4.57.7": + version "4.57.7" + resolved "https://registry.yarnpkg.com/@jsonjoy.com/fs-node-utils/-/fs-node-utils-4.57.7.tgz#51308c4bdfc717ccbb155759fe7df9c91afec099" + integrity sha512-jjWSDOsfcog2cZnUCwX5AHmlIq6b6wx5Pz/2LAcNjJ62Rajwg89Fy7ubN+lDHew0/1reLDa9Z5urybYadhh37g== dependencies: - "@jsonjoy.com/fs-node-builtins" "4.57.6" + "@jsonjoy.com/fs-node-builtins" "4.57.7" -"@jsonjoy.com/fs-node@4.57.6": - version "4.57.6" - resolved "https://registry.yarnpkg.com/@jsonjoy.com/fs-node/-/fs-node-4.57.6.tgz#1772c9e34c044bc7a65bce49e3882c7e2907a140" - integrity sha512-Kbn1jdkvDN4F2+BhoB6mMu7NCbhP0bgA5NcI1aJj/Q5UcU+I1JLLW+dEQean33iV4tXv35AzBVKPICnDltBpxw== +"@jsonjoy.com/fs-node@4.57.7": + version "4.57.7" + resolved "https://registry.yarnpkg.com/@jsonjoy.com/fs-node/-/fs-node-4.57.7.tgz#3d62f93af1ccdffd39d439154f36155d7e3eb5c6" + integrity sha512-xhnyeyEVTiIOibFvda/5n89nChMLCPKHHM2WQ+GGDf6+U/IrQBW3Qx6x+Uq1bkDbxBkybLOdIGoBtVBrE8Nngg== dependencies: - "@jsonjoy.com/fs-core" "4.57.6" - "@jsonjoy.com/fs-node-builtins" "4.57.6" - "@jsonjoy.com/fs-node-utils" "4.57.6" - "@jsonjoy.com/fs-print" "4.57.6" - "@jsonjoy.com/fs-snapshot" "4.57.6" + "@jsonjoy.com/fs-core" "4.57.7" + "@jsonjoy.com/fs-node-builtins" "4.57.7" + "@jsonjoy.com/fs-node-utils" "4.57.7" + "@jsonjoy.com/fs-print" "4.57.7" + "@jsonjoy.com/fs-snapshot" "4.57.7" glob-to-regex.js "^1.0.0" thingies "^2.5.0" -"@jsonjoy.com/fs-print@4.57.6": - version "4.57.6" - resolved "https://registry.yarnpkg.com/@jsonjoy.com/fs-print/-/fs-print-4.57.6.tgz#62be13d03362a4f8c1c711a4f81d4bcd5178a3bd" - integrity sha512-96eAn4Dudtt67LTeuU47yUD+pg9/G/oKpI10zei9ljk3X3WK4lYKc+n3cpaPCAbKPzoyfxl0mXm8f8Y7BOSFXw== +"@jsonjoy.com/fs-print@4.57.7": + version "4.57.7" + resolved "https://registry.yarnpkg.com/@jsonjoy.com/fs-print/-/fs-print-4.57.7.tgz#aec8e3f5d66cd64e90e1fc9913a5fa4811d824b1" + integrity sha512-mFM4P4Gjq0QQHkLnXzPYPEMFrAoe6a5Myedgb6+CmL+nGd3MKvTxYPuD7N1dLIH9RBy1fLdzxd80qvuK8xrx3Q== dependencies: - "@jsonjoy.com/fs-node-utils" "4.57.6" + "@jsonjoy.com/fs-node-utils" "4.57.7" tree-dump "^1.1.0" -"@jsonjoy.com/fs-snapshot@4.57.6": - version "4.57.6" - resolved "https://registry.yarnpkg.com/@jsonjoy.com/fs-snapshot/-/fs-snapshot-4.57.6.tgz#6bde49a518a0ae4a9469a046fa4359c12f4f588d" - integrity sha512-V57CMzbOgTzUWGOWQ8GzHQdpJP6JnrYVNCtTBNxVYEnlVRvo4uEJqHhtAT8vhDFrIuJOXLrTL1Fki4h5oI7xxg== +"@jsonjoy.com/fs-snapshot@4.57.7": + version "4.57.7" + resolved "https://registry.yarnpkg.com/@jsonjoy.com/fs-snapshot/-/fs-snapshot-4.57.7.tgz#370cf405bac358a4ff426d848b733df9ec5149d2" + integrity sha512-1GS3+plfm2giB3PqokiqyydyqYTPLcCQIKSkp0TdMNRh3KVk7rqRM6U785FLlVRG7XLmkc0KWr215OY+22K3QA== dependencies: "@jsonjoy.com/buffers" "^17.65.0" - "@jsonjoy.com/fs-node-utils" "4.57.6" + "@jsonjoy.com/fs-node-utils" "4.57.7" "@jsonjoy.com/json-pack" "^17.65.0" "@jsonjoy.com/util" "^17.65.0" @@ -2432,110 +2432,110 @@ "@nodelib/fs.scandir" "2.1.5" fastq "^1.6.0" -"@peculiar/asn1-cms@^2.6.0", "@peculiar/asn1-cms@^2.7.0": - version "2.7.0" - resolved "https://registry.yarnpkg.com/@peculiar/asn1-cms/-/asn1-cms-2.7.0.tgz#8e0eb656f4fc85f7c621dd442fa2d298faa84984" - integrity sha512-hew63shtzzvBcSHbhm+cyAmKe6AIfinT9hzEqSPjDC6opTTMKmTkQ0gHuN2KsWlvqiKw1S/fS94fhag/FJkioQ== +"@peculiar/asn1-cms@^2.6.0", "@peculiar/asn1-cms@^2.8.0": + version "2.8.0" + resolved "https://registry.yarnpkg.com/@peculiar/asn1-cms/-/asn1-cms-2.8.0.tgz#b48a8389319228f929e9acd8cee8da6c858738de" + integrity sha512-NgekZOrSJFSBFLFoLfwePguAWAx7z1+f2TEsWFUMyiqqfntZ4+S/S5hzqME3q4pCA0iOsFKdwiQ35dwY24eVqA== dependencies: - "@peculiar/asn1-schema" "^2.7.0" - "@peculiar/asn1-x509" "^2.7.0" - "@peculiar/asn1-x509-attr" "^2.7.0" - asn1js "^3.0.6" + "@peculiar/asn1-schema" "^2.8.0" + "@peculiar/asn1-x509" "^2.8.0" + "@peculiar/asn1-x509-attr" "^2.8.0" + asn1js "^3.0.10" tslib "^2.8.1" "@peculiar/asn1-csr@^2.6.0": - version "2.7.0" - resolved "https://registry.yarnpkg.com/@peculiar/asn1-csr/-/asn1-csr-2.7.0.tgz#1a03ac03f7571ea981f5d8377c6f4510c5d43411" - integrity sha512-VVsAyGqErT9D1SY4aEqozThXMVI+ssVRiv2DDeYuvpBKLIgZ3hYs3Ay3u/VSoKq6ESFi9cf6rf3IOOzfwh7oMA== + version "2.8.0" + resolved "https://registry.yarnpkg.com/@peculiar/asn1-csr/-/asn1-csr-2.8.0.tgz#c9bb5dec2eaff824a705e82a4a58d45e6d2c35d0" + integrity sha512-akbF8+uvleHs8sejNPQxwmVFuInAg6FMNHOwMILXfP518YfFJwdR3jr6oNUPOaEJfuEhn/vkNOCIT6ASUd4mbg== dependencies: - "@peculiar/asn1-schema" "^2.7.0" - "@peculiar/asn1-x509" "^2.7.0" - asn1js "^3.0.6" + "@peculiar/asn1-schema" "^2.8.0" + "@peculiar/asn1-x509" "^2.8.0" + asn1js "^3.0.10" tslib "^2.8.1" "@peculiar/asn1-ecc@^2.6.0": - version "2.7.0" - resolved "https://registry.yarnpkg.com/@peculiar/asn1-ecc/-/asn1-ecc-2.7.0.tgz#c35b57859812ecd0c2ae7b2144855e8208c2cfee" - integrity sha512-n7KEs/Q/wrB415cxy4fHOBhegp4NdJ15fkJPwcB/3/8iNBQC2L/N7SChJPKDJPZGYH0jD4Tg4/0vnHmwghnbKw== + version "2.8.0" + resolved "https://registry.yarnpkg.com/@peculiar/asn1-ecc/-/asn1-ecc-2.8.0.tgz#d51ab2b07eca98e0cf492d051e98bbd0a071305a" + integrity sha512-ohwlk+u9Rv2NOAY1c6MfHj45ATVF8R1DUN/WCgABiRtLi2ZftlZWZX7KvpAbU8v9xPcmoILfELeEABj/rn18AQ== dependencies: - "@peculiar/asn1-schema" "^2.7.0" - "@peculiar/asn1-x509" "^2.7.0" - asn1js "^3.0.6" + "@peculiar/asn1-schema" "^2.8.0" + "@peculiar/asn1-x509" "^2.8.0" + asn1js "^3.0.10" tslib "^2.8.1" -"@peculiar/asn1-pfx@^2.7.0": - version "2.7.0" - resolved "https://registry.yarnpkg.com/@peculiar/asn1-pfx/-/asn1-pfx-2.7.0.tgz#d00766b13ff49785684a604248e6aadd184b291f" - integrity sha512-V/nrlQVmhg7lYAsM7E13UDL5erAwFv6kCIVFqNaMIHSVi7dngcT839JkRTkQBqznMG98l2XjxYk74ZztAohZzA== +"@peculiar/asn1-pfx@^2.8.0": + version "2.8.0" + resolved "https://registry.yarnpkg.com/@peculiar/asn1-pfx/-/asn1-pfx-2.8.0.tgz#8e189b6455e2bf9e5f921bb150ea86d7e7d1875d" + integrity sha512-5yof1ytoB++RQtaFbqSUJ8pxDJtZT6vbVqZ8XoJ61ph7UjNVvfFwAilnCodqkNsAodpy13gDhoxZXw00pghnyg== dependencies: - "@peculiar/asn1-cms" "^2.7.0" - "@peculiar/asn1-pkcs8" "^2.7.0" - "@peculiar/asn1-rsa" "^2.7.0" - "@peculiar/asn1-schema" "^2.7.0" - asn1js "^3.0.6" + "@peculiar/asn1-cms" "^2.8.0" + "@peculiar/asn1-pkcs8" "^2.8.0" + "@peculiar/asn1-rsa" "^2.8.0" + "@peculiar/asn1-schema" "^2.8.0" + asn1js "^3.0.10" tslib "^2.8.1" -"@peculiar/asn1-pkcs8@^2.7.0": - version "2.7.0" - resolved "https://registry.yarnpkg.com/@peculiar/asn1-pkcs8/-/asn1-pkcs8-2.7.0.tgz#5ee602d8a9a3e0a3f09f7b008ff644a657378692" - integrity sha512-9GTl1nE8Mx1kTZ+7QyYatDyKsm34QcWRBFkY1iPvWC3X4Dona5s/tlLiQsx5WzVdZqiMBZNYT0buyw4/vbhnjw== +"@peculiar/asn1-pkcs8@^2.8.0": + version "2.8.0" + resolved "https://registry.yarnpkg.com/@peculiar/asn1-pkcs8/-/asn1-pkcs8-2.8.0.tgz#a46cf8857b9b063896afa41d2b8b2aa6a07a70a2" + integrity sha512-qAKXtLpBEw9LqhKpjw3ajZSXlBur+ipW+y2ivVBQAG6F6qRx94yO+1ZR4mvw+YaCfKSaOzLeYEzsPaBp4SJELA== dependencies: - "@peculiar/asn1-schema" "^2.7.0" - "@peculiar/asn1-x509" "^2.7.0" - asn1js "^3.0.6" + "@peculiar/asn1-schema" "^2.8.0" + "@peculiar/asn1-x509" "^2.8.0" + asn1js "^3.0.10" tslib "^2.8.1" "@peculiar/asn1-pkcs9@^2.6.0": - version "2.7.0" - resolved "https://registry.yarnpkg.com/@peculiar/asn1-pkcs9/-/asn1-pkcs9-2.7.0.tgz#23b4eae41c2feb8df258aa69c502a70092026b0a" - integrity sha512-Bh7m+OuIaSEllPQcSd9OSp93F4ROWH7sbITWV8MI+8dwsjE5111/87VxiWVvYFKyww3vp39geLv9ENqhwWHcew== + version "2.8.0" + resolved "https://registry.yarnpkg.com/@peculiar/asn1-pkcs9/-/asn1-pkcs9-2.8.0.tgz#6d62697af0bbd4f30fdf0d23b4018f3f09620de3" + integrity sha512-b5nDWCnkV60+cQ141D6sVVwK9nz64R5n3zSVnklGd+ECdkW2Ol3U1a6yYFlalpSOaD557yuJB64A+q42jG7lUQ== dependencies: - "@peculiar/asn1-cms" "^2.7.0" - "@peculiar/asn1-pfx" "^2.7.0" - "@peculiar/asn1-pkcs8" "^2.7.0" - "@peculiar/asn1-schema" "^2.7.0" - "@peculiar/asn1-x509" "^2.7.0" - "@peculiar/asn1-x509-attr" "^2.7.0" - asn1js "^3.0.6" + "@peculiar/asn1-cms" "^2.8.0" + "@peculiar/asn1-pfx" "^2.8.0" + "@peculiar/asn1-pkcs8" "^2.8.0" + "@peculiar/asn1-schema" "^2.8.0" + "@peculiar/asn1-x509" "^2.8.0" + "@peculiar/asn1-x509-attr" "^2.8.0" + asn1js "^3.0.10" tslib "^2.8.1" -"@peculiar/asn1-rsa@^2.6.0", "@peculiar/asn1-rsa@^2.7.0": - version "2.7.0" - resolved "https://registry.yarnpkg.com/@peculiar/asn1-rsa/-/asn1-rsa-2.7.0.tgz#6dc5c78c643264dd5a251a66f1dd9a38fcbba385" - integrity sha512-/qvENQrXyTZURjMqSeofHul0JJt2sNSzSwk36pl2olkHbaioMQgrASDZAlHXl0xUlnVbHj0uGgOrBMTb5x2aJQ== +"@peculiar/asn1-rsa@^2.6.0", "@peculiar/asn1-rsa@^2.8.0": + version "2.8.0" + resolved "https://registry.yarnpkg.com/@peculiar/asn1-rsa/-/asn1-rsa-2.8.0.tgz#9d98d0fc42fec50119d2881b8a9925d36daaea73" + integrity sha512-zHEUlCqB2mk7x2lxDwHHJy7hWZOPdGHVlsmITWKB5/PbQo61atbu9PJ/0r9dQNMwFzbKPXZ8uK8/91eUhRznSg== dependencies: - "@peculiar/asn1-schema" "^2.7.0" - "@peculiar/asn1-x509" "^2.7.0" - asn1js "^3.0.6" + "@peculiar/asn1-schema" "^2.8.0" + "@peculiar/asn1-x509" "^2.8.0" + asn1js "^3.0.10" tslib "^2.8.1" -"@peculiar/asn1-schema@^2.6.0", "@peculiar/asn1-schema@^2.7.0": - version "2.7.0" - resolved "https://registry.yarnpkg.com/@peculiar/asn1-schema/-/asn1-schema-2.7.0.tgz#f2dcb25995ce7cac8687ba1039f043e5eff43820" - integrity sha512-W8ZfWzLmQnrcky+eh3tni4IozMdqBDiHWU0N+vve/UGjMaUs8c0L7A2oEdkBXS8rTpWDpK/aoI3DG/L/hxmxPg== +"@peculiar/asn1-schema@^2.6.0", "@peculiar/asn1-schema@^2.8.0": + version "2.8.0" + resolved "https://registry.yarnpkg.com/@peculiar/asn1-schema/-/asn1-schema-2.8.0.tgz#69699f84259b2161607cabfc34e512a4023dbef9" + integrity sha512-7YT0U/ze0tF2QOBbE15gKZwy5tvgGyLRiRHLzhlbOpf7BT032oBSd0haZqXn5W6l26WLlu3dyxzjM+2638/z2Q== dependencies: "@peculiar/utils" "^2.0.2" - asn1js "^3.0.6" + asn1js "^3.0.10" tslib "^2.8.1" -"@peculiar/asn1-x509-attr@^2.7.0": - version "2.7.0" - resolved "https://registry.yarnpkg.com/@peculiar/asn1-x509-attr/-/asn1-x509-attr-2.7.0.tgz#5ef2a10d3a78d4763b848a2cb56db4bb6b1e082a" - integrity sha512-NS8e7SOgXipkzUPLF/sce7ukpMpWjhxYsH0n6Y+bHYo4TTxOb95Zv7hqwSuL212mj5YxovjdOKQOgH1As3E94w== +"@peculiar/asn1-x509-attr@^2.8.0": + version "2.8.0" + resolved "https://registry.yarnpkg.com/@peculiar/asn1-x509-attr/-/asn1-x509-attr-2.8.0.tgz#bd168e3f5e8bc23e56b1a97891f9f2fb7f730204" + integrity sha512-tHjkfS/qhMnmrlB2J9NhflQlQ7In3khO3CfmVrriOlpTeErY9ZIKOso1hQ5JQiyrJ7ShvqVPk7E5fQmbclkSKA== dependencies: - "@peculiar/asn1-schema" "^2.7.0" - "@peculiar/asn1-x509" "^2.7.0" - asn1js "^3.0.6" + "@peculiar/asn1-schema" "^2.8.0" + "@peculiar/asn1-x509" "^2.8.0" + asn1js "^3.0.10" tslib "^2.8.1" -"@peculiar/asn1-x509@^2.6.0", "@peculiar/asn1-x509@^2.7.0": - version "2.7.0" - resolved "https://registry.yarnpkg.com/@peculiar/asn1-x509/-/asn1-x509-2.7.0.tgz#84793efb7819dbc9526fd6b0a4ccd86f90464b96" - integrity sha512-mUn9RRrkGDnG4ALfunDmzyRW5dg+sWCj/pfnCCqEHYbkGxEpvUt6iVJv8Yw1cyp6SWZ26ZE5oSmI5SqEaen15g== +"@peculiar/asn1-x509@^2.6.0", "@peculiar/asn1-x509@^2.8.0": + version "2.8.0" + resolved "https://registry.yarnpkg.com/@peculiar/asn1-x509/-/asn1-x509-2.8.0.tgz#9958a9ef35dec8426aabad78ffe8798e318b06e2" + integrity sha512-N0CMuhWUzsWEVq6F1q9X6+VKUnWzSW+cSVg+aPaGGwDdbFoFWTYgin5MHwXgpWd6y9COMBxnfy/Qc+Xc7F0Zwg== dependencies: - "@peculiar/asn1-schema" "^2.7.0" + "@peculiar/asn1-schema" "^2.8.0" "@peculiar/utils" "^2.0.2" - asn1js "^3.0.6" + asn1js "^3.0.10" tslib "^2.8.1" "@peculiar/utils@^2.0.2": @@ -2575,9 +2575,9 @@ graceful-fs "4.2.10" "@pnpm/npm-conf@^3.0.2": - version "3.0.2" - resolved "https://registry.yarnpkg.com/@pnpm/npm-conf/-/npm-conf-3.0.2.tgz#857622421aa9bbf254e557b8a022c216a7928f47" - integrity sha512-h104Kh26rR8tm+a3Qkc5S4VLYint3FE48as7+/5oCEcKR2idC/pF1G6AhIXKI+eHPJa/3J9i5z0Al47IeGHPkA== + version "3.0.3" + resolved "https://registry.yarnpkg.com/@pnpm/npm-conf/-/npm-conf-3.0.3.tgz#17b59982126c86294a8d248aa1d7b185f2df6484" + integrity sha512-//0sR/cow/s4ICQaYoAobOl4aU8cjU6x/V24V7XkKotb9+O+3zySIYp146vpaobYHnxa4pZX8NkV54Z5AwbDKA== dependencies: "@pnpm/config.env-replace" "^1.1.0" "@pnpm/network.ca-file" "^1.0.1" @@ -2923,9 +2923,9 @@ integrity sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA== "@types/node@*": - version "25.9.2" - resolved "https://registry.yarnpkg.com/@types/node/-/node-25.9.2.tgz#fc8958e757994b71fee516f9634bdb03d1b19e9f" - integrity sha512-G05zqtJhcDLb8uslf5EjCxXg9G1KQxiV8OS0R26IC//Eoyitzqe8z37I7cqvnZlrlSfgocQRfSn/AHBZJJFyGw== + version "25.9.3" + resolved "https://registry.yarnpkg.com/@types/node/-/node-25.9.3.tgz#11dfe7a33e68fa5c560f0aa76cc5595621ef26b9" + integrity sha512-603BddQMv3pUcr4U2dhujk83N2tTDVr/34wII2B6bJy6g+8WD6yUb11jszNs0gdi4PesVWl7ABt8nYMVpnLUcg== dependencies: undici-types ">=7.24.0 <7.24.7" @@ -3231,9 +3231,9 @@ acorn-walk@^8.0.0: acorn "^8.11.0" acorn@^8.0.0, acorn@^8.0.4, acorn@^8.11.0, acorn@^8.15.0, acorn@^8.16.0: - version "8.16.0" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.16.0.tgz#4ce79c89be40afe7afe8f3adb902a1f1ce9ac08a" - integrity sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw== + version "8.17.0" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.17.0.tgz#1785adb84faf8d8add10369b93826fc2bd08f1fe" + integrity sha512-xRQbDb9BnwDafYNn6Vwl839DYVjqXYb1XVGtWAZ1kcDc6iwAL4hg3B1dZlRiuENFeO2H53gFG3in621AdERVAg== address@^1.0.1: version "1.2.2" @@ -3295,24 +3295,24 @@ algoliasearch-helper@^3.26.0: "@algolia/events" "^4.0.1" algoliasearch@^5.37.0: - version "5.53.0" - resolved "https://registry.yarnpkg.com/algoliasearch/-/algoliasearch-5.53.0.tgz#393d1990fc1d3164d2684c09b11c797de0fbb0c9" - integrity sha512-OGW1q6b91CRSSeiOnM8LxuR5NYJ2esvw66jUZ4IIvdv+ItNkx3pwLuyR+jaCdbGee4ov5WgUnyPryyh11xvByQ== + version "5.54.0" + resolved "https://registry.yarnpkg.com/algoliasearch/-/algoliasearch-5.54.0.tgz#49a65f246f85cf351c22fdff294a41c2afa44a80" + integrity sha512-APAX4ajIOgsmYoUlGe++oNZkSTBgmXYM4maHC0OxC+Yo7xkaKQElV0ATZYCZA7jzrSJX1OBiqEs7mk+ZxXgYqA== dependencies: - "@algolia/abtesting" "1.19.0" - "@algolia/client-abtesting" "5.53.0" - "@algolia/client-analytics" "5.53.0" - "@algolia/client-common" "5.53.0" - "@algolia/client-insights" "5.53.0" - "@algolia/client-personalization" "5.53.0" - "@algolia/client-query-suggestions" "5.53.0" - "@algolia/client-search" "5.53.0" - "@algolia/ingestion" "1.53.0" - "@algolia/monitoring" "1.53.0" - "@algolia/recommend" "5.53.0" - "@algolia/requester-browser-xhr" "5.53.0" - "@algolia/requester-fetch" "5.53.0" - "@algolia/requester-node-http" "5.53.0" + "@algolia/abtesting" "1.20.0" + "@algolia/client-abtesting" "5.54.0" + "@algolia/client-analytics" "5.54.0" + "@algolia/client-common" "5.54.0" + "@algolia/client-insights" "5.54.0" + "@algolia/client-personalization" "5.54.0" + "@algolia/client-query-suggestions" "5.54.0" + "@algolia/client-search" "5.54.0" + "@algolia/ingestion" "1.54.0" + "@algolia/monitoring" "1.54.0" + "@algolia/recommend" "5.54.0" + "@algolia/requester-browser-xhr" "5.54.0" + "@algolia/requester-fetch" "5.54.0" + "@algolia/requester-node-http" "5.54.0" ansi-align@^3.0.1: version "3.0.1" @@ -3388,7 +3388,7 @@ array-union@^2.1.0: resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== -asn1js@^3.0.6: +asn1js@^3.0.10, asn1js@^3.0.6: version "3.0.10" resolved "https://registry.yarnpkg.com/asn1js/-/asn1js-3.0.10.tgz#df26c874c8a8b41ca605efea47b2ad07551013dd" integrity sha512-S2s3aOytiKdFRdulw2qPE51MzjzVOisppcVv7jVFR+Kw0kxwvFrDcYA0h7Ndqbmj0HkMIXYWaoj7fli8kgx1eg== @@ -3471,9 +3471,9 @@ balanced-match@^1.0.0: integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== baseline-browser-mapping@^2.10.12: - version "2.10.35" - resolved "https://registry.yarnpkg.com/baseline-browser-mapping/-/baseline-browser-mapping-2.10.35.tgz#f0f2232e0de2d2f82cc491bcf830b05ed05937c6" - integrity sha512-honAfLBde0HAFLdNyBEfuuENkF6zR+ozxqxa/2zJKHBe1qzLqyTSeRKpdPEHAP03rlDGyQOPnCSxnVpVqQo9Mg== + version "2.10.37" + resolved "https://registry.yarnpkg.com/baseline-browser-mapping/-/baseline-browser-mapping-2.10.37.tgz#3e636475b6b293244e2b23e2c71a2ab9d9e6ba7d" + integrity sha512-girxaJ7WZssDOFhzCGZTDKoTa1gk6A1TbflaYTpykLJ4UU9Fz9kx1aREM8JCuoVHbL8X8T/mJg7w2oYSq72Oig== batch@0.6.1: version "0.6.1" @@ -3509,9 +3509,9 @@ body-parser@~1.20.5: unpipe "~1.0.0" bonjour-service@^1.2.1: - version "1.4.0" - resolved "https://registry.yarnpkg.com/bonjour-service/-/bonjour-service-1.4.0.tgz#6d7cfbb5a8f630b41bb44dcd73585eaedf6ef93c" - integrity sha512-fGQtj1qdR9vIKjFiWPQd52qIqwjaYqhcI40JEiDuvlZ86E7ZBPBwY9fPgHy9r2rYGIjiRfctNPYz6OQU73ww2w== + version "1.4.1" + resolved "https://registry.yarnpkg.com/bonjour-service/-/bonjour-service-1.4.1.tgz#67d0d4e50523a90b1d4b445c490cafdf10b99f58" + integrity sha512-9KM4QMPKnaJqaja1v7gYO/+TXZGLtzPA05NmUTqDAJjcsWeVoOXKMvU9g0gfuuoYTQqJZ924hivICd5R/bCJbA== dependencies: fast-deep-equal "^3.1.3" multicast-dns "^7.2.5" @@ -3680,9 +3680,9 @@ caniuse-api@^3.0.0: lodash.uniq "^4.5.0" caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001782, caniuse-lite@^1.0.30001787: - version "1.0.30001797" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001797.tgz#1332709e1439f01ff92085dd17001e0a45897ec0" - integrity sha512-l8xKG+gwAIExZGl9FrF7KUwuOmk6wbEPC9Xoy/RtnWv1XG0Q4LFlagaLpUv3Kiza3W/wm27zy0yWJEieYKAP6w== + version "1.0.30001799" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001799.tgz#5c909138c27f1a61219d3e092071c1cc7d32dc55" + integrity sha512-hG1bReV+OUU+MOqK4t/ZWI0tZOyz3rqS9XuhOUz1cIcbwBKjOyJEJuw9ER5JuNyqxNk8u/JUVbGibBOL1yrjFw== ccount@^2.0.0: version "2.0.1" @@ -4476,9 +4476,9 @@ ee-first@1.1.1: integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== electron-to-chromium@^1.5.328: - version "1.5.371" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.371.tgz#fa5684f2a514c57368823f9e75553f9a7c5ef0be" - integrity sha512-e9htk9mAYL6AzmkEhSvVVw7IWGSBJ/Bqdn2eRyRLrj1g6sncN4WbFt5qnILYoCktktr45pyjIrOiRvBThQ808w== + version "1.5.372" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.372.tgz#ae8ac69942a37b231773b8fb01759f73733599e3" + integrity sha512-M3yhbAlilnwqC8D21t28UCDGHyitShTmmLRU/H+b74P6Ski16Nb9HONYEaVpMj/pwC7BEo5B95FpjODLCWbtfA== emoji-regex@^8.0.0: version "8.0.0" @@ -4519,9 +4519,9 @@ encoding-sniffer@^0.2.1: whatwg-encoding "^3.1.1" enhanced-resolve@^5.22.0: - version "5.23.0" - resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.23.0.tgz#dfdf8d1c9065e4b52f8a598356138931c07305f9" - integrity sha512-yJN/BOOLxcOW2aQgeif9mSnaUB8KtvmMMp56oA1kx1CRfBKbhZm2pJ+NBY+3eOboHxix8lfjWpHE0Ei5U8RbSA== + version "5.24.0" + resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.24.0.tgz#cf14b9768a774cb6a5087220c0dc6e55df6ec35a" + integrity sha512-SkE2t82KlkkxQRVMVLAGKxLfORGQfrkx5dkj+vlgXRVNEdPc4eZcR+J/Fvj8C+yKSFH5L0q3NFlyufOVQnCcYQ== dependencies: graceful-fs "^4.2.4" tapable "^2.3.3" @@ -5788,9 +5788,9 @@ jiti@^1.20.0: integrity sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A== joi@^17.9.2: - version "17.13.3" - resolved "https://registry.yarnpkg.com/joi/-/joi-17.13.3.tgz#0f5cc1169c999b30d344366d384b12d92558bcec" - integrity sha512-otDA4ldcIx+ZXsKHWmp0YizCweVRZG96J10b0FevjfuncLO1oX59THoAmHkNubYJ+9gWsYsp5k8v4ib6oDv1fA== + version "17.13.4" + resolved "https://registry.yarnpkg.com/joi/-/joi-17.13.4.tgz#ad6153d97ce558eb3a3b593e0d43eab51df1c474" + integrity sha512-1RuuER6kmt8K8I3nIWvPZKi5RQCb568ZPyY4Pwjlua+yo+63ZTmIwxLZH0heBmiKN4uxjvCiarDrjaeH84xicQ== dependencies: "@hapi/hoek" "^9.3.0" "@hapi/topo" "^5.1.0" @@ -6247,18 +6247,18 @@ media-typer@0.3.0: integrity sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ== memfs@^4.43.1: - version "4.57.6" - resolved "https://registry.yarnpkg.com/memfs/-/memfs-4.57.6.tgz#ec7c83388eb6822ff1046a576292743afbd22fa5" - integrity sha512-WQK+DGjKCnPdpSyJUXphz+COF2uEhhsxQ3VIWBSbzpbbXuch3h4FePMqXrXGdLjsTgo4JFzBFsP6AWd9pVazGw== + version "4.57.7" + resolved "https://registry.yarnpkg.com/memfs/-/memfs-4.57.7.tgz#bad8bc1680d8b5349da6575b095779956f6b89b0" + integrity sha512-YZPphUQZSRGk6ddPlsNuMbztrLwsbUATFNZcqKscSbSJZ4g0+Y3vSZLJ/rfnGZaB1FFhC7SrywZXev6i8lnHgg== dependencies: - "@jsonjoy.com/fs-core" "4.57.6" - "@jsonjoy.com/fs-fsa" "4.57.6" - "@jsonjoy.com/fs-node" "4.57.6" - "@jsonjoy.com/fs-node-builtins" "4.57.6" - "@jsonjoy.com/fs-node-to-fsa" "4.57.6" - "@jsonjoy.com/fs-node-utils" "4.57.6" - "@jsonjoy.com/fs-print" "4.57.6" - "@jsonjoy.com/fs-snapshot" "4.57.6" + "@jsonjoy.com/fs-core" "4.57.7" + "@jsonjoy.com/fs-fsa" "4.57.7" + "@jsonjoy.com/fs-node" "4.57.7" + "@jsonjoy.com/fs-node-builtins" "4.57.7" + "@jsonjoy.com/fs-node-to-fsa" "4.57.7" + "@jsonjoy.com/fs-node-utils" "4.57.7" + "@jsonjoy.com/fs-print" "4.57.7" + "@jsonjoy.com/fs-snapshot" "4.57.7" "@jsonjoy.com/json-pack" "^1.11.0" "@jsonjoy.com/util" "^1.9.0" glob-to-regex.js "^1.0.1" @@ -7691,17 +7691,17 @@ postcss-selector-not@^8.0.1: postcss-selector-parser "^7.0.0" postcss-selector-parser@^6.0.11, postcss-selector-parser@^6.0.16: - version "6.1.2" - resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz#27ecb41fb0e3b6ba7a1ec84fff347f734c7929de" - integrity sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg== + version "6.1.4" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.1.4.tgz#fdec4ca80f5781bd216ca9bf89a2a0fccfffa5f0" + integrity sha512-bIoJLOmjCO1S9XdY/DcnR5hJxvrDir1PbGChrzXG3vw0/FOliy/fA3dmdhQ441kah4gKv+TwckGzex6wNS5cnQ== dependencies: cssesc "^3.0.0" util-deprecate "^1.0.2" postcss-selector-parser@^7.0.0: - version "7.1.2" - resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-7.1.2.tgz#e2dc51fc26c007a29bc3195ee9e68ca6df52e32e" - integrity sha512-Wjvt4scRFouioIInHf51IFNP4ltJ2EngJM+cZPGiqbKetBfmP3vpdPV8ID2S6JS6/jdo74N8+aEYH9lQr2C6sA== + version "7.1.4" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-7.1.4.tgz#69dc7a526517572ff6b150e352b36a016017b485" + integrity sha512-HeP7D2wyhkR+XaK6v4W8oRF62Dsz4flyuczALJp61GckGm42u1saSSJ/0auvcBqxs3jMRFEcPK34At/0JBKdOg== dependencies: cssesc "^3.0.0" util-deprecate "^1.0.2" @@ -8089,9 +8089,9 @@ regjsgen@^0.8.0: integrity sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q== regjsparser@^0.13.0: - version "0.13.1" - resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.13.1.tgz#0593cbacb27527927692030928ae4d3b878d6f8d" - integrity sha512-dLsljMd9sqwRkby8zhO1gSg3PnJIBFid8f4CQj/sXx+7cKx+E7u0PKhZ+U4wmhx7EfmtvnA318oVaIkAB1lRJw== + version "0.13.2" + resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.13.2.tgz#f654734b5c588b22ba3e21693b30523417180808" + integrity sha512-NgRBy2Nx/bE+9F27nVHnqcN5HjyLmecqsqx2PJHu3/IEtADD4WuxuXIVExD5PoSDFVrl78dOonfcOe5O+5nbzQ== dependencies: jsesc "~3.1.0" @@ -9154,11 +9154,10 @@ vfile@^6.0.0, vfile@^6.0.1: vfile-message "^4.0.0" watchpack@^2.5.1: - version "2.5.1" - resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-2.5.1.tgz#dd38b601f669e0cbf567cb802e75cead82cde102" - integrity sha512-Zn5uXdcFNIA1+1Ei5McRd+iRzfhENPCe7LeABkJtNulSxjma+l7ltNx55BWZkRlwRnpOgHqxnjyaDgJnNXnqzg== + version "2.5.2" + resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-2.5.2.tgz#e12e82d84674266fc1c6dbfe38891b92ff0522ec" + integrity sha512-6i/00NBjP4yGPs+caKSyRfpTF/8Torsu0MOW3mMzIbhgISFder8i7xbqgHlLMwJrdiN8ndBV3UA1/AfzPSr+jg== dependencies: - glob-to-regexp "^0.4.1" graceful-fs "^4.1.2" wbuf@^1.1.0, wbuf@^1.7.3: @@ -9204,9 +9203,9 @@ webpack-dev-middleware@^7.4.2: schema-utils "^4.0.0" webpack-dev-server@^5.2.2: - version "5.2.4" - resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-5.2.4.tgz#6e6306ce59848ed322c235e48b326632b1eed6d6" - integrity sha512-GqDPGZN9bRqKBTkp4aWkobDDHMsrXKoGSdOH56smIri8qR0JG8gfL8/v/f/OZR3/OKXjG8uwJbFVhKm/FNU/UA== + version "5.2.5" + resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-5.2.5.tgz#648fceaac6a5736b0935e5c1e55d6aa1d0626119" + integrity sha512-4wZtCquSuv9CKX8oybo+mqxtxZqWz47uM1Ch94lxowBztOhWCbhqvRbfC/mODOwxgV2brY+JGZpHq58/SuVFYg== dependencies: "@types/bonjour" "^3.5.13" "@types/connect-history-api-fallback" "^1.5.4" From 61b82ce250e95f04d49d0fb427e79364f2d900c0 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 16 Jun 2026 10:05:58 +0200 Subject: [PATCH 029/134] fix(deps): update all non-major go dependencies to v2.30.0 (#957) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) | |---|---|---|---| | [github.com/onsi/ginkgo/v2](https://redirect.github.com/onsi/ginkgo) | `v2.29.0` β†’ `v2.30.0` | ![age](https://developer.mend.io/api/mc/badges/age/go/github.com%2fonsi%2fginkgo%2fv2/v2.30.0?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/go/github.com%2fonsi%2fginkgo%2fv2/v2.29.0/v2.30.0?slim=true) | --- ### Release Notes
onsi/ginkgo (github.com/onsi/ginkgo/v2) ### [`v2.30.0`](https://redirect.github.com/onsi/ginkgo/releases/tag/v2.30.0) [Compare Source](https://redirect.github.com/onsi/ginkgo/compare/v2.29.0...v2.30.0) #### 2.30.0 ##### Features Ginkgo now allows `extentions/global.Reset` to support running multiple suites from within a single process. This may take some massaging on your part (see [1672](https://redirect.github.com/onsi/ginkgo/issues/1672)) but can dramatically speed up codebases with O(hundreds) of test suites. Thanks [@​lawrencejones](https://redirect.github.com/lawrencejones) ! ##### Fixes - Fix nested --github-output group for progress report nested inside timeline \[[`4f62d7a`](https://redirect.github.com/onsi/ginkgo/commit/4f62d7a)]
--- ### Configuration πŸ“… **Schedule**: (UTC) - Branch creation - At any time (no schedule defined) - Automerge - At any time (no schedule defined) 🚦 **Automerge**: Enabled. β™» **Rebasing**: Never, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/cloudnative-pg/plugin-barman-cloud). Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Leonardo Cecchi --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 5acb085..7805da1 100644 --- a/go.mod +++ b/go.mod @@ -10,7 +10,7 @@ require ( github.com/cloudnative-pg/cnpg-i v0.5.0 github.com/cloudnative-pg/cnpg-i-machinery v0.4.2 github.com/cloudnative-pg/machinery v0.5.0 - github.com/onsi/ginkgo/v2 v2.29.0 + github.com/onsi/ginkgo/v2 v2.30.0 github.com/onsi/gomega v1.41.0 github.com/spf13/cobra v1.10.2 github.com/spf13/viper v1.21.0 diff --git a/go.sum b/go.sum index c26f737..3fdd466 100644 --- a/go.sum +++ b/go.sum @@ -161,8 +161,8 @@ github.com/monochromegane/go-gitignore v0.0.0-20200626010858-205db1a8cc00 h1:n6/ github.com/monochromegane/go-gitignore v0.0.0-20200626010858-205db1a8cc00/go.mod h1:Pm3mSP3c5uWn86xMLZ5Sa7JB9GsEZySvHYXCTK4E9q4= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= -github.com/onsi/ginkgo/v2 v2.29.0 h1:rfh+ZFjgJhYWRoIqVf3Uwx/W20yLrcrE2h2GmYVRaag= -github.com/onsi/ginkgo/v2 v2.29.0/go.mod h1:+aXOY+vzZ5mu2iI2HpTZUPmM//oQfsNFX6gU9kNcA44= +github.com/onsi/ginkgo/v2 v2.30.0 h1:zxM/9XneXFIy64j6/wAmBIX4zRC7Hu6U8XFNZvDnCQc= +github.com/onsi/ginkgo/v2 v2.30.0/go.mod h1:+aXOY+vzZ5mu2iI2HpTZUPmM//oQfsNFX6gU9kNcA44= github.com/onsi/gomega v1.41.0 h1:OwKp4pXNgVxf6sCplzYo794OFNuoL2q2SBMU5NSWOjA= github.com/onsi/gomega v1.41.0/go.mod h1:M/Uqpu/8qTjtzCLUA2zJHX9Iilrau25x1PdoSRbWh5A= github.com/pelletier/go-toml/v2 v2.2.4 h1:mye9XuhQ6gvn5h28+VilKrrPoQVanw5PMw/TB0t5Ec4= From b6a849bca1b794d8de224b01aa1ffe616a24f7ed Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 16 Jun 2026 11:06:01 +0200 Subject: [PATCH 030/134] chore(deps): update dependency dagger/dagger to v0.21.6 (#956) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Update | Change | |---|---|---| | [dagger/dagger](https://redirect.github.com/dagger/dagger) | patch | `0.21.5` β†’ `0.21.6` | --- ### Release Notes
dagger/dagger (dagger/dagger) ### [`v0.21.6`](https://redirect.github.com/dagger/dagger/releases/tag/v0.21.6) [Compare Source](https://redirect.github.com/dagger/dagger/compare/v0.21.5...v0.21.6) ##### v0.21.6 - 2026-06-10 ##### Added - Add `registryService` options to `Container.from` and `Container.publish`, allowing containers to pull from and publish to a registry provided by a Dagger `Service`. This supports local ephemeral registries without starting unrelated services attached to the container. by [@​grouville](https://redirect.github.com/grouville) in [#​13305](https://redirect.github.com/dagger/dagger/pull/13305) ##### Fixed - Fix image pulls from single-platform image tags so they can resolve correctly even when the image config reports a different platform than the requested platform. by [@​sipsma](https://redirect.github.com/sipsma) in [#​13409](https://redirect.github.com/dagger/dagger/pull/13409) - Fix an intermittent module introspection/codegen cache error that could report `add explicit dependency: dep result missing from cache` after implementation-scoped module results were reused across sessions. by [@​sipsma](https://redirect.github.com/sipsma) in [#​13412](https://redirect.github.com/dagger/dagger/pull/13412) - Fix filtered host directory imports when excluded files disappear during sync, preventing layer copy errors for paths that should have been ignored by include/exclude filters. by [@​sipsma](https://redirect.github.com/sipsma) in [#​13414](https://redirect.github.com/dagger/dagger/pull/13414) - Fix Dang v2 modules with private `Map` fields so map values are restored correctly between calls instead of failing with `expected module type, got dang.MapType`. by [@​vito](https://redirect.github.com/vito) in [#​13421](https://redirect.github.com/dagger/dagger/pull/13421) - Fix `.env` user defaults for module constructors so passing one constructor argument explicitly no longer drops defaults for the other arguments. by [@​marcosnils](https://redirect.github.com/marcosnils) in [#​13424](https://redirect.github.com/dagger/dagger/pull/13424) - Fix a rare cache race that could return released directory snapshots and cause `invalid immutable ref` errors. by [@​sipsma](https://redirect.github.com/sipsma) in [#​13429](https://redirect.github.com/dagger/dagger/pull/13429) ##### What to do next? - Read the [documentation](https://docs.dagger.io) - Join our [Discord server](https://discord.gg/dagger-io) - Follow us on [Twitter](https://twitter.com/dagger_io)
--- ### Configuration πŸ“… **Schedule**: (UTC) - Branch creation - At any time (no schedule defined) - Automerge - At any time (no schedule defined) 🚦 **Automerge**: Enabled. β™» **Rebasing**: Never, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/cloudnative-pg/plugin-barman-cloud). Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/ci.yml | 2 +- .github/workflows/release-please.yml | 2 +- .github/workflows/release-publish.yml | 2 +- Taskfile.yml | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 615346b..d2a2c24 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -44,7 +44,7 @@ jobs: - name: Install Dagger env: # renovate: datasource=github-tags depName=dagger/dagger versioning=semver - DAGGER_VERSION: 0.21.5 + DAGGER_VERSION: 0.21.6 run: | curl -L https://dl.dagger.io/dagger/install.sh | BIN_DIR=$HOME/.local/bin sh - name: Run CI task diff --git a/.github/workflows/release-please.yml b/.github/workflows/release-please.yml index 8a981de..0e294c5 100644 --- a/.github/workflows/release-please.yml +++ b/.github/workflows/release-please.yml @@ -31,7 +31,7 @@ jobs: - name: Install Dagger env: # renovate: datasource=github-tags depName=dagger/dagger versioning=semver - DAGGER_VERSION: 0.21.5 + DAGGER_VERSION: 0.21.6 run: | curl -L https://dl.dagger.io/dagger/install.sh | BIN_DIR=$HOME/.local/bin sh - name: Create image and manifest diff --git a/.github/workflows/release-publish.yml b/.github/workflows/release-publish.yml index 0a687a1..dc63522 100644 --- a/.github/workflows/release-publish.yml +++ b/.github/workflows/release-publish.yml @@ -21,7 +21,7 @@ jobs: - name: Install Dagger env: # renovate: datasource=github-tags depName=dagger/dagger versioning=semver - DAGGER_VERSION: 0.21.5 + DAGGER_VERSION: 0.21.6 run: | curl -L https://dl.dagger.io/dagger/install.sh | BIN_DIR=$HOME/.local/bin sh - name: Create image and manifest diff --git a/Taskfile.yml b/Taskfile.yml index 801decd..cee1cb2 100644 --- a/Taskfile.yml +++ b/Taskfile.yml @@ -206,7 +206,7 @@ tasks: - start-build-network vars: # renovate: datasource=github-tags depName=dagger/dagger versioning=semver - DAGGER_VERSION: 0.21.5 + DAGGER_VERSION: 0.21.6 DAGGER_ENGINE_IMAGE: registry.dagger.io/engine:v{{ .DAGGER_VERSION }} cmds: - > From f94924105b51b7b015338d4ec2c71904ef8d095c Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 16 Jun 2026 12:15:54 +0200 Subject: [PATCH 031/134] fix(deps): update all non-major go dependencies (#963) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) | |---|---|---|---|---|---| | [github.com/cloudnative-pg/barman-cloud](https://redirect.github.com/cloudnative-pg/barman-cloud) | require | digest | `bd68198` β†’ `2638188` | | | | [github.com/onsi/ginkgo/v2](https://redirect.github.com/onsi/ginkgo) | require | minor | `v2.30.0` β†’ `v2.31.0` | ![age](https://developer.mend.io/api/mc/badges/age/go/github.com%2fonsi%2fginkgo%2fv2/v2.31.0?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/go/github.com%2fonsi%2fginkgo%2fv2/v2.30.0/v2.31.0?slim=true) | | [github.com/onsi/gomega](https://redirect.github.com/onsi/gomega) | require | minor | `v1.41.0` β†’ `v1.42.0` | ![age](https://developer.mend.io/api/mc/badges/age/go/github.com%2fonsi%2fgomega/v1.42.0?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/go/github.com%2fonsi%2fgomega/v1.41.0/v1.42.0?slim=true) | --- ### Release Notes
onsi/ginkgo (github.com/onsi/ginkgo/v2) ### [`v2.31.0`](https://redirect.github.com/onsi/ginkgo/releases/tag/v2.31.0) [Compare Source](https://redirect.github.com/onsi/ginkgo/compare/v2.30.0...v2.31.0) #### 2.31.0 Add a bunch of Claude Skills via the marketplace: ``` /plugin marketplace add onsi/ginkgo /plugin install ginkgo@ginkgo ```
onsi/gomega (github.com/onsi/gomega) ### [`v1.42.0`](https://redirect.github.com/onsi/gomega/releases/tag/v1.42.0) [Compare Source](https://redirect.github.com/onsi/gomega/compare/v1.41.0...v1.42.0) #### 1.42.0 Add a set of Claude skill as a marketplace plugin
--- ### Configuration πŸ“… **Schedule**: (UTC) - Branch creation - At any time (no schedule defined) - Automerge - At any time (no schedule defined) 🚦 **Automerge**: Enabled. β™» **Rebasing**: Never, or you tick the rebase/retry checkbox. πŸ‘» **Immortal**: This PR will be recreated if closed unmerged. Get [config help](https://redirect.github.com/renovatebot/renovate/discussions) if that's undesired. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/cloudnative-pg/plugin-barman-cloud). Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Leonardo Cecchi --- go.mod | 12 ++++++------ go.sum | 24 ++++++++++++------------ 2 files changed, 18 insertions(+), 18 deletions(-) diff --git a/go.mod b/go.mod index 7805da1..bb8184f 100644 --- a/go.mod +++ b/go.mod @@ -5,20 +5,20 @@ go 1.26.3 require ( github.com/cert-manager/cert-manager v1.20.2 github.com/cloudnative-pg/api v1.29.1 - github.com/cloudnative-pg/barman-cloud v0.5.2-0.20260609065833-bd68198c31dc + github.com/cloudnative-pg/barman-cloud v0.5.2-0.20260616073548-263818883a1c github.com/cloudnative-pg/cloudnative-pg v1.29.1 github.com/cloudnative-pg/cnpg-i v0.5.0 github.com/cloudnative-pg/cnpg-i-machinery v0.4.2 github.com/cloudnative-pg/machinery v0.5.0 - github.com/onsi/ginkgo/v2 v2.30.0 - github.com/onsi/gomega v1.41.0 + github.com/onsi/ginkgo/v2 v2.31.0 + github.com/onsi/gomega v1.42.0 github.com/spf13/cobra v1.10.2 github.com/spf13/viper v1.21.0 google.golang.org/grpc v1.81.1 gopkg.in/yaml.v3 v3.0.1 - k8s.io/api v0.36.1 + k8s.io/api v0.36.2 k8s.io/apiextensions-apiserver v0.36.1 - k8s.io/apimachinery v0.36.1 + k8s.io/apimachinery v0.36.2 k8s.io/client-go v0.36.1 k8s.io/utils v0.0.0-20260507154919-ff6756f316d2 sigs.k8s.io/controller-runtime v0.24.1 @@ -129,7 +129,7 @@ require ( k8s.io/component-base v0.36.1 // indirect k8s.io/klog/v2 v2.140.0 // indirect k8s.io/kube-openapi v0.0.0-20260502001324-b7f5293f4787 // indirect - k8s.io/streaming v0.36.1 // indirect + k8s.io/streaming v0.36.2 // indirect sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.34.0 // indirect sigs.k8s.io/gateway-api v1.5.0 // indirect sigs.k8s.io/json v0.0.0-20250730193827-2d320260d730 // indirect diff --git a/go.sum b/go.sum index 3fdd466..845e297 100644 --- a/go.sum +++ b/go.sum @@ -20,8 +20,8 @@ github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UF github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/cloudnative-pg/api v1.29.1 h1:FWr8S7EQeOfdhYXyr2cof8wUXLARZiiQt5Qa6ltED7w= github.com/cloudnative-pg/api v1.29.1/go.mod h1:QtWF3yzSvIfORMHaSkPAk/o3bhCJwEHJgN3riyRiz3o= -github.com/cloudnative-pg/barman-cloud v0.5.2-0.20260609065833-bd68198c31dc h1:EWlG0LDO3XxVEG/HGDzRZPG0pgULkA8KmYWOSsbBDD0= -github.com/cloudnative-pg/barman-cloud v0.5.2-0.20260609065833-bd68198c31dc/go.mod h1:UAjYZ7LaVswcdi9Kg8mbTtf5MhG6FCP5RlrmqUmZ+VY= +github.com/cloudnative-pg/barman-cloud v0.5.2-0.20260616073548-263818883a1c h1:5ILvYitKJ3+yT+bDGQM+21QOpa/a8ayCdTqtbWpYJtk= +github.com/cloudnative-pg/barman-cloud v0.5.2-0.20260616073548-263818883a1c/go.mod h1:vmW7blcg0BECd/9YKqn7NdiF7jz9BlXCWJcGJpzzBCg= github.com/cloudnative-pg/cloudnative-pg v1.29.1 h1:ZNEt1TMlnQKXI1kho2UqQuqdfvIvjGln4kN7C1lsmGA= github.com/cloudnative-pg/cloudnative-pg v1.29.1/go.mod h1:Sbgx9jVmkle4/gR2U5JHrzDd74sRPOBHDtPkvncg5v8= github.com/cloudnative-pg/cnpg-i v0.5.0 h1:/TOzpNT6cwNgrpftTtrnLKdoHgMwd+88vZgXjlVgXeE= @@ -161,10 +161,10 @@ github.com/monochromegane/go-gitignore v0.0.0-20200626010858-205db1a8cc00 h1:n6/ github.com/monochromegane/go-gitignore v0.0.0-20200626010858-205db1a8cc00/go.mod h1:Pm3mSP3c5uWn86xMLZ5Sa7JB9GsEZySvHYXCTK4E9q4= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= -github.com/onsi/ginkgo/v2 v2.30.0 h1:zxM/9XneXFIy64j6/wAmBIX4zRC7Hu6U8XFNZvDnCQc= -github.com/onsi/ginkgo/v2 v2.30.0/go.mod h1:+aXOY+vzZ5mu2iI2HpTZUPmM//oQfsNFX6gU9kNcA44= -github.com/onsi/gomega v1.41.0 h1:OwKp4pXNgVxf6sCplzYo794OFNuoL2q2SBMU5NSWOjA= -github.com/onsi/gomega v1.41.0/go.mod h1:M/Uqpu/8qTjtzCLUA2zJHX9Iilrau25x1PdoSRbWh5A= +github.com/onsi/ginkgo/v2 v2.31.0 h1:GtuJos5DFUV9EerYJo8RhYxosYNGvOdDE5haKq6Grfs= +github.com/onsi/ginkgo/v2 v2.31.0/go.mod h1:+aXOY+vzZ5mu2iI2HpTZUPmM//oQfsNFX6gU9kNcA44= +github.com/onsi/gomega v1.42.0 h1:CJby8u36xb7v34W78F8WKvqTQP7PCMIPB78IVDB73l4= +github.com/onsi/gomega v1.42.0/go.mod h1:M/Uqpu/8qTjtzCLUA2zJHX9Iilrau25x1PdoSRbWh5A= github.com/pelletier/go-toml/v2 v2.2.4 h1:mye9XuhQ6gvn5h28+VilKrrPoQVanw5PMw/TB0t5Ec4= github.com/pelletier/go-toml/v2 v2.2.4/go.mod h1:2gIqNv+qfxSVS7cM2xJQKtLSTLUE9V8t9Stt+h56mCY= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= @@ -308,12 +308,12 @@ gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -k8s.io/api v0.36.1 h1:XbL/EMj8K2aJpJtePmqUyQMsM0D4QI2pvl7YKJ20FTY= -k8s.io/api v0.36.1/go.mod h1:KOWo4ey3TINlXjeHVuwB3i+tXXnu+UcwFBHlI/9dvEo= +k8s.io/api v0.36.2 h1:TF6YDLIzKfccK7cq9YpTcGX8TJmEkHVRv78DM51fRYY= +k8s.io/api v0.36.2/go.mod h1:F4LbMO4brjZYh7yFkXWhynSvtB7YauxV4c+HHkNRGNg= k8s.io/apiextensions-apiserver v0.36.1 h1:6JfYmPUsuUIHuN+3QxutXYWj492RqF5fBSx67GYK5Ks= k8s.io/apiextensions-apiserver v0.36.1/go.mod h1:pLzZin90riwisdzKwv/GoTwENooytoIx5zWJb4Hkby8= -k8s.io/apimachinery v0.36.1 h1:G63Gjx2W+q0YD+72Vo8oY0nDnePVwnuzTmmy5ENrVSA= -k8s.io/apimachinery v0.36.1/go.mod h1:ibYOR00vW/I1kzvi5SF0dRuJ52BvKtfvRdOn35GPQ+8= +k8s.io/apimachinery v0.36.2 h1:0PE/W/WNy1UX61NLbXY5TMbJ6UwLL6E6lAPkYrKFxbQ= +k8s.io/apimachinery v0.36.2/go.mod h1:fvf/HOLXq9RId0rnDIbN1OEBvHXdQbLMM8nu0LcBUf4= k8s.io/apiserver v0.36.1 h1:iMS5V+rPUertv5P9RaqJgmHHTuh4quWpoxchvMUY+JY= k8s.io/apiserver v0.36.1/go.mod h1:Cby1PbLWztu0GDOxoO6iFOyyqIsziHNEW+w9zVQ22Kw= k8s.io/client-go v0.36.1 h1:FN/K8QIT2CEDt+2WB2HnWrUANZ50AP5GII43/SP2JR0= @@ -324,8 +324,8 @@ k8s.io/klog/v2 v2.140.0 h1:Tf+J3AH7xnUzZyVVXhTgGhEKnFqye14aadWv7bzXdzc= k8s.io/klog/v2 v2.140.0/go.mod h1:o+/RWfJ6PwpnFn7OyAG3QnO47BFsymfEfrz6XyYSSp0= k8s.io/kube-openapi v0.0.0-20260502001324-b7f5293f4787 h1:kHv8PETbPIVHfqKBYwTNNSjqChf/7xn3JOS3re+NWs8= k8s.io/kube-openapi v0.0.0-20260502001324-b7f5293f4787/go.mod h1:Cyq7UE0QtGe+Zo+/6XFrxiS4Mq0tLyQEONkFzSkfp9o= -k8s.io/streaming v0.36.1 h1:L+K68n4Gg940BGNNYtUBvL1WTLL0YnKT3s+P1MNAmR4= -k8s.io/streaming v0.36.1/go.mod h1:z6fV3D+NVkoeqRMtWwlUZK6U17SY/LqNzOxWL6GyR/s= +k8s.io/streaming v0.36.2 h1:NSKthPPg9UFSKsRauVJUVGH2Dvn8fhKmY4qrMkw/p98= +k8s.io/streaming v0.36.2/go.mod h1:z6fV3D+NVkoeqRMtWwlUZK6U17SY/LqNzOxWL6GyR/s= k8s.io/utils v0.0.0-20260507154919-ff6756f316d2 h1:wU4tMEhLGgIbLvXQb1cfN+EcM0wf7zC6CPF+C79jroc= k8s.io/utils v0.0.0-20260507154919-ff6756f316d2/go.mod h1:xDxuJ0whA3d0I4mf/C4ppKHxXynQ+fxnkmQH0vTHnuk= sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.34.0 h1:hSfpvjjTQXQY2Fol2CS0QHMNs/WI1MOSGzCm1KhM5ec= From 030b28c4b9aee205f7a43f1fcc4da363b50839d9 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 16 Jun 2026 16:02:37 +0200 Subject: [PATCH 032/134] fix(deps): update kubernetes monorepo to v0.36.2 (#958) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) | |---|---|---|---| | [k8s.io/apiextensions-apiserver](https://redirect.github.com/kubernetes/apiextensions-apiserver) | `v0.36.1` β†’ `v0.36.2` | ![age](https://developer.mend.io/api/mc/badges/age/go/k8s.io%2fapiextensions-apiserver/v0.36.2?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/go/k8s.io%2fapiextensions-apiserver/v0.36.1/v0.36.2?slim=true) | | [k8s.io/client-go](https://redirect.github.com/kubernetes/client-go) | `v0.36.1` β†’ `v0.36.2` | ![age](https://developer.mend.io/api/mc/badges/age/go/k8s.io%2fclient-go/v0.36.2?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/go/k8s.io%2fclient-go/v0.36.1/v0.36.2?slim=true) | Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- go.mod | 8 ++++---- go.sum | 16 ++++++++-------- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/go.mod b/go.mod index bb8184f..b27a5d1 100644 --- a/go.mod +++ b/go.mod @@ -17,9 +17,9 @@ require ( google.golang.org/grpc v1.81.1 gopkg.in/yaml.v3 v3.0.1 k8s.io/api v0.36.2 - k8s.io/apiextensions-apiserver v0.36.1 + k8s.io/apiextensions-apiserver v0.36.2 k8s.io/apimachinery v0.36.2 - k8s.io/client-go v0.36.1 + k8s.io/client-go v0.36.2 k8s.io/utils v0.0.0-20260507154919-ff6756f316d2 sigs.k8s.io/controller-runtime v0.24.1 sigs.k8s.io/kustomize/api v0.21.1 @@ -125,8 +125,8 @@ require ( google.golang.org/protobuf v1.36.12-0.20260120151049-f2248ac996af // indirect gopkg.in/evanphx/json-patch.v4 v4.13.0 // indirect gopkg.in/inf.v0 v0.9.1 // indirect - k8s.io/apiserver v0.36.1 // indirect - k8s.io/component-base v0.36.1 // indirect + k8s.io/apiserver v0.36.2 // indirect + k8s.io/component-base v0.36.2 // indirect k8s.io/klog/v2 v2.140.0 // indirect k8s.io/kube-openapi v0.0.0-20260502001324-b7f5293f4787 // indirect k8s.io/streaming v0.36.2 // indirect diff --git a/go.sum b/go.sum index 845e297..a737a56 100644 --- a/go.sum +++ b/go.sum @@ -310,16 +310,16 @@ gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= k8s.io/api v0.36.2 h1:TF6YDLIzKfccK7cq9YpTcGX8TJmEkHVRv78DM51fRYY= k8s.io/api v0.36.2/go.mod h1:F4LbMO4brjZYh7yFkXWhynSvtB7YauxV4c+HHkNRGNg= -k8s.io/apiextensions-apiserver v0.36.1 h1:6JfYmPUsuUIHuN+3QxutXYWj492RqF5fBSx67GYK5Ks= -k8s.io/apiextensions-apiserver v0.36.1/go.mod h1:pLzZin90riwisdzKwv/GoTwENooytoIx5zWJb4Hkby8= +k8s.io/apiextensions-apiserver v0.36.2 h1:3O5gqOj/dt2XWWbpMe+TXWpE9yU6pjM/tXxtHHJT/K4= +k8s.io/apiextensions-apiserver v0.36.2/go.mod h1:cL1tBWe8XSaP1H30iWKGo7hf6iAUUUJPEU70dskmAnA= k8s.io/apimachinery v0.36.2 h1:0PE/W/WNy1UX61NLbXY5TMbJ6UwLL6E6lAPkYrKFxbQ= k8s.io/apimachinery v0.36.2/go.mod h1:fvf/HOLXq9RId0rnDIbN1OEBvHXdQbLMM8nu0LcBUf4= -k8s.io/apiserver v0.36.1 h1:iMS5V+rPUertv5P9RaqJgmHHTuh4quWpoxchvMUY+JY= -k8s.io/apiserver v0.36.1/go.mod h1:Cby1PbLWztu0GDOxoO6iFOyyqIsziHNEW+w9zVQ22Kw= -k8s.io/client-go v0.36.1 h1:FN/K8QIT2CEDt+2WB2HnWrUANZ50AP5GII43/SP2JR0= -k8s.io/client-go v0.36.1/go.mod h1:s6rAnCtTGYDQnpNjEhSaISV+2O8jwruZ6m3QOYBFbtU= -k8s.io/component-base v0.36.1 h1:iG6GsELftXqTNG9HG6kiVjatSgAw1sf5pJ6R5a6N0kA= -k8s.io/component-base v0.36.1/go.mod h1:nf9XPlntRdqO6WMeEWAA5F93Y4ICZQdeT9GeqLDB3JI= +k8s.io/apiserver v0.36.2 h1:6vMnkmHZPeBloNkHUhmZYq7Ylv8WIB8xjyEl+eSt26E= +k8s.io/apiserver v0.36.2/go.mod h1:9PoQ2ikCytrZyZg11mGhLEF5m8Rgsb5FJmYJ4Wvnl1k= +k8s.io/client-go v0.36.2 h1:bfgxmFKc9CgqsgX4xKLAAdmTQlWee7Ob/HlDOrJ5TBI= +k8s.io/client-go v0.36.2/go.mod h1:1vgO4OAlfPnoLcb+Rze2GF5rAr14w8qjrYMoyXJzQj0= +k8s.io/component-base v0.36.2 h1:Z0VH80O7Ng0HDZnZj3WRR3urEGa0kTwmO8CwEwjVK1w= +k8s.io/component-base v0.36.2/go.mod h1:mGfFOA7Gwpdm1VW2cwSQYbiDIlz8GD2WGwH88QSeCyA= k8s.io/klog/v2 v2.140.0 h1:Tf+J3AH7xnUzZyVVXhTgGhEKnFqye14aadWv7bzXdzc= k8s.io/klog/v2 v2.140.0/go.mod h1:o+/RWfJ6PwpnFn7OyAG3QnO47BFsymfEfrz6XyYSSp0= k8s.io/kube-openapi v0.0.0-20260502001324-b7f5293f4787 h1:kHv8PETbPIVHfqKBYwTNNSjqChf/7xn3JOS3re+NWs8= From 8fe9b47ae1d5d3b8dd600725d52cc68cf206e19a Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 16 Jun 2026 17:08:46 +0200 Subject: [PATCH 033/134] chore(deps): refresh pip-compile outputs (#960) This PR contains the following updates: | Update | Change | |---|---| | lockFileMaintenance | All locks refreshed | Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- containers/sidecar-requirements.txt | 139 ++++++++++++++-------------- 1 file changed, 68 insertions(+), 71 deletions(-) diff --git a/containers/sidecar-requirements.txt b/containers/sidecar-requirements.txt index 0de45f5..158dfc4 100644 --- a/containers/sidecar-requirements.txt +++ b/containers/sidecar-requirements.txt @@ -22,13 +22,13 @@ barman==3.19.1 \ --hash=sha256:0a6a9e1babf97687732d8b2a3eb79ea95d55246a5257b9433865cb6e755221c0 \ --hash=sha256:2f71c4a1f1ba53f694cbdf838bb9906d8ba02b97d1fd3041196e8999bec7a1ee # via -r sidecar-requirements.in -boto3==1.43.26 \ - --hash=sha256:33f027b7911dffe84f4896b66024c228eb856f4cf8c1ff3465be0eae1f413731 \ - --hash=sha256:7c88bfbde6abcf062d04ac410a1cf4eaf8675f025f35f3ad9accc9b0224ce6b9 +boto3==1.43.30 \ + --hash=sha256:6b1ee360f363a457f67a8f5702f522043d8a32d67a97c362ad12075d8b5b531e \ + --hash=sha256:89e982463d94773136ccf69be77cccd54ff1ce351a6aadd1d3437fcb693681b5 # via barman -botocore==1.43.26 \ - --hash=sha256:eeb92265bae289555182a46341c998a656ab49c0dbdb762c65b30fe354fcc9e8 \ - --hash=sha256:fd9280ac868194afcee59c7def62e0031fb4b599f7ef85360d30c7e42357c1dc +botocore==1.43.30 \ + --hash=sha256:19ed560cb35ae43bf010d37da429a553c07063bf7efea0f2cb53be8a78d3e3d5 \ + --hash=sha256:26b1dded84d89b396180916f56900bd2ab1c0d545a66d1d2c3eeb40f772935b2 # via # boto3 # s3transfer @@ -390,56 +390,53 @@ cramjam==2.11.0 \ # via # barman # python-snappy -cryptography==48.0.1 \ - --hash=sha256:08a597acce1ff37f347400087776599e2348a3a8bc53b44120e463cd274efe4a \ - --hash=sha256:09f73a725d582cef64b91281a322cd798d14a33b2b6f2b7ad9531dc336d84c02 \ - --hash=sha256:0df56b056bc17c1b7d6821dfa65216e62bd232d8ab05eb3db44e71d235651471 \ - --hash=sha256:0ee6ea481db1ab889cba043ec1eda17bb9c1ea79db6722f779c3667f9f70322f \ - --hash=sha256:15254441469dd6bf027039453288e2072124f8b6603563f5d759e1c9b69273fa \ - --hash=sha256:266f4ee051abb2f725b74ef8072b521ce1feacf685a3364fa6a6b45548db791a \ - --hash=sha256:2c37f2461406063b417837f5f3daab668652acd82423efcd7f0a9f04be972de1 \ - --hash=sha256:32143b24adb918f078134e1e230f1eb8cc04886b92c28b5f0041aaf3e5699225 \ - --hash=sha256:33842cf0888951cef5bc7ac724ab844a42044c1727b967b7f8997289a0464f92 \ - --hash=sha256:3752f2dbc8f07a30aad2932c986cea495b03bb554887828225da104f732852b6 \ - --hash=sha256:39489bfca54c7a1f6b297efcd8bc608ab92d16c4ca631b0cad4da46724588b24 \ - --hash=sha256:3e4a1a3232eef2e6c732827d5722db29a0cc8b27af2a4d865b094cf954be9ca1 \ - --hash=sha256:3fd2ca57062b241c856670b073487d2e86c4637937ca5601e48f97bf8e11fc8f \ - --hash=sha256:42fcd8e26fe555d9b3577a135f5091fefa0aa4e99129c23fb56787a1bd4ada72 \ - --hash=sha256:43c5835e2cb98c8733d86f57d6fc879b613f5c3478607281c3e36daffc6dd8a6 \ - --hash=sha256:48fe40804d4caa2288f24e70ca8c64c42dd826da0ad7e4f1b41b2128d679e6c8 \ - --hash=sha256:4ab0a343c807bbcd90c971cd1ecf072937cd01847a9e002bef88fb47ac6be577 \ - --hash=sha256:4fdc69f8e4316bcf0c8c8ec1f26f285d12e8142d88d96c876a59a03be3f6ae67 \ - --hash=sha256:6184ca7b174f28d7c703f1290d4b297217c45355f77a98f67e9b7f14549ac54a \ - --hash=sha256:66fd0771e7b9c6dcd44cf1120690d2338d16d72795cf40cae2786a39eba65429 \ - --hash=sha256:6b2c0c3e6ccf3ade7750f836ef3ee36eea250cc467d45c256895573ac08cc6f1 \ - --hash=sha256:735824ec41b7f74a7c45fb1591349333e4c696cb6c044e5f46356e560143e4cd \ - --hash=sha256:7e234ac052af99f2700826a5c29ea99d9c1b1f80341cde62d11c8154dc8e0bd9 \ - --hash=sha256:869c3b8a53bfe27147832df48b32adadf558249d50e76cb3769d40e986b13265 \ - --hash=sha256:86be3b1b0b6bf09482fb50a979c508d2950ed95f5621ec77f4e385962006b83a \ - --hash=sha256:86fe77abb1bd87afb251d4d02ada7ecf53a32cee9b67d976abb2e45a13297475 \ - --hash=sha256:88c852a0ae366e262e5a1744b685e6a433dc8788dd2a277e418bf4904203609d \ - --hash=sha256:8ace4507d1e6533c125f4fac754f8bb8b6a74c08e92179dabd7e16571a3efbf3 \ - --hash=sha256:92a46e1d638daa264ba2971c0b0489c9409787943efae4d60ffda3d091ef832c \ - --hash=sha256:9621de99d2da096006b629979efd8ae7eb2d8b822488d0c89ee4000c306c59b1 \ - --hash=sha256:9a49ca6c81417f6a5edb50375a60cccdd70fa0a91a5211829dbea74eba94d2ac \ - --hash=sha256:9bd3f92d76217892b15df84ca256c2c113d386fdda7a7d8691aeeced976507c6 \ - --hash=sha256:9de21387aa95e2a895823d0745b430bed4f33503ba9ab5e0b5311f33e37d66d2 \ - --hash=sha256:b024e784ad6c077ee0147b35ea9cbfc1e34e1fd4c1dcca214c2794d73a12df08 \ - --hash=sha256:b4e391975f038e66432328639620a4aff2d307513b004f1ca06d6225bced815c \ - --hash=sha256:b74ca3b8e5ecdd833bf6a002ca41b4793bb27fb8f1c06ffaf2643c9e9140e31b \ - --hash=sha256:b7a2d1a937a738a881737cec135a38bb61470589b17515b9f73f571d0ae10401 \ - --hash=sha256:b9a32b876490d66c8bcc9963ef220199569748434ab01a9d6aaeabf88e7f5158 \ - --hash=sha256:bd81490cd5801d755cf97bb68ac191f14b708470b1c7cf4580f669b9c9264cd8 \ - --hash=sha256:c1400da5e32a43253392277eac7490a60e497d810a63dd5608d71bbd7af507c9 \ - --hash=sha256:d069066deead00ac7f090be101be875a06855908f7ec004c27b8fefb4acfb411 \ - --hash=sha256:d5d30989c6917b478b5817902e85fddaea2261efa8648383d965381ccb9e1ac4 \ - --hash=sha256:df637c05205ea7c1d7fbcbe54bbfea648a52951155f997af13d895d0ecc96991 \ - --hash=sha256:e361afba8918070d376df76f408a4f67fec0ee9cff81a99e48fe9a233ef59e17 \ - --hash=sha256:eb86ce1af36fe65041b6db9a8bb064ee621a7e5fded0f80d475ec243477cd242 \ - --hash=sha256:f0d27a5696721ef7a672b8c810f6aded391058e0b9486e63e6d93baf765da691 \ - --hash=sha256:f2ceef93cb096aa3c4cc4b5c94ca6131f9196d28c64d6111533402a9b2054d41 \ - --hash=sha256:f817adc181390bd54f2f700107a7419040fb7c1bdf2fc26f36551a06a68c3345 \ - --hash=sha256:fe0180af5bf9236518a087e35bf2d9a347d5f5f51e63c579d683ddff424e3d46 +cryptography==49.0.0 \ + --hash=sha256:026ac7423e6fa66872d3bf889be5974507da3944f866f704fa200eadacd00001 \ + --hash=sha256:07cab27cc7b7e0fd28e5e26bb9eeedde5c135c868b46de4a27845abe94af6122 \ + --hash=sha256:084ef1af862eb07ec46d25f68689f2102a9fc0e05ce7b80f14f5fe51e4eef0f6 \ + --hash=sha256:0b82e28ee398a386f0807bba7884d30f25218855690f45115831bcce5d90822c \ + --hash=sha256:0e959b578856a3924bc0cbb710fc12c387b9412a951389f3ca61704a9e25f325 \ + --hash=sha256:0f21641cf4b30fca7aee061ced0ec7ad7b073518088b7c9969a297c0ae796c69 \ + --hash=sha256:196ecd6a36e4e9aa10270393bb98d8df88fccee0bf1e5128b91ae4eb4375896d \ + --hash=sha256:2400ef9c9e2299a25614eb1dea3db54a69b1349efd043bfac9c67630d136df36 \ + --hash=sha256:28d8b15e6275f12c8a207dc309dfa957903c927d08d0cc937ee3f63f200693cc \ + --hash=sha256:2afe9051da7ae7bd5905da5a949280c7d2bb75682e188f650a9d0f2756b834c6 \ + --hash=sha256:2eda353d8a27bcbcaa4cbed18994a74ab4d19a2ca897db188ea269ab9b71419b \ + --hash=sha256:32703d93296f5c1f4b53349ad3a250c2cae0fdecd3a3dd5d47e616d8d616af27 \ + --hash=sha256:33cd0565932807baddb67b96dbee92f2c374b5c89dee09fd74079aeb8c8dba61 \ + --hash=sha256:35b151772baff2c74cba7fa290ceaff4c3b11c0c881eb93eb5dbc05a7cfbba18 \ + --hash=sha256:36d1709f992593689b45bda411498d62c6e365f2ca00b84657d4dadd24de16db \ + --hash=sha256:42b0684e0e40cf26122427802486f6d93aea593612603a94fbf260c7eb1e9c1b \ + --hash=sha256:4ae387c9cb68ea569ca17e490d66d8142b81c3cc814bf179974b7d146e490bbb \ + --hash=sha256:53ecee2e23f7169b6117e99fc8a944e5e50f79e69758a83b52a00cb98ab2b2d2 \ + --hash=sha256:66ec79c3904820572d7e987abdf304281f141d37ad9a489b8e97066e7b9b6459 \ + --hash=sha256:67e1d20ad9ef3a563c59ef22e7a8a0b8210bd26604369ea4a30a7c66aefe504e \ + --hash=sha256:6f2debedf9ca60cf1d5bd466475638af5130f89965605cd818484d19987d3a21 \ + --hash=sha256:6fc361c34fb6aac015ce19435876635e5c6d21db31998b0920f675f131e043b8 \ + --hash=sha256:73a205dce83953d131a4aa1e0fd917a2fd1c5b1eef251e9d7152efefcbf5caf7 \ + --hash=sha256:7abcee80084cda3f7691f3eb1ce480d8df49cec637b429aa35986c1de71738aa \ + --hash=sha256:8c25ceb16df5b9435f3f6a9829204985b0e0cbee3b48aacd432c7d2c850b44d9 \ + --hash=sha256:966fe0e9c67490071f14c0d2b1cb2dfb3023c5ce39457343931415f08382f2db \ + --hash=sha256:9e82dcc8e56052715fb18b2429e3bca4823b1629136a2084fc45a9a5cecb9b64 \ + --hash=sha256:b20133d204d2bb56ba047642199603876c872026ca53e79c35b83772ab2cc505 \ + --hash=sha256:b39efa323140595abd3ecca8529d321ae50f55f3aa3ba9cc81ea56a6011953d5 \ + --hash=sha256:b47db11c2c3525083296069b98ac5221907455e989ae0c2e3008bde851921615 \ + --hash=sha256:b87e65d263b3e5d3bb92a57e2a6638e2f31110fa7aa890c7b2dbba42248d0a3f \ + --hash=sha256:b970c6da94d5bb18629db453d14f2a1300f6bf59b61e9b82377931ef95504866 \ + --hash=sha256:be9fcb48a55f023493482827d4f459bd263cc20efde64f204b97c123201850c6 \ + --hash=sha256:c2bc30226390d60ea19d9f82b19db005fe0452154a23c1c410c12ea801e43561 \ + --hash=sha256:c83782480a4a9da4d0feb51950131ba32e12e70813848b3343f6e18c28a66838 \ + --hash=sha256:cbc77da8c523d5abd028635ba850a6966fcee2c82e2bf65a41d1d8afe0f98be9 \ + --hash=sha256:ccac2bfebc306b862133e3bb71f3f6ee8bb525240089b2d952e4144b3a6d5da7 \ + --hash=sha256:d0527ce944105f257f605a827d6ebead966c752038b6e8656abb9c5edee6fc68 \ + --hash=sha256:d8ecde755e2e91bf773fc94e8c9d730cd7f2007004cb492263a794ec3899a1c8 \ + --hash=sha256:e3fb64c420688e5319ae25113a354015abbd8dffbfbc41781a1ea66fc7622ac3 \ + --hash=sha256:e5dfc1e64de5677cec922ffa8da89c546d0415bf6efdf081842e5d44c84e1f0e \ + --hash=sha256:ec5e529fb80935c94fe7b729f9972b50e351a0e6b50aa294fd5cabb109fcc29a \ + --hash=sha256:f37d847238971164fdbc68ade6f6574aecc9c0af714190e2083429ff68f4ce9d \ + --hash=sha256:f78ff2c9ed8dc2d036b0f4d640e22522213d047c1b14e61205a7e55c80a494d4 \ + --hash=sha256:f89660a348f4f78a92366240a61404e337586ef7f5909a2fef59ca88ef505493 \ + --hash=sha256:fc1e275c2f1d97b1a6450b8b0ea3ebfa6e087a611c2b26cb2404d48588abab7b # via # azure-identity # azure-storage-blob @@ -452,9 +449,9 @@ google-api-core==2.31.0 \ # via # google-cloud-core # google-cloud-storage -google-auth==2.53.0 \ - --hash=sha256:6e7449917c599b35126a99ec268ec6880301f2fea41dce198fe8fd83ff642b68 \ - --hash=sha256:e7e6aa16f6bee7b2b264830fd04f08087a1d5a836df516251a5d15327b246c9c +google-auth==2.55.0 \ + --hash=sha256:a17cef9dedf98c4ebae2fb0c48c8f75952c877cbc2efe09f329ef16c2783d88a \ + --hash=sha256:fcd3a130f575fa36403d38774af1c64a4fbfbca09215f0589d2372b5119697cb # via # google-api-core # google-cloud-core @@ -463,9 +460,9 @@ google-cloud-core==2.6.0 \ --hash=sha256:6d63ac8e5eca6d9e4319d0a1e2265fadcd7f1049904378caecfa01cf52dd869e \ --hash=sha256:e76149739f90fac1fc6757c09f47eaccb3145b54adbd7759b0f7c4b235f46c83 # via google-cloud-storage -google-cloud-storage==3.11.0 \ - --hash=sha256:498bf37c999028f69a245f586b5e50d89f59df1fafc0e3a93783ac56be2a456b \ - --hash=sha256:cfcc33aa6b899ec9dd1771286f8e79fbed5c35c1c174718071b079aa827f37c2 +google-cloud-storage==3.12.0 \ + --hash=sha256:03ae9847c6babb368f35f054126b8a08cbc0e3266efb990eb17b9926a45cf3be \ + --hash=sha256:3880773754ddf7c27567b04e2a4d193950b6b99429f37b9097d873686e95b09c # via barman google-crc32c==1.8.0 \ --hash=sha256:014a7e68d623e9a4222d663931febc3033c5c7c9730785727de2a81f87d5bab8 \ @@ -599,15 +596,15 @@ proto-plus==1.28.0 \ --hash=sha256:38e5696342835b08fc116f30a25665b29531cda9d5d5643e9b81fc312385abd9 \ --hash=sha256:a630604310899e73c59ec302e5765c058d412b2f090b9c79c8822589f14955b8 # via google-api-core -protobuf==7.35.0 \ - --hash=sha256:4c4617b83ade0e279d1d2bfe04025a1adb87f9ed657de038620dc0ff959357f6 \ - --hash=sha256:4cbf5cc286130e06a6c9bbefac442431173906dfcc979712183d4adcc01b37ee \ - --hash=sha256:66be6c513931c794fa92c080ffee41671390da3d79da219cf9c0c0907f035dda \ - --hash=sha256:6c0f98f10c8a05ea30f8993dfef2de093d27b490fdae78bb60c8343795d55011 \ - --hash=sha256:a2efd84605f41e559f1881b0912b44099d0a2ac9bf46b3474823f10fb393b0e6 \ - --hash=sha256:c13f325cf242bad135c350629eeb5d54b24228eb472fb3e2e9ebbd4c5dc20ca0 \ - --hash=sha256:f05bcadf9a2a6b8dda047007075135fb7d08c73d9177aabc067e1be46881a201 \ - --hash=sha256:fcbe42a4ac09d3ec9c987ddfcd956afd0b15f1ff613bd8371bde9405ffd5c8e5 +protobuf==7.35.1 \ + --hash=sha256:11d6b0ec246892d85215b0a13ca6e0233cf5284b68f0ac02646427f4ff88a799 \ + --hash=sha256:230a75ddfc2de4806e56696ce9640c1cdfdb6543b7cfce98d42a4c0a0e7bdb87 \ + --hash=sha256:24f857477359a85c0c235261b8ba905fd51b2562f4a64ca1df5473f29850cbf6 \ + --hash=sha256:353652e4efd0bca5b5fc2656abf8307ef351f0cf938c9eba09f0e09c20a25c30 \ + --hash=sha256:4bc97768d8fe4ad6743c8a19403e314511ed9f6d13205b687e52421c023ac1b9 \ + --hash=sha256:74758715c53d7158fb76caf4f0cfdacc5329a4b1bb994f865d6cf302d413a1c4 \ + --hash=sha256:b73f9489a4b8b1c9cb1f8ed951c736392592edb24b9d6819f36d2e10b171d5b4 \ + --hash=sha256:ce115a26fe0c39a2c29973d914d327e516a6455464489fe3cd1e51a1b354f81a # via # google-api-core # googleapis-common-protos From 55ee7448a65c8c426fe8c1916affa00f8c0a565a Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 16 Jun 2026 17:41:53 +0200 Subject: [PATCH 034/134] chore(deps): update all cloudnative-pg daggerverse dependencies to 0a3b65e (#962) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Update | Change | |---|---|---| | commitlint | digest | `e7f1192` β†’ `0a3b65e` | | controller-gen | digest | `e7f1192` β†’ `0a3b65e` | | crd-gen-refs | digest | `e7f1192` β†’ `0a3b65e` | | spellcheck | digest | `e7f1192` β†’ `0a3b65e` | | uncommitted | digest | `e7f1192` β†’ `0a3b65e` | Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Taskfile.yml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/Taskfile.yml b/Taskfile.yml index cee1cb2..7b9df46 100644 --- a/Taskfile.yml +++ b/Taskfile.yml @@ -46,7 +46,7 @@ tasks: - wordlist-ordered env: # renovate: datasource=git-refs depName=spellcheck lookupName=https://github.com/cloudnative-pg/daggerverse currentValue=main - DAGGER_SPELLCHECK_SHA: e7f11923ad316021146ee34e3db9dc2d66cbb2d1 + DAGGER_SPELLCHECK_SHA: 0a3b65e4cad754d9abdecbe5cf8d443dba63477c cmds: - > GITHUB_REF= dagger -s call -m github.com/cloudnative-pg/daggerverse/spellcheck@${DAGGER_SPELLCHECK_SHA} @@ -60,7 +60,7 @@ tasks: desc: Check for conventional commits env: # renovate: datasource=git-refs depName=commitlint lookupName=https://github.com/cloudnative-pg/daggerverse currentValue=main - DAGGER_COMMITLINT_SHA: e7f11923ad316021146ee34e3db9dc2d66cbb2d1 + DAGGER_COMMITLINT_SHA: 0a3b65e4cad754d9abdecbe5cf8d443dba63477c cmds: - > GITHUB_REF= dagger -s call -m github.com/cloudnative-pg/daggerverse/commitlint@${DAGGER_COMMITLINT_SHA} @@ -74,7 +74,7 @@ tasks: - wordlist-ordered env: # renovate: datasource=git-refs depName=uncommitted lookupName=https://github.com/cloudnative-pg/daggerverse currentValue=main - DAGGER_UNCOMMITTED_SHA: e7f11923ad316021146ee34e3db9dc2d66cbb2d1 + DAGGER_UNCOMMITTED_SHA: 0a3b65e4cad754d9abdecbe5cf8d443dba63477c cmds: - GITHUB_REF= dagger -s call -m github.com/cloudnative-pg/daggerverse/uncommitted@${DAGGER_UNCOMMITTED_SHA} check-uncommitted --source . stdout sources: @@ -86,7 +86,7 @@ tasks: - controller-gen env: # renovate: datasource=git-refs depName=crd-gen-refs lookupName=https://github.com/cloudnative-pg/daggerverse currentValue=main - DAGGER_CRDGENREF_SHA: e7f11923ad316021146ee34e3db9dc2d66cbb2d1 + DAGGER_CRDGENREF_SHA: 0a3b65e4cad754d9abdecbe5cf8d443dba63477c # renovate: datasource=go depName=github.com/elastic/crd-ref-docs CRDREFDOCS_VERSION: v0.3.0 cmds: @@ -381,7 +381,7 @@ tasks: run: once env: # renovate: datasource=git-refs depName=controller-gen lookupName=https://github.com/cloudnative-pg/daggerverse currentValue=main - DAGGER_CONTROLLER_GEN_SHA: e7f11923ad316021146ee34e3db9dc2d66cbb2d1 + DAGGER_CONTROLLER_GEN_SHA: 0a3b65e4cad754d9abdecbe5cf8d443dba63477c cmds: - > GITHUB_REF= dagger -s call -m github.com/cloudnative-pg/daggerverse/controller-gen@${DAGGER_CONTROLLER_GEN_SHA} From 9fbbcf2a841962087f1c7eb49caacec215d88b6c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niccol=C3=B2=20Fei?= Date: Wed, 17 Jun 2026 10:34:18 +0200 Subject: [PATCH 035/134] chore: automate cert-manager version update (#961) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: NiccolΓ² Fei --- renovate.json5 | 1 + test/e2e/internal/certmanager/certmanager.go | 4 ++-- test/e2e/internal/e2etestenv/main.go | 3 +-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/renovate.json5 b/renovate.json5 index 1aaa515..b5b8a32 100644 --- a/renovate.json5 +++ b/renovate.json5 @@ -53,6 +53,7 @@ ], matchStrings: [ '//\\s*renovate:\\s*datasource=(?[a-z-.]+?)\\s+depName=(?[^\\s]+?)(?:\\s+versioning=(?[^\\s]+?))?\\s*\\n\\s*//\\s*Version:\\s*(?[^\\s]+?)\\s*\\n\\s*Image:\\s*"[^@]+@(?sha256:[a-f0-9]+)"', + '//\\s*renovate:\\s*datasource=(?[a-z-.]+?)\\s+depName=(?[^\\s]+?)(?:\\s+versioning=(?[^\\s]+?))?\\s*\\n\\s*const\\s+\\w+\\s*=\\s*"(?[^"]+?)"', ], }, { diff --git a/test/e2e/internal/certmanager/certmanager.go b/test/e2e/internal/certmanager/certmanager.go index 02d0466..c00a5b8 100644 --- a/test/e2e/internal/certmanager/certmanager.go +++ b/test/e2e/internal/certmanager/certmanager.go @@ -55,9 +55,9 @@ func WithIgnoreExistingResources(ignore bool) InstallOption { } } -// TODO: renovate - // DefaultVersion is the default version of cert-manager to install. +// +// renovate: datasource=github-releases depName=cert-manager/cert-manager const DefaultVersion = "v1.15.1" // Install installs cert-manager using kubectl. diff --git a/test/e2e/internal/e2etestenv/main.go b/test/e2e/internal/e2etestenv/main.go index 17b4ae0..5400d36 100644 --- a/test/e2e/internal/e2etestenv/main.go +++ b/test/e2e/internal/e2etestenv/main.go @@ -97,9 +97,8 @@ func WithIgnoreExistingResources(ignore bool) SetupOption { } func defaultSetupOptions() SetupOptions { - // TODO: renovate return SetupOptions{ - CertManagerVersion: "v1.15.1", + CertManagerVersion: certmanager.DefaultVersion, } } From f4326b50c4543539636e424bb423cadfda8b819a Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 17 Jun 2026 11:34:47 +0200 Subject: [PATCH 036/134] chore(deps): update dependency cert-manager/cert-manager to v1.20.2 (#967) Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- test/e2e/internal/certmanager/certmanager.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/e2e/internal/certmanager/certmanager.go b/test/e2e/internal/certmanager/certmanager.go index c00a5b8..404d85e 100644 --- a/test/e2e/internal/certmanager/certmanager.go +++ b/test/e2e/internal/certmanager/certmanager.go @@ -58,7 +58,7 @@ func WithIgnoreExistingResources(ignore bool) InstallOption { // DefaultVersion is the default version of cert-manager to install. // // renovate: datasource=github-releases depName=cert-manager/cert-manager -const DefaultVersion = "v1.15.1" +const DefaultVersion = "v1.20.2" // Install installs cert-manager using kubectl. func Install(ctx context.Context, cl client.Client, opts ...InstallOption) error { From 007cf8a892de6e6ec0d9ce6360f121db6511ac14 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 18 Jun 2026 11:50:57 +0200 Subject: [PATCH 037/134] chore(deps): update dependency dagger/dagger to v0.21.7 (#969) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Update | Change | |---|---|---| | [dagger/dagger](https://redirect.github.com/dagger/dagger) | patch | `0.21.6` β†’ `0.21.7` | --- > [!WARNING] > Some dependencies could not be looked up. Check the [Dependency Dashboard](../issues/7) for more information. --- ### Release Notes
dagger/dagger (dagger/dagger) ### [`v0.21.7`](https://redirect.github.com/dagger/dagger/blob/HEAD/CHANGELOG.md#v0217---2026-06-17) [Compare Source](https://redirect.github.com/dagger/dagger/compare/v0.21.6...v0.21.7) ##### Changed - Bump default CNI IP address pool size to reduce address exhaustion under high container concurrency. by [@​sipsma](https://redirect.github.com/sipsma) in [#​13394](https://redirect.github.com/dagger/dagger/pull/13394) - Bump Dang to v2.1.1, moving JSON encoding behind the `JSON` namespace (with a deprecated top-level `toJSON`) and picking up constructor scope and nullable input fixes. by [@​vito](https://redirect.github.com/vito) in [#​13482](https://redirect.github.com/dagger/dagger/pull/13482) ##### Fixed - `.env` file handling so non-matching variables are kept as hidden expansion context instead of being dropped, allowing later variables to expand against them. by [@​marcosnils](https://redirect.github.com/marcosnils) in [#​13490](https://redirect.github.com/dagger/dagger/pull/13490) - Filesync so syncing a re-included file under a gitignored directory (e.g. `foo/` ignored with `!foo/bar.txt`) no longer fails with `no such file or directory`; ignored parent dirs are now created on demand for visible descendants. by [@​grouville](https://redirect.github.com/grouville) in [#​13439](https://redirect.github.com/dagger/dagger/pull/13439) - A concurrent map panic during GC by guarding session client map iteration, preventing fatal `concurrent map iteration and map write` crashes. by [@​sipsma](https://redirect.github.com/sipsma) in [#​13474](https://redirect.github.com/dagger/dagger/pull/13474) - Go SDK codegen so SDK auth config is forwarded to typedef generation, allowing modules with private transitive Go dependencies to resolve during codegen. by [@​grouville](https://redirect.github.com/grouville) in [#​13457](https://redirect.github.com/dagger/dagger/pull/13457) - Core enum handling to preserve conventional enum member names. by [@​shykes](https://redirect.github.com/shykes) in [#​13435](https://redirect.github.com/dagger/dagger/pull/13435) - The Apple `container` driver to honor the privileged option by granting all capabilities (`--cap-add ALL`), so the engine can bind-mount `/etc/resolv.conf` on startup with `container` 1.0.0's reduced default capability set. by [@​eunomie](https://redirect.github.com/eunomie) in [#​13460](https://redirect.github.com/dagger/dagger/pull/13460) - Dang directive argument resolution so `@cache` (and other directive) arguments resolve against the declaring type's file scope, fixing `FunctionCachePolicy not found in env` errors in multi-file modules. by [@​vito](https://redirect.github.com/vito) in [#​13455](https://redirect.github.com/dagger/dagger/pull/13455) - The report-mode heartbeat so it waits for its goroutine to exit before final render, avoiding interleaved output. by [@​kpenfound](https://redirect.github.com/kpenfound) in [#​13425](https://redirect.github.com/dagger/dagger/pull/13425) - Nullable result unwrapping for SDK input so nullable values are passed correctly into SDK functions. by [@​shykes](https://redirect.github.com/shykes) in [#​13401](https://redirect.github.com/dagger/dagger/pull/13401) ##### What to do next? - Read the [documentation](https://docs.dagger.io) - Join our [Discord server](https://discord.gg/dagger-io) - Follow us on [Twitter](https://twitter.com/dagger_io)
--- ### Configuration πŸ“… **Schedule**: (UTC) - Branch creation - At any time (no schedule defined) - Automerge - At any time (no schedule defined) 🚦 **Automerge**: Enabled. β™» **Rebasing**: Never, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/cloudnative-pg/plugin-barman-cloud). Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/ci.yml | 2 +- .github/workflows/release-please.yml | 2 +- .github/workflows/release-publish.yml | 2 +- Taskfile.yml | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index d2a2c24..9b49caa 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -44,7 +44,7 @@ jobs: - name: Install Dagger env: # renovate: datasource=github-tags depName=dagger/dagger versioning=semver - DAGGER_VERSION: 0.21.6 + DAGGER_VERSION: 0.21.7 run: | curl -L https://dl.dagger.io/dagger/install.sh | BIN_DIR=$HOME/.local/bin sh - name: Run CI task diff --git a/.github/workflows/release-please.yml b/.github/workflows/release-please.yml index 0e294c5..0f466b3 100644 --- a/.github/workflows/release-please.yml +++ b/.github/workflows/release-please.yml @@ -31,7 +31,7 @@ jobs: - name: Install Dagger env: # renovate: datasource=github-tags depName=dagger/dagger versioning=semver - DAGGER_VERSION: 0.21.6 + DAGGER_VERSION: 0.21.7 run: | curl -L https://dl.dagger.io/dagger/install.sh | BIN_DIR=$HOME/.local/bin sh - name: Create image and manifest diff --git a/.github/workflows/release-publish.yml b/.github/workflows/release-publish.yml index dc63522..e5a46d1 100644 --- a/.github/workflows/release-publish.yml +++ b/.github/workflows/release-publish.yml @@ -21,7 +21,7 @@ jobs: - name: Install Dagger env: # renovate: datasource=github-tags depName=dagger/dagger versioning=semver - DAGGER_VERSION: 0.21.6 + DAGGER_VERSION: 0.21.7 run: | curl -L https://dl.dagger.io/dagger/install.sh | BIN_DIR=$HOME/.local/bin sh - name: Create image and manifest diff --git a/Taskfile.yml b/Taskfile.yml index 7b9df46..710e3d3 100644 --- a/Taskfile.yml +++ b/Taskfile.yml @@ -206,7 +206,7 @@ tasks: - start-build-network vars: # renovate: datasource=github-tags depName=dagger/dagger versioning=semver - DAGGER_VERSION: 0.21.6 + DAGGER_VERSION: 0.21.7 DAGGER_ENGINE_IMAGE: registry.dagger.io/engine:v{{ .DAGGER_VERSION }} cmds: - > From 2fa63c4bc28c03fbb79e3751a001868e991b8917 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 18 Jun 2026 12:59:59 +0200 Subject: [PATCH 038/134] fix(deps): update all non-major go dependencies to 592f761 (#972) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [github.com/cloudnative-pg/barman-cloud](https://redirect.github.com/cloudnative-pg/barman-cloud) | require | digest | `2638188` β†’ `592f761` | --- > [!WARNING] > Some dependencies could not be looked up. Check the [Dependency Dashboard](../issues/7) for more information. --- ### Configuration πŸ“… **Schedule**: (UTC) - Branch creation - At any time (no schedule defined) - Automerge - At any time (no schedule defined) 🚦 **Automerge**: Enabled. β™» **Rebasing**: Never, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/cloudnative-pg/plugin-barman-cloud). Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index b27a5d1..2c5708c 100644 --- a/go.mod +++ b/go.mod @@ -5,7 +5,7 @@ go 1.26.3 require ( github.com/cert-manager/cert-manager v1.20.2 github.com/cloudnative-pg/api v1.29.1 - github.com/cloudnative-pg/barman-cloud v0.5.2-0.20260616073548-263818883a1c + github.com/cloudnative-pg/barman-cloud v0.5.2-0.20260618095003-592f76199f14 github.com/cloudnative-pg/cloudnative-pg v1.29.1 github.com/cloudnative-pg/cnpg-i v0.5.0 github.com/cloudnative-pg/cnpg-i-machinery v0.4.2 diff --git a/go.sum b/go.sum index a737a56..21f9d12 100644 --- a/go.sum +++ b/go.sum @@ -20,8 +20,8 @@ github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UF github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/cloudnative-pg/api v1.29.1 h1:FWr8S7EQeOfdhYXyr2cof8wUXLARZiiQt5Qa6ltED7w= github.com/cloudnative-pg/api v1.29.1/go.mod h1:QtWF3yzSvIfORMHaSkPAk/o3bhCJwEHJgN3riyRiz3o= -github.com/cloudnative-pg/barman-cloud v0.5.2-0.20260616073548-263818883a1c h1:5ILvYitKJ3+yT+bDGQM+21QOpa/a8ayCdTqtbWpYJtk= -github.com/cloudnative-pg/barman-cloud v0.5.2-0.20260616073548-263818883a1c/go.mod h1:vmW7blcg0BECd/9YKqn7NdiF7jz9BlXCWJcGJpzzBCg= +github.com/cloudnative-pg/barman-cloud v0.5.2-0.20260618095003-592f76199f14 h1:ZIMJztHWAnZzs7j0JRoUd7Nhhd8pnOrutKMySN8Lflg= +github.com/cloudnative-pg/barman-cloud v0.5.2-0.20260618095003-592f76199f14/go.mod h1:vmW7blcg0BECd/9YKqn7NdiF7jz9BlXCWJcGJpzzBCg= github.com/cloudnative-pg/cloudnative-pg v1.29.1 h1:ZNEt1TMlnQKXI1kho2UqQuqdfvIvjGln4kN7C1lsmGA= github.com/cloudnative-pg/cloudnative-pg v1.29.1/go.mod h1:Sbgx9jVmkle4/gR2U5JHrzDd74sRPOBHDtPkvncg5v8= github.com/cloudnative-pg/cnpg-i v0.5.0 h1:/TOzpNT6cwNgrpftTtrnLKdoHgMwd+88vZgXjlVgXeE= From 719034947061f72ce8fcc919f5e209aa7fd7d874 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 18 Jun 2026 14:09:58 +0200 Subject: [PATCH 039/134] fix(deps): update all non-major go dependencies to 53ffbf0 (#973) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [github.com/cloudnative-pg/barman-cloud](https://redirect.github.com/cloudnative-pg/barman-cloud) | require | digest | `592f761` β†’ `53ffbf0` | --- ### Configuration πŸ“… **Schedule**: (UTC) - Branch creation - At any time (no schedule defined) - Automerge - At any time (no schedule defined) 🚦 **Automerge**: Enabled. β™» **Rebasing**: Never, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/cloudnative-pg/plugin-barman-cloud). Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 2c5708c..b0a0e98 100644 --- a/go.mod +++ b/go.mod @@ -5,7 +5,7 @@ go 1.26.3 require ( github.com/cert-manager/cert-manager v1.20.2 github.com/cloudnative-pg/api v1.29.1 - github.com/cloudnative-pg/barman-cloud v0.5.2-0.20260618095003-592f76199f14 + github.com/cloudnative-pg/barman-cloud v0.5.2-0.20260618100956-53ffbf09b567 github.com/cloudnative-pg/cloudnative-pg v1.29.1 github.com/cloudnative-pg/cnpg-i v0.5.0 github.com/cloudnative-pg/cnpg-i-machinery v0.4.2 diff --git a/go.sum b/go.sum index 21f9d12..1543c9a 100644 --- a/go.sum +++ b/go.sum @@ -20,8 +20,8 @@ github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UF github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/cloudnative-pg/api v1.29.1 h1:FWr8S7EQeOfdhYXyr2cof8wUXLARZiiQt5Qa6ltED7w= github.com/cloudnative-pg/api v1.29.1/go.mod h1:QtWF3yzSvIfORMHaSkPAk/o3bhCJwEHJgN3riyRiz3o= -github.com/cloudnative-pg/barman-cloud v0.5.2-0.20260618095003-592f76199f14 h1:ZIMJztHWAnZzs7j0JRoUd7Nhhd8pnOrutKMySN8Lflg= -github.com/cloudnative-pg/barman-cloud v0.5.2-0.20260618095003-592f76199f14/go.mod h1:vmW7blcg0BECd/9YKqn7NdiF7jz9BlXCWJcGJpzzBCg= +github.com/cloudnative-pg/barman-cloud v0.5.2-0.20260618100956-53ffbf09b567 h1:vqyRgqs1qDhOO2ZUEx3X4PKJGRnfwXN5xU5KSdjrnps= +github.com/cloudnative-pg/barman-cloud v0.5.2-0.20260618100956-53ffbf09b567/go.mod h1:vmW7blcg0BECd/9YKqn7NdiF7jz9BlXCWJcGJpzzBCg= github.com/cloudnative-pg/cloudnative-pg v1.29.1 h1:ZNEt1TMlnQKXI1kho2UqQuqdfvIvjGln4kN7C1lsmGA= github.com/cloudnative-pg/cloudnative-pg v1.29.1/go.mod h1:Sbgx9jVmkle4/gR2U5JHrzDd74sRPOBHDtPkvncg5v8= github.com/cloudnative-pg/cnpg-i v0.5.0 h1:/TOzpNT6cwNgrpftTtrnLKdoHgMwd+88vZgXjlVgXeE= From f7f0136520b1032698b26e33e6eff1caa01173f5 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 18 Jun 2026 16:24:04 +0200 Subject: [PATCH 040/134] fix(deps): update k8s.io/utils digest to a95e086 (#968) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [k8s.io/utils](https://redirect.github.com/kubernetes/utils) | require | digest | `ff6756f` β†’ `a95e086` | Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index b0a0e98..deea278 100644 --- a/go.mod +++ b/go.mod @@ -20,7 +20,7 @@ require ( k8s.io/apiextensions-apiserver v0.36.2 k8s.io/apimachinery v0.36.2 k8s.io/client-go v0.36.2 - k8s.io/utils v0.0.0-20260507154919-ff6756f316d2 + k8s.io/utils v0.0.0-20260617174310-a95e086a2553 sigs.k8s.io/controller-runtime v0.24.1 sigs.k8s.io/kustomize/api v0.21.1 sigs.k8s.io/kustomize/kyaml v0.21.1 diff --git a/go.sum b/go.sum index 1543c9a..35e243b 100644 --- a/go.sum +++ b/go.sum @@ -326,8 +326,8 @@ k8s.io/kube-openapi v0.0.0-20260502001324-b7f5293f4787 h1:kHv8PETbPIVHfqKBYwTNNS k8s.io/kube-openapi v0.0.0-20260502001324-b7f5293f4787/go.mod h1:Cyq7UE0QtGe+Zo+/6XFrxiS4Mq0tLyQEONkFzSkfp9o= k8s.io/streaming v0.36.2 h1:NSKthPPg9UFSKsRauVJUVGH2Dvn8fhKmY4qrMkw/p98= k8s.io/streaming v0.36.2/go.mod h1:z6fV3D+NVkoeqRMtWwlUZK6U17SY/LqNzOxWL6GyR/s= -k8s.io/utils v0.0.0-20260507154919-ff6756f316d2 h1:wU4tMEhLGgIbLvXQb1cfN+EcM0wf7zC6CPF+C79jroc= -k8s.io/utils v0.0.0-20260507154919-ff6756f316d2/go.mod h1:xDxuJ0whA3d0I4mf/C4ppKHxXynQ+fxnkmQH0vTHnuk= +k8s.io/utils v0.0.0-20260617174310-a95e086a2553 h1:hmGqDecjc8d7HVzWzRFl0QD9bYuYKbBEG7t8xwnVxfI= +k8s.io/utils v0.0.0-20260617174310-a95e086a2553/go.mod h1:xDxuJ0whA3d0I4mf/C4ppKHxXynQ+fxnkmQH0vTHnuk= sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.34.0 h1:hSfpvjjTQXQY2Fol2CS0QHMNs/WI1MOSGzCm1KhM5ec= sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.34.0/go.mod h1:Ve9uj1L+deCXFrPOk1LpFXqTg7LCFzFso6PA48q/XZw= sigs.k8s.io/controller-runtime v0.24.1 h1:miPEwrmirImAvgME1L9qebGHrOnGJoVmVdtOU9fRfo4= From c34b2329ea39f9a1030d9d1225aa4d0a276255eb Mon Sep 17 00:00:00 2001 From: Leonardo Cecchi Date: Thu, 18 Jun 2026 18:14:33 +0200 Subject: [PATCH 041/134] fix: restore WAL from replica source during designated primary promotion (#966) During a replica cluster failover, the designated primary could incorrectly attempt to restore WALs from its own object store instead of the replica source, causing recovery to fail. This happened because the previous logic relied on IsReplica() returning true, but that flag can already be false while PostgreSQL is still in recovery and needs WALs from the source cluster. Signed-off-by: Leonardo Cecchi Signed-off-by: Armando Ruocco Signed-off-by: Marco Nenciarini Co-authored-by: Armando Ruocco --- internal/cnpgi/common/wal.go | 59 +++++++++---------- internal/cnpgi/common/wal_test.go | 98 +++++++++++++++++++++++++++++++ 2 files changed, 126 insertions(+), 31 deletions(-) create mode 100644 internal/cnpgi/common/wal_test.go diff --git a/internal/cnpgi/common/wal.go b/internal/cnpgi/common/wal.go index 7ccc55d..bb7d3e0 100644 --- a/internal/cnpgi/common/wal.go +++ b/internal/cnpgi/common/wal.go @@ -224,7 +224,6 @@ func (w WALServiceImplementation) Archive( } // Restore implements the WALService interface -// nolint: gocognit func (w WALServiceImplementation) Restore( ctx context.Context, request *wal.WALRestoreRequest, @@ -239,36 +238,7 @@ func (w WALServiceImplementation) Restore( return nil, err } - var serverName string - var objectStoreKey types.NamespacedName - - var promotionToken string - if configuration.Cluster.Spec.ReplicaCluster != nil { - promotionToken = configuration.Cluster.Spec.ReplicaCluster.PromotionToken - } - - switch { - case promotionToken != "" && configuration.Cluster.Status.LastPromotionToken != promotionToken: - // This is a replica cluster that is being promoted to a primary cluster - // Recover from the replica source object store - serverName = configuration.ReplicaSourceServerName - objectStoreKey = configuration.GetReplicaSourceBarmanObjectKey() - - case configuration.Cluster.IsReplica() && configuration.Cluster.Status.CurrentPrimary == w.InstanceName: - // Designated primary on replica cluster, using replica source object store - serverName = configuration.ReplicaSourceServerName - objectStoreKey = configuration.GetReplicaSourceBarmanObjectKey() - - case configuration.Cluster.Status.CurrentPrimary == "": - // Recovery from object store, using recovery object store - serverName = configuration.RecoveryServerName - objectStoreKey = configuration.GetRecoveryBarmanObjectKey() - - default: - // Using cluster object store - serverName = configuration.ServerName - objectStoreKey = configuration.GetBarmanObjectKey() - } + serverName, objectStoreKey := resolveRestoreObjectStore(configuration, w.InstanceName) var objectStore barmancloudv1.ObjectStore if err := w.Client.Get(ctx, objectStoreKey, &objectStore); err != nil { @@ -284,6 +254,33 @@ func (w WALServiceImplementation) Restore( ctx, configuration.Cluster, &objectStore, serverName, walName, destinationPath) } +// resolveRestoreObjectStore selects the object store and server name to use when +// restoring a WAL file, based on the role this instance plays in the cluster. +func resolveRestoreObjectStore( + configuration *config.PluginConfiguration, + instanceName string, +) (serverName string, objectStoreKey types.NamespacedName) { + switch { + case configuration.Cluster.Status.CurrentPrimary == instanceName && + len(configuration.ReplicaSourceBarmanObjectName) > 0: + // PostgreSQL never runs restore_command on a live primary; it runs only while + // the instance is in recovery (a genuine standby, restoring from a backup, or + // being rewound by pg_rewind). So a current primary that still has a replica + // source configured can only be a designated primary that has not finished + // promoting, and it must keep fetching WAL from the replica source. + // Token-agnostic: covers both switchover and failover. + return configuration.ReplicaSourceServerName, configuration.GetReplicaSourceBarmanObjectKey() + + case configuration.Cluster.Status.CurrentPrimary == "": + // Recovery from object store, using recovery object store + return configuration.RecoveryServerName, configuration.GetRecoveryBarmanObjectKey() + + default: + // Using cluster object store + return configuration.ServerName, configuration.GetBarmanObjectKey() + } +} + func (w WALServiceImplementation) restoreFromBarmanObjectStore( ctx context.Context, cluster *cnpgv1.Cluster, diff --git a/internal/cnpgi/common/wal_test.go b/internal/cnpgi/common/wal_test.go new file mode 100644 index 0000000..92d836c --- /dev/null +++ b/internal/cnpgi/common/wal_test.go @@ -0,0 +1,98 @@ +/* +Copyright Β© contributors to CloudNativePG, established as +CloudNativePG a Series of LF Projects, LLC. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + +SPDX-License-Identifier: Apache-2.0 +*/ + +package common + +import ( + cnpgv1 "github.com/cloudnative-pg/cloudnative-pg/api/v1" + . "github.com/onsi/ginkgo/v2" + . "github.com/onsi/gomega" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + + "github.com/cloudnative-pg/plugin-barman-cloud/internal/cnpgi/operator/config" +) + +var _ = Describe("resolveRestoreObjectStore", func() { + const ( + namespace = "test-ns" + instance = "cluster-1" + ) + + // newConfig builds a PluginConfiguration with distinct, recognizable names + // for every candidate object store, so each test can assert exactly which + // one the routing selected. + newConfig := func(currentPrimary, replicaSourceObject string) *config.PluginConfiguration { + return &config.PluginConfiguration{ + Cluster: &cnpgv1.Cluster{ + ObjectMeta: metav1.ObjectMeta{Namespace: namespace}, + Status: cnpgv1.ClusterStatus{CurrentPrimary: currentPrimary}, + }, + BarmanObjectName: "cluster-store", + ServerName: "cluster-server", + RecoveryBarmanObjectName: "recovery-store", + RecoveryServerName: "recovery-server", + ReplicaSourceBarmanObjectName: replicaSourceObject, + ReplicaSourceServerName: "replica-server", + } + } + + DescribeTable( + "selects the correct object store for restoring WAL files", + func(cfg *config.PluginConfiguration, wantServer, wantObject string) { + gotServer, gotKey := resolveRestoreObjectStore(cfg, instance) + + Expect(gotServer).To(Equal(wantServer)) + Expect(gotKey.Name).To(Equal(wantObject)) + Expect(gotKey.Namespace).To(Equal(namespace)) + }, + + // The regression this guards: during a designated-primary promotion the + // instance is already the current primary while still in recovery, and it + // must pull remaining WALs from the replica source. The routing decision does + // not depend on the promotion token, so this single case covers both + // switchover and failover. + Entry("designated primary in promotion -> replica source", + newConfig(instance, "replica-store"), + "replica-server", "replica-store"), + + // Guards the len(ReplicaSourceBarmanObjectName) > 0 gate: a current primary + // without a barman-backed replica source (plain HA primary, or a replica + // cluster whose source is streaming-only) must use the cluster store, not + // an empty-named replica source key. + Entry("current primary without a replica source -> cluster store", + newConfig(instance, ""), + "cluster-server", "cluster-store"), + + // Bootstrap / PITR: no current primary yet. Recovery wins even if a replica + // source happens to be configured. + Entry("no current primary -> recovery store", + newConfig("", "replica-store"), + "recovery-server", "recovery-store"), + + Entry("ordinary standby -> cluster store", + newConfig("cluster-2", ""), + "cluster-server", "cluster-store"), + + // A non-primary instance must never route to the replica source, even when + // one is configured: only the designated primary catches up from the source. + Entry("standby in a replica cluster -> cluster store", + newConfig("cluster-2", "replica-store"), + "cluster-server", "cluster-store"), + ) +}) From eb5e8607752d60bf36b4a9ddcaa5bb447f323012 Mon Sep 17 00:00:00 2001 From: Leonardo Cecchi Date: Fri, 19 Jun 2026 10:18:36 +0200 Subject: [PATCH 042/134] fix: inject barman sidecar in replica clusters bootstrapped with pg_basebackup (#965) Replica clusters that use `pg_basebackup` as the bootstrap method and stream WAL from an object store were not getting the barman sidecar injected, causing WAL restore to fail silently. These clusters are now handled correctly. --------- Signed-off-by: Leonardo Cecchi Signed-off-by: Armando Ruocco Co-authored-by: Armando Ruocco --- hack/examples/cluster-replica-streaming.yaml | 36 +++++ internal/cnpgi/operator/config/config.go | 4 +- internal/cnpgi/operator/config/config_test.go | 126 +++++++++++++++++ internal/cnpgi/operator/config/suite_test.go | 32 +++++ internal/cnpgi/operator/lifecycle.go | 20 ++- .../cnpgi/operator/lifecycle_resources.go | 24 +++- internal/cnpgi/operator/lifecycle_test.go | 130 ++++++++++++++++++ 7 files changed, 365 insertions(+), 7 deletions(-) create mode 100644 hack/examples/cluster-replica-streaming.yaml create mode 100644 internal/cnpgi/operator/config/config_test.go create mode 100644 internal/cnpgi/operator/config/suite_test.go diff --git a/hack/examples/cluster-replica-streaming.yaml b/hack/examples/cluster-replica-streaming.yaml new file mode 100644 index 0000000..1fba84c --- /dev/null +++ b/hack/examples/cluster-replica-streaming.yaml @@ -0,0 +1,36 @@ +apiVersion: postgresql.cnpg.io/v1 +kind: Cluster +metadata: + name: cluster-replica +spec: + instances: 3 + bootstrap: + pg_basebackup: + source: source + replica: + enabled: true + source: source + externalClusters: + - name: source + connectionParameters: + host: cluster-example-rw.default.svc + user: streaming_replica + sslmode: verify-full + dbname: postgres + sslKey: + name: cluster-example-replication + key: tls.key + sslCert: + name: cluster-example-replication + key: tls.crt + sslRootCert: + name: cluster-example-ca + key: ca.crt + plugin: + name: barman-cloud.cloudnative-pg.io + parameters: + barmanObjectName: minio-store + serverName: cluster-example + storage: + size: 1Gi + diff --git a/internal/cnpgi/operator/config/config.go b/internal/cnpgi/operator/config/config.go index 61c7063..7f16dda 100644 --- a/internal/cnpgi/operator/config/config.go +++ b/internal/cnpgi/operator/config/config.go @@ -263,7 +263,9 @@ func getReplicaSourcePlugin(cluster *cnpgv1.Cluster) *cnpgv1.PluginConfiguration func (config *PluginConfiguration) Validate() error { err := NewConfigurationError() - if len(config.BarmanObjectName) == 0 && len(config.RecoveryBarmanObjectName) == 0 { + if len(config.BarmanObjectName) == 0 && + len(config.RecoveryBarmanObjectName) == 0 && + len(config.ReplicaSourceBarmanObjectName) == 0 { return err.WithMessage("no reference to barmanObjectName have been included") } diff --git a/internal/cnpgi/operator/config/config_test.go b/internal/cnpgi/operator/config/config_test.go new file mode 100644 index 0000000..3697875 --- /dev/null +++ b/internal/cnpgi/operator/config/config_test.go @@ -0,0 +1,126 @@ +/* +Copyright Β© contributors to CloudNativePG, established as +CloudNativePG a Series of LF Projects, LLC. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + +SPDX-License-Identifier: Apache-2.0 +*/ + +package config + +import ( + cnpgv1 "github.com/cloudnative-pg/cloudnative-pg/api/v1" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + + . "github.com/onsi/ginkgo/v2" + . "github.com/onsi/gomega" + + "github.com/cloudnative-pg/plugin-barman-cloud/internal/cnpgi/metadata" +) + +var _ = Describe("PluginConfiguration.Validate", func() { + It("fails when no barman object name is set", func() { + cfg := &PluginConfiguration{} + Expect(cfg.Validate()).To(HaveOccurred()) + }) + + It("passes when only BarmanObjectName is set (backup/archive)", func() { + cfg := &PluginConfiguration{BarmanObjectName: "my-store"} + Expect(cfg.Validate()).To(Succeed()) + }) + + It("passes when only RecoveryBarmanObjectName is set (recovery bootstrap)", func() { + cfg := &PluginConfiguration{RecoveryBarmanObjectName: "my-store"} + Expect(cfg.Validate()).To(Succeed()) + }) + + It("passes when only ReplicaSourceBarmanObjectName is set (pg_basebackup replica cluster)", func() { + cfg := &PluginConfiguration{ReplicaSourceBarmanObjectName: "my-store"} + Expect(cfg.Validate()).To(Succeed()) + }) +}) + +var _ = Describe("NewFromCluster", func() { + enabled := true + + It("derives the replica source object store for a pg_basebackup replica cluster", func() { + cluster := &cnpgv1.Cluster{ + ObjectMeta: metav1.ObjectMeta{Name: "cluster-replica", Namespace: "test-ns"}, + Spec: cnpgv1.ClusterSpec{ + Bootstrap: &cnpgv1.BootstrapConfiguration{ + PgBaseBackup: &cnpgv1.BootstrapPgBaseBackup{Source: "source"}, + }, + ReplicaCluster: &cnpgv1.ReplicaClusterConfiguration{ + Enabled: &enabled, + Source: "source", + }, + ExternalClusters: []cnpgv1.ExternalCluster{ + { + Name: "source", + PluginConfiguration: &cnpgv1.PluginConfiguration{ + Name: metadata.PluginName, + Parameters: map[string]string{ + "barmanObjectName": "minio-store", + "serverName": "cluster-example", + }, + }, + }, + }, + }, + } + + cfg := NewFromCluster(cluster) + + // The replica source object store is derived from the external cluster plugin, + // while the backup/archive and recovery object stores remain empty: this is the + // distinguishing trait of a pg_basebackup replica cluster (a recovery-bootstrapped + // replica would also populate RecoveryBarmanObjectName). + Expect(cfg.ReplicaSourceBarmanObjectName).To(Equal("minio-store")) + Expect(cfg.ReplicaSourceServerName).To(Equal("cluster-example")) + Expect(cfg.BarmanObjectName).To(BeEmpty()) + Expect(cfg.RecoveryBarmanObjectName).To(BeEmpty()) + + // Validate must accept it, otherwise the lifecycle hook skips sidecar injection. + Expect(cfg.Validate()).To(Succeed()) + }) + + It("ignores a replica source backed by a different plugin", func() { + cluster := &cnpgv1.Cluster{ + ObjectMeta: metav1.ObjectMeta{Name: "cluster-replica", Namespace: "test-ns"}, + Spec: cnpgv1.ClusterSpec{ + Bootstrap: &cnpgv1.BootstrapConfiguration{ + PgBaseBackup: &cnpgv1.BootstrapPgBaseBackup{Source: "source"}, + }, + ReplicaCluster: &cnpgv1.ReplicaClusterConfiguration{ + Enabled: &enabled, + Source: "source", + }, + ExternalClusters: []cnpgv1.ExternalCluster{ + { + Name: "source", + PluginConfiguration: &cnpgv1.PluginConfiguration{ + Name: "some-other-plugin.cloudnative-pg.io", + Parameters: map[string]string{"barmanObjectName": "minio-store"}, + }, + }, + }, + }, + } + + cfg := NewFromCluster(cluster) + + Expect(cfg.ReplicaSourceBarmanObjectName).To(BeEmpty()) + Expect(cfg.Validate()).NotTo(Succeed()) + }) +}) diff --git a/internal/cnpgi/operator/config/suite_test.go b/internal/cnpgi/operator/config/suite_test.go new file mode 100644 index 0000000..5448bb3 --- /dev/null +++ b/internal/cnpgi/operator/config/suite_test.go @@ -0,0 +1,32 @@ +/* +Copyright Β© contributors to CloudNativePG, established as +CloudNativePG a Series of LF Projects, LLC. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + +SPDX-License-Identifier: Apache-2.0 +*/ + +package config + +import ( + "testing" + + . "github.com/onsi/ginkgo/v2" + . "github.com/onsi/gomega" +) + +func TestConfig(t *testing.T) { + RegisterFailHandler(Fail) + RunSpecs(t, "Config Suite") +} diff --git a/internal/cnpgi/operator/lifecycle.go b/internal/cnpgi/operator/lifecycle.go index b25af55..776b301 100644 --- a/internal/cnpgi/operator/lifecycle.go +++ b/internal/cnpgi/operator/lifecycle.go @@ -273,8 +273,10 @@ func (impl LifecycleImplementation) collectAdditionalInstanceArgs( return args } - // Prefer the cluster object store (backup/archive). If not set, fallback to the recovery object store. - // If neither is configured, no additional args are provided. + // Only one object store provides the sidecar arguments, with precedence: + // BarmanObjectName (backup/archive) > RecoveryBarmanObjectName (recovery + // bootstrap) > ReplicaSourceBarmanObjectName (pg_basebackup replica). + // If none is configured, no additional args are provided. if len(pluginConfiguration.BarmanObjectName) > 0 { var barmanObjectStore barmancloudv1.ObjectStore if err := impl.Client.Get(ctx, pluginConfiguration.GetBarmanObjectKey(), &barmanObjectStore); err != nil { @@ -303,6 +305,20 @@ func (impl LifecycleImplementation) collectAdditionalInstanceArgs( return args, nil } + if len(pluginConfiguration.ReplicaSourceBarmanObjectName) > 0 { + key := pluginConfiguration.GetReplicaSourceBarmanObjectKey() + var barmanObjectStore barmancloudv1.ObjectStore + if err := impl.Client.Get(ctx, key, &barmanObjectStore); err != nil { + return nil, fmt.Errorf("while getting replica source barman object store %s: %w", key.String(), err) + } + args := barmanObjectStore.Spec.InstanceSidecarConfiguration.AdditionalContainerArgs + args = append( + args, + collectTypedAdditionalArgs(&barmanObjectStore)..., + ) + return args, nil + } + return nil, nil } diff --git a/internal/cnpgi/operator/lifecycle_resources.go b/internal/cnpgi/operator/lifecycle_resources.go index 12498ee..02b7b43 100644 --- a/internal/cnpgi/operator/lifecycle_resources.go +++ b/internal/cnpgi/operator/lifecycle_resources.go @@ -48,6 +48,9 @@ func (impl LifecycleImplementation) collectSidecarResourcesForPod( ctx context.Context, configuration *config.PluginConfiguration, ) (corev1.ResourceRequirements, error) { + // Only one object store provides the sidecar resources, with precedence: + // BarmanObjectName (backup/archive) > RecoveryBarmanObjectName (recovery + // bootstrap) > ReplicaSourceBarmanObjectName (pg_basebackup replica). if len(configuration.BarmanObjectName) > 0 { // On a replica cluster that also archives, the designated primary // will use both the replica source object store and the object store @@ -64,10 +67,10 @@ func (impl LifecycleImplementation) collectSidecarResourcesForPod( } if len(configuration.RecoveryBarmanObjectName) > 0 { - // On a replica cluster that doesn't archive, the designated primary - // uses only the replica source object store. - // In this case, we use the replica source object store for configuring - // the resources of the sidecar container. + // On a cluster recovering from an object store (including log-shipping + // replica clusters, where the recovery and replica source object stores + // coincide), we use the recovery object store for configuring the + // resources of the sidecar container. var barmanObjectStore barmancloudv1.ObjectStore if err := impl.Client.Get(ctx, configuration.GetRecoveryBarmanObjectKey(), &barmanObjectStore); err != nil { return corev1.ResourceRequirements{}, err @@ -76,5 +79,18 @@ func (impl LifecycleImplementation) collectSidecarResourcesForPod( return barmanObjectStore.Spec.InstanceSidecarConfiguration.Resources, nil } + if len(configuration.ReplicaSourceBarmanObjectName) > 0 { + // On a replica cluster bootstrapped via pg_basebackup, the designated + // primary uses only the replica source object store. + // In this case, we use the replica source object store for configuring + // the resources of the sidecar container. + var barmanObjectStore barmancloudv1.ObjectStore + if err := impl.Client.Get(ctx, configuration.GetReplicaSourceBarmanObjectKey(), &barmanObjectStore); err != nil { + return corev1.ResourceRequirements{}, err + } + + return barmanObjectStore.Spec.InstanceSidecarConfiguration.Resources, nil + } + return corev1.ResourceRequirements{}, nil } diff --git a/internal/cnpgi/operator/lifecycle_test.go b/internal/cnpgi/operator/lifecycle_test.go index d2755ed..a4851be 100644 --- a/internal/cnpgi/operator/lifecycle_test.go +++ b/internal/cnpgi/operator/lifecycle_test.go @@ -28,6 +28,7 @@ import ( barmancloudv1 "github.com/cloudnative-pg/plugin-barman-cloud/api/v1" batchv1 "k8s.io/api/batch/v1" corev1 "k8s.io/api/core/v1" + "k8s.io/apimachinery/pkg/api/resource" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/runtime" "sigs.k8s.io/controller-runtime/pkg/client/fake" @@ -293,6 +294,24 @@ var _ = Describe("LifecycleImplementation", func() { Expect(args).To(Equal(recoveryArgs)) }) + It("falls back to replica source object store when primary and recovery not set", func(ctx SpecContext) { + ns := "test-ns" + cluster := &cnpgv1.Cluster{ObjectMeta: metav1.ObjectMeta{Name: "c", Namespace: ns}} + pc := &config.PluginConfiguration{ + Cluster: cluster, + ReplicaSourceBarmanObjectName: "replica-source-store", + } + replicaArgs := []string{"--replica-a", "--replica-b"} + cli := buildClientFunc( + makeStoreFunc(ns, pc.ReplicaSourceBarmanObjectName, replicaArgs), + ).Build() + + impl := LifecycleImplementation{Client: cli} + args, err := impl.collectAdditionalInstanceArgs(ctx, pc) + Expect(err).NotTo(HaveOccurred()) + Expect(args).To(Equal(replicaArgs)) + }) + It("returns nil when neither object name is configured", func(ctx SpecContext) { ns := "test-ns" cluster := &cnpgv1.Cluster{ObjectMeta: metav1.ObjectMeta{Name: "c", Namespace: ns}} @@ -386,6 +405,117 @@ var _ = Describe("LifecycleImplementation", func() { Expect(err).NotTo(HaveOccurred()) Expect(args).To(Equal([]string{"--log-level=info"})) }) + + It("includes --log-level from replica source object store when only replica source set", func(ctx SpecContext) { + ns := "test-ns" + cluster := &cnpgv1.Cluster{ObjectMeta: metav1.ObjectMeta{Name: "c", Namespace: ns}} + pc := &config.PluginConfiguration{ + Cluster: cluster, + ReplicaSourceBarmanObjectName: "replica-source-store", + } + store := &barmancloudv1.ObjectStore{ + TypeMeta: metav1.TypeMeta{Kind: "ObjectStore", APIVersion: barmancloudv1.GroupVersion.String()}, + ObjectMeta: metav1.ObjectMeta{Name: pc.ReplicaSourceBarmanObjectName, Namespace: ns}, + Spec: barmancloudv1.ObjectStoreSpec{ + InstanceSidecarConfiguration: barmancloudv1.InstanceSidecarConfiguration{ + LogLevel: "warning", + }, + }, + } + s := runtime.NewScheme() + barmancloudv1.AddKnownTypes(s) + cli := fake.NewClientBuilder().WithScheme(s).WithRuntimeObjects(store).Build() + + impl := LifecycleImplementation{Client: cli} + args, err := impl.collectAdditionalInstanceArgs(ctx, pc) + Expect(err).NotTo(HaveOccurred()) + Expect(args).To(Equal([]string{"--log-level=warning"})) + }) + }) + + Describe("collectSidecarResourcesForPod", func() { + makeStoreWithResourcesFunc := func(ns, name string, res corev1.ResourceRequirements) *barmancloudv1.ObjectStore { + return &barmancloudv1.ObjectStore{ + TypeMeta: metav1.TypeMeta{Kind: "ObjectStore", APIVersion: barmancloudv1.GroupVersion.String()}, + ObjectMeta: metav1.ObjectMeta{Name: name, Namespace: ns}, + Spec: barmancloudv1.ObjectStoreSpec{ + InstanceSidecarConfiguration: barmancloudv1.InstanceSidecarConfiguration{ + Resources: res, + }, + }, + } + } + + It("uses the cluster object store resources when set", func(ctx SpecContext) { + ns := "test-ns" + cluster := &cnpgv1.Cluster{ObjectMeta: metav1.ObjectMeta{Name: "c", Namespace: ns}} + pc := &config.PluginConfiguration{Cluster: cluster, BarmanObjectName: "primary-store"} + res := corev1.ResourceRequirements{ + Requests: corev1.ResourceList{corev1.ResourceMemory: resource.MustParse("64Mi")}, + } + cli := buildClientFunc(makeStoreWithResourcesFunc(ns, pc.BarmanObjectName, res)).Build() + + impl := LifecycleImplementation{Client: cli} + got, err := impl.collectSidecarResourcesForPod(ctx, pc) + Expect(err).NotTo(HaveOccurred()) + gotMem := got.Requests[corev1.ResourceMemory] + Expect(gotMem.String()).To(Equal("64Mi")) + }) + + It("uses the recovery object store resources when only recovery is set", func(ctx SpecContext) { + ns := "test-ns" + cluster := &cnpgv1.Cluster{ObjectMeta: metav1.ObjectMeta{Name: "c", Namespace: ns}} + pc := &config.PluginConfiguration{Cluster: cluster, RecoveryBarmanObjectName: "recovery-store"} + res := corev1.ResourceRequirements{ + Requests: corev1.ResourceList{corev1.ResourceMemory: resource.MustParse("128Mi")}, + } + cli := buildClientFunc(makeStoreWithResourcesFunc(ns, pc.RecoveryBarmanObjectName, res)).Build() + + impl := LifecycleImplementation{Client: cli} + got, err := impl.collectSidecarResourcesForPod(ctx, pc) + Expect(err).NotTo(HaveOccurred()) + gotMem := got.Requests[corev1.ResourceMemory] + Expect(gotMem.String()).To(Equal("128Mi")) + }) + + It("uses the replica source object store resources when only replica source is set", func(ctx SpecContext) { + ns := "test-ns" + cluster := &cnpgv1.Cluster{ObjectMeta: metav1.ObjectMeta{Name: "c", Namespace: ns}} + pc := &config.PluginConfiguration{Cluster: cluster, ReplicaSourceBarmanObjectName: "replica-source-store"} + res := corev1.ResourceRequirements{ + Requests: corev1.ResourceList{corev1.ResourceMemory: resource.MustParse("256Mi")}, + } + cli := buildClientFunc(makeStoreWithResourcesFunc(ns, pc.ReplicaSourceBarmanObjectName, res)).Build() + + impl := LifecycleImplementation{Client: cli} + got, err := impl.collectSidecarResourcesForPod(ctx, pc) + Expect(err).NotTo(HaveOccurred()) + gotMem := got.Requests[corev1.ResourceMemory] + Expect(gotMem.String()).To(Equal("256Mi")) + }) + + It("returns empty resources when no object store is configured", func(ctx SpecContext) { + ns := "test-ns" + cluster := &cnpgv1.Cluster{ObjectMeta: metav1.ObjectMeta{Name: "c", Namespace: ns}} + pc := &config.PluginConfiguration{Cluster: cluster} + cli := buildClientFunc().Build() + + impl := LifecycleImplementation{Client: cli} + got, err := impl.collectSidecarResourcesForPod(ctx, pc) + Expect(err).NotTo(HaveOccurred()) + Expect(got).To(Equal(corev1.ResourceRequirements{})) + }) + + It("returns an error if the replica source object store cannot be retrieved", func(ctx SpecContext) { + ns := "test-ns" + cluster := &cnpgv1.Cluster{ObjectMeta: metav1.ObjectMeta{Name: "c", Namespace: ns}} + pc := &config.PluginConfiguration{Cluster: cluster, ReplicaSourceBarmanObjectName: "missing-store"} + cli := buildClientFunc().Build() + + impl := LifecycleImplementation{Client: cli} + _, err := impl.collectSidecarResourcesForPod(ctx, pc) + Expect(err).To(HaveOccurred()) + }) }) }) From a45459582ffe3a75c74749a96e7744ff67ef26c8 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 19 Jun 2026 10:19:42 +0200 Subject: [PATCH 043/134] chore(deps): update actions/checkout action to v7 (#974) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [actions/checkout](https://redirect.github.com/actions/checkout) | action | major | `v6` β†’ `v7.0.0` | Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/ci.yml | 2 +- .github/workflows/publish-docs.yml | 2 +- .github/workflows/release-please.yml | 2 +- .github/workflows/release-publish.yml | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 9b49caa..b048294 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -32,7 +32,7 @@ jobs: df -h echo "-----------------------------------------------------" - name: Checkout - uses: actions/checkout@v6 + uses: actions/checkout@v7.0.0 # We need the full history for the commitlint task with: fetch-depth: 0 diff --git a/.github/workflows/publish-docs.yml b/.github/workflows/publish-docs.yml index ef8f01e..4d0a534 100644 --- a/.github/workflows/publish-docs.yml +++ b/.github/workflows/publish-docs.yml @@ -25,7 +25,7 @@ jobs: contents: read steps: - name: Checkout - uses: actions/checkout@v6 + uses: actions/checkout@v7.0.0 - name: Setup Node uses: actions/setup-node@v6 diff --git a/.github/workflows/release-please.yml b/.github/workflows/release-please.yml index 0f466b3..459cda4 100644 --- a/.github/workflows/release-please.yml +++ b/.github/workflows/release-please.yml @@ -19,7 +19,7 @@ jobs: # We'll use the cli until there's a fix for # https://github.com/googleapis/release-please/issues/2280. - name: Checkout - uses: actions/checkout@v6 + uses: actions/checkout@v7.0.0 - name: Install node uses: actions/setup-node@v6 with: diff --git a/.github/workflows/release-publish.yml b/.github/workflows/release-publish.yml index e5a46d1..45c0c79 100644 --- a/.github/workflows/release-publish.yml +++ b/.github/workflows/release-publish.yml @@ -13,7 +13,7 @@ jobs: contents: write steps: - name: Checkout - uses: actions/checkout@v6 + uses: actions/checkout@v7.0.0 - name: Install QEMU static binaries uses: docker/setup-qemu-action@v4 - name: Install Task From d55942a67ff53869fc00eb857ad1445a8a657736 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 19 Jun 2026 10:20:14 +0200 Subject: [PATCH 044/134] chore(deps): update documentation dependencies to v7.0.6 (#970) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) | |---|---|---|---| | [serialize-javascript](https://redirect.github.com/yahoo/serialize-javascript) | [`7.0.5` β†’ `7.0.6`](https://renovatebot.com/diffs/npm/serialize-javascript/7.0.5/7.0.6) | ![age](https://developer.mend.io/api/mc/badges/age/npm/serialize-javascript/7.0.6?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/serialize-javascript/7.0.5/7.0.6?slim=true) | Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- web/yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/web/yarn.lock b/web/yarn.lock index ec56d53..a25f00c 100644 --- a/web/yarn.lock +++ b/web/yarn.lock @@ -8396,9 +8396,9 @@ send@~0.19.0, send@~0.19.1: statuses "~2.0.2" serialize-javascript@>=7.0.5, serialize-javascript@^6.0.0, serialize-javascript@^6.0.1: - version "7.0.5" - resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-7.0.5.tgz#c798cc0552ffbb08981914a42a8756e339d0d5b1" - integrity sha512-F4LcB0UqUl1zErq+1nYEEzSHJnIwb3AF2XWB94b+afhrekOUijwooAYqFyRbjYkm2PAKBabx6oYv/xDxNi8IBw== + version "7.0.6" + resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-7.0.6.tgz#f2f20c8af0757e4d8fa329d0210636da0682ddef" + integrity sha512-ATTK5Q4gFVg0YDp1my2vqygyvhcklD/UV5GIlYHooGTn/NogJqIzpetkD6E5kmuVULqz/S9inUL25XcAgDRJQg== serve-handler@^6.1.7: version "6.1.7" From 5a17340088368effbb7b20e5ec06d3aa46ef8962 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 19 Jun 2026 11:43:43 +0200 Subject: [PATCH 045/134] chore(deps): update all cloudnative-pg daggerverse dependencies to 679d505 (#971) Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Taskfile.yml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/Taskfile.yml b/Taskfile.yml index 710e3d3..ca5503f 100644 --- a/Taskfile.yml +++ b/Taskfile.yml @@ -46,7 +46,7 @@ tasks: - wordlist-ordered env: # renovate: datasource=git-refs depName=spellcheck lookupName=https://github.com/cloudnative-pg/daggerverse currentValue=main - DAGGER_SPELLCHECK_SHA: 0a3b65e4cad754d9abdecbe5cf8d443dba63477c + DAGGER_SPELLCHECK_SHA: 679d5056358d3cd838ec226333decff673602937 cmds: - > GITHUB_REF= dagger -s call -m github.com/cloudnative-pg/daggerverse/spellcheck@${DAGGER_SPELLCHECK_SHA} @@ -60,7 +60,7 @@ tasks: desc: Check for conventional commits env: # renovate: datasource=git-refs depName=commitlint lookupName=https://github.com/cloudnative-pg/daggerverse currentValue=main - DAGGER_COMMITLINT_SHA: 0a3b65e4cad754d9abdecbe5cf8d443dba63477c + DAGGER_COMMITLINT_SHA: 679d5056358d3cd838ec226333decff673602937 cmds: - > GITHUB_REF= dagger -s call -m github.com/cloudnative-pg/daggerverse/commitlint@${DAGGER_COMMITLINT_SHA} @@ -74,7 +74,7 @@ tasks: - wordlist-ordered env: # renovate: datasource=git-refs depName=uncommitted lookupName=https://github.com/cloudnative-pg/daggerverse currentValue=main - DAGGER_UNCOMMITTED_SHA: 0a3b65e4cad754d9abdecbe5cf8d443dba63477c + DAGGER_UNCOMMITTED_SHA: 679d5056358d3cd838ec226333decff673602937 cmds: - GITHUB_REF= dagger -s call -m github.com/cloudnative-pg/daggerverse/uncommitted@${DAGGER_UNCOMMITTED_SHA} check-uncommitted --source . stdout sources: @@ -86,7 +86,7 @@ tasks: - controller-gen env: # renovate: datasource=git-refs depName=crd-gen-refs lookupName=https://github.com/cloudnative-pg/daggerverse currentValue=main - DAGGER_CRDGENREF_SHA: 0a3b65e4cad754d9abdecbe5cf8d443dba63477c + DAGGER_CRDGENREF_SHA: 679d5056358d3cd838ec226333decff673602937 # renovate: datasource=go depName=github.com/elastic/crd-ref-docs CRDREFDOCS_VERSION: v0.3.0 cmds: @@ -381,7 +381,7 @@ tasks: run: once env: # renovate: datasource=git-refs depName=controller-gen lookupName=https://github.com/cloudnative-pg/daggerverse currentValue=main - DAGGER_CONTROLLER_GEN_SHA: 0a3b65e4cad754d9abdecbe5cf8d443dba63477c + DAGGER_CONTROLLER_GEN_SHA: 679d5056358d3cd838ec226333decff673602937 cmds: - > GITHUB_REF= dagger -s call -m github.com/cloudnative-pg/daggerverse/controller-gen@${DAGGER_CONTROLLER_GEN_SHA} From 0c687cbbf13f4ce5ca1690d4dcf768d76cb4731a Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 19 Jun 2026 13:33:55 +0200 Subject: [PATCH 046/134] fix(deps): update all non-major go dependencies to 8d9302e (#975) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [github.com/cloudnative-pg/barman-cloud](https://redirect.github.com/cloudnative-pg/barman-cloud) | require | digest | `53ffbf0` β†’ `8d9302e` | Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index deea278..e78738b 100644 --- a/go.mod +++ b/go.mod @@ -5,7 +5,7 @@ go 1.26.3 require ( github.com/cert-manager/cert-manager v1.20.2 github.com/cloudnative-pg/api v1.29.1 - github.com/cloudnative-pg/barman-cloud v0.5.2-0.20260618100956-53ffbf09b567 + github.com/cloudnative-pg/barman-cloud v0.5.2-0.20260619084538-8d9302e232e7 github.com/cloudnative-pg/cloudnative-pg v1.29.1 github.com/cloudnative-pg/cnpg-i v0.5.0 github.com/cloudnative-pg/cnpg-i-machinery v0.4.2 diff --git a/go.sum b/go.sum index 35e243b..7eabdc3 100644 --- a/go.sum +++ b/go.sum @@ -20,8 +20,8 @@ github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UF github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/cloudnative-pg/api v1.29.1 h1:FWr8S7EQeOfdhYXyr2cof8wUXLARZiiQt5Qa6ltED7w= github.com/cloudnative-pg/api v1.29.1/go.mod h1:QtWF3yzSvIfORMHaSkPAk/o3bhCJwEHJgN3riyRiz3o= -github.com/cloudnative-pg/barman-cloud v0.5.2-0.20260618100956-53ffbf09b567 h1:vqyRgqs1qDhOO2ZUEx3X4PKJGRnfwXN5xU5KSdjrnps= -github.com/cloudnative-pg/barman-cloud v0.5.2-0.20260618100956-53ffbf09b567/go.mod h1:vmW7blcg0BECd/9YKqn7NdiF7jz9BlXCWJcGJpzzBCg= +github.com/cloudnative-pg/barman-cloud v0.5.2-0.20260619084538-8d9302e232e7 h1:lNWqibnwlJesDrwAukg8gQF4Hpys3jx31LaXZFoP9vA= +github.com/cloudnative-pg/barman-cloud v0.5.2-0.20260619084538-8d9302e232e7/go.mod h1:vmW7blcg0BECd/9YKqn7NdiF7jz9BlXCWJcGJpzzBCg= github.com/cloudnative-pg/cloudnative-pg v1.29.1 h1:ZNEt1TMlnQKXI1kho2UqQuqdfvIvjGln4kN7C1lsmGA= github.com/cloudnative-pg/cloudnative-pg v1.29.1/go.mod h1:Sbgx9jVmkle4/gR2U5JHrzDd74sRPOBHDtPkvncg5v8= github.com/cloudnative-pg/cnpg-i v0.5.0 h1:/TOzpNT6cwNgrpftTtrnLKdoHgMwd+88vZgXjlVgXeE= From bf5283359478071f116464c14a7a3d3d0a358eea Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 25 Jun 2026 11:53:32 +0200 Subject: [PATCH 047/134] fix(deps): update all non-major go dependencies (#979) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) | |---|---|---|---| | [github.com/onsi/ginkgo/v2](https://redirect.github.com/onsi/ginkgo) | `v2.31.0` β†’ `v2.32.0` | ![age](https://developer.mend.io/api/mc/badges/age/go/github.com%2fonsi%2fginkgo%2fv2/v2.32.0?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/go/github.com%2fonsi%2fginkgo%2fv2/v2.31.0/v2.32.0?slim=true) | --- ### Release Notes
onsi/ginkgo (github.com/onsi/ginkgo/v2) ### [`v2.32.0`](https://redirect.github.com/onsi/ginkgo/releases/tag/v2.32.0) [Compare Source](https://redirect.github.com/onsi/ginkgo/compare/v2.31.0...v2.32.0) #### 2.32.0 `-fd` generate RSpec-style documentation output. Thank [@​woodie](https://redirect.github.com/woodie) ! \--sleep-on-failure pauses a failed spec before teardown. Thanks [@​qinqon](https://redirect.github.com/qinqon) !
--- ### Configuration πŸ“… **Schedule**: (UTC) - Branch creation - At any time (no schedule defined) - Automerge - At any time (no schedule defined) 🚦 **Automerge**: Enabled. β™» **Rebasing**: Never, or you tick the rebase/retry checkbox. πŸ‘» **Immortal**: This PR will be recreated if closed unmerged. Get [config help](https://redirect.github.com/renovatebot/renovate/discussions) if that's undesired. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/cloudnative-pg/plugin-barman-cloud). Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index e78738b..8501c65 100644 --- a/go.mod +++ b/go.mod @@ -10,7 +10,7 @@ require ( github.com/cloudnative-pg/cnpg-i v0.5.0 github.com/cloudnative-pg/cnpg-i-machinery v0.4.2 github.com/cloudnative-pg/machinery v0.5.0 - github.com/onsi/ginkgo/v2 v2.31.0 + github.com/onsi/ginkgo/v2 v2.32.0 github.com/onsi/gomega v1.42.0 github.com/spf13/cobra v1.10.2 github.com/spf13/viper v1.21.0 diff --git a/go.sum b/go.sum index 7eabdc3..64e36e6 100644 --- a/go.sum +++ b/go.sum @@ -161,8 +161,8 @@ github.com/monochromegane/go-gitignore v0.0.0-20200626010858-205db1a8cc00 h1:n6/ github.com/monochromegane/go-gitignore v0.0.0-20200626010858-205db1a8cc00/go.mod h1:Pm3mSP3c5uWn86xMLZ5Sa7JB9GsEZySvHYXCTK4E9q4= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= -github.com/onsi/ginkgo/v2 v2.31.0 h1:GtuJos5DFUV9EerYJo8RhYxosYNGvOdDE5haKq6Grfs= -github.com/onsi/ginkgo/v2 v2.31.0/go.mod h1:+aXOY+vzZ5mu2iI2HpTZUPmM//oQfsNFX6gU9kNcA44= +github.com/onsi/ginkgo/v2 v2.32.0 h1:Hw7s2pVrQo/8Yz5N77qdnpHaoc+c6cC9WIV1Jce+J6E= +github.com/onsi/ginkgo/v2 v2.32.0/go.mod h1:+aXOY+vzZ5mu2iI2HpTZUPmM//oQfsNFX6gU9kNcA44= github.com/onsi/gomega v1.42.0 h1:CJby8u36xb7v34W78F8WKvqTQP7PCMIPB78IVDB73l4= github.com/onsi/gomega v1.42.0/go.mod h1:M/Uqpu/8qTjtzCLUA2zJHX9Iilrau25x1PdoSRbWh5A= github.com/pelletier/go-toml/v2 v2.2.4 h1:mye9XuhQ6gvn5h28+VilKrrPoQVanw5PMw/TB0t5Ec4= From bb53820c5748e69c4c6896e68b78d0bece93007b Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 25 Jun 2026 15:44:40 +0200 Subject: [PATCH 048/134] chore(deps): lock file maintenance documentation dependencies (#976) This PR contains the following updates: | Update | Change | |---|---| | lockFileMaintenance | All locks refreshed | Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Leonardo Cecchi --- web/yarn.lock | 408 +++++++++++++++++++++++++------------------------- 1 file changed, 204 insertions(+), 204 deletions(-) diff --git a/web/yarn.lock b/web/yarn.lock index a25f00c..ee478d8 100644 --- a/web/yarn.lock +++ b/web/yarn.lock @@ -2,15 +2,15 @@ # yarn lockfile v1 -"@algolia/abtesting@1.20.0": - version "1.20.0" - resolved "https://registry.yarnpkg.com/@algolia/abtesting/-/abtesting-1.20.0.tgz#0cbfa218156c1f522d49f2818c31447d356a1f19" - integrity sha512-5CqkS592H3+24b6H6CQ2RVpphdmAuIElZzv0Hngqo/ZEZpUZJ+KGLcueBhx33fv2wYBXyuuvskG5aQ7Ti+lR0g== +"@algolia/abtesting@1.21.0": + version "1.21.0" + resolved "https://registry.yarnpkg.com/@algolia/abtesting/-/abtesting-1.21.0.tgz#a156291a4b3f19516f79dc8c163a8f5a38b5e8ae" + integrity sha512-kGvHfBa9oQCvZh0YXeguSToBD9GNJ+gzUZQ9KPTg+KSsM36obYcsKPoX0NnlJtPflHXu7RkMaIi44xs9meR6Zw== dependencies: - "@algolia/client-common" "5.54.0" - "@algolia/requester-browser-xhr" "5.54.0" - "@algolia/requester-fetch" "5.54.0" - "@algolia/requester-node-http" "5.54.0" + "@algolia/client-common" "5.55.0" + "@algolia/requester-browser-xhr" "5.55.0" + "@algolia/requester-fetch" "5.55.0" + "@algolia/requester-node-http" "5.55.0" "@algolia/autocomplete-core@1.19.2": version "1.19.2" @@ -52,126 +52,126 @@ resolved "https://registry.yarnpkg.com/@algolia/autocomplete-shared/-/autocomplete-shared-1.19.8.tgz#5d723d8bdb448efbb1b0e1c7ff94cc18e5b1dc0e" integrity sha512-h5hf2t8ejF6vlOgvLaZzQbWs5SyH2z4PAWygNAvvD/2RI29hdQ54ldUGwqVuj9Srs+n8XUKTPUqb7fvhBhQrnQ== -"@algolia/client-abtesting@5.54.0": - version "5.54.0" - resolved "https://registry.yarnpkg.com/@algolia/client-abtesting/-/client-abtesting-5.54.0.tgz#d8e0f66dd4d33c38dd3536b9f309cf6bfa5da97e" - integrity sha512-IXnH1x3DBsPQA4/FRO0Pvkfy79tKy5Qr+ugAV9jdcGkpzHc476D0WV1MFJ+pZxtbts0xh2JqzUVmYEqA6LkOpA== +"@algolia/client-abtesting@5.55.0": + version "5.55.0" + resolved "https://registry.yarnpkg.com/@algolia/client-abtesting/-/client-abtesting-5.55.0.tgz#8bcfc18f7796790ec68ece4cc4a5a6b26b80ff1e" + integrity sha512-Zt2GjIm7vsaf7K23tk5JmtcVNc38G9p0C2L2Lrm06miyLE/NL2etHtHInvuLc1DjxTp7Y2nId4X/tzwo372K8Q== dependencies: - "@algolia/client-common" "5.54.0" - "@algolia/requester-browser-xhr" "5.54.0" - "@algolia/requester-fetch" "5.54.0" - "@algolia/requester-node-http" "5.54.0" + "@algolia/client-common" "5.55.0" + "@algolia/requester-browser-xhr" "5.55.0" + "@algolia/requester-fetch" "5.55.0" + "@algolia/requester-node-http" "5.55.0" -"@algolia/client-analytics@5.54.0": - version "5.54.0" - resolved "https://registry.yarnpkg.com/@algolia/client-analytics/-/client-analytics-5.54.0.tgz#9da08afc41c17a683362a65e39df694186e16b79" - integrity sha512-pBpRqm1wpE0GnGy2rNLk9rjDn0Le4iywNRtnAWblLeqfjxpWKg8lWnk7nmSoTShFO31sz2jatXXzxK2lz8ipbA== +"@algolia/client-analytics@5.55.0": + version "5.55.0" + resolved "https://registry.yarnpkg.com/@algolia/client-analytics/-/client-analytics-5.55.0.tgz#895c0460b52d304cf5db2df8d0f78861d9a87dca" + integrity sha512-7BueMuWYg/KBA2EX9zsQ+3OAleEyrJcB+SV5Al/9pLjMQq5mXB/8M5HaUPqZwN812g5kLzj9j43VThlZgWq0hg== dependencies: - "@algolia/client-common" "5.54.0" - "@algolia/requester-browser-xhr" "5.54.0" - "@algolia/requester-fetch" "5.54.0" - "@algolia/requester-node-http" "5.54.0" + "@algolia/client-common" "5.55.0" + "@algolia/requester-browser-xhr" "5.55.0" + "@algolia/requester-fetch" "5.55.0" + "@algolia/requester-node-http" "5.55.0" -"@algolia/client-common@5.54.0": - version "5.54.0" - resolved "https://registry.yarnpkg.com/@algolia/client-common/-/client-common-5.54.0.tgz#c9afb4677dc401d1e0fad6fc5c6c07ce5ef1fe0c" - integrity sha512-WbuwRUlFvSOsuxqTDjSSmgusuF5KFt+oFPzobvPDvodra6EWnVwUXjz0elkNSsnsIlZGtcXlX3LhxkO7rF90jw== +"@algolia/client-common@5.55.0": + version "5.55.0" + resolved "https://registry.yarnpkg.com/@algolia/client-common/-/client-common-5.55.0.tgz#5b4e1cea958da4ad0c91bc4d7858ea87998eb5bf" + integrity sha512-pJZIyhvUrs+B7c5Lw0iP5yP/NsqJMda7pKRYbfG4KtfGIVSMcAalZhdqL5UX8Z9DOC4KxO9tKV5RDeVjZU0VfQ== -"@algolia/client-insights@5.54.0": - version "5.54.0" - resolved "https://registry.yarnpkg.com/@algolia/client-insights/-/client-insights-5.54.0.tgz#191f0086ad96e78cb2807cab293a3374e77e9123" - integrity sha512-/HNLVi3kPI+JhO59WbglLjPM2c4uECU+x4gk1iADseKtE5eYqJ/RJ+FIwM8xzPFKhFJaw+8hVq4lkd0nn8HDDg== +"@algolia/client-insights@5.55.0": + version "5.55.0" + resolved "https://registry.yarnpkg.com/@algolia/client-insights/-/client-insights-5.55.0.tgz#20a1c3cd34c44a5b7cf3f5734096b2bcb5fb877d" + integrity sha512-RydkKDhx0GWTYuw0ndTXHGM8hD8hgwftKE65FfnJZb5bPc9CevOqv3qNPUQiviAwkqT9hQNH31uDGeV3yZkgfA== dependencies: - "@algolia/client-common" "5.54.0" - "@algolia/requester-browser-xhr" "5.54.0" - "@algolia/requester-fetch" "5.54.0" - "@algolia/requester-node-http" "5.54.0" + "@algolia/client-common" "5.55.0" + "@algolia/requester-browser-xhr" "5.55.0" + "@algolia/requester-fetch" "5.55.0" + "@algolia/requester-node-http" "5.55.0" -"@algolia/client-personalization@5.54.0": - version "5.54.0" - resolved "https://registry.yarnpkg.com/@algolia/client-personalization/-/client-personalization-5.54.0.tgz#92611c484655d8da5dc42d80c08e89636558c1c2" - integrity sha512-6TolyyDRumIKeLGBGSFAZsSIJ8hrm6NFCGR1jO7pQTiOtSWgAIxcFE5/JRpZ3g+unG4OkNOFy+I0dUEquIDbig== +"@algolia/client-personalization@5.55.0": + version "5.55.0" + resolved "https://registry.yarnpkg.com/@algolia/client-personalization/-/client-personalization-5.55.0.tgz#041ec1f2a43bb24860805d236afb9d06e2220fc1" + integrity sha512-XiS7gdFq/COWiwdWXZ8+RHuewfEo03TkGESk44zU8zTc/Z6R8fm4DNmV52swJKkeB2N9iC7NKpgpM22OOkcgTw== dependencies: - "@algolia/client-common" "5.54.0" - "@algolia/requester-browser-xhr" "5.54.0" - "@algolia/requester-fetch" "5.54.0" - "@algolia/requester-node-http" "5.54.0" + "@algolia/client-common" "5.55.0" + "@algolia/requester-browser-xhr" "5.55.0" + "@algolia/requester-fetch" "5.55.0" + "@algolia/requester-node-http" "5.55.0" -"@algolia/client-query-suggestions@5.54.0": - version "5.54.0" - resolved "https://registry.yarnpkg.com/@algolia/client-query-suggestions/-/client-query-suggestions-5.54.0.tgz#f0870521076609f0dd57432b82bef19a7d036a43" - integrity sha512-AxW2MLBhjBtGX5kIZrVLO2SP2vRkZxJw5qHGxnQJfLcYhA04mFNP0fWRtHshlcVnDk9M8L9lwfr2lGpf3Er+hw== +"@algolia/client-query-suggestions@5.55.0": + version "5.55.0" + resolved "https://registry.yarnpkg.com/@algolia/client-query-suggestions/-/client-query-suggestions-5.55.0.tgz#94c57fbf92233f60bdade9a8a53a1976c031cb58" + integrity sha512-LBEJ/q+hn1nJ0aYg5IcWgLNCPjWHTahWmpHNx1qUZMho+9CyWM6LaEnhac45UHjQm/j0m374HP685VrpL133lA== dependencies: - "@algolia/client-common" "5.54.0" - "@algolia/requester-browser-xhr" "5.54.0" - "@algolia/requester-fetch" "5.54.0" - "@algolia/requester-node-http" "5.54.0" + "@algolia/client-common" "5.55.0" + "@algolia/requester-browser-xhr" "5.55.0" + "@algolia/requester-fetch" "5.55.0" + "@algolia/requester-node-http" "5.55.0" -"@algolia/client-search@5.54.0": - version "5.54.0" - resolved "https://registry.yarnpkg.com/@algolia/client-search/-/client-search-5.54.0.tgz#ec49bbb4592e93a971af23f119e0244a123afc5d" - integrity sha512-ngdgVGp05lJzUyA+sUzr0MDZ7AMtANcJpwIzq4ZsfpZL5B3S7A4XYfMcU2sECZc3bx3ysOhYcdbbaTjc3ve0WQ== +"@algolia/client-search@5.55.0": + version "5.55.0" + resolved "https://registry.yarnpkg.com/@algolia/client-search/-/client-search-5.55.0.tgz#eace5977fa8a6ff3d1170ec387a363184d2165b0" + integrity sha512-2/9jUXKH4IcdU5qxH6cbDH46ZBe46G7xr+MrcHwgEXZcUfdAvUgLSH53MAWuMgxvw0G5yoqiWMifHc62Os0fiQ== dependencies: - "@algolia/client-common" "5.54.0" - "@algolia/requester-browser-xhr" "5.54.0" - "@algolia/requester-fetch" "5.54.0" - "@algolia/requester-node-http" "5.54.0" + "@algolia/client-common" "5.55.0" + "@algolia/requester-browser-xhr" "5.55.0" + "@algolia/requester-fetch" "5.55.0" + "@algolia/requester-node-http" "5.55.0" "@algolia/events@^4.0.1": version "4.0.1" resolved "https://registry.yarnpkg.com/@algolia/events/-/events-4.0.1.tgz#fd39e7477e7bc703d7f893b556f676c032af3950" integrity sha512-FQzvOCgoFXAbf5Y6mYozw2aj5KCJoA3m4heImceldzPSMbdyS4atVjJzXKMsfX3wnZTFYwkkt8/z8UesLHlSBQ== -"@algolia/ingestion@1.54.0": - version "1.54.0" - resolved "https://registry.yarnpkg.com/@algolia/ingestion/-/ingestion-1.54.0.tgz#2fd01d4f4c4dbc90a987325302fc997c2beabb48" - integrity sha512-hee59Z7FgZ6/13FYL05ANPwRJY1pfvIlrwC8eBZYdiRFXTJVvf94IyTWOxLqRVpbseDP6eQQTW+PT7/DxTZIng== +"@algolia/ingestion@1.55.0": + version "1.55.0" + resolved "https://registry.yarnpkg.com/@algolia/ingestion/-/ingestion-1.55.0.tgz#ad2ba098363d8d3849991f0d5e50a65bd091a193" + integrity sha512-80tKsQgxXWo+jK0v4YGCHqyTEXawhAKYyr3kOdN51ElfRqUFjZNPVhZk6vRiqSqXfvrH85ytacT3cbJR6+qolA== dependencies: - "@algolia/client-common" "5.54.0" - "@algolia/requester-browser-xhr" "5.54.0" - "@algolia/requester-fetch" "5.54.0" - "@algolia/requester-node-http" "5.54.0" + "@algolia/client-common" "5.55.0" + "@algolia/requester-browser-xhr" "5.55.0" + "@algolia/requester-fetch" "5.55.0" + "@algolia/requester-node-http" "5.55.0" -"@algolia/monitoring@1.54.0": - version "1.54.0" - resolved "https://registry.yarnpkg.com/@algolia/monitoring/-/monitoring-1.54.0.tgz#05e6019095cb8eb3ef43c9328992ad90a33c9a92" - integrity sha512-diCjZVbIO7Pzw98tEKqLWIAgmQBI3Zt1sHsXyAPNGZgn32derpIXTnjjpJbZl+uAhSSznd6SfxFGdC9uYdN1TA== +"@algolia/monitoring@1.55.0": + version "1.55.0" + resolved "https://registry.yarnpkg.com/@algolia/monitoring/-/monitoring-1.55.0.tgz#4a4935c61b11c4e0319569e355c585d4c1ed3262" + integrity sha512-4UjmAL8ywGW4rCfK6Qmgw3wIjbrO2wl2s4Eq56JTiN40L2t0XTv0HZkYAmr6nfeiXO0he/2crvZRX6SATSepag== dependencies: - "@algolia/client-common" "5.54.0" - "@algolia/requester-browser-xhr" "5.54.0" - "@algolia/requester-fetch" "5.54.0" - "@algolia/requester-node-http" "5.54.0" + "@algolia/client-common" "5.55.0" + "@algolia/requester-browser-xhr" "5.55.0" + "@algolia/requester-fetch" "5.55.0" + "@algolia/requester-node-http" "5.55.0" -"@algolia/recommend@5.54.0": - version "5.54.0" - resolved "https://registry.yarnpkg.com/@algolia/recommend/-/recommend-5.54.0.tgz#5320031101788363852e5c74bd36b74a3efea1d6" - integrity sha512-6zeslypRAGWDgVJEJYAPuqmyquHvnw4MQwG+XXdrw5dTNDjXYIcCJdQQcCY06xPF9tUvmzy/1vHiH9QxhgwuOQ== +"@algolia/recommend@5.55.0": + version "5.55.0" + resolved "https://registry.yarnpkg.com/@algolia/recommend/-/recommend-5.55.0.tgz#d89fbb2148731dafcb7f458cd334dc18465bb9ed" + integrity sha512-LMpJPtIkfDsHIx5Ga+baNr22ntYbY+e2wT7MSIc/FjAnu9wnBFhx1H/GfhmP/c5/IvbThDX+3ilxPRjSfCI8aA== dependencies: - "@algolia/client-common" "5.54.0" - "@algolia/requester-browser-xhr" "5.54.0" - "@algolia/requester-fetch" "5.54.0" - "@algolia/requester-node-http" "5.54.0" + "@algolia/client-common" "5.55.0" + "@algolia/requester-browser-xhr" "5.55.0" + "@algolia/requester-fetch" "5.55.0" + "@algolia/requester-node-http" "5.55.0" -"@algolia/requester-browser-xhr@5.54.0": - version "5.54.0" - resolved "https://registry.yarnpkg.com/@algolia/requester-browser-xhr/-/requester-browser-xhr-5.54.0.tgz#90326acee59cf7eb002f3c959932f0f565e01e4b" - integrity sha512-iHZax214LPXd7XizQ4BNnTsegl8f3IeKm8JcrmSNZ/5x1rZ5xLkbG/anltAWtLpoRNnfpr4Z80YdYeVVPpx6wQ== +"@algolia/requester-browser-xhr@5.55.0": + version "5.55.0" + resolved "https://registry.yarnpkg.com/@algolia/requester-browser-xhr/-/requester-browser-xhr-5.55.0.tgz#5b05c8a993b1c8052ec656005a1989515bcdb2ea" + integrity sha512-tDymJ7nFOAoUuecma3usK6o94dp8m4HYFDGh4ByYQXWkv14cpmDn+nWdylmcZO0Qvco107vqDo4+Anksnl8w1Q== dependencies: - "@algolia/client-common" "5.54.0" + "@algolia/client-common" "5.55.0" -"@algolia/requester-fetch@5.54.0": - version "5.54.0" - resolved "https://registry.yarnpkg.com/@algolia/requester-fetch/-/requester-fetch-5.54.0.tgz#cb08734a88394d8c5c80973f33cfb076557c1c68" - integrity sha512-YKtuG5YwPxZ+kkfd4HmUO7Z9aICPUSMlHslzKTmtMMhxGnetxEqGj9T/v2r/PdcuOUC5oW0CHe8akJk8cpS3gQ== +"@algolia/requester-fetch@5.55.0": + version "5.55.0" + resolved "https://registry.yarnpkg.com/@algolia/requester-fetch/-/requester-fetch-5.55.0.tgz#4b9aefcc31debd8c58429dab70a95d49b923eeea" + integrity sha512-6IDSB5o5dkDPQ4LdOW0Yuw/qy5MdWlO2xDHgPVZgW4YDjbxvnX5PAiV7/WWZdWyVObScZZnnHpPbiqfYs/zBLg== dependencies: - "@algolia/client-common" "5.54.0" + "@algolia/client-common" "5.55.0" -"@algolia/requester-node-http@5.54.0": - version "5.54.0" - resolved "https://registry.yarnpkg.com/@algolia/requester-node-http/-/requester-node-http-5.54.0.tgz#2d32cc6cfa5972653e6b3cb942c804d38d2a83ac" - integrity sha512-zyZDJ4WS5TnjZZ5pqywTBFO9olW7QMtY2kf2dbLnu+UTzfc9ri/HGf27jRN2NTbX9FcRPxSqPqzUhF/BZIx0VA== +"@algolia/requester-node-http@5.55.0": + version "5.55.0" + resolved "https://registry.yarnpkg.com/@algolia/requester-node-http/-/requester-node-http-5.55.0.tgz#d62bf8a3b4f053e1b0df3f0e409b4aca330ac4fc" + integrity sha512-Yyyne4l//vDSdg4MhYJkaVne+KEPi833eCj3/T/87ernTwrvP6j9biXXZELsN8sLI/f2ndV/vugDIy2jdJQB6g== dependencies: - "@algolia/client-common" "5.54.0" + "@algolia/client-common" "5.55.0" "@babel/code-frame@^7.0.0", "@babel/code-frame@^7.29.7": version "7.29.7" @@ -2132,74 +2132,74 @@ resolved "https://registry.yarnpkg.com/@jsonjoy.com/codegen/-/codegen-1.0.0.tgz#5c23f796c47675f166d23b948cdb889184b93207" integrity sha512-E8Oy+08cmCf0EK/NMxpaJZmOxPqM+6iSe2S4nlSBrPZOORoDJILxtbSUEDKQyTamm/BVAhIGllOBNU79/dwf0g== -"@jsonjoy.com/fs-core@4.57.7": - version "4.57.7" - resolved "https://registry.yarnpkg.com/@jsonjoy.com/fs-core/-/fs-core-4.57.7.tgz#5d4bfbc95147407c8265d4bb67605c0c18c762a1" - integrity sha512-GDKuYHjP7vAI1kjBo73V+STKr9XIMZknW/xirpRW/EcShX0IKSev/ALafeRfC8Q331nodrXUFu04PugPB0MAhw== +"@jsonjoy.com/fs-core@4.57.8": + version "4.57.8" + resolved "https://registry.yarnpkg.com/@jsonjoy.com/fs-core/-/fs-core-4.57.8.tgz#3e399ca856968194b0be73aa4b6fc943bf313bb8" + integrity sha512-YzVbwggV9452VCeHgo0bjsTaUt1O7JE0XpEsPar93nn/+RAwXk0mb1Y+f5EDJ3TRtRCFe+Ck5RuojdfB4jeHVw== dependencies: - "@jsonjoy.com/fs-node-builtins" "4.57.7" - "@jsonjoy.com/fs-node-utils" "4.57.7" + "@jsonjoy.com/fs-node-builtins" "4.57.8" + "@jsonjoy.com/fs-node-utils" "4.57.8" thingies "^2.5.0" -"@jsonjoy.com/fs-fsa@4.57.7": - version "4.57.7" - resolved "https://registry.yarnpkg.com/@jsonjoy.com/fs-fsa/-/fs-fsa-4.57.7.tgz#2c09a99ea9af292af7447c9eb78537763bf85433" - integrity sha512-1rWsah2nZtRbNeP+c61QcfGfVrJXBmBD0Hm7Akvv4C9MKEasXnbiOS//iH3T3HwUSSBATGrfSp0Xi8nlNhATeQ== +"@jsonjoy.com/fs-fsa@4.57.8": + version "4.57.8" + resolved "https://registry.yarnpkg.com/@jsonjoy.com/fs-fsa/-/fs-fsa-4.57.8.tgz#26a1688ff5c8d1189d32e76bfe2364e0763b6737" + integrity sha512-vmClyvCQMxgqz7uamDiGtRfp4MjzOznk3pcQjCxlIwJcw7TWeyr+bF30hI0x8NxdtNOGMg1pHM74VDIXOeyjuw== dependencies: - "@jsonjoy.com/fs-core" "4.57.7" - "@jsonjoy.com/fs-node-builtins" "4.57.7" - "@jsonjoy.com/fs-node-utils" "4.57.7" + "@jsonjoy.com/fs-core" "4.57.8" + "@jsonjoy.com/fs-node-builtins" "4.57.8" + "@jsonjoy.com/fs-node-utils" "4.57.8" thingies "^2.5.0" -"@jsonjoy.com/fs-node-builtins@4.57.7": - version "4.57.7" - resolved "https://registry.yarnpkg.com/@jsonjoy.com/fs-node-builtins/-/fs-node-builtins-4.57.7.tgz#cc0fd121f58705878ce9b3f372fc00bd7d897ce3" - integrity sha512-LWqfY1m+uAosjwM1RrKhMkUnP9jcq1RUczHsNO779ovm1E9v8I/pmj04eBAcoBjhC7ltcPbNFGyRJ5JqSJ7Jdg== +"@jsonjoy.com/fs-node-builtins@4.57.8": + version "4.57.8" + resolved "https://registry.yarnpkg.com/@jsonjoy.com/fs-node-builtins/-/fs-node-builtins-4.57.8.tgz#ba350bf262571e38d3c195f5346eddec07c1d053" + integrity sha512-mxXSXw8zZwRVakcjLqR2I/psy4gURFSASZS10kKJ2kJw05GC2nXGroGrWVHxwgkxXgQLsFQnB74QaLzsxzdL/w== -"@jsonjoy.com/fs-node-to-fsa@4.57.7": - version "4.57.7" - resolved "https://registry.yarnpkg.com/@jsonjoy.com/fs-node-to-fsa/-/fs-node-to-fsa-4.57.7.tgz#2c4b1807bd1a7be599536d47fedf802706b6b366" - integrity sha512-9T0zC9LKcAWXDoTLRdLMoJ0seOvJ5bgDKq1tSBoQAFQpPDstQUeV1Oe7PLypdu7F2D3ddRstmwgeNUEN/VaZ4Q== +"@jsonjoy.com/fs-node-to-fsa@4.57.8": + version "4.57.8" + resolved "https://registry.yarnpkg.com/@jsonjoy.com/fs-node-to-fsa/-/fs-node-to-fsa-4.57.8.tgz#4372e75e7a6a76b4d8ac91dc2d93edfa8587599f" + integrity sha512-AWZcT/4+H+iDl4XCukbXrarvwEgOrf/prFI5/7eg4ix9FxqVsZysIDJd1Kjd+AjlCeHKHJOaRqjLd5HiGSCJEw== dependencies: - "@jsonjoy.com/fs-fsa" "4.57.7" - "@jsonjoy.com/fs-node-builtins" "4.57.7" - "@jsonjoy.com/fs-node-utils" "4.57.7" + "@jsonjoy.com/fs-fsa" "4.57.8" + "@jsonjoy.com/fs-node-builtins" "4.57.8" + "@jsonjoy.com/fs-node-utils" "4.57.8" -"@jsonjoy.com/fs-node-utils@4.57.7": - version "4.57.7" - resolved "https://registry.yarnpkg.com/@jsonjoy.com/fs-node-utils/-/fs-node-utils-4.57.7.tgz#51308c4bdfc717ccbb155759fe7df9c91afec099" - integrity sha512-jjWSDOsfcog2cZnUCwX5AHmlIq6b6wx5Pz/2LAcNjJ62Rajwg89Fy7ubN+lDHew0/1reLDa9Z5urybYadhh37g== +"@jsonjoy.com/fs-node-utils@4.57.8": + version "4.57.8" + resolved "https://registry.yarnpkg.com/@jsonjoy.com/fs-node-utils/-/fs-node-utils-4.57.8.tgz#a1a15d587fff235b616d5ea775e0f9a88f387a56" + integrity sha512-E/bJ7sQAb4pu9nbeJhbULU3WnqWrswte4N9Js/oHt7aHB746S8/XBqKlcbrqIgnD3095XluovNEZuu5ONT230g== dependencies: - "@jsonjoy.com/fs-node-builtins" "4.57.7" + "@jsonjoy.com/fs-node-builtins" "4.57.8" -"@jsonjoy.com/fs-node@4.57.7": - version "4.57.7" - resolved "https://registry.yarnpkg.com/@jsonjoy.com/fs-node/-/fs-node-4.57.7.tgz#3d62f93af1ccdffd39d439154f36155d7e3eb5c6" - integrity sha512-xhnyeyEVTiIOibFvda/5n89nChMLCPKHHM2WQ+GGDf6+U/IrQBW3Qx6x+Uq1bkDbxBkybLOdIGoBtVBrE8Nngg== +"@jsonjoy.com/fs-node@4.57.8": + version "4.57.8" + resolved "https://registry.yarnpkg.com/@jsonjoy.com/fs-node/-/fs-node-4.57.8.tgz#d16b418d2179f7092f9fe5daeb18d31a5835a19b" + integrity sha512-IPEOlDYSnTDYpjQlQg2F8h+eqxKQN3sdbroI0WrteRiQZ462HzVpBo9ZZX485njz4nAacoe3fd4iDiIhk+k5Hg== dependencies: - "@jsonjoy.com/fs-core" "4.57.7" - "@jsonjoy.com/fs-node-builtins" "4.57.7" - "@jsonjoy.com/fs-node-utils" "4.57.7" - "@jsonjoy.com/fs-print" "4.57.7" - "@jsonjoy.com/fs-snapshot" "4.57.7" + "@jsonjoy.com/fs-core" "4.57.8" + "@jsonjoy.com/fs-node-builtins" "4.57.8" + "@jsonjoy.com/fs-node-utils" "4.57.8" + "@jsonjoy.com/fs-print" "4.57.8" + "@jsonjoy.com/fs-snapshot" "4.57.8" glob-to-regex.js "^1.0.0" thingies "^2.5.0" -"@jsonjoy.com/fs-print@4.57.7": - version "4.57.7" - resolved "https://registry.yarnpkg.com/@jsonjoy.com/fs-print/-/fs-print-4.57.7.tgz#aec8e3f5d66cd64e90e1fc9913a5fa4811d824b1" - integrity sha512-mFM4P4Gjq0QQHkLnXzPYPEMFrAoe6a5Myedgb6+CmL+nGd3MKvTxYPuD7N1dLIH9RBy1fLdzxd80qvuK8xrx3Q== +"@jsonjoy.com/fs-print@4.57.8": + version "4.57.8" + resolved "https://registry.yarnpkg.com/@jsonjoy.com/fs-print/-/fs-print-4.57.8.tgz#5ff6b2e0dd3f85aa7563f66cd36b4de1f0ce89a3" + integrity sha512-DfzhOBpmvNu5P/KSe4NNQaOnvNliTdcf0qrh/4EReErF/XUQXYkd0vZl/OiJCm/qjEEo8DWRstliw2/JNS84dA== dependencies: - "@jsonjoy.com/fs-node-utils" "4.57.7" + "@jsonjoy.com/fs-node-utils" "4.57.8" tree-dump "^1.1.0" -"@jsonjoy.com/fs-snapshot@4.57.7": - version "4.57.7" - resolved "https://registry.yarnpkg.com/@jsonjoy.com/fs-snapshot/-/fs-snapshot-4.57.7.tgz#370cf405bac358a4ff426d848b733df9ec5149d2" - integrity sha512-1GS3+plfm2giB3PqokiqyydyqYTPLcCQIKSkp0TdMNRh3KVk7rqRM6U785FLlVRG7XLmkc0KWr215OY+22K3QA== +"@jsonjoy.com/fs-snapshot@4.57.8": + version "4.57.8" + resolved "https://registry.yarnpkg.com/@jsonjoy.com/fs-snapshot/-/fs-snapshot-4.57.8.tgz#65b317f7698816c7196dbebc73e9d43e06f143be" + integrity sha512-L+eqKaWOHLDaiMv1dh/EWQ4hA+o6xAhWSumTo3Teg7OM18jU/KE13/e8Mfal+eAZ/pSl4wIhKHcDiwapJzC8Wg== dependencies: "@jsonjoy.com/buffers" "^17.65.0" - "@jsonjoy.com/fs-node-utils" "4.57.7" + "@jsonjoy.com/fs-node-utils" "4.57.8" "@jsonjoy.com/json-pack" "^17.65.0" "@jsonjoy.com/util" "^17.65.0" @@ -2923,11 +2923,11 @@ integrity sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA== "@types/node@*": - version "25.9.3" - resolved "https://registry.yarnpkg.com/@types/node/-/node-25.9.3.tgz#11dfe7a33e68fa5c560f0aa76cc5595621ef26b9" - integrity sha512-603BddQMv3pUcr4U2dhujk83N2tTDVr/34wII2B6bJy6g+8WD6yUb11jszNs0gdi4PesVWl7ABt8nYMVpnLUcg== + version "26.0.0" + resolved "https://registry.yarnpkg.com/@types/node/-/node-26.0.0.tgz#d4aece9e9412e9f2008d59bc2d74f5279316b665" + integrity sha512-vf2YFi1iY9lHGwNJMs01biZFbKJkrZR1T6/MlzjhJLPdntOHLhTrDSnSVcdtvjihi4VQNlrFRIxLsDBlQpAipA== dependencies: - undici-types ">=7.24.0 <7.24.7" + undici-types "~8.3.0" "@types/node@^17.0.5": version "17.0.45" @@ -3295,24 +3295,24 @@ algoliasearch-helper@^3.26.0: "@algolia/events" "^4.0.1" algoliasearch@^5.37.0: - version "5.54.0" - resolved "https://registry.yarnpkg.com/algoliasearch/-/algoliasearch-5.54.0.tgz#49a65f246f85cf351c22fdff294a41c2afa44a80" - integrity sha512-APAX4ajIOgsmYoUlGe++oNZkSTBgmXYM4maHC0OxC+Yo7xkaKQElV0ATZYCZA7jzrSJX1OBiqEs7mk+ZxXgYqA== + version "5.55.0" + resolved "https://registry.yarnpkg.com/algoliasearch/-/algoliasearch-5.55.0.tgz#ed56f8f10ad42e056761b1200b867ada2f5c5db4" + integrity sha512-af+rI+tUVeS9KWHPAZQHIHPOIC3StPRR6IwQu2nz1aQoTL6Gs5Ty3KsHCgbXMHOpoh9QqSjq8F3KJ8xmaCZSBA== dependencies: - "@algolia/abtesting" "1.20.0" - "@algolia/client-abtesting" "5.54.0" - "@algolia/client-analytics" "5.54.0" - "@algolia/client-common" "5.54.0" - "@algolia/client-insights" "5.54.0" - "@algolia/client-personalization" "5.54.0" - "@algolia/client-query-suggestions" "5.54.0" - "@algolia/client-search" "5.54.0" - "@algolia/ingestion" "1.54.0" - "@algolia/monitoring" "1.54.0" - "@algolia/recommend" "5.54.0" - "@algolia/requester-browser-xhr" "5.54.0" - "@algolia/requester-fetch" "5.54.0" - "@algolia/requester-node-http" "5.54.0" + "@algolia/abtesting" "1.21.0" + "@algolia/client-abtesting" "5.55.0" + "@algolia/client-analytics" "5.55.0" + "@algolia/client-common" "5.55.0" + "@algolia/client-insights" "5.55.0" + "@algolia/client-personalization" "5.55.0" + "@algolia/client-query-suggestions" "5.55.0" + "@algolia/client-search" "5.55.0" + "@algolia/ingestion" "1.55.0" + "@algolia/monitoring" "1.55.0" + "@algolia/recommend" "5.55.0" + "@algolia/requester-browser-xhr" "5.55.0" + "@algolia/requester-fetch" "5.55.0" + "@algolia/requester-node-http" "5.55.0" ansi-align@^3.0.1: version "3.0.1" @@ -3471,9 +3471,9 @@ balanced-match@^1.0.0: integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== baseline-browser-mapping@^2.10.12: - version "2.10.37" - resolved "https://registry.yarnpkg.com/baseline-browser-mapping/-/baseline-browser-mapping-2.10.37.tgz#3e636475b6b293244e2b23e2c71a2ab9d9e6ba7d" - integrity sha512-girxaJ7WZssDOFhzCGZTDKoTa1gk6A1TbflaYTpykLJ4UU9Fz9kx1aREM8JCuoVHbL8X8T/mJg7w2oYSq72Oig== + version "2.10.38" + resolved "https://registry.yarnpkg.com/baseline-browser-mapping/-/baseline-browser-mapping-2.10.38.tgz#c84d093c4bf7325c5053c279d90f153c66526042" + integrity sha512-31/02mVB4yuQU6adKk5SlY6m+mxDwUq5KZkyYgnLrrKl7TEm1+3PyDtDBz2kOv/wxZz41GHsvV1A/u6RmiyBvw== batch@0.6.1: version "0.6.1" @@ -4476,9 +4476,9 @@ ee-first@1.1.1: integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== electron-to-chromium@^1.5.328: - version "1.5.372" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.372.tgz#ae8ac69942a37b231773b8fb01759f73733599e3" - integrity sha512-M3yhbAlilnwqC8D21t28UCDGHyitShTmmLRU/H+b74P6Ski16Nb9HONYEaVpMj/pwC7BEo5B95FpjODLCWbtfA== + version "1.5.376" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.376.tgz#16a9d4b72cb16c416aa73a879d92b047b96797ac" + integrity sha512-cUVA7/RvbFTEuw/i3obUwDTRIXojaxkResf+ibByPFxjc6XK3VNtcQXV0NSbAlJ0FMjcJGgftVVB4Qo184EXvA== emoji-regex@^8.0.0: version "8.0.0" @@ -5418,9 +5418,9 @@ http-parser-js@>=0.5.1: integrity sha512-Pysuw9XpUq5dVc/2SMHpuTY01RFl8fttgcyunjL7eEMhGM3cI4eOmiCycJDVCo/7O7ClfQD3SaI6ftDzqOXYMA== http-proxy-middleware@^2.0.9: - version "2.0.9" - resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-2.0.9.tgz#e9e63d68afaa4eee3d147f39149ab84c0c2815ef" - integrity sha512-c1IyJYLYppU574+YI7R4QyX2ystMtVXZwIdzazUIPIJsHuWNd+mho2j+bKoHftndicGj9yh+xjd+l0yj7VeT1Q== + version "2.0.10" + resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-2.0.10.tgz#b2df7b705203d7a8c269ac8450cf96b00c532f94" + integrity sha512-RKzRWNPxUZqbuk3BC5mGVJbBnWgr+diEnjJexIOytFbBzDy88Fbh/YvBr3DsNrl1jYAfjWfpATEv0NO35FDuPQ== dependencies: "@types/http-proxy" "^1.17.8" http-proxy "^1.18.1" @@ -6247,18 +6247,18 @@ media-typer@0.3.0: integrity sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ== memfs@^4.43.1: - version "4.57.7" - resolved "https://registry.yarnpkg.com/memfs/-/memfs-4.57.7.tgz#bad8bc1680d8b5349da6575b095779956f6b89b0" - integrity sha512-YZPphUQZSRGk6ddPlsNuMbztrLwsbUATFNZcqKscSbSJZ4g0+Y3vSZLJ/rfnGZaB1FFhC7SrywZXev6i8lnHgg== + version "4.57.8" + resolved "https://registry.yarnpkg.com/memfs/-/memfs-4.57.8.tgz#b9c1995040307c60a1503e65a3e5902ad3927628" + integrity sha512-bApYhn8BLpFAnAQmFfEl/NPN+8qx5Ar3V4Qt3ek23mVwBEElzV7c6XoPkb/PCG8ZFpowCEpHcPwMFTwHS7tSMA== dependencies: - "@jsonjoy.com/fs-core" "4.57.7" - "@jsonjoy.com/fs-fsa" "4.57.7" - "@jsonjoy.com/fs-node" "4.57.7" - "@jsonjoy.com/fs-node-builtins" "4.57.7" - "@jsonjoy.com/fs-node-to-fsa" "4.57.7" - "@jsonjoy.com/fs-node-utils" "4.57.7" - "@jsonjoy.com/fs-print" "4.57.7" - "@jsonjoy.com/fs-snapshot" "4.57.7" + "@jsonjoy.com/fs-core" "4.57.8" + "@jsonjoy.com/fs-fsa" "4.57.8" + "@jsonjoy.com/fs-node" "4.57.8" + "@jsonjoy.com/fs-node-builtins" "4.57.8" + "@jsonjoy.com/fs-node-to-fsa" "4.57.8" + "@jsonjoy.com/fs-node-utils" "4.57.8" + "@jsonjoy.com/fs-print" "4.57.8" + "@jsonjoy.com/fs-snapshot" "4.57.8" "@jsonjoy.com/json-pack" "^1.11.0" "@jsonjoy.com/util" "^1.9.0" glob-to-regex.js "^1.0.1" @@ -6815,9 +6815,9 @@ multicast-dns@^7.2.5: thunky "^1.0.2" nanoid@^3.3.12: - version "3.3.12" - resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.12.tgz#ab3d912e217a6d0a514f00a72a16543a28982c05" - integrity sha512-ZB9RH/39qpq5Vu6Y+NmUaFhQR6pp+M2Xt76XBnEwDaGcVAqhlvxrl3B2bKS5D3NH3QR76v3aSrKaF/Kiy7lEtQ== + version "3.3.15" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.15.tgz#36c490fad8c6e86c824c940dfdde999b69ed4316" + integrity sha512-y7Wygv/7mEOvxTuEQDB8StXdMRBWf1kR/tlhAzBRUFkB2jfcLOAxO/SHmOO2zgz1pVgK29/kyupn059/bCHdjA== negotiator@0.6.3: version "0.6.3" @@ -6853,9 +6853,9 @@ node-emoji@^2.1.0: skin-tone "^2.0.0" node-releases@^2.0.36: - version "2.0.47" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.47.tgz#521bb2786da8eb140b748841c0b3b3a75334ffc4" - integrity sha512-Uzmd6LXpouKo8EUK68IjH4+E01w/hXyV3R3g/geCJo+rXLNfh1xucB+LOzYEOQPSiUK3h/xZf0cQGcSsmyL2Og== + version "2.0.48" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.48.tgz#4da73d040ada751fc9959d993f27de48792e3b7d" + integrity sha512-1uz8041X6LoI6ZSdZacM9lVY28vuzDlSKitnpbSNK0RfKoIJkX29NBPVEFXhnuSuEOA9Ww0xnPJ+ILWbGAv8DA== normalize-path@^3.0.0, normalize-path@~3.0.0: version "3.0.0" @@ -8372,9 +8372,9 @@ semver@^6.3.1: integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== semver@^7.3.5, semver@^7.3.7, semver@^7.5.4: - version "7.8.4" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.8.4.tgz#c73eceebae0616934be8dff28a7fd70757c8e696" - integrity sha512-rUCObTnP32Q08R2uuIrt7r9PlEonuTmtuXYcW6s5kjdlj3xbnwe+21yXptAUYcMAABLkYYTtnmzb3w3EDZfueA== + version "7.8.5" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.8.5.tgz#39b646037dd50c14fb451e7e4cac58ed8b863f69" + integrity sha512-Y7/KDsb8LjooZpwaqGyulO6DQlksgCncchHGk+sZIY4SBvUocMBEFH5Ur1fI4dV+Jvl0w6cjvucaIi40puRioA== send@~0.19.0, send@~0.19.1: version "0.19.2" @@ -8937,15 +8937,15 @@ typescript@~6.0.0: resolved "https://registry.yarnpkg.com/typescript/-/typescript-6.0.3.tgz#90251dc007916e972786cb94d74d15b185577d21" integrity sha512-y2TvuxSZPDyQakkFRPZHKFm+KKVqIisdg9/CZwm9ftvKXLP8NRWj38/ODjNbr43SsoXqNuAisEf1GdCxqWcdBw== -"undici-types@>=7.24.0 <7.24.7": - version "7.24.6" - resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-7.24.6.tgz#61275b485d7fd4e9d269c7cf04ec2873c9cc0f91" - integrity sha512-WRNW+sJgj5OBN4/0JpHFqtqzhpbnV0GuB+OozA9gCL7a993SmU+1JBZCzLNxYsbMfIeDL+lTsphD5jN5N+n0zg== +undici-types@~8.3.0: + version "8.3.0" + resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-8.3.0.tgz#44e9fc9f3244648cdea35e4f9bb2d681e9410809" + integrity sha512-j375ScV60dom+YkPFIfTLcOiPxkN/buHz5GobjLhixFuANaNs3C9l4GmrWqejgXWJ7BbJcFYpTEUkS1Ge8bpZQ== undici@^7.19.0: - version "7.27.2" - resolved "https://registry.yarnpkg.com/undici/-/undici-7.27.2.tgz#f8fae968ee68377cfc61713d9cd152773716804f" - integrity sha512-uZsKNuzQxDMUY6M3pIMvy5tvlGmtq8XJ2oLAkfRKGNu+1VQAIvLy2xIVG5ATZl5wDXl/tddByAWCizRbOme+TA== + version "7.28.0" + resolved "https://registry.yarnpkg.com/undici/-/undici-7.28.0.tgz#97d64564198b285bc281f0e8e29597e3d11fe7ec" + integrity sha512-cRZYrTDwWznlnRiPjggAGxZXanty6M8RV1ff8Wm4LWXBp7/IG8v5DnOm74DtUBp9OONpK75YlPnIjQqX0dBDtA== unicode-canonical-property-names-ecmascript@^2.0.0: version "2.0.1" From f3b4934faf9e003636572299cfb34d5c0a54d73f Mon Sep 17 00:00:00 2001 From: Marco Nenciarini Date: Fri, 26 Jun 2026 11:07:15 +0200 Subject: [PATCH 049/134] chore(deps): drop setuptools dependency (#983) Barman 3.19 dropped its runtime dependency on setuptools, so we no longer need to pin it in the sidecar requirements or install it in the image build. A Python 3.13 venv no longer seeds setuptools by default, so removing it from the pip upgrade keeps it out of the runtime image entirely. Signed-off-by: Marco Nenciarini --- containers/Dockerfile.sidecar | 2 +- containers/sidecar-requirements.in | 1 - containers/sidecar-requirements.txt | 6 ------ 3 files changed, 1 insertion(+), 8 deletions(-) diff --git a/containers/Dockerfile.sidecar b/containers/Dockerfile.sidecar index 3970bba..bc7678f 100644 --- a/containers/Dockerfile.sidecar +++ b/containers/Dockerfile.sidecar @@ -55,7 +55,7 @@ COPY containers/sidecar-requirements.txt . # Create virtualenv and install dependencies RUN python3 -m venv /venv && \ - /venv/bin/pip install --upgrade pip setuptools wheel && \ + /venv/bin/pip install --upgrade pip wheel && \ /venv/bin/pip install --no-cache-dir -r sidecar-requirements.txt # Download and extract runtime library packages and their dependencies diff --git a/containers/sidecar-requirements.in b/containers/sidecar-requirements.in index 667c547..2f84b93 100644 --- a/containers/sidecar-requirements.in +++ b/containers/sidecar-requirements.in @@ -1,3 +1,2 @@ barman[azure,cloud,google,snappy,zstandard,lz4]==3.19.1 -setuptools==82.0.1 zipp>=3.19.1 # not directly required, pinned by Snyk to avoid a vulnerability diff --git a/containers/sidecar-requirements.txt b/containers/sidecar-requirements.txt index 158dfc4..cfb5908 100644 --- a/containers/sidecar-requirements.txt +++ b/containers/sidecar-requirements.txt @@ -780,9 +780,3 @@ zstandard==0.25.0 \ --hash=sha256:fd7a5004eb1980d3cefe26b2685bcb0b17989901a70a1040d1ac86f1d898c551 \ --hash=sha256:ffef5a74088f1e09947aecf91011136665152e0b4b359c42be3373897fb39b01 # via barman - -# The following packages are considered to be unsafe in a requirements file: -setuptools==82.0.1 \ - --hash=sha256:7d872682c5d01cfde07da7bccc7b65469d3dca203318515ada1de5eda35efbf9 \ - --hash=sha256:a59e362652f08dcd477c78bb6e7bd9d80a7995bc73ce773050228a348ce2e5bb - # via -r sidecar-requirements.in From 26de2dadaf61bcfa5a4895a711db20d5a37793af Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 26 Jun 2026 12:17:30 +0200 Subject: [PATCH 050/134] chore(deps): update all cloudnative-pg daggerverse dependencies to 7a53f0b (#984) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Update | Change | |---|---|---| | commitlint | digest | `679d505` β†’ `7a53f0b` | | controller-gen | digest | `679d505` β†’ `7a53f0b` | | crd-gen-refs | digest | `679d505` β†’ `7a53f0b` | | spellcheck | digest | `679d505` β†’ `7a53f0b` | | uncommitted | digest | `679d505` β†’ `7a53f0b` | Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Taskfile.yml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/Taskfile.yml b/Taskfile.yml index ca5503f..d765694 100644 --- a/Taskfile.yml +++ b/Taskfile.yml @@ -46,7 +46,7 @@ tasks: - wordlist-ordered env: # renovate: datasource=git-refs depName=spellcheck lookupName=https://github.com/cloudnative-pg/daggerverse currentValue=main - DAGGER_SPELLCHECK_SHA: 679d5056358d3cd838ec226333decff673602937 + DAGGER_SPELLCHECK_SHA: 7a53f0b7f36c786389a6f72714d5875b9a63e9c1 cmds: - > GITHUB_REF= dagger -s call -m github.com/cloudnative-pg/daggerverse/spellcheck@${DAGGER_SPELLCHECK_SHA} @@ -60,7 +60,7 @@ tasks: desc: Check for conventional commits env: # renovate: datasource=git-refs depName=commitlint lookupName=https://github.com/cloudnative-pg/daggerverse currentValue=main - DAGGER_COMMITLINT_SHA: 679d5056358d3cd838ec226333decff673602937 + DAGGER_COMMITLINT_SHA: 7a53f0b7f36c786389a6f72714d5875b9a63e9c1 cmds: - > GITHUB_REF= dagger -s call -m github.com/cloudnative-pg/daggerverse/commitlint@${DAGGER_COMMITLINT_SHA} @@ -74,7 +74,7 @@ tasks: - wordlist-ordered env: # renovate: datasource=git-refs depName=uncommitted lookupName=https://github.com/cloudnative-pg/daggerverse currentValue=main - DAGGER_UNCOMMITTED_SHA: 679d5056358d3cd838ec226333decff673602937 + DAGGER_UNCOMMITTED_SHA: 7a53f0b7f36c786389a6f72714d5875b9a63e9c1 cmds: - GITHUB_REF= dagger -s call -m github.com/cloudnative-pg/daggerverse/uncommitted@${DAGGER_UNCOMMITTED_SHA} check-uncommitted --source . stdout sources: @@ -86,7 +86,7 @@ tasks: - controller-gen env: # renovate: datasource=git-refs depName=crd-gen-refs lookupName=https://github.com/cloudnative-pg/daggerverse currentValue=main - DAGGER_CRDGENREF_SHA: 679d5056358d3cd838ec226333decff673602937 + DAGGER_CRDGENREF_SHA: 7a53f0b7f36c786389a6f72714d5875b9a63e9c1 # renovate: datasource=go depName=github.com/elastic/crd-ref-docs CRDREFDOCS_VERSION: v0.3.0 cmds: @@ -381,7 +381,7 @@ tasks: run: once env: # renovate: datasource=git-refs depName=controller-gen lookupName=https://github.com/cloudnative-pg/daggerverse currentValue=main - DAGGER_CONTROLLER_GEN_SHA: 679d5056358d3cd838ec226333decff673602937 + DAGGER_CONTROLLER_GEN_SHA: 7a53f0b7f36c786389a6f72714d5875b9a63e9c1 cmds: - > GITHUB_REF= dagger -s call -m github.com/cloudnative-pg/daggerverse/controller-gen@${DAGGER_CONTROLLER_GEN_SHA} From f4fa18e592def611fbe4fbb91e330eacb2d96450 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 26 Jun 2026 12:18:05 +0200 Subject: [PATCH 051/134] chore(deps): update dependency cert-manager/cert-manager to v1.20.3 (#985) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Update | Change | |---|---|---| | [cert-manager/cert-manager](https://redirect.github.com/cert-manager/cert-manager) | patch | `v1.20.2` β†’ `v1.20.3` | Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- test/e2e/internal/certmanager/certmanager.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/e2e/internal/certmanager/certmanager.go b/test/e2e/internal/certmanager/certmanager.go index 404d85e..ae14ea0 100644 --- a/test/e2e/internal/certmanager/certmanager.go +++ b/test/e2e/internal/certmanager/certmanager.go @@ -58,7 +58,7 @@ func WithIgnoreExistingResources(ignore bool) InstallOption { // DefaultVersion is the default version of cert-manager to install. // // renovate: datasource=github-releases depName=cert-manager/cert-manager -const DefaultVersion = "v1.20.2" +const DefaultVersion = "v1.20.3" // Install installs cert-manager using kubectl. func Install(ctx context.Context, cl client.Client, opts ...InstallOption) error { From 3cc6a882c868192750f4b5c3a0c0bd007917c67f Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 26 Jun 2026 12:18:39 +0200 Subject: [PATCH 052/134] chore(deps): refresh pip-compile outputs (#977) This PR contains the following updates: | Update | Change | |---|---| | lockFileMaintenance | All locks refreshed | Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- containers/sidecar-requirements.txt | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/containers/sidecar-requirements.txt b/containers/sidecar-requirements.txt index cfb5908..dbd8a5f 100644 --- a/containers/sidecar-requirements.txt +++ b/containers/sidecar-requirements.txt @@ -22,19 +22,19 @@ barman==3.19.1 \ --hash=sha256:0a6a9e1babf97687732d8b2a3eb79ea95d55246a5257b9433865cb6e755221c0 \ --hash=sha256:2f71c4a1f1ba53f694cbdf838bb9906d8ba02b97d1fd3041196e8999bec7a1ee # via -r sidecar-requirements.in -boto3==1.43.30 \ - --hash=sha256:6b1ee360f363a457f67a8f5702f522043d8a32d67a97c362ad12075d8b5b531e \ - --hash=sha256:89e982463d94773136ccf69be77cccd54ff1ce351a6aadd1d3437fcb693681b5 +boto3==1.43.36 \ + --hash=sha256:42942dde254673abcbc9e6e60017c88341a4f49d99d24e1f2e290fb38138c26f \ + --hash=sha256:587d7ee92a12e440ad12b0e7f11f3358f0c4d65b19f64726efc94aaf194aff28 # via barman -botocore==1.43.30 \ - --hash=sha256:19ed560cb35ae43bf010d37da429a553c07063bf7efea0f2cb53be8a78d3e3d5 \ - --hash=sha256:26b1dded84d89b396180916f56900bd2ab1c0d545a66d1d2c3eeb40f772935b2 +botocore==1.43.36 \ + --hash=sha256:3c65fdc39ed01d8dfde1e961b34038aed03c459f8ddf80717a12ac006475e49d \ + --hash=sha256:4cae47d1b2d426316b85a0087d9e69e048f13bc003b5177d74639fe9dfd28205 # via # boto3 # s3transfer -certifi==2026.5.20 \ - --hash=sha256:3c52e209ba0a4ad7aebe60436a4ab349c39e1e602e8c134221e546902ad25897 \ - --hash=sha256:69dea482ab64caa7b9f6aba1c6bf48bb6a5448d1c0f1b17ab42ad8c763a5344d +certifi==2026.6.17 \ + --hash=sha256:024c88eeec92ca068db80f02b8b07c9cef7b9fe261d1d535abfd5abd6f6af432 \ + --hash=sha256:2227dcbaafe0d2f59279d1762ddddc37783ed4354594f194ffc31d20f41fc3db # via requests cffi==2.0.0 \ --hash=sha256:00bdf7acc5f795150faa6957054fbbca2439db2f775ce831222b66f192f03beb \ @@ -654,9 +654,9 @@ requests==2.34.2 \ # google-api-core # google-cloud-storage # msal -s3transfer==0.18.0 \ - --hash=sha256:239c13b09e65ad0346e1be7348b8a202dcad44ac7ea7c6eb858fc881dce739b6 \ - --hash=sha256:3760b8b7ec1315da54048b2d626276732bee4300d054d492d4e1d43e20d4ecbd +s3transfer==0.19.0 \ + --hash=sha256:777cc2415536f1debadb5c2ef7779275d0fc0fe0e042411cdd6caebeb2685262 \ + --hash=sha256:ce436931687addc4c1712d52d40b32f53e88315723f107ffa20ba82b05a0f685 # via boto3 six==1.17.0 \ --hash=sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274 \ From bf955430cb58987bbbe3cd2925ea06700cf85609 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niccol=C3=B2=20Fei?= Date: Thu, 9 Jul 2026 10:36:09 +0200 Subject: [PATCH 053/134] fix: reduce startupProbe periodSeconds without losing failure tolerance (#992) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The startup probe for the injected plugin-barman-cloud sidecar previously left `periodSeconds` unset, so the API server defaulted it to 10s. Because the sidecar is a native init container that gates the main postgres container on reaching `Started`, this added roughly one full period to every pod's startup, even though the probe itself (a local unix-socket health check) normally succeeds in milliseconds. `periodSeconds` is now 1s, so the probe reports success almost immediately in the common case. To avoid trading away failure tolerance for that faster common case, `failureThreshold` is raised to 30 and `timeoutSeconds` is lowered to 5s: a unix-socket call essentially never times out under mere load, so hitting the timeout means the sidecar is genuinely unresponsive rather than just slow, and it's fine to give that rare case more attempts before restarting the container. Closes #991 Signed-off-by: NiccolΓ² Fei Signed-off-by: Marco Nenciarini Co-authored-by: Marco Nenciarini --- internal/cnpgi/operator/lifecycle.go | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/internal/cnpgi/operator/lifecycle.go b/internal/cnpgi/operator/lifecycle.go index 776b301..8bb26d8 100644 --- a/internal/cnpgi/operator/lifecycle.go +++ b/internal/cnpgi/operator/lifecycle.go @@ -403,8 +403,9 @@ func reconcilePodSpec( envs = append(envs, config.env...) baseProbe := &corev1.Probe{ - FailureThreshold: 10, - TimeoutSeconds: 10, + PeriodSeconds: 1, + FailureThreshold: 30, + TimeoutSeconds: 5, ProbeHandler: corev1.ProbeHandler{ Exec: &corev1.ExecAction{ Command: []string{"/manager", "healthcheck", "unix"}, From b0e45381473de42f77f15c44a846478585e35ea2 Mon Sep 17 00:00:00 2001 From: Marco Nenciarini Date: Thu, 9 Jul 2026 11:00:04 +0200 Subject: [PATCH 054/134] chore(renovate): stop ignoring test/e2e/internal/tests/** (#996) ignorePaths still had '**/tests/**' left over from the recommended preset, even though a comment right above documents removing '**/test/**' specifically to let renovate scan test/e2e for emulator image dependencies. Every e2e Ginkgo package lives under test/e2e/internal/tests/**, so the plural pattern was silently excluding all of them; any image pinned by digest in those packages (e.g. minio, aws-cli) was never going to get a bump PR. No other tracked path in the repo matches '**/tests/**' once node_modules is excluded by its own rule, so this narrows nothing else. Signed-off-by: Marco Nenciarini --- renovate.json5 | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/renovate.json5 b/renovate.json5 index b5b8a32..132ff19 100644 --- a/renovate.json5 +++ b/renovate.json5 @@ -12,14 +12,14 @@ rebaseWhen: 'never', prConcurrentLimit: 5, // Override default ignorePaths to scan test/e2e for emulator image dependencies - // Removed: '**/test/**' + // Removed: '**/test/**', '**/tests/**' (this repo's e2e Ginkgo packages live + // under test/e2e/internal/tests/**, which the plural pattern was excluding) ignorePaths: [ '**/node_modules/**', '**/bower_components/**', '**/vendor/**', '**/examples/**', '**/__tests__/**', - '**/tests/**', '**/__fixtures__/**', ], lockFileMaintenance: { From 21aadbfd11a9346095931f2fbf7d754cdeb59ec9 Mon Sep 17 00:00:00 2001 From: Armando Ruocco Date: Thu, 9 Jul 2026 11:26:08 +0200 Subject: [PATCH 055/134] test(e2e): cover parallel WAL restore via the plugin (#978) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Recreate the parallel WAL-restore coverage in the plugin repo: a 2-instance cluster archiving to minio with wal.maxParallel=3, forged WAL segments on the object store, and assertions on the plugin's prefetch/spool/end-of-wal-stream state machine driven through `/controller/manager wal-restore` on the standby. Part of cloudnative-pg/cloudnative-pg#10954. Signed-off-by: Armando Ruocco Signed-off-by: NiccolΓ² Fei Signed-off-by: Marco Nenciarini Co-authored-by: NiccolΓ² Fei Co-authored-by: Marco Nenciarini --- test/e2e/e2e_suite_test.go | 1 + test/e2e/internal/tests/walrestore/doc.go | 24 ++ .../e2e/internal/tests/walrestore/fixtures.go | 178 ++++++++++ .../internal/tests/walrestore/walrestore.go | 312 ++++++++++++++++++ 4 files changed, 515 insertions(+) create mode 100644 test/e2e/internal/tests/walrestore/doc.go create mode 100644 test/e2e/internal/tests/walrestore/fixtures.go create mode 100644 test/e2e/internal/tests/walrestore/walrestore.go diff --git a/test/e2e/e2e_suite_test.go b/test/e2e/e2e_suite_test.go index bbf7b90..0f2bfdf 100644 --- a/test/e2e/e2e_suite_test.go +++ b/test/e2e/e2e_suite_test.go @@ -39,6 +39,7 @@ import ( _ "github.com/cloudnative-pg/plugin-barman-cloud/test/e2e/internal/tests/backup" _ "github.com/cloudnative-pg/plugin-barman-cloud/test/e2e/internal/tests/credentialrotation" _ "github.com/cloudnative-pg/plugin-barman-cloud/test/e2e/internal/tests/replicacluster" + _ "github.com/cloudnative-pg/plugin-barman-cloud/test/e2e/internal/tests/walrestore" . "github.com/onsi/ginkgo/v2" . "github.com/onsi/gomega" diff --git a/test/e2e/internal/tests/walrestore/doc.go b/test/e2e/internal/tests/walrestore/doc.go new file mode 100644 index 0000000..00fbafb --- /dev/null +++ b/test/e2e/internal/tests/walrestore/doc.go @@ -0,0 +1,24 @@ +/* +Copyright Β© contributors to CloudNativePG, established as +CloudNativePG a Series of LF Projects, LLC. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + +SPDX-License-Identifier: Apache-2.0 +*/ + +// Package walrestore contains the end-to-end test for the parallel WAL restore +// behaviour of the Barman Cloud Plugin: prefetching upcoming segments into the +// spool directory, serving later requests from the spool, and tracking the +// end-of-wal-stream sentinel. +package walrestore diff --git a/test/e2e/internal/tests/walrestore/fixtures.go b/test/e2e/internal/tests/walrestore/fixtures.go new file mode 100644 index 0000000..e417dd9 --- /dev/null +++ b/test/e2e/internal/tests/walrestore/fixtures.go @@ -0,0 +1,178 @@ +/* +Copyright Β© contributors to CloudNativePG, established as +CloudNativePG a Series of LF Projects, LLC. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + +SPDX-License-Identifier: Apache-2.0 +*/ + +package walrestore + +import ( + cloudnativepgv1 "github.com/cloudnative-pg/api/pkg/api/v1" + barmanapi "github.com/cloudnative-pg/barman-cloud/pkg/api" + appsv1 "k8s.io/api/apps/v1" + corev1 "k8s.io/api/core/v1" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/utils/ptr" + + pluginBarmanCloudV1 "github.com/cloudnative-pg/plugin-barman-cloud/api/v1" + "github.com/cloudnative-pg/plugin-barman-cloud/test/e2e/internal/objectstore" +) + +const ( + minioName = "minio" + objectStoreName = "source" + clusterName = "source" + s3ClientName = "s3-client" + storageSize = "1Gi" + // walMaxParallel is the prefetch parallelism under test: for a regular WAL + // request the plugin restores the requested segment and prefetches the next + // ones, up to this many segments in total. + walMaxParallel = 3 +) + +// newObjectStoreResources returns the minio server Deployment/Service/Secret/PVC. +func newObjectStoreResources(namespace string) *objectstore.Resources { + return objectstore.NewMinioObjectStoreResources(namespace, minioName) +} + +// newObjectStore returns a minio-backed ObjectStore configured with the WAL +// prefetch parallelism (maxParallel) under test. Archiving with gzip makes the +// archived segments carry the ".gz" suffix that forged segments are copied from. +func newObjectStore(namespace string) *pluginBarmanCloudV1.ObjectStore { + store := objectstore.NewMinioObjectStore(namespace, objectStoreName, minioName) + store.Spec.Configuration.Wal = &barmanapi.WalBackupConfiguration{ + MaxParallel: walMaxParallel, + Compression: barmanapi.CompressionTypeGzip, + } + return store +} + +// newCluster returns a 2-instance cluster that uses the plugin as its WAL +// archiver, so the standby drives WAL restore (and its prefetch/spool/ +// end-of-wal-stream state machine) through the plugin. +func newCluster(namespace string) *cloudnativepgv1.Cluster { + return &cloudnativepgv1.Cluster{ + TypeMeta: metav1.TypeMeta{ + Kind: "Cluster", + APIVersion: "postgresql.cnpg.io/v1", + }, + ObjectMeta: metav1.ObjectMeta{ + Name: clusterName, + Namespace: namespace, + }, + Spec: cloudnativepgv1.ClusterSpec{ + Instances: 2, + ImagePullPolicy: corev1.PullAlways, + Plugins: []cloudnativepgv1.PluginConfiguration{ + { + Name: "barman-cloud.cloudnative-pg.io", + Parameters: map[string]string{ + "barmanObjectName": objectStoreName, + }, + IsWALArchiver: ptr.To(true), + }, + }, + PostgresConfiguration: cloudnativepgv1.PostgresConfiguration{ + Parameters: map[string]string{ + "log_min_messages": "DEBUG4", + }, + }, + StorageConfiguration: cloudnativepgv1.StorageConfiguration{ + Size: storageSize, + }, + }, + } +} + +// newS3ClientDeployment returns a deployment running the AWS CLI configured to +// talk to the in-namespace minio service. The test execs `aws s3` commands in +// it to forge WAL segments on the object store and to check their presence. +func newS3ClientDeployment(namespace string) *appsv1.Deployment { + labels := map[string]string{"app": s3ClientName} + return &appsv1.Deployment{ + TypeMeta: metav1.TypeMeta{ + Kind: "Deployment", + APIVersion: "apps/v1", + }, + ObjectMeta: metav1.ObjectMeta{ + Name: s3ClientName, + Namespace: namespace, + }, + Spec: appsv1.DeploymentSpec{ + Replicas: ptr.To(int32(1)), + Selector: &metav1.LabelSelector{MatchLabels: labels}, + Template: corev1.PodTemplateSpec{ + ObjectMeta: metav1.ObjectMeta{Labels: labels}, + Spec: corev1.PodSpec{ + Containers: []corev1.Container{ + { + Name: s3ClientName, + // renovate: datasource=docker depName=amazon/aws-cli versioning=docker + // Version: 2.35.11 + Image: "docker.io/amazon/aws-cli@sha256:749bfaf91d690b9a1768083822d620f96c19defdf9ca2dc227eb3695281fda5b", + Command: []string{"sleep", "infinity"}, + Env: []corev1.EnvVar{ + { + Name: "AWS_ENDPOINT_URL", + Value: "http://" + minioName + ":9000", + }, + { + Name: "AWS_ACCESS_KEY_ID", + ValueFrom: &corev1.EnvVarSource{ + SecretKeyRef: &corev1.SecretKeySelector{ + LocalObjectReference: corev1.LocalObjectReference{Name: minioName}, + Key: "ACCESS_KEY_ID", + }, + }, + }, + { + Name: "AWS_SECRET_ACCESS_KEY", + ValueFrom: &corev1.EnvVarSource{ + SecretKeyRef: &corev1.SecretKeySelector{ + LocalObjectReference: corev1.LocalObjectReference{Name: minioName}, + Key: "ACCESS_SECRET_KEY", + }, + }, + }, + { + Name: "AWS_DEFAULT_REGION", + Value: "us-east-1", + }, + // The CRC-based default checksums introduced in AWS + // CLI 2.23 are not supported by every S3-compatible + // object store, minio included. + { + Name: "AWS_REQUEST_CHECKSUM_CALCULATION", + Value: "when_required", + }, + { + Name: "AWS_RESPONSE_CHECKSUM_VALIDATION", + Value: "when_required", + }, + }, + SecurityContext: &corev1.SecurityContext{ + AllowPrivilegeEscalation: ptr.To(false), + SeccompProfile: &corev1.SeccompProfile{ + Type: corev1.SeccompProfileTypeRuntimeDefault, + }, + }, + }, + }, + }, + }, + }, + } +} diff --git a/test/e2e/internal/tests/walrestore/walrestore.go b/test/e2e/internal/tests/walrestore/walrestore.go new file mode 100644 index 0000000..287748f --- /dev/null +++ b/test/e2e/internal/tests/walrestore/walrestore.go @@ -0,0 +1,312 @@ +/* +Copyright Β© contributors to CloudNativePG, established as +CloudNativePG a Series of LF Projects, LLC. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + +SPDX-License-Identifier: Apache-2.0 +*/ + +package walrestore + +import ( + "context" + "errors" + "fmt" + "strconv" + "strings" + "time" + + corev1 "k8s.io/api/core/v1" + apitypes "k8s.io/apimachinery/pkg/types" + "k8s.io/client-go/kubernetes" + "k8s.io/client-go/rest" + executil "k8s.io/client-go/util/exec" + "sigs.k8s.io/controller-runtime/pkg/client" + + internalClient "github.com/cloudnative-pg/plugin-barman-cloud/test/e2e/internal/client" + internalCluster "github.com/cloudnative-pg/plugin-barman-cloud/test/e2e/internal/cluster" + "github.com/cloudnative-pg/plugin-barman-cloud/test/e2e/internal/command" + "github.com/cloudnative-pg/plugin-barman-cloud/test/e2e/internal/deployment" + nmsp "github.com/cloudnative-pg/plugin-barman-cloud/test/e2e/internal/namespace" + + . "github.com/onsi/ginkgo/v2" + . "github.com/onsi/gomega" +) + +const ( + // spoolDirectory is where the plugin sidecar prefetches WAL segments and + // records the end-of-wal-stream sentinel. It must match the SPOOL_DIRECTORY + // the operator injects on the sidecar (internal/cnpgi/operator/lifecycle.go), + // which lives on the CloudNativePG scratch-data volume shared with the + // postgres container, so the path is visible from the postgres container too. + spoolDirectory = "/controller/wal-restore-spool" + // pgWalPath is PgDataPath + "/pg_wal" in the CloudNativePG operand image. + pgWalPath = "/var/lib/postgresql/data/pgdata/pg_wal" + // endOfWALStreamFlag is the sentinel file the barman-cloud restorer writes in + // the spool to record that the archive ran out of segments. + endOfWALStreamFlag = "end-of-wal-stream" + // managerExecutable is the CloudNativePG instance manager. Its wal-restore + // subcommand delegates to the plugin when the cluster uses it as WAL archiver. + managerExecutable = "/controller/manager" + // postgresContainer is the container we exec into on instance pods. + postgresContainer = "postgres" + // walLogDir is the WALs subdirectory (timeline + log id) the forged segments + // live under; a freshly bootstrapped, idle cluster stays within it. + walLogDir = "0000000100000000" + // bucket is the destination bucket of the minio ObjectStore. + bucket = "backups" +) + +// walFile returns the name of the n-th forged WAL segment (segment 0xF0+n on +// timeline 1, log 0, for n <= 15). The high segment number keeps it out of the +// range an idle PostgreSQL would archive on its own. +func walFile(n int) string { + return fmt.Sprintf("0000000100000000%08X", 0xF0+n) +} + +// walObjectURI returns the s3 URI of a wals object (by file name) in the store. +func walObjectURI(name string) string { + return fmt.Sprintf("s3://%s/%s/wals/%s/%s", bucket, clusterName, walLogDir, name) +} + +// execInPod runs a command in the given container and returns stdout, stderr +// and the error (non-nil for a non-zero exit code). +func execInPod( + ctx context.Context, + clientSet *kubernetes.Clientset, + cfg *rest.Config, + namespace, pod, container string, + args ...string, +) (string, string, error) { + return command.ExecuteInContainer( + ctx, + *clientSet, + cfg, + command.ContainerLocator{ + NamespaceName: namespace, + PodName: pod, + ContainerName: container, + }, + nil, + args, + ) +} + +// This test drives the plugin's parallel WAL restore directly: it invokes the +// instance-manager wal-restore command on the standby (which delegates to the +// plugin) and asserts the prefetch/spool/end-of-wal-stream state machine with +// maxParallel = 3. To control the archive deterministically, it forges WAL +// segments on the object store by copying a real archived segment under new +// names. +var _ = Describe("Parallel WAL restore", func() { + var ( + namespace *corev1.Namespace + cl client.Client + clientSet *kubernetes.Clientset + cfg *rest.Config + ) + + BeforeEach(func(ctx SpecContext) { + var err error + cl, _, err = internalClient.NewClient() + Expect(err).NotTo(HaveOccurred()) + clientSet, cfg, err = internalClient.NewClientSet() + Expect(err).NotTo(HaveOccurred()) + namespace, err = nmsp.CreateUniqueNamespace(ctx, cl, "wal-restore-parallel") + Expect(err).NotTo(HaveOccurred()) + }) + + AfterEach(func(ctx SpecContext) { + Expect(cl.Delete(ctx, namespace)).To(Succeed()) + }) + + It("prefetches segments, serves them from the spool and tracks end-of-wal-stream", + func(ctx SpecContext) { + ns := namespace.Name + + By("creating the object store backing resources") + Expect(newObjectStoreResources(ns).Create(ctx, cl)).To(Succeed()) + + By("creating the ObjectStore with WAL maxParallel") + Expect(cl.Create(ctx, newObjectStore(ns))).To(Succeed()) + + By("deploying the S3 client used to forge and inspect WAL segments") + Expect(cl.Create(ctx, newS3ClientDeployment(ns))).To(Succeed()) + + By("creating the cluster using the plugin as WAL archiver") + cluster := newCluster(ns) + Expect(cl.Create(ctx, cluster)).To(Succeed()) + + By("waiting for the cluster to become ready") + Eventually(func(g Gomega) { + g.Expect(cl.Get(ctx, + apitypes.NamespacedName{Name: clusterName, Namespace: ns}, + cluster)).To(Succeed()) + g.Expect(internalCluster.IsReady(*cluster)).To(BeTrue()) + }).WithTimeout(10 * time.Minute).WithPolling(10 * time.Second).Should(Succeed()) + + By("waiting for the S3 client to become ready") + Eventually(func(g Gomega) { + ready, err := deployment.IsReady(ctx, cl, + apitypes.NamespacedName{Name: s3ClientName, Namespace: ns}) + g.Expect(err).NotTo(HaveOccurred()) + g.Expect(ready).To(BeTrue()) + }).WithTimeout(2 * time.Minute).WithPolling(5 * time.Second).Should(Succeed()) + + primary := cluster.Status.CurrentPrimary + Expect(primary).NotTo(BeEmpty()) + standby := clusterName + "-2" + + var s3ClientPods corev1.PodList + Expect(cl.List(ctx, &s3ClientPods, + client.InNamespace(ns), + client.MatchingLabels{"app": s3ClientName})).To(Succeed()) + Expect(s3ClientPods.Items).NotTo(BeEmpty()) + s3Client := s3ClientPods.Items[0].Name + + // Operations scoped to the fixed pods/clients, kept as closures so the + // step assertions below read like the original state-machine table. + restore := func(name string) error { + _, _, err := execInPod(ctx, clientSet, cfg, ns, standby, postgresContainer, + managerExecutable, "wal-restore", name, pgWalPath+"/"+name) + return err + } + existsIn := func(dir, name string) bool { + _, _, err := execInPod(ctx, clientSet, cfg, ns, standby, postgresContainer, + "test", "-f", dir+"/"+name) + return err == nil + } + flagSet := func() bool { return existsIn(spoolDirectory, endOfWALStreamFlag) } + spoolSegments := func() int { + out, _, _ := execInPod(ctx, clientSet, cfg, ns, standby, postgresContainer, + "sh", "-c", + "ls -1 "+spoolDirectory+" 2>/dev/null | grep -Ec '^[0-9A-F]{24}$' || true") + n, _ := strconv.Atoi(strings.TrimSpace(out)) + return n + } + purgeSpool := func() { + _, _, _ = execInPod(ctx, clientSet, cfg, ns, standby, postgresContainer, + "sh", "-c", "rm -f "+spoolDirectory+"/* 2>/dev/null; true") + } + forge := func(src, dst string) { + // ExecuteInContainer drops stdout/stderr on a non-zero exit, so on + // failure this only reports the exit code, not the aws CLI's error text. + _, _, err := execInPod(ctx, clientSet, cfg, ns, s3Client, s3ClientName, + "aws", "s3", "cp", walObjectURI(src), walObjectURI(dst)) + Expect(err).NotTo(HaveOccurred(), "forging %s -> %s", src, dst) + } + objectExists := func(name string) bool { + out, _, err := execInPod(ctx, clientSet, cfg, ns, s3Client, s3ClientName, + "aws", "s3", "ls", walObjectURI(name)) + return err == nil && strings.TrimSpace(out) != "" + } + + By("archiving a real WAL on the primary and learning its name") + _, _, err := execInPod(ctx, clientSet, cfg, ns, primary, postgresContainer, + "psql", "-tAc", "CHECKPOINT") + Expect(err).NotTo(HaveOccurred(), "CHECKPOINT on the primary failed") + out, _, err := execInPod(ctx, clientSet, cfg, ns, primary, postgresContainer, + "psql", "-tAc", "SELECT pg_walfile_name(pg_switch_wal())") + Expect(err).NotTo(HaveOccurred(), "switching WAL on the primary failed") + latestWAL := strings.TrimSpace(out) + Expect(latestWAL).To(HavePrefix(walLogDir), + "the freshly bootstrapped cluster should still be on the first WAL log") + + By("waiting for the archived WAL to land on the object store") + Eventually(func() bool { + return objectExists(latestWAL + ".gz") + }).WithTimeout(2 * time.Minute).WithPolling(5 * time.Second).Should(BeTrue()) + + By("forging WAL segments #1 to #5 from the archived WAL") + for n := 1; n <= 5; n++ { + forge(latestWAL+".gz", walFile(n)) + } + + By("ensuring the spool directory is empty on the standby") + purgeSpool() + + // #1: served fresh; #2 and #3 prefetched into the spool; flag unset. + By("requesting WAL #1: #1 restored, #2 and #3 prefetched") + Expect(restore(walFile(1))).To(Succeed()) + Eventually(func(g Gomega) { + g.Expect(existsIn(pgWalPath, walFile(1))).To(BeTrue(), "#1 in pg_wal") + g.Expect(existsIn(spoolDirectory, walFile(2))).To(BeTrue(), "#2 in spool") + g.Expect(existsIn(spoolDirectory, walFile(3))).To(BeTrue(), "#3 in spool") + g.Expect(flagSet()).To(BeFalse(), "end-of-wal-stream unset") + }).WithTimeout(time.Minute).WithPolling(2 * time.Second).Should(Succeed()) + + // #2: served from the spool; #3 stays prefetched; no new prefetch; flag unset. + By("requesting WAL #2: served from the spool, #3 still prefetched") + Expect(restore(walFile(2))).To(Succeed()) + Eventually(func(g Gomega) { + g.Expect(existsIn(pgWalPath, walFile(2))).To(BeTrue(), "#2 in pg_wal") + g.Expect(existsIn(spoolDirectory, walFile(3))).To(BeTrue(), "#3 in spool") + g.Expect(flagSet()).To(BeFalse(), "end-of-wal-stream unset") + }).WithTimeout(time.Minute).WithPolling(2 * time.Second).Should(Succeed()) + + // #3: served from the spool; spool now empty; flag unset. + By("requesting WAL #3: served from the spool, spool now empty") + Expect(restore(walFile(3))).To(Succeed()) + Eventually(func(g Gomega) { + g.Expect(existsIn(pgWalPath, walFile(3))).To(BeTrue(), "#3 in pg_wal") + g.Expect(spoolSegments()).To(Equal(0), "no WAL segments in spool") + g.Expect(flagSet()).To(BeFalse(), "end-of-wal-stream unset") + }).WithTimeout(time.Minute).WithPolling(2 * time.Second).Should(Succeed()) + + // #4: served fresh; #5 prefetched; #6 absent so end-of-wal-stream is set. + By("requesting WAL #4: #4 restored, #5 prefetched, end-of-wal-stream set") + Expect(restore(walFile(4))).To(Succeed()) + Eventually(func(g Gomega) { + g.Expect(existsIn(pgWalPath, walFile(4))).To(BeTrue(), "#4 in pg_wal") + g.Expect(existsIn(spoolDirectory, walFile(5))).To(BeTrue(), "#5 in spool") + g.Expect(flagSet()).To(BeTrue(), "end-of-wal-stream set (#6 absent)") + }).WithTimeout(time.Minute).WithPolling(2 * time.Second).Should(Succeed()) + + By("forging WAL segment #6 on the object store") + forge(latestWAL+".gz", walFile(6)) + + // #5: served from the spool; flag untouched (served before it is checked). + By("requesting WAL #5: served from the spool, end-of-wal-stream still set") + Expect(restore(walFile(5))).To(Succeed()) + Eventually(func(g Gomega) { + g.Expect(existsIn(pgWalPath, walFile(5))).To(BeTrue(), "#5 in pg_wal") + g.Expect(spoolSegments()).To(Equal(0), "no WAL segments in spool") + g.Expect(flagSet()).To(BeTrue(), "end-of-wal-stream still set") + }).WithTimeout(time.Minute).WithPolling(2 * time.Second).Should(Succeed()) + + // #6 (first): flag is set, so the request fails fast (exit 1) and the + // flag is consumed, leaving an empty spool. + By("requesting WAL #6: fails fast on the end-of-wal-stream flag, spool cleared") + restoreErr := restore(walFile(6)) + var exitErr executil.CodeExitError + Expect(errors.As(restoreErr, &exitErr)).To(BeTrue(), + "expected a CodeExitError, got %T: %v", restoreErr, restoreErr) + Expect(exitErr.ExitStatus()).To(Equal(1), "exit code should be 1") + Eventually(func(g Gomega) { + g.Expect(existsIn(pgWalPath, walFile(6))).To(BeFalse(), "#6 not restored") + g.Expect(spoolSegments()).To(Equal(0), "no WAL segments in spool") + g.Expect(flagSet()).To(BeFalse(), "end-of-wal-stream consumed") + }).WithTimeout(time.Minute).WithPolling(2 * time.Second).Should(Succeed()) + + // #6 (second): now present, restored; #7 and #8 absent so the flag is + // set again. + By("requesting WAL #6 again: #6 restored, end-of-wal-stream set again") + Expect(restore(walFile(6))).To(Succeed()) + Eventually(func(g Gomega) { + g.Expect(existsIn(pgWalPath, walFile(6))).To(BeTrue(), "#6 in pg_wal") + g.Expect(spoolSegments()).To(Equal(0), "no WAL segments in spool") + g.Expect(flagSet()).To(BeTrue(), "end-of-wal-stream set (#7/#8 absent)") + }).WithTimeout(time.Minute).WithPolling(2 * time.Second).Should(Succeed()) + }) +}) From 1a701f66eb2865a62f1b7ca11ac558b65d33f3e1 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 9 Jul 2026 14:35:13 +0200 Subject: [PATCH 056/134] chore(deps): update dependency serialize-javascript to v7.0.7 (#990) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) | |---|---|---|---| | [serialize-javascript](https://redirect.github.com/yahoo/serialize-javascript) | [`7.0.6` β†’ `7.0.7`](https://renovatebot.com/diffs/npm/serialize-javascript/7.0.6/7.0.7) | ![age](https://developer.mend.io/api/mc/badges/age/npm/serialize-javascript/7.0.7?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/serialize-javascript/7.0.6/7.0.7?slim=true) | --- ### Release Notes
yahoo/serialize-javascript (serialize-javascript) ### [`v7.0.7`](https://redirect.github.com/yahoo/serialize-javascript/compare/v7.0.6...01bec60c108143e69f6b105e443d62a13b61cbbe) [Compare Source](https://redirect.github.com/yahoo/serialize-javascript/compare/v7.0.6...v7.0.7)
--- ### Configuration πŸ“… **Schedule**: (UTC) - Branch creation - At any time (no schedule defined) - Automerge - At any time (no schedule defined) 🚦 **Automerge**: Enabled. β™» **Rebasing**: Never, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/cloudnative-pg/plugin-barman-cloud). Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Leonardo Cecchi --- web/yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/web/yarn.lock b/web/yarn.lock index ee478d8..711bd73 100644 --- a/web/yarn.lock +++ b/web/yarn.lock @@ -8396,9 +8396,9 @@ send@~0.19.0, send@~0.19.1: statuses "~2.0.2" serialize-javascript@>=7.0.5, serialize-javascript@^6.0.0, serialize-javascript@^6.0.1: - version "7.0.6" - resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-7.0.6.tgz#f2f20c8af0757e4d8fa329d0210636da0682ddef" - integrity sha512-ATTK5Q4gFVg0YDp1my2vqygyvhcklD/UV5GIlYHooGTn/NogJqIzpetkD6E5kmuVULqz/S9inUL25XcAgDRJQg== + version "7.0.7" + resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-7.0.7.tgz#06ec40576d4cea96d68010a534520bff1f948a72" + integrity sha512-YAy8Od6KV+uuwUuU50np8fGB/Aues6Y0nAhA9y/hId74PlKUcme4pXcBD46NWKr1Q4osN/iseZ17YqO1XfmI8g== serve-handler@^6.1.7: version "6.1.7" From 39881b0d9c9bef51ce0d4160837bb273d51416ee Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 9 Jul 2026 15:45:20 +0200 Subject: [PATCH 057/134] chore(deps): refresh pip-compile outputs (#989) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Update | Change | |---|---| | lockFileMaintenance | All locks refreshed | πŸ”§ This Pull Request updates lock files to use the latest dependency versions. --- ### Configuration πŸ“… **Schedule**: (UTC) - Branch creation - "before 4am on monday" - Automerge - At any time (no schedule defined) 🚦 **Automerge**: Enabled. β™» **Rebasing**: Never, or you tick the rebase/retry checkbox. πŸ‘» **Immortal**: This PR will be recreated if closed unmerged. Get [config help](https://redirect.github.com/renovatebot/renovate/discussions) if that's undesired. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/cloudnative-pg/plugin-barman-cloud). Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Leonardo Cecchi --- containers/sidecar-requirements.txt | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/containers/sidecar-requirements.txt b/containers/sidecar-requirements.txt index dbd8a5f..67343e8 100644 --- a/containers/sidecar-requirements.txt +++ b/containers/sidecar-requirements.txt @@ -449,9 +449,9 @@ google-api-core==2.31.0 \ # via # google-cloud-core # google-cloud-storage -google-auth==2.55.0 \ - --hash=sha256:a17cef9dedf98c4ebae2fb0c48c8f75952c877cbc2efe09f329ef16c2783d88a \ - --hash=sha256:fcd3a130f575fa36403d38774af1c64a4fbfbca09215f0589d2372b5119697cb +google-auth==2.55.1 \ + --hash=sha256:eada68dfd52b3b81191827601e2a0c3fa12540c818534b630ddc5355769c3995 \ + --hash=sha256:fb2d9b730f2c9b8d326ec8d7222f21aef2ead15bf0513793d6442485d87af0a1 # via # google-api-core # google-cloud-core From 2cc4e9905db6b1d1c5788dd6093a1a7d330d9064 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 9 Jul 2026 16:45:23 +0200 Subject: [PATCH 058/134] fix(deps): update k8s.io/utils digest to be93311 (#986) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [k8s.io/utils](https://redirect.github.com/kubernetes/utils) | require | digest | `a95e086` β†’ `be93311` | --- > [!WARNING] > Some dependencies could not be looked up. Check the [Dependency Dashboard](../issues/7) for more information. --- ### Configuration πŸ“… **Schedule**: (UTC) - Branch creation - At any time (no schedule defined) - Automerge - At any time (no schedule defined) 🚦 **Automerge**: Enabled. β™» **Rebasing**: Never, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/cloudnative-pg/plugin-barman-cloud). Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Leonardo Cecchi --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 8501c65..dd2cfea 100644 --- a/go.mod +++ b/go.mod @@ -20,7 +20,7 @@ require ( k8s.io/apiextensions-apiserver v0.36.2 k8s.io/apimachinery v0.36.2 k8s.io/client-go v0.36.2 - k8s.io/utils v0.0.0-20260617174310-a95e086a2553 + k8s.io/utils v0.0.0-20260626114624-be93311217bd sigs.k8s.io/controller-runtime v0.24.1 sigs.k8s.io/kustomize/api v0.21.1 sigs.k8s.io/kustomize/kyaml v0.21.1 diff --git a/go.sum b/go.sum index 64e36e6..690eaf6 100644 --- a/go.sum +++ b/go.sum @@ -326,8 +326,8 @@ k8s.io/kube-openapi v0.0.0-20260502001324-b7f5293f4787 h1:kHv8PETbPIVHfqKBYwTNNS k8s.io/kube-openapi v0.0.0-20260502001324-b7f5293f4787/go.mod h1:Cyq7UE0QtGe+Zo+/6XFrxiS4Mq0tLyQEONkFzSkfp9o= k8s.io/streaming v0.36.2 h1:NSKthPPg9UFSKsRauVJUVGH2Dvn8fhKmY4qrMkw/p98= k8s.io/streaming v0.36.2/go.mod h1:z6fV3D+NVkoeqRMtWwlUZK6U17SY/LqNzOxWL6GyR/s= -k8s.io/utils v0.0.0-20260617174310-a95e086a2553 h1:hmGqDecjc8d7HVzWzRFl0QD9bYuYKbBEG7t8xwnVxfI= -k8s.io/utils v0.0.0-20260617174310-a95e086a2553/go.mod h1:xDxuJ0whA3d0I4mf/C4ppKHxXynQ+fxnkmQH0vTHnuk= +k8s.io/utils v0.0.0-20260626114624-be93311217bd h1:Ea7fgQ5we8Y9T0OX5o0dAHzQOBRI07D/dEYRaB9ZZEs= +k8s.io/utils v0.0.0-20260626114624-be93311217bd/go.mod h1:xDxuJ0whA3d0I4mf/C4ppKHxXynQ+fxnkmQH0vTHnuk= sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.34.0 h1:hSfpvjjTQXQY2Fol2CS0QHMNs/WI1MOSGzCm1KhM5ec= sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.34.0/go.mod h1:Ve9uj1L+deCXFrPOk1LpFXqTg7LCFzFso6PA48q/XZw= sigs.k8s.io/controller-runtime v0.24.1 h1:miPEwrmirImAvgME1L9qebGHrOnGJoVmVdtOU9fRfo4= From dd799d8ed1d0aefb988de083adddbaacd57da0bc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niccol=C3=B2=20Fei?= Date: Mon, 13 Jul 2026 08:26:17 +0200 Subject: [PATCH 059/134] ci: fix image tag mismatch when running via workflow_dispatch (#995) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Closes #994 Signed-off-by: NiccolΓ² Fei --- Taskfile.yml | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/Taskfile.yml b/Taskfile.yml index d765694..ff4bd96 100644 --- a/Taskfile.yml +++ b/Taskfile.yml @@ -360,7 +360,9 @@ tasks: SIDECAR_IMAGE_NAME: ghcr.io/{{.GITHUB_REPOSITORY}}-sidecar{{if not (hasPrefix "refs/tags/v" .GITHUB_REF)}}-testing{{end}} # remove /merge suffix from the branch name. This is a workaround for the GitHub workflow on PRs, # where the branch name is suffixed with /merge. Prepend pr- to the branch name on PRs. - IMAGE_VERSION: '{{regexReplaceAll "(\\d+)/merge" .GITHUB_REF_NAME "pr-${1}"}}' + # Any remaining "/" (e.g. from namespaced branches like "dev/foo") is replaced with "-" since + # "/" is not a valid character in a Docker tag. + IMAGE_VERSION: '{{replace "/" "-" (regexReplaceAll "(\\d+)/merge" .GITHUB_REF_NAME "pr-${1}")}}' env: # renovate: datasource=git-refs depName=docker lookupName=https://github.com/purpleclay/daggerverse currentValue=main DAGGER_DOCKER_SHA: ee12c1a4a2630e194ec20c5a9959183e3a78c192 @@ -450,7 +452,9 @@ tasks: SIDECAR_IMAGE_NAME: ghcr.io/{{.GITHUB_REPOSITORY}}-sidecar{{if not (hasPrefix "refs/tags/v" .GITHUB_REF)}}-testing{{end}} # remove /merge suffix from the branch name. This is a workaround for the GitHub workflow on PRs, # where the branch name is suffixed with /merge. Prepend pr- to the branch name on PRs. - IMAGE_VERSION: '{{regexReplaceAll "(\\d+)/merge" .GITHUB_REF_NAME "pr-${1}"}}' + # Any remaining "/" (e.g. from namespaced branches like "dev/foo") is replaced with "-" since + # "/" is not a valid character in a Docker tag. + IMAGE_VERSION: '{{replace "/" "-" (regexReplaceAll "(\\d+)/merge" .GITHUB_REF_NAME "pr-${1}")}}' env: # renovate: datasource=git-refs depName=kustomize lookupName=https://github.com/sagikazarmark/daggerverse currentValue=main DAGGER_KUSTOMIZE_SHA: ff27cd50f6b4eed2e3753c520632cd6099e1ce52 From 5f84ecce4a9433da27346d194f6a4b456d59f75f Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 14 Jul 2026 16:57:58 +0200 Subject: [PATCH 060/134] fix(deps): update all non-major go dependencies (#982) Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- go.mod | 46 +++++++++++++++--------------- go.sum | 88 +++++++++++++++++++++++++++++----------------------------- 2 files changed, 67 insertions(+), 67 deletions(-) diff --git a/go.mod b/go.mod index dd2cfea..00b85c3 100644 --- a/go.mod +++ b/go.mod @@ -1,26 +1,26 @@ module github.com/cloudnative-pg/plugin-barman-cloud -go 1.26.3 +go 1.26.4 require ( - github.com/cert-manager/cert-manager v1.20.2 - github.com/cloudnative-pg/api v1.29.1 - github.com/cloudnative-pg/barman-cloud v0.5.2-0.20260619084538-8d9302e232e7 - github.com/cloudnative-pg/cloudnative-pg v1.29.1 + github.com/cert-manager/cert-manager v1.21.0 + github.com/cloudnative-pg/api v1.30.0 + github.com/cloudnative-pg/barman-cloud v0.5.2-0.20260709152604-43158c204df1 + github.com/cloudnative-pg/cloudnative-pg v1.30.0 github.com/cloudnative-pg/cnpg-i v0.5.0 github.com/cloudnative-pg/cnpg-i-machinery v0.4.2 github.com/cloudnative-pg/machinery v0.5.0 github.com/onsi/ginkgo/v2 v2.32.0 - github.com/onsi/gomega v1.42.0 + github.com/onsi/gomega v1.42.1 github.com/spf13/cobra v1.10.2 github.com/spf13/viper v1.21.0 - google.golang.org/grpc v1.81.1 + google.golang.org/grpc v1.82.0 gopkg.in/yaml.v3 v3.0.1 k8s.io/api v0.36.2 k8s.io/apiextensions-apiserver v0.36.2 k8s.io/apimachinery v0.36.2 k8s.io/client-go v0.36.2 - k8s.io/utils v0.0.0-20260626114624-be93311217bd + k8s.io/utils v0.0.0-20260707023825-cf1189d6abe3 sigs.k8s.io/controller-runtime v0.24.1 sigs.k8s.io/kustomize/api v0.21.1 sigs.k8s.io/kustomize/kyaml v0.21.1 @@ -40,7 +40,7 @@ require ( github.com/evanphx/json-patch/v5 v5.9.11 // indirect github.com/felixge/httpsnoop v1.0.4 // indirect github.com/fsnotify/fsnotify v1.9.0 // indirect - github.com/fxamacker/cbor/v2 v2.9.1 // indirect + github.com/fxamacker/cbor/v2 v2.9.2 // indirect github.com/go-errors/errors v1.5.1 // indirect github.com/go-logr/logr v1.4.3 // indirect github.com/go-logr/stdr v1.2.2 // indirect @@ -71,7 +71,7 @@ require ( github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.7 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/json-iterator/go v1.1.12 // indirect - github.com/kubernetes-csi/external-snapshotter/client/v8 v8.4.0 // indirect + github.com/kubernetes-csi/external-snapshotter/client/v8 v8.6.0 // indirect github.com/lib/pq v1.12.3 // indirect github.com/moby/spdystream v0.5.1 // indirect github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect @@ -80,7 +80,7 @@ require ( github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect github.com/pelletier/go-toml/v2 v2.2.4 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect - github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring v0.87.1 // indirect + github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring v0.92.0 // indirect github.com/prometheus/client_golang v1.23.2 // indirect github.com/prometheus/client_model v0.6.2 // indirect github.com/prometheus/common v0.67.5 // indirect @@ -97,7 +97,7 @@ require ( github.com/x448/float16 v0.8.4 // indirect github.com/xlab/treeprint v1.2.0 // indirect go.opentelemetry.io/auto/sdk v1.2.1 // indirect - go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.65.0 // indirect + go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.67.0 // indirect go.opentelemetry.io/otel v1.43.0 // indirect go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.40.0 // indirect go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.40.0 // indirect @@ -110,28 +110,28 @@ require ( go.yaml.in/yaml/v2 v2.4.4 // indirect go.yaml.in/yaml/v3 v3.0.4 // indirect golang.org/x/exp v0.0.0-20251219203646-944ab1f22d93 // indirect - golang.org/x/mod v0.35.0 // indirect - golang.org/x/net v0.53.0 // indirect + golang.org/x/mod v0.36.0 // indirect + golang.org/x/net v0.56.0 // indirect golang.org/x/oauth2 v0.36.0 // indirect - golang.org/x/sync v0.20.0 // indirect - golang.org/x/sys v0.46.0 // indirect - golang.org/x/term v0.42.0 // indirect - golang.org/x/text v0.36.0 // indirect + golang.org/x/sync v0.21.0 // indirect + golang.org/x/sys v0.47.0 // indirect + golang.org/x/term v0.44.0 // indirect + golang.org/x/text v0.38.0 // indirect golang.org/x/time v0.15.0 // indirect - golang.org/x/tools v0.44.0 // indirect + golang.org/x/tools v0.45.0 // indirect gomodules.xyz/jsonpatch/v2 v2.5.0 // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20260226221140-a57be14db171 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20260319201613-d00831a3d3e7 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20260414002931-afd174a4e478 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20260610212136-7ab31c22f7ad // indirect google.golang.org/protobuf v1.36.12-0.20260120151049-f2248ac996af // indirect gopkg.in/evanphx/json-patch.v4 v4.13.0 // indirect gopkg.in/inf.v0 v0.9.1 // indirect k8s.io/apiserver v0.36.2 // indirect k8s.io/component-base v0.36.2 // indirect k8s.io/klog/v2 v2.140.0 // indirect - k8s.io/kube-openapi v0.0.0-20260502001324-b7f5293f4787 // indirect + k8s.io/kube-openapi v0.0.0-20260603220949-865597e52e25 // indirect k8s.io/streaming v0.36.2 // indirect sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.34.0 // indirect - sigs.k8s.io/gateway-api v1.5.0 // indirect + sigs.k8s.io/gateway-api v1.6.0 // indirect sigs.k8s.io/json v0.0.0-20250730193827-2d320260d730 // indirect sigs.k8s.io/randfill v1.0.0 // indirect sigs.k8s.io/structured-merge-diff/v6 v6.4.0 // indirect diff --git a/go.sum b/go.sum index 690eaf6..b9dc753 100644 --- a/go.sum +++ b/go.sum @@ -14,16 +14,16 @@ github.com/blang/semver/v4 v4.0.0 h1:1PFHFE6yCCTv8C1TeyNNarDzntLi7wMI5i/pzqYIsAM github.com/blang/semver/v4 v4.0.0/go.mod h1:IbckMUScFkM3pff0VJDNKRiT6TG/YpiHIM2yvyW5YoQ= github.com/cenkalti/backoff/v5 v5.0.3 h1:ZN+IMa753KfX5hd8vVaMixjnqRZ3y8CuJKRKj1xcsSM= github.com/cenkalti/backoff/v5 v5.0.3/go.mod h1:rkhZdG3JZukswDf7f0cwqPNk4K0sa+F97BxZthm/crw= -github.com/cert-manager/cert-manager v1.20.2 h1:CimnY00nLqB2lmxhoSuEC4GDMFDK7JCXqyjwMM9ndIQ= -github.com/cert-manager/cert-manager v1.20.2/go.mod h1:1g/+a/WK5zWH/dXPZa3dMD3aJQJNRXQu+PN17C6WrOw= +github.com/cert-manager/cert-manager v1.21.0 h1:BCoB2BxA1lbqPusZCqPLPn8Q9MhraL7RbZGHbBcm3W8= +github.com/cert-manager/cert-manager v1.21.0/go.mod h1:V8iALETs2W428CjBZ4Ez3DftDeyu0f8PZnHDTcliS4I= github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs= github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= -github.com/cloudnative-pg/api v1.29.1 h1:FWr8S7EQeOfdhYXyr2cof8wUXLARZiiQt5Qa6ltED7w= -github.com/cloudnative-pg/api v1.29.1/go.mod h1:QtWF3yzSvIfORMHaSkPAk/o3bhCJwEHJgN3riyRiz3o= -github.com/cloudnative-pg/barman-cloud v0.5.2-0.20260619084538-8d9302e232e7 h1:lNWqibnwlJesDrwAukg8gQF4Hpys3jx31LaXZFoP9vA= -github.com/cloudnative-pg/barman-cloud v0.5.2-0.20260619084538-8d9302e232e7/go.mod h1:vmW7blcg0BECd/9YKqn7NdiF7jz9BlXCWJcGJpzzBCg= -github.com/cloudnative-pg/cloudnative-pg v1.29.1 h1:ZNEt1TMlnQKXI1kho2UqQuqdfvIvjGln4kN7C1lsmGA= -github.com/cloudnative-pg/cloudnative-pg v1.29.1/go.mod h1:Sbgx9jVmkle4/gR2U5JHrzDd74sRPOBHDtPkvncg5v8= +github.com/cloudnative-pg/api v1.30.0 h1:L8hnvV/tPEQA1xYEi41FUBFA7FUNVGju8+SlgFlDDjI= +github.com/cloudnative-pg/api v1.30.0/go.mod h1:XrKBbOWObL33si0FNuwX4uHNf5JShiZyOUqd6LxbJQo= +github.com/cloudnative-pg/barman-cloud v0.5.2-0.20260709152604-43158c204df1 h1:+AV67yFPqnwmHQ5PIYkAaJUDsOrrwJCvH+J1JzHXyQc= +github.com/cloudnative-pg/barman-cloud v0.5.2-0.20260709152604-43158c204df1/go.mod h1:ZQLkdpk44FW5/BGWzABTOEcV9qPbwC+rbdscg2I8mBI= +github.com/cloudnative-pg/cloudnative-pg v1.30.0 h1:fnhVq44xXx97MNiuvJsPrX1vSjYbgdyBK5MSGfdHdp0= +github.com/cloudnative-pg/cloudnative-pg v1.30.0/go.mod h1:QkolwBOWZ+GvAiJt6KpDSymwkpf0K19/p4Q6MQlTM8U= github.com/cloudnative-pg/cnpg-i v0.5.0 h1:/TOzpNT6cwNgrpftTtrnLKdoHgMwd+88vZgXjlVgXeE= github.com/cloudnative-pg/cnpg-i v0.5.0/go.mod h1:7Gh4+UzhBpGhr4DreB1GN9wGYfvxwXCXZUyVt3zE/3I= github.com/cloudnative-pg/cnpg-i-machinery v0.4.2 h1:0reS9MtyLYINHXQ/MfxJ9jp39hhBf8e3Qdj+T5Nsq6I= @@ -47,8 +47,8 @@ github.com/frankban/quicktest v1.14.6 h1:7Xjx+VpznH+oBnejlPUj8oUpdxnVs4f8XU8WnHk github.com/frankban/quicktest v1.14.6/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0= github.com/fsnotify/fsnotify v1.9.0 h1:2Ml+OJNzbYCTzsxtv8vKSFD9PbJjmhYF14k/jKC7S9k= github.com/fsnotify/fsnotify v1.9.0/go.mod h1:8jBTzvmWwFyi3Pb8djgCCO5IBqzKJ/Jwo8TRcHyHii0= -github.com/fxamacker/cbor/v2 v2.9.1 h1:2rWm8B193Ll4VdjsJY28jxs70IdDsHRWgQYAI80+rMQ= -github.com/fxamacker/cbor/v2 v2.9.1/go.mod h1:vM4b+DJCtHn+zz7h3FFp/hDAI9WNWCsZj23V5ytsSxQ= +github.com/fxamacker/cbor/v2 v2.9.2 h1:X4Ksno9+x3cz0TZv69ec1hxP/+tymuR8PXQJyDwfh78= +github.com/fxamacker/cbor/v2 v2.9.2/go.mod h1:vM4b+DJCtHn+zz7h3FFp/hDAI9WNWCsZj23V5ytsSxQ= github.com/gkampitakis/ciinfo v0.3.2 h1:JcuOPk8ZU7nZQjdUhctuhQofk7BGHuIy0c9Ez8BNhXs= github.com/gkampitakis/ciinfo v0.3.2/go.mod h1:1NIwaOcFChN4fa/B0hEBdAb6npDlFL8Bwx4dfRLRqAo= github.com/gkampitakis/go-diff v1.3.2 h1:Qyn0J9XJSDTgnsgHRdz9Zp24RaJeKMUHg2+PDZZdC4M= @@ -139,8 +139,8 @@ github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= -github.com/kubernetes-csi/external-snapshotter/client/v8 v8.4.0 h1:bMqrb3UHgHbP+PW9VwiejfDJU1R0PpXVZNMdeH8WYKI= -github.com/kubernetes-csi/external-snapshotter/client/v8 v8.4.0/go.mod h1:E3vdYxHj2C2q6qo8/Da4g7P+IcwqRZyy3gJBzYybV9Y= +github.com/kubernetes-csi/external-snapshotter/client/v8 v8.6.0 h1:FtGewu2k6HWw6evLGXY8JqUZ9eHpti1kd3e4amj+ilA= +github.com/kubernetes-csi/external-snapshotter/client/v8 v8.6.0/go.mod h1:Vxl89NySJ45J+ah3NTMan/KJXW+NpcGHE2Tw0GSw53k= github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc= github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw= github.com/lib/pq v1.12.3 h1:tTWxr2YLKwIvK90ZXEw8GP7UFHtcbTtty8zsI+YjrfQ= @@ -163,8 +163,8 @@ github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= github.com/onsi/ginkgo/v2 v2.32.0 h1:Hw7s2pVrQo/8Yz5N77qdnpHaoc+c6cC9WIV1Jce+J6E= github.com/onsi/ginkgo/v2 v2.32.0/go.mod h1:+aXOY+vzZ5mu2iI2HpTZUPmM//oQfsNFX6gU9kNcA44= -github.com/onsi/gomega v1.42.0 h1:CJby8u36xb7v34W78F8WKvqTQP7PCMIPB78IVDB73l4= -github.com/onsi/gomega v1.42.0/go.mod h1:M/Uqpu/8qTjtzCLUA2zJHX9Iilrau25x1PdoSRbWh5A= +github.com/onsi/gomega v1.42.1 h1:iN1rCUX+44NZ1Dc97MPoeFYbFR0vh8zxoxMFwKdyZ6I= +github.com/onsi/gomega v1.42.1/go.mod h1:REff/hsDsodHoKlWsP2mAPhu1+5/6hVYNf9rIEBpeSg= github.com/pelletier/go-toml/v2 v2.2.4 h1:mye9XuhQ6gvn5h28+VilKrrPoQVanw5PMw/TB0t5Ec4= github.com/pelletier/go-toml/v2 v2.2.4/go.mod h1:2gIqNv+qfxSVS7cM2xJQKtLSTLUE9V8t9Stt+h56mCY= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= @@ -172,8 +172,8 @@ github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINE github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring v0.87.1 h1:wyKanf+IFdbIqbDNYGt+f1dabLErLWtBaxd0KaAx4aM= -github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring v0.87.1/go.mod h1:WHiLZmOWVop/MoYvRD58LfnPeyE+dcITby/jQjg83Hw= +github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring v0.92.0 h1:cgcHnhpMbk86QzIe23vwUiIUNBB0kftdOA9JJA83ASA= +github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring v0.92.0/go.mod h1:eGo3VN8Kq5Fd0M7Cdx0oqbIxo753t99ojUZFVQkO1UM= github.com/prometheus/client_golang v1.23.2 h1:Je96obch5RDVy3FDMndoUsjAhG5Edi49h0RJWRi/o0o= github.com/prometheus/client_golang v1.23.2/go.mod h1:Tb1a6LWHB3/SPIzCoaDXI4I8UHKeFTEQ1YCr+0Gyqmg= github.com/prometheus/client_model v0.6.2 h1:oBsgwpGs7iVziMvrGhE53c/GrLUsZdHnqNwqPLxwZyk= @@ -237,8 +237,8 @@ github.com/xlab/treeprint v1.2.0 h1:HzHnuAF1plUN2zGlAFHbSQP2qJ0ZAD3XF5XD7OesXRQ= github.com/xlab/treeprint v1.2.0/go.mod h1:gj5Gd3gPdKtR1ikdDK6fnFLdmIS0X30kTTuNd/WEJu0= go.opentelemetry.io/auto/sdk v1.2.1 h1:jXsnJ4Lmnqd11kwkBV2LgLoFMZKizbCi5fNZ/ipaZ64= go.opentelemetry.io/auto/sdk v1.2.1/go.mod h1:KRTj+aOaElaLi+wW1kO/DZRXwkF4C5xPbEe3ZiIhN7Y= -go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.65.0 h1:7iP2uCb7sGddAr30RRS6xjKy7AZ2JtTOPA3oolgVSw8= -go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.65.0/go.mod h1:c7hN3ddxs/z6q9xwvfLPk+UHlWRQyaeR1LdgfL/66l0= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.67.0 h1:OyrsyzuttWTSur2qN/Lm0m2a8yqyIjUVBZcxFPuXq2o= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.67.0/go.mod h1:C2NGBr+kAB4bk3xtMXfZ94gqFDtg/GkI7e9zqGh5Beg= go.opentelemetry.io/otel v1.43.0 h1:mYIM03dnh5zfN7HautFE4ieIig9amkNANT+xcVxAj9I= go.opentelemetry.io/otel v1.43.0/go.mod h1:JuG+u74mvjvcm8vj8pI5XiHy1zDeoCS2LB1spIq7Ay0= go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.40.0 h1:QKdN8ly8zEMrByybbQgv8cWBcdAarwmIPZ6FThrWXJs= @@ -267,34 +267,34 @@ go.yaml.in/yaml/v3 v3.0.4 h1:tfq32ie2Jv2UxXFdLJdh3jXuOzWiL1fo0bu/FbuKpbc= go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg= golang.org/x/exp v0.0.0-20251219203646-944ab1f22d93 h1:fQsdNF2N+/YewlRZiricy4P1iimyPKZ/xwniHj8Q2a0= golang.org/x/exp v0.0.0-20251219203646-944ab1f22d93/go.mod h1:EPRbTFwzwjXj9NpYyyrvenVh9Y+GFeEvMNh7Xuz7xgU= -golang.org/x/mod v0.35.0 h1:Ww1D637e6Pg+Zb2KrWfHQUnH2dQRLBQyAtpr/haaJeM= -golang.org/x/mod v0.35.0/go.mod h1:+GwiRhIInF8wPm+4AoT6L0FA1QWAad3OMdTRx4tFYlU= -golang.org/x/net v0.53.0 h1:d+qAbo5L0orcWAr0a9JweQpjXF19LMXJE8Ey7hwOdUA= -golang.org/x/net v0.53.0/go.mod h1:JvMuJH7rrdiCfbeHoo3fCQU24Lf5JJwT9W3sJFulfgs= +golang.org/x/mod v0.36.0 h1:JJjpVx6myfUsUdAzZuOSTTmRE0PfZeNWzzvKrP7amb4= +golang.org/x/mod v0.36.0/go.mod h1:moc6ELqsWcOw5Ef3xVprK5ul/MvtVvkIXLziUOICjUQ= +golang.org/x/net v0.56.0 h1:Rw8j/hFzGvJUZwNBXnAtf5sVDVt+65SK2C7IxCxZt5o= +golang.org/x/net v0.56.0/go.mod h1:D3Ku6r+V6JROoZK144D2XfMHFcMq/0zSfLelVTCFKec= golang.org/x/oauth2 v0.36.0 h1:peZ/1z27fi9hUOFCAZaHyrpWG5lwe0RJEEEeH0ThlIs= golang.org/x/oauth2 v0.36.0/go.mod h1:YDBUJMTkDnJS+A4BP4eZBjCqtokkg1hODuPjwiGPO7Q= -golang.org/x/sync v0.20.0 h1:e0PTpb7pjO8GAtTs2dQ6jYa5BWYlMuX047Dco/pItO4= -golang.org/x/sync v0.20.0/go.mod h1:9xrNwdLfx4jkKbNva9FpL6vEN7evnE43NNNJQ2LF3+0= -golang.org/x/sys v0.46.0 h1:noSf2Fq6F8DBgS+LysIkx7rIExoNHJsxOAtPp4rthXw= -golang.org/x/sys v0.46.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= -golang.org/x/term v0.42.0 h1:UiKe+zDFmJobeJ5ggPwOshJIVt6/Ft0rcfrXZDLWAWY= -golang.org/x/term v0.42.0/go.mod h1:Dq/D+snpsbazcBG5+F9Q1n2rXV8Ma+71xEjTRufARgY= -golang.org/x/text v0.36.0 h1:JfKh3XmcRPqZPKevfXVpI1wXPTqbkE5f7JA92a55Yxg= -golang.org/x/text v0.36.0/go.mod h1:NIdBknypM8iqVmPiuco0Dh6P5Jcdk8lJL0CUebqK164= +golang.org/x/sync v0.21.0 h1:HLII4xRRTtCRkxYp4HNFF0Js/Og6q2i++KXbg0gHCwM= +golang.org/x/sync v0.21.0/go.mod h1:9xrNwdLfx4jkKbNva9FpL6vEN7evnE43NNNJQ2LF3+0= +golang.org/x/sys v0.47.0 h1:o7XGOvZQCADBQQ4Y7VNq2dRWQR7JmOUW8Kxx4ZsNgWs= +golang.org/x/sys v0.47.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= +golang.org/x/term v0.44.0 h1:0rLvDRCtNj0gZkyIXhCyOb2OAzEhLVqc4B+hrsBhrmc= +golang.org/x/term v0.44.0/go.mod h1:7ze4MdzUzLXpSAoFP1H0bOI9aXDqveSvatT5vKcFh2Y= +golang.org/x/text v0.38.0 h1:sXmwo9DwP3OK9EZ7PqAdaooSGozfl/3a6/xJcbzPRhE= +golang.org/x/text v0.38.0/go.mod h1:YXZt3QhHUKYT53r2lLKFIVi6Ao1jdzrTR/KQ09qyxF4= golang.org/x/time v0.15.0 h1:bbrp8t3bGUeFOx08pvsMYRTCVSMk89u4tKbNOZbp88U= golang.org/x/time v0.15.0/go.mod h1:Y4YMaQmXwGQZoFaVFk4YpCt4FLQMYKZe9oeV/f4MSno= -golang.org/x/tools v0.44.0 h1:UP4ajHPIcuMjT1GqzDWRlalUEoY+uzoZKnhOjbIPD2c= -golang.org/x/tools v0.44.0/go.mod h1:KA0AfVErSdxRZIsOVipbv3rQhVXTnlU6UhKxHd1seDI= +golang.org/x/tools v0.45.0 h1:18qN3FAooORvApf5XjCXgsuayZOEtXf6JK18I3+ONa8= +golang.org/x/tools v0.45.0/go.mod h1:LuUGqqaXcXMEFEruIVJVm5mgDD8vww/z/SR1gQ4uE/0= gomodules.xyz/jsonpatch/v2 v2.5.0 h1:JELs8RLM12qJGXU4u/TO3V25KW8GreMKl9pdkk14RM0= gomodules.xyz/jsonpatch/v2 v2.5.0/go.mod h1:AH3dM2RI6uoBZxn3LVrfvJ3E0/9dG4cSrbuBJT4moAY= gonum.org/v1/gonum v0.17.0 h1:VbpOemQlsSMrYmn7T2OUvQ4dqxQXU+ouZFQsZOx50z4= gonum.org/v1/gonum v0.17.0/go.mod h1:El3tOrEuMpv2UdMrbNlKEh9vd86bmQ6vqIcDwxEOc1E= -google.golang.org/genproto/googleapis/api v0.0.0-20260226221140-a57be14db171 h1:tu/dtnW1o3wfaxCOjSLn5IRX4YDcJrtlpzYkhHhGaC4= -google.golang.org/genproto/googleapis/api v0.0.0-20260226221140-a57be14db171/go.mod h1:M5krXqk4GhBKvB596udGL3UyjL4I1+cTbK0orROM9ng= -google.golang.org/genproto/googleapis/rpc v0.0.0-20260319201613-d00831a3d3e7 h1:ndE4FoJqsIceKP2oYSnUZqhTdYufCYYkqwtFzfrhI7w= -google.golang.org/genproto/googleapis/rpc v0.0.0-20260319201613-d00831a3d3e7/go.mod h1:4Hqkh8ycfw05ld/3BWL7rJOSfebL2Q+DVDeRgYgxUU8= -google.golang.org/grpc v1.81.1 h1:VnnIIZ88UzOOKLukQi+ImGz8O1Wdp8nAGGnvOfEIWQQ= -google.golang.org/grpc v1.81.1/go.mod h1:xGH9GfzOyMTGIOXBJmXt+BX/V0kcdQbdcuwQ/zNw42I= +google.golang.org/genproto/googleapis/api v0.0.0-20260414002931-afd174a4e478 h1:yQugLulqltosq0B/f8l4w9VryjV+N/5gcW0jQ3N8Qec= +google.golang.org/genproto/googleapis/api v0.0.0-20260414002931-afd174a4e478/go.mod h1:C6ADNqOxbgdUUeRTU+LCHDPB9ttAMCTff6auwCVa4uc= +google.golang.org/genproto/googleapis/rpc v0.0.0-20260610212136-7ab31c22f7ad h1:45WmJvIV6C2+O/jjLkPUH+F3aOj/1miDoU2DD0+NWbg= +google.golang.org/genproto/googleapis/rpc v0.0.0-20260610212136-7ab31c22f7ad/go.mod h1:4Hqkh8ycfw05ld/3BWL7rJOSfebL2Q+DVDeRgYgxUU8= +google.golang.org/grpc v1.82.0 h1:vguDnZUPjE26w09A63VoxZPnvPjB5Riyc0mkXPFmAIU= +google.golang.org/grpc v1.82.0/go.mod h1:yzTZ1TB1Z3SG+LIYaI+WiE8D5+PZ3ArnrSp8zF3+/ZA= google.golang.org/protobuf v1.36.12-0.20260120151049-f2248ac996af h1:+5/Sw3GsDNlEmu7TfklWKPdQ0Ykja5VEmq2i817+jbI= google.golang.org/protobuf v1.36.12-0.20260120151049-f2248ac996af/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= @@ -322,18 +322,18 @@ k8s.io/component-base v0.36.2 h1:Z0VH80O7Ng0HDZnZj3WRR3urEGa0kTwmO8CwEwjVK1w= k8s.io/component-base v0.36.2/go.mod h1:mGfFOA7Gwpdm1VW2cwSQYbiDIlz8GD2WGwH88QSeCyA= k8s.io/klog/v2 v2.140.0 h1:Tf+J3AH7xnUzZyVVXhTgGhEKnFqye14aadWv7bzXdzc= k8s.io/klog/v2 v2.140.0/go.mod h1:o+/RWfJ6PwpnFn7OyAG3QnO47BFsymfEfrz6XyYSSp0= -k8s.io/kube-openapi v0.0.0-20260502001324-b7f5293f4787 h1:kHv8PETbPIVHfqKBYwTNNSjqChf/7xn3JOS3re+NWs8= -k8s.io/kube-openapi v0.0.0-20260502001324-b7f5293f4787/go.mod h1:Cyq7UE0QtGe+Zo+/6XFrxiS4Mq0tLyQEONkFzSkfp9o= +k8s.io/kube-openapi v0.0.0-20260603220949-865597e52e25 h1:mPMaPMpBij2V1Wv/fR+HW124vVGXXvOSS9ver/9yjWs= +k8s.io/kube-openapi v0.0.0-20260603220949-865597e52e25/go.mod h1:V/QaCUYDa+0QpcHhVVc5l99Uz56wEMEXBSj9oCDkNDY= k8s.io/streaming v0.36.2 h1:NSKthPPg9UFSKsRauVJUVGH2Dvn8fhKmY4qrMkw/p98= k8s.io/streaming v0.36.2/go.mod h1:z6fV3D+NVkoeqRMtWwlUZK6U17SY/LqNzOxWL6GyR/s= -k8s.io/utils v0.0.0-20260626114624-be93311217bd h1:Ea7fgQ5we8Y9T0OX5o0dAHzQOBRI07D/dEYRaB9ZZEs= -k8s.io/utils v0.0.0-20260626114624-be93311217bd/go.mod h1:xDxuJ0whA3d0I4mf/C4ppKHxXynQ+fxnkmQH0vTHnuk= +k8s.io/utils v0.0.0-20260707023825-cf1189d6abe3 h1:jVkFFVfXdXP74B/zbO3hM3hpSFD0xvhQ5U686DPurkE= +k8s.io/utils v0.0.0-20260707023825-cf1189d6abe3/go.mod h1:M2s5JB1lIYP3jzZdorPLHXIPJzt9vv2muW5a6L9DtNM= sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.34.0 h1:hSfpvjjTQXQY2Fol2CS0QHMNs/WI1MOSGzCm1KhM5ec= sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.34.0/go.mod h1:Ve9uj1L+deCXFrPOk1LpFXqTg7LCFzFso6PA48q/XZw= sigs.k8s.io/controller-runtime v0.24.1 h1:miPEwrmirImAvgME1L9qebGHrOnGJoVmVdtOU9fRfo4= sigs.k8s.io/controller-runtime v0.24.1/go.mod h1:vFkfY5fGt5xAC/sKb8IBFKgWPNKG9OUG29dR8Y2wImw= -sigs.k8s.io/gateway-api v1.5.0 h1:duoo14Ky/fJXpjpmyMISE2RTBGnfCg8zICfTYLTnBJA= -sigs.k8s.io/gateway-api v1.5.0/go.mod h1:GvCETiaMAlLym5CovLxGjS0NysqFk3+Yuq3/rh6QL2o= +sigs.k8s.io/gateway-api v1.6.0 h1:735YBRj5NXFrOGX0GoSjwzUIzbz8kiEOfADsqHFmHgE= +sigs.k8s.io/gateway-api v1.6.0/go.mod h1:FVfx3t389ybeXOqvDghLbdvJdSCfI/PReqCUI3lu3mY= sigs.k8s.io/json v0.0.0-20250730193827-2d320260d730 h1:IpInykpT6ceI+QxKBbEflcR5EXP7sU1kvOlxwZh5txg= sigs.k8s.io/json v0.0.0-20250730193827-2d320260d730/go.mod h1:mdzfpAEoE6DHQEN0uh9ZbOCuHbLK5wOm7dK4ctXE9Tg= sigs.k8s.io/kustomize/api v0.21.1 h1:lzqbzvz2CSvsjIUZUBNFKtIMsEw7hVLJp0JeSIVmuJs= From 338ceab60ff79bf01cccc9abceff4fc1ef43cbd1 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 14 Jul 2026 18:02:14 +0200 Subject: [PATCH 061/134] chore(deps): update all cloudnative-pg daggerverse dependencies to 7431c24 (#997) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit | Package | Update | Change | |---|---|---| | commitlint | digest | `7a53f0b` β†’ `7431c24` | | controller-gen | digest | `7a53f0b` β†’ `7431c24` | | crd-gen-refs | digest | `7a53f0b` β†’ `7431c24` | | spellcheck | digest | `7a53f0b` β†’ `7431c24` | | uncommitted | digest | `7a53f0b` β†’ `7431c24` | Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Taskfile.yml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/Taskfile.yml b/Taskfile.yml index ff4bd96..7ee4eb2 100644 --- a/Taskfile.yml +++ b/Taskfile.yml @@ -46,7 +46,7 @@ tasks: - wordlist-ordered env: # renovate: datasource=git-refs depName=spellcheck lookupName=https://github.com/cloudnative-pg/daggerverse currentValue=main - DAGGER_SPELLCHECK_SHA: 7a53f0b7f36c786389a6f72714d5875b9a63e9c1 + DAGGER_SPELLCHECK_SHA: 7431c24907de3c6b1516114c8990d4f8d23d92cd cmds: - > GITHUB_REF= dagger -s call -m github.com/cloudnative-pg/daggerverse/spellcheck@${DAGGER_SPELLCHECK_SHA} @@ -60,7 +60,7 @@ tasks: desc: Check for conventional commits env: # renovate: datasource=git-refs depName=commitlint lookupName=https://github.com/cloudnative-pg/daggerverse currentValue=main - DAGGER_COMMITLINT_SHA: 7a53f0b7f36c786389a6f72714d5875b9a63e9c1 + DAGGER_COMMITLINT_SHA: 7431c24907de3c6b1516114c8990d4f8d23d92cd cmds: - > GITHUB_REF= dagger -s call -m github.com/cloudnative-pg/daggerverse/commitlint@${DAGGER_COMMITLINT_SHA} @@ -74,7 +74,7 @@ tasks: - wordlist-ordered env: # renovate: datasource=git-refs depName=uncommitted lookupName=https://github.com/cloudnative-pg/daggerverse currentValue=main - DAGGER_UNCOMMITTED_SHA: 7a53f0b7f36c786389a6f72714d5875b9a63e9c1 + DAGGER_UNCOMMITTED_SHA: 7431c24907de3c6b1516114c8990d4f8d23d92cd cmds: - GITHUB_REF= dagger -s call -m github.com/cloudnative-pg/daggerverse/uncommitted@${DAGGER_UNCOMMITTED_SHA} check-uncommitted --source . stdout sources: @@ -86,7 +86,7 @@ tasks: - controller-gen env: # renovate: datasource=git-refs depName=crd-gen-refs lookupName=https://github.com/cloudnative-pg/daggerverse currentValue=main - DAGGER_CRDGENREF_SHA: 7a53f0b7f36c786389a6f72714d5875b9a63e9c1 + DAGGER_CRDGENREF_SHA: 7431c24907de3c6b1516114c8990d4f8d23d92cd # renovate: datasource=go depName=github.com/elastic/crd-ref-docs CRDREFDOCS_VERSION: v0.3.0 cmds: @@ -383,7 +383,7 @@ tasks: run: once env: # renovate: datasource=git-refs depName=controller-gen lookupName=https://github.com/cloudnative-pg/daggerverse currentValue=main - DAGGER_CONTROLLER_GEN_SHA: 7a53f0b7f36c786389a6f72714d5875b9a63e9c1 + DAGGER_CONTROLLER_GEN_SHA: 7431c24907de3c6b1516114c8990d4f8d23d92cd cmds: - > GITHUB_REF= dagger -s call -m github.com/cloudnative-pg/daggerverse/controller-gen@${DAGGER_CONTROLLER_GEN_SHA} From 3813ce8cfd735285c8ef5cda1c502d62bbfce375 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 15 Jul 2026 10:23:14 +0200 Subject: [PATCH 062/134] chore(deps): update dependency cert-manager/cert-manager to v1.21.0 (#1002) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit | Package | Update | Change | |---|---|---| | [cert-manager/cert-manager](https://redirect.github.com/cert-manager/cert-manager) | minor | `v1.20.3` β†’ `v1.21.0` | Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- test/e2e/internal/certmanager/certmanager.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/e2e/internal/certmanager/certmanager.go b/test/e2e/internal/certmanager/certmanager.go index ae14ea0..b528d8a 100644 --- a/test/e2e/internal/certmanager/certmanager.go +++ b/test/e2e/internal/certmanager/certmanager.go @@ -58,7 +58,7 @@ func WithIgnoreExistingResources(ignore bool) InstallOption { // DefaultVersion is the default version of cert-manager to install. // // renovate: datasource=github-releases depName=cert-manager/cert-manager -const DefaultVersion = "v1.20.3" +const DefaultVersion = "v1.21.0" // Install installs cert-manager using kubectl. func Install(ctx context.Context, cl client.Client, opts ...InstallOption) error { From 88f2e296746f495d3e7b27cd7297e772d53f61e9 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 15 Jul 2026 12:16:43 +0200 Subject: [PATCH 063/134] fix(deps): update documentation dependencies to v3.10.2 (#1001) Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- web/package.json | 10 +- web/yarn.lock | 560 +++++++++++++++++++++++++++++++++++------------ 2 files changed, 430 insertions(+), 140 deletions(-) diff --git a/web/package.json b/web/package.json index 0844a88..43f341e 100644 --- a/web/package.json +++ b/web/package.json @@ -15,8 +15,8 @@ "typecheck": "tsc" }, "dependencies": { - "@docusaurus/core": "3.10.1", - "@docusaurus/preset-classic": "3.10.1", + "@docusaurus/core": "3.10.2", + "@docusaurus/preset-classic": "3.10.2", "@easyops-cn/docusaurus-search-local": "^0.55.0", "@mdx-js/react": "^3.0.0", "clsx": "^2.0.0", @@ -25,9 +25,9 @@ "react-dom": "^19.0.0" }, "devDependencies": { - "@docusaurus/module-type-aliases": "3.10.1", - "@docusaurus/tsconfig": "3.10.1", - "@docusaurus/types": "3.10.1", + "@docusaurus/module-type-aliases": "3.10.2", + "@docusaurus/tsconfig": "3.10.2", + "@docusaurus/types": "3.10.2", "typescript": "~6.0.0" }, "browserslist": { diff --git a/web/yarn.lock b/web/yarn.lock index 711bd73..94de4ee 100644 --- a/web/yarn.lock +++ b/web/yarn.lock @@ -2,6 +2,16 @@ # yarn lockfile v1 +"@11ty/gray-matter@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@11ty/gray-matter/-/gray-matter-1.0.0.tgz#35ee04d76b870893c053f64f659c923a7a9db2d7" + integrity sha512-7mJJl+wf1AByoT0PknQiQfOPnVNT4fevGrUBVWO4HXsnYn1aQPyRyrELYrNUFleUBM++KzMKN6QaxHPk0t/6/g== + dependencies: + js-yaml "^4.1.0" + kind-of "^6.0.3" + section-matter "^1.0.0" + strip-bom-string "^1.0.0" + "@algolia/abtesting@1.21.0": version "1.21.0" resolved "https://registry.yarnpkg.com/@algolia/abtesting/-/abtesting-1.21.0.tgz#a156291a4b3f19516f79dc8c163a8f5a38b5e8ae" @@ -1519,6 +1529,26 @@ fs-extra "^11.1.1" tslib "^2.6.0" +"@docusaurus/babel@3.10.2": + version "3.10.2" + resolved "https://registry.yarnpkg.com/@docusaurus/babel/-/babel-3.10.2.tgz#4d5f8ac4d16bfe26c06f256687831787edb46e8a" + integrity sha512-aJ1hpGyvfkte3dDAfNbWM4biW4yWZBVz7TIGLZP+v+tWOBgxX3e0N5ZIXHIvmfNNXTI77pcHUx3KmtOk05Ze3Q== + dependencies: + "@babel/core" "^7.25.9" + "@babel/generator" "^7.25.9" + "@babel/plugin-syntax-dynamic-import" "^7.8.3" + "@babel/plugin-transform-runtime" "^7.25.9" + "@babel/preset-env" "^7.25.9" + "@babel/preset-react" "^7.25.9" + "@babel/preset-typescript" "^7.25.9" + "@babel/runtime" "^7.25.9" + "@babel/traverse" "^7.25.9" + "@docusaurus/logger" "3.10.2" + "@docusaurus/utils" "3.10.2" + babel-plugin-dynamic-import-node "^2.3.3" + fs-extra "^11.1.1" + tslib "^2.6.0" + "@docusaurus/bundler@3.10.1": version "3.10.1" resolved "https://registry.yarnpkg.com/@docusaurus/bundler/-/bundler-3.10.1.tgz#82fa5079f3787a67502e25f82d37d05ec5de0cc3" @@ -1549,6 +1579,36 @@ webpack "^5.95.0" webpackbar "^7.0.0" +"@docusaurus/bundler@3.10.2": + version "3.10.2" + resolved "https://registry.yarnpkg.com/@docusaurus/bundler/-/bundler-3.10.2.tgz#323492eb0550b6a7f6e5fa6b9877cdb2c53b1be3" + integrity sha512-i0ZNcy0f0WhaOlYVgzLsWhIoEXO9kS3HRoKPtgE6vQtZUq7arKZaYdNBudr3mqCmd+TyOkwtwfHgs1ENj07r5g== + dependencies: + "@babel/core" "^7.25.9" + "@docusaurus/babel" "3.10.2" + "@docusaurus/cssnano-preset" "3.10.2" + "@docusaurus/logger" "3.10.2" + "@docusaurus/types" "3.10.2" + "@docusaurus/utils" "3.10.2" + babel-loader "^9.2.1" + clean-css "^5.3.3" + copy-webpack-plugin "^11.0.0" + css-loader "^6.11.0" + css-minimizer-webpack-plugin "^5.0.1" + cssnano "^6.1.2" + file-loader "^6.2.0" + html-minifier-terser "^7.2.0" + mini-css-extract-plugin "^2.9.2" + null-loader "^4.0.1" + postcss "^8.5.4" + postcss-loader "^7.3.4" + postcss-preset-env "^10.2.1" + terser-webpack-plugin "^5.3.9" + tslib "^2.6.0" + url-loader "^4.1.1" + webpack "^5.95.0" + webpackbar "^7.0.0" + "@docusaurus/core@3.10.1": version "3.10.1" resolved "https://registry.yarnpkg.com/@docusaurus/core/-/core-3.10.1.tgz#3f8bdb97451b4df14f2a3b39ab0186366fbf8fbe" @@ -1597,6 +1657,54 @@ webpack-dev-server "^5.2.2" webpack-merge "^6.0.1" +"@docusaurus/core@3.10.2": + version "3.10.2" + resolved "https://registry.yarnpkg.com/@docusaurus/core/-/core-3.10.2.tgz#349cae728fc3769b3f8aef4cf538ccb79aace8d0" + integrity sha512-EYByj6nk+aD9KeVxV6Hmo2/nAAT79P21Y82ycTBOBtrmqilloIbIEhgL2/8Xpt2Jz/pgNqHAwyusOGwmbKeJmA== + dependencies: + "@docusaurus/babel" "3.10.2" + "@docusaurus/bundler" "3.10.2" + "@docusaurus/logger" "3.10.2" + "@docusaurus/mdx-loader" "3.10.2" + "@docusaurus/utils" "3.10.2" + "@docusaurus/utils-common" "3.10.2" + "@docusaurus/utils-validation" "3.10.2" + boxen "^6.2.1" + chalk "^4.1.2" + chokidar "^3.5.3" + cli-table3 "^0.6.3" + combine-promises "^1.1.0" + commander "^5.1.0" + core-js "^3.31.1" + detect-port "^2.1.0" + escape-html "^1.0.3" + eta "^2.2.0" + eval "^0.1.8" + execa "^5.1.1" + fs-extra "^11.1.1" + html-tags "^3.3.1" + html-webpack-plugin "^5.6.0" + leven "^3.1.0" + lodash "^4.17.21" + open "^8.4.0" + p-map "^4.0.0" + prompts "^2.4.2" + react-helmet-async "npm:@slorber/react-helmet-async@1.3.0" + react-loadable "npm:@docusaurus/react-loadable@6.0.0" + react-loadable-ssr-addon-v5-slorber "^1.0.3" + react-router "^5.3.4" + react-router-config "^5.1.1" + react-router-dom "^5.3.4" + semver "^7.5.4" + serve-handler "^6.1.7" + tinypool "^1.0.2" + tslib "^2.6.0" + update-notifier "^6.0.2" + webpack "^5.95.0" + webpack-bundle-analyzer "^4.10.2" + webpack-dev-server "^5.2.2" + webpack-merge "^6.0.1" + "@docusaurus/cssnano-preset@3.10.1": version "3.10.1" resolved "https://registry.yarnpkg.com/@docusaurus/cssnano-preset/-/cssnano-preset-3.10.1.tgz#4b6bafeca8bb9423364d2fd6683c28e2f85a4665" @@ -1607,6 +1715,16 @@ postcss-sort-media-queries "^5.2.0" tslib "^2.6.0" +"@docusaurus/cssnano-preset@3.10.2": + version "3.10.2" + resolved "https://registry.yarnpkg.com/@docusaurus/cssnano-preset/-/cssnano-preset-3.10.2.tgz#e3ac7e85585f77e8fdef95176ab7c211d1296630" + integrity sha512-4gCnHRbJLTloiwfvFAa92tgb2gI4KYhvjfQVYnEaiMO/EgvWfCo1LwytHXen+1oZAN0VAlS0JAPxp3MsvKDa3A== + dependencies: + cssnano-preset-advanced "^6.1.2" + postcss "^8.5.4" + postcss-sort-media-queries "^5.2.0" + tslib "^2.6.0" + "@docusaurus/logger@3.10.1": version "3.10.1" resolved "https://registry.yarnpkg.com/@docusaurus/logger/-/logger-3.10.1.tgz#34c964e32e18f120e30f80171a38cfefe72cfb4b" @@ -1615,6 +1733,14 @@ chalk "^4.1.2" tslib "^2.6.0" +"@docusaurus/logger@3.10.2": + version "3.10.2" + resolved "https://registry.yarnpkg.com/@docusaurus/logger/-/logger-3.10.2.tgz#280bed53d0eb9cdc56e896a155036207910e89c9" + integrity sha512-gSEwqtPfCAnC3ZSJY6xL7tcIfgg0vFD39jbv93eakuweyvO2864xR0K+kmKwBhkTCtWRNjuGGnb5rdmkD/ndqw== + dependencies: + chalk "^4.1.2" + tslib "^2.6.0" + "@docusaurus/mdx-loader@3.10.1": version "3.10.1" resolved "https://registry.yarnpkg.com/@docusaurus/mdx-loader/-/mdx-loader-3.10.1.tgz#050ae9bc614158a4ec07a628aa75fa9ae90d7e82" @@ -1645,6 +1771,36 @@ vfile "^6.0.1" webpack "^5.88.1" +"@docusaurus/mdx-loader@3.10.2": + version "3.10.2" + resolved "https://registry.yarnpkg.com/@docusaurus/mdx-loader/-/mdx-loader-3.10.2.tgz#3b4e7ffacff4ed856db2ec4e94c13b0a652d62eb" + integrity sha512-9Fd4V/SFjfrVQ0JH5EN0+iPWyFunvTeQE3gfyFeetqPaXMP0OylIjOw16dCuXG4NZJrYdBqwzjh18/h3gRi47w== + dependencies: + "@docusaurus/logger" "3.10.2" + "@docusaurus/utils" "3.10.2" + "@docusaurus/utils-validation" "3.10.2" + "@mdx-js/mdx" "^3.0.0" + "@slorber/remark-comment" "^1.0.0" + escape-html "^1.0.3" + estree-util-value-to-estree "^3.0.1" + file-loader "^6.2.0" + fs-extra "^11.1.1" + image-size "^2.0.2" + mdast-util-mdx "^3.0.0" + mdast-util-to-string "^4.0.0" + rehype-raw "^7.0.0" + remark-directive "^3.0.0" + remark-emoji "^4.0.0" + remark-frontmatter "^5.0.0" + remark-gfm "^4.0.0" + stringify-object "^3.3.0" + tslib "^2.6.0" + unified "^11.0.3" + unist-util-visit "^5.0.0" + url-loader "^4.1.1" + vfile "^6.0.1" + webpack "^5.88.1" + "@docusaurus/module-type-aliases@3.10.1": version "3.10.1" resolved "https://registry.yarnpkg.com/@docusaurus/module-type-aliases/-/module-type-aliases-3.10.1.tgz#22d39177c296786eb6e0d940699cd590cc93ca77" @@ -1658,19 +1814,32 @@ react-helmet-async "npm:@slorber/react-helmet-async@1.3.0" react-loadable "npm:@docusaurus/react-loadable@6.0.0" -"@docusaurus/plugin-content-blog@3.10.1": - version "3.10.1" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-content-blog/-/plugin-content-blog-3.10.1.tgz#0bd8de700ccbd8e95d920df2613304ef59abe72b" - integrity sha512-mmkgE6Q2+K74tnkou7tXlpDLvoCU/qkSa2GSQ3XUiHWvcebCoDQzS670RR3tO8PmaWlIyWWISYWzZLuMfxunRA== +"@docusaurus/module-type-aliases@3.10.2": + version "3.10.2" + resolved "https://registry.yarnpkg.com/@docusaurus/module-type-aliases/-/module-type-aliases-3.10.2.tgz#7c3b940c77d72e71d33a1e76f0e003b418e6163a" + integrity sha512-h/I5e4jaAhDHW4vaLENi1i2hnOEnXY1t9R+nnRTbgUl7ymVRzN/HF7dDfj8rKYGj8gfIge+Ef+iYRAMtbGvsrQ== dependencies: - "@docusaurus/core" "3.10.1" - "@docusaurus/logger" "3.10.1" - "@docusaurus/mdx-loader" "3.10.1" - "@docusaurus/theme-common" "3.10.1" - "@docusaurus/types" "3.10.1" - "@docusaurus/utils" "3.10.1" - "@docusaurus/utils-common" "3.10.1" - "@docusaurus/utils-validation" "3.10.1" + "@docusaurus/types" "3.10.2" + "@types/history" "^4.7.11" + "@types/react" "*" + "@types/react-router-config" "*" + "@types/react-router-dom" "*" + react-helmet-async "npm:@slorber/react-helmet-async@1.3.0" + react-loadable "npm:@docusaurus/react-loadable@6.0.0" + +"@docusaurus/plugin-content-blog@3.10.2": + version "3.10.2" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-content-blog/-/plugin-content-blog-3.10.2.tgz#2374886ec3d76e8f014e85db8c3c010de6c419be" + integrity sha512-0cbEnNKf0InmLkhj/+nVRmqEnWEoOE8Mh+2x1qOXI0qYpCnphq4RXknVJ8BvybKRXqYVvbmdMfiJSup+k4tm5w== + dependencies: + "@docusaurus/core" "3.10.2" + "@docusaurus/logger" "3.10.2" + "@docusaurus/mdx-loader" "3.10.2" + "@docusaurus/theme-common" "3.10.2" + "@docusaurus/types" "3.10.2" + "@docusaurus/utils" "3.10.2" + "@docusaurus/utils-common" "3.10.2" + "@docusaurus/utils-validation" "3.10.2" cheerio "1.0.0-rc.12" combine-promises "^1.1.0" feed "^4.2.2" @@ -1683,7 +1852,31 @@ utility-types "^3.10.0" webpack "^5.88.1" -"@docusaurus/plugin-content-docs@3.10.1", "@docusaurus/plugin-content-docs@^2 || ^3": +"@docusaurus/plugin-content-docs@3.10.2": + version "3.10.2" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-content-docs/-/plugin-content-docs-3.10.2.tgz#249bbc806437f227b06410ecc771eb67d8910a9a" + integrity sha512-Sqwl4FPoZBDrlY8I2VU2H8O0M91CHp9T8ToMSkTZmjvHCif+1laqfXi6sTk8IfyVS/trN5yNjcWd1bFsGB6W5Q== + dependencies: + "@docusaurus/core" "3.10.2" + "@docusaurus/logger" "3.10.2" + "@docusaurus/mdx-loader" "3.10.2" + "@docusaurus/module-type-aliases" "3.10.2" + "@docusaurus/theme-common" "3.10.2" + "@docusaurus/types" "3.10.2" + "@docusaurus/utils" "3.10.2" + "@docusaurus/utils-common" "3.10.2" + "@docusaurus/utils-validation" "3.10.2" + "@types/react-router-config" "^5.0.7" + combine-promises "^1.1.0" + fs-extra "^11.1.1" + js-yaml "^4.1.0" + lodash "^4.17.21" + schema-dts "^1.1.2" + tslib "^2.6.0" + utility-types "^3.10.0" + webpack "^5.88.1" + +"@docusaurus/plugin-content-docs@^2 || ^3": version "3.10.1" resolved "https://registry.yarnpkg.com/@docusaurus/plugin-content-docs/-/plugin-content-docs-3.10.1.tgz#261e0e982e4a937c05b462e3c5729374f433b752" integrity sha512-2jRVrtzjf8LClGTHQlwlwuD3wQXRx3WEoF7XUarJ8Ou+0onV+SLtejsyfY9JLpfUh9hPhXM4pbBGkyAY4Bi3HQ== @@ -1707,142 +1900,141 @@ utility-types "^3.10.0" webpack "^5.88.1" -"@docusaurus/plugin-content-pages@3.10.1": - version "3.10.1" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-content-pages/-/plugin-content-pages-3.10.1.tgz#8c6ffc2079ed0262548ecc4df1dea6add6aa9673" - integrity sha512-huJpaRPMl42nsFwuCXvV8bVDj2MazuwRJIUylI/RSlmZeJssVoZXeCjVf1y+1Drtpa9SKcdGn8yoJ76IRJijtw== +"@docusaurus/plugin-content-pages@3.10.2": + version "3.10.2" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-content-pages/-/plugin-content-pages-3.10.2.tgz#377c11b36a6a5e0c0c14dd9dea799f986d662ed7" + integrity sha512-h5R12sZ/vV9EPiVjvIl9YFCOwkpwXes7dQMYt3EvP6Pphu4amHxxTqWxf08Fl5DR8h+oZMbWpFTNw5vKEYfvzQ== dependencies: - "@docusaurus/core" "3.10.1" - "@docusaurus/mdx-loader" "3.10.1" - "@docusaurus/types" "3.10.1" - "@docusaurus/utils" "3.10.1" - "@docusaurus/utils-validation" "3.10.1" + "@docusaurus/core" "3.10.2" + "@docusaurus/mdx-loader" "3.10.2" + "@docusaurus/types" "3.10.2" + "@docusaurus/utils" "3.10.2" + "@docusaurus/utils-validation" "3.10.2" fs-extra "^11.1.1" tslib "^2.6.0" webpack "^5.88.1" -"@docusaurus/plugin-css-cascade-layers@3.10.1": - version "3.10.1" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-css-cascade-layers/-/plugin-css-cascade-layers-3.10.1.tgz#440578d95cbe1a6120936fa83df868d2626cd1d8" - integrity sha512-r//fn+MNHkE1wCof8T29VAQezt1enGCpsFxoziBbvLgBM4JfXN2P3rxrBaavHmvLvm7lYkpJeitcDthwnmWCTw== +"@docusaurus/plugin-css-cascade-layers@3.10.2": + version "3.10.2" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-css-cascade-layers/-/plugin-css-cascade-layers-3.10.2.tgz#54edc6450b0bb95be5990ea416b4c4dc5e6bdde0" + integrity sha512-UkdvQby5OQUKWrw3lLnSTJXQ6VETaUVTuPQX9AABtmFm5h+ifEBx1OQ+LN726Q4byuwBf2ElHkf4qU4hTxdvRg== dependencies: - "@docusaurus/core" "3.10.1" - "@docusaurus/types" "3.10.1" - "@docusaurus/utils" "3.10.1" - "@docusaurus/utils-validation" "3.10.1" + "@docusaurus/core" "3.10.2" + "@docusaurus/types" "3.10.2" + "@docusaurus/utils" "3.10.2" + "@docusaurus/utils-validation" "3.10.2" tslib "^2.6.0" -"@docusaurus/plugin-debug@3.10.1": - version "3.10.1" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-debug/-/plugin-debug-3.10.1.tgz#b8b7b24d9a7d185fd8a56a030f90145d3bfd8239" - integrity sha512-9KqOpKNfAyqGZykRb9LhIT/vyRF6sm/ykhjj/39JvaJahDS+jZJE0Z1Wfz9q3DUNDTMNN0Q7u/kk4rKKU+IJuA== +"@docusaurus/plugin-debug@3.10.2": + version "3.10.2" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-debug/-/plugin-debug-3.10.2.tgz#2452f258668bb2514085d2d5fff700457c531aad" + integrity sha512-8vbZNOSCpnsT57EY6CgN7sgRVmx3KTYwO8Uvo2pbxOyb8tbqAwtT9SslqaQ41HbA1v1hpn5RP7u5s2KvRwAFpQ== dependencies: - "@docusaurus/core" "3.10.1" - "@docusaurus/types" "3.10.1" - "@docusaurus/utils" "3.10.1" + "@docusaurus/core" "3.10.2" + "@docusaurus/types" "3.10.2" + "@docusaurus/utils" "3.10.2" fs-extra "^11.1.1" react-json-view-lite "^2.3.0" tslib "^2.6.0" -"@docusaurus/plugin-google-analytics@3.10.1": - version "3.10.1" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-google-analytics/-/plugin-google-analytics-3.10.1.tgz#ac15afc77386e0352edb8a1698d993aa5de36ffc" - integrity sha512-8o0P1KtmgdYQHH+oInitPpRWI0Of5XednAX4+DMhQNSmGSRNrsEEHg1ebv35m9AgRClfAytCJ5jA9KvcASTyuA== +"@docusaurus/plugin-google-analytics@3.10.2": + version "3.10.2" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-google-analytics/-/plugin-google-analytics-3.10.2.tgz#7a0375c5a238cd9220166d9be8afc00ba508c55d" + integrity sha512-kMHMBK9j4VAtgd5owwrRLRIi0EjkrpXlX7ePj1+y68XfVZV9I1T4S+koPDm+Hfw2TtnyHvh0uNrDvjz+DjQGVA== dependencies: - "@docusaurus/core" "3.10.1" - "@docusaurus/types" "3.10.1" - "@docusaurus/utils-validation" "3.10.1" + "@docusaurus/core" "3.10.2" + "@docusaurus/types" "3.10.2" + "@docusaurus/utils-validation" "3.10.2" tslib "^2.6.0" -"@docusaurus/plugin-google-gtag@3.10.1": - version "3.10.1" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-google-gtag/-/plugin-google-gtag-3.10.1.tgz#0482b83b9bc411aa99a432be2b39d2e53a00e2e0" - integrity sha512-pu3xIUo5o/zCMLfUY9BO5KOwSH0zIsAGyFRPvXHayFSA5XIhCU/SFuB0g0ZNjFn9niZLCaNvoeAuOGFJZq0fdw== +"@docusaurus/plugin-google-gtag@3.10.2": + version "3.10.2" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-google-gtag/-/plugin-google-gtag-3.10.2.tgz#65df25eb5fb3f2a3f2d0fba8ddd423060e09e1ca" + integrity sha512-Vt90nNFhtAChRe9+it1hcHFgFvETdSnOkL5Bma+p6E/yU2tAYrvvyk+gv+LJGM2ZUkyKuKXLRsZ2Lb0bO7+Vog== dependencies: - "@docusaurus/core" "3.10.1" - "@docusaurus/types" "3.10.1" - "@docusaurus/utils-validation" "3.10.1" - "@types/gtag.js" "^0.0.20" + "@docusaurus/core" "3.10.2" + "@docusaurus/types" "3.10.2" + "@docusaurus/utils-validation" "3.10.2" tslib "^2.6.0" -"@docusaurus/plugin-google-tag-manager@3.10.1": - version "3.10.1" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-google-tag-manager/-/plugin-google-tag-manager-3.10.1.tgz#eaf5765d6f82b4fb661d92a793d1883f9d1ec106" - integrity sha512-f6fyGHiCm7kJHBtAisGQS5oNBnpnMTYQZxDXeVrnw/3zWU+LMA22pr6UHGYkBKDbN+qPC5QHG3NuOfzQLq3+Lw== +"@docusaurus/plugin-google-tag-manager@3.10.2": + version "3.10.2" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-google-tag-manager/-/plugin-google-tag-manager-3.10.2.tgz#882a24e51dc42487d2c1d4f2cde3f59c99a276cb" + integrity sha512-MLCffCldysi/R0nzJQP7ZWd0xAoGNnSTiVOo6TTR6mKVGFhE+/XArGe67ZcaZv1uytgQXoXs92VJrgVDrz80rQ== dependencies: - "@docusaurus/core" "3.10.1" - "@docusaurus/types" "3.10.1" - "@docusaurus/utils-validation" "3.10.1" + "@docusaurus/core" "3.10.2" + "@docusaurus/types" "3.10.2" + "@docusaurus/utils-validation" "3.10.2" tslib "^2.6.0" -"@docusaurus/plugin-sitemap@3.10.1": - version "3.10.1" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-sitemap/-/plugin-sitemap-3.10.1.tgz#66a6974bb2fd1b9d8f5cb0f3c5ecd2201c118565" - integrity sha512-C26MbmmqgdjkDq1htaZ3aD7LzEDKFWXfpyQpt0EOUThuq5nV77zDaedV20yHcVo9p+3ey9aZ4pbHA0D3QcZTzg== +"@docusaurus/plugin-sitemap@3.10.2": + version "3.10.2" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-sitemap/-/plugin-sitemap-3.10.2.tgz#6c662c7df3bb7d36887f8b73f54d85dc4d36371d" + integrity sha512-PODkwg5XetLML3hU/3xpCKJUZ9cqExLaBnD/Fzzwj2VHogLeqnDisLIujae87zuze7T4mCm2A6KEqZkyiz07EQ== dependencies: - "@docusaurus/core" "3.10.1" - "@docusaurus/logger" "3.10.1" - "@docusaurus/types" "3.10.1" - "@docusaurus/utils" "3.10.1" - "@docusaurus/utils-common" "3.10.1" - "@docusaurus/utils-validation" "3.10.1" + "@docusaurus/core" "3.10.2" + "@docusaurus/logger" "3.10.2" + "@docusaurus/types" "3.10.2" + "@docusaurus/utils" "3.10.2" + "@docusaurus/utils-common" "3.10.2" + "@docusaurus/utils-validation" "3.10.2" fs-extra "^11.1.1" sitemap "^7.1.1" tslib "^2.6.0" -"@docusaurus/plugin-svgr@3.10.1": - version "3.10.1" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-svgr/-/plugin-svgr-3.10.1.tgz#c217c24d6d23fd2bc6f54d44c040635b49d6b36e" - integrity sha512-6SFxsmjWFkVLDmBUvFK6i72QjUwqyQFe4Ovz+SUJophJjOyVG3ZZG5IQpBC/kX/Gfv1yWeU9nWauH6F6Q7QX/Q== +"@docusaurus/plugin-svgr@3.10.2": + version "3.10.2" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-svgr/-/plugin-svgr-3.10.2.tgz#916fd0a5d39bf73cb621de9789cce243a7ef1754" + integrity sha512-JgfT3jWM0TJ8Uw0cEcqxHpybngQY1vlBYpuuNO+gEh5iPh5Ar+vxq/u9CFrYsWeXy48BN7Db76Pzp2edNXUQ8A== dependencies: - "@docusaurus/core" "3.10.1" - "@docusaurus/types" "3.10.1" - "@docusaurus/utils" "3.10.1" - "@docusaurus/utils-validation" "3.10.1" + "@docusaurus/core" "3.10.2" + "@docusaurus/types" "3.10.2" + "@docusaurus/utils" "3.10.2" + "@docusaurus/utils-validation" "3.10.2" "@svgr/core" "8.1.0" "@svgr/webpack" "^8.1.0" tslib "^2.6.0" webpack "^5.88.1" -"@docusaurus/preset-classic@3.10.1": - version "3.10.1" - resolved "https://registry.yarnpkg.com/@docusaurus/preset-classic/-/preset-classic-3.10.1.tgz#faf330d96aedc9083a59bec09d966ae4dfc8b2fb" - integrity sha512-YO/FL8v1zmbxoTso6mjMz/RDjhaTJxb1UpFFTDdY5847LLDCeyYiYlrhyTbgN1RIN3xnkLKZ9Lj1x8hUzI4JOg== +"@docusaurus/preset-classic@3.10.2": + version "3.10.2" + resolved "https://registry.yarnpkg.com/@docusaurus/preset-classic/-/preset-classic-3.10.2.tgz#e4419c811723ab913a946c63efcc15e7f5f60a0a" + integrity sha512-a4B3VczmDl99zK0EufDQYomdJ186WDingjmDXxhN2PNPS9Ty/Y2M5CLFX1KQMRKqRTLiRDKfutzG5IY1FC/ceg== dependencies: - "@docusaurus/core" "3.10.1" - "@docusaurus/plugin-content-blog" "3.10.1" - "@docusaurus/plugin-content-docs" "3.10.1" - "@docusaurus/plugin-content-pages" "3.10.1" - "@docusaurus/plugin-css-cascade-layers" "3.10.1" - "@docusaurus/plugin-debug" "3.10.1" - "@docusaurus/plugin-google-analytics" "3.10.1" - "@docusaurus/plugin-google-gtag" "3.10.1" - "@docusaurus/plugin-google-tag-manager" "3.10.1" - "@docusaurus/plugin-sitemap" "3.10.1" - "@docusaurus/plugin-svgr" "3.10.1" - "@docusaurus/theme-classic" "3.10.1" - "@docusaurus/theme-common" "3.10.1" - "@docusaurus/theme-search-algolia" "3.10.1" - "@docusaurus/types" "3.10.1" + "@docusaurus/core" "3.10.2" + "@docusaurus/plugin-content-blog" "3.10.2" + "@docusaurus/plugin-content-docs" "3.10.2" + "@docusaurus/plugin-content-pages" "3.10.2" + "@docusaurus/plugin-css-cascade-layers" "3.10.2" + "@docusaurus/plugin-debug" "3.10.2" + "@docusaurus/plugin-google-analytics" "3.10.2" + "@docusaurus/plugin-google-gtag" "3.10.2" + "@docusaurus/plugin-google-tag-manager" "3.10.2" + "@docusaurus/plugin-sitemap" "3.10.2" + "@docusaurus/plugin-svgr" "3.10.2" + "@docusaurus/theme-classic" "3.10.2" + "@docusaurus/theme-common" "3.10.2" + "@docusaurus/theme-search-algolia" "3.10.2" + "@docusaurus/types" "3.10.2" -"@docusaurus/theme-classic@3.10.1": - version "3.10.1" - resolved "https://registry.yarnpkg.com/@docusaurus/theme-classic/-/theme-classic-3.10.1.tgz#deed8cf73cc0f56113e53775cbb3b168c3c61566" - integrity sha512-VU1RK0qb2pab0si4r7HFK37cYco8VzqLj3u1PspVipSr/z/GPVKHO4/HXbnePqHoWDk8urjyGSeatH0NIMBM1A== +"@docusaurus/theme-classic@3.10.2": + version "3.10.2" + resolved "https://registry.yarnpkg.com/@docusaurus/theme-classic/-/theme-classic-3.10.2.tgz#a64bd600c789b33c67c30c256b07e2ca0f57e2ae" + integrity sha512-JqTSLQmqmA9uKWZsD5iwBGJ4JyKB4/yTw6PsSXVPRJG/6GAm/u+add9Iip+hvwP12/AnPNztrdxsI14NJW4KeA== dependencies: - "@docusaurus/core" "3.10.1" - "@docusaurus/logger" "3.10.1" - "@docusaurus/mdx-loader" "3.10.1" - "@docusaurus/module-type-aliases" "3.10.1" - "@docusaurus/plugin-content-blog" "3.10.1" - "@docusaurus/plugin-content-docs" "3.10.1" - "@docusaurus/plugin-content-pages" "3.10.1" - "@docusaurus/theme-common" "3.10.1" - "@docusaurus/theme-translations" "3.10.1" - "@docusaurus/types" "3.10.1" - "@docusaurus/utils" "3.10.1" - "@docusaurus/utils-common" "3.10.1" - "@docusaurus/utils-validation" "3.10.1" + "@docusaurus/core" "3.10.2" + "@docusaurus/logger" "3.10.2" + "@docusaurus/mdx-loader" "3.10.2" + "@docusaurus/module-type-aliases" "3.10.2" + "@docusaurus/plugin-content-blog" "3.10.2" + "@docusaurus/plugin-content-docs" "3.10.2" + "@docusaurus/plugin-content-pages" "3.10.2" + "@docusaurus/theme-common" "3.10.2" + "@docusaurus/theme-translations" "3.10.2" + "@docusaurus/types" "3.10.2" + "@docusaurus/utils" "3.10.2" + "@docusaurus/utils-common" "3.10.2" + "@docusaurus/utils-validation" "3.10.2" "@mdx-js/react" "^3.0.0" clsx "^2.0.0" copy-text-to-clipboard "^3.2.0" @@ -1875,20 +2067,38 @@ tslib "^2.6.0" utility-types "^3.10.0" -"@docusaurus/theme-search-algolia@3.10.1": - version "3.10.1" - resolved "https://registry.yarnpkg.com/@docusaurus/theme-search-algolia/-/theme-search-algolia-3.10.1.tgz#6f422058711629ce8d7c2f17e1e54efa075c626e" - integrity sha512-OTaARARVZj2GvkJQjB+1jOIxntRaXea+G+fMsNqrZBAU1O1vJKDW22R7kECOHW27oJCLFN9HKaZeRrfAUyviug== +"@docusaurus/theme-common@3.10.2": + version "3.10.2" + resolved "https://registry.yarnpkg.com/@docusaurus/theme-common/-/theme-common-3.10.2.tgz#5cf2a8b76554b8b38c6afe8448470c411f683e5b" + integrity sha512-R9b/vMpK1yye6hNZTA6x/ivRv+at6GhxnXcxkpzCGzO1R1RwiquqiFg2wMFh6aqlJTpWRFKpFD2TzCDQcyOU0A== + dependencies: + "@docusaurus/mdx-loader" "3.10.2" + "@docusaurus/module-type-aliases" "3.10.2" + "@docusaurus/utils" "3.10.2" + "@docusaurus/utils-common" "3.10.2" + "@types/history" "^4.7.11" + "@types/react" "*" + "@types/react-router-config" "*" + clsx "^2.0.0" + parse-numeric-range "^1.3.0" + prism-react-renderer "^2.3.0" + tslib "^2.6.0" + utility-types "^3.10.0" + +"@docusaurus/theme-search-algolia@3.10.2": + version "3.10.2" + resolved "https://registry.yarnpkg.com/@docusaurus/theme-search-algolia/-/theme-search-algolia-3.10.2.tgz#e7756d4088a7df4d11fd734bfe0e8fa28ceac1dd" + integrity sha512-1msxllyhi/5m77JukXtp5UFnUAriwZIC1oJ7MTnpQpCwLTbclJi5BK5n28CTZuSXpQN2ewbbnqRgAhMM6c6ihg== dependencies: "@algolia/autocomplete-core" "^1.19.2" "@docsearch/react" "^3.9.0 || ^4.3.2" - "@docusaurus/core" "3.10.1" - "@docusaurus/logger" "3.10.1" - "@docusaurus/plugin-content-docs" "3.10.1" - "@docusaurus/theme-common" "3.10.1" - "@docusaurus/theme-translations" "3.10.1" - "@docusaurus/utils" "3.10.1" - "@docusaurus/utils-validation" "3.10.1" + "@docusaurus/core" "3.10.2" + "@docusaurus/logger" "3.10.2" + "@docusaurus/plugin-content-docs" "3.10.2" + "@docusaurus/theme-common" "3.10.2" + "@docusaurus/theme-translations" "3.10.2" + "@docusaurus/utils" "3.10.2" + "@docusaurus/utils-validation" "3.10.2" algoliasearch "^5.37.0" algoliasearch-helper "^3.26.0" clsx "^2.0.0" @@ -1898,7 +2108,15 @@ tslib "^2.6.0" utility-types "^3.10.0" -"@docusaurus/theme-translations@3.10.1", "@docusaurus/theme-translations@^2 || ^3": +"@docusaurus/theme-translations@3.10.2": + version "3.10.2" + resolved "https://registry.yarnpkg.com/@docusaurus/theme-translations/-/theme-translations-3.10.2.tgz#cd649083babd12df324e7129008aaccacd4cfb13" + integrity sha512-iv20wrxnyXkY89LM3TzRlzGlt5fIGO5UnaR6UL1ZVfB9RRFjxQFQ6awDrwAc6Km8Y5gD8pInuwYPF+6/TiCxXA== + dependencies: + fs-extra "^11.1.1" + tslib "^2.6.0" + +"@docusaurus/theme-translations@^2 || ^3": version "3.10.1" resolved "https://registry.yarnpkg.com/@docusaurus/theme-translations/-/theme-translations-3.10.1.tgz#c3119a015652290eea560ca45ac775963d6eb75b" integrity sha512-cLMyaKivjBVWKMJuWqyFVVgtqe8DPJNPkog0bn8W1MDVAKcPdxRFycBfC1We1RaNp7Rdk513bmtW78RR6OBxBw== @@ -1906,10 +2124,10 @@ fs-extra "^11.1.1" tslib "^2.6.0" -"@docusaurus/tsconfig@3.10.1": - version "3.10.1" - resolved "https://registry.yarnpkg.com/@docusaurus/tsconfig/-/tsconfig-3.10.1.tgz#1db31b4a4a5c914bdffa80070a35b6365d34f2e8" - integrity sha512-rYvB7yqkdqWIpAbDzQljGfM4cDBkLTbhmagZBEcsyj6oPUsz47lmW2pYdN1j+7sGFgltbAmQH62xfbrij4Eh6Q== +"@docusaurus/tsconfig@3.10.2": + version "3.10.2" + resolved "https://registry.yarnpkg.com/@docusaurus/tsconfig/-/tsconfig-3.10.2.tgz#0ad085ebf2900391632e2d56635d94c4283efffb" + integrity sha512-5GiB7h/nFsMFPO9mCqcRNE1yA5TSXXNCshNIgHPL6fCPOjcTDixs6qjQBu8ddkgPcicwCvOA7n3jeK2rGdJk6g== "@docusaurus/types@3.10.1": version "3.10.1" @@ -1927,6 +2145,22 @@ webpack "^5.95.0" webpack-merge "^5.9.0" +"@docusaurus/types@3.10.2": + version "3.10.2" + resolved "https://registry.yarnpkg.com/@docusaurus/types/-/types-3.10.2.tgz#9ffe35adfb4587e49158ee9e10d94b86419a5932" + integrity sha512-B6rvfwIFSapUqUJjMriZswX13K8l5Z7AcmVE6uTEJpYddQieSTR12DsGaFtcZAIDsQd4p+0WTl0Vc6jmZK0Trw== + dependencies: + "@mdx-js/mdx" "^3.0.0" + "@types/history" "^4.7.11" + "@types/mdast" "^4.0.2" + "@types/react" "*" + commander "^5.1.0" + joi "^17.9.2" + react-helmet-async "npm:@slorber/react-helmet-async@1.3.0" + utility-types "^3.10.0" + webpack "^5.95.0" + webpack-merge "^5.9.0" + "@docusaurus/utils-common@3.10.1", "@docusaurus/utils-common@^2 || ^3": version "3.10.1" resolved "https://registry.yarnpkg.com/@docusaurus/utils-common/-/utils-common-3.10.1.tgz#6350b4898691e765de750f90eade0e0fa7902d99" @@ -1935,6 +2169,14 @@ "@docusaurus/types" "3.10.1" tslib "^2.6.0" +"@docusaurus/utils-common@3.10.2": + version "3.10.2" + resolved "https://registry.yarnpkg.com/@docusaurus/utils-common/-/utils-common-3.10.2.tgz#a65fcfffafa4e15a59fe61d7ba315ee5d4c49269" + integrity sha512-x3Dz6jv6iQKBNjBmVTu8p57abMp/VNTUgKBMgRVXJc5444orBTsArv0+cdfrXTiz/VMmHfDRVkPbL7GH2B7T7w== + dependencies: + "@docusaurus/types" "3.10.2" + tslib "^2.6.0" + "@docusaurus/utils-validation@3.10.1", "@docusaurus/utils-validation@^2 || ^3": version "3.10.1" resolved "https://registry.yarnpkg.com/@docusaurus/utils-validation/-/utils-validation-3.10.1.tgz#ddbcce997a5506424cdd16abf6845cc51692acae" @@ -1949,6 +2191,20 @@ lodash "^4.17.21" tslib "^2.6.0" +"@docusaurus/utils-validation@3.10.2": + version "3.10.2" + resolved "https://registry.yarnpkg.com/@docusaurus/utils-validation/-/utils-validation-3.10.2.tgz#2624b0ca6675675da2f063828115b43c9a22de47" + integrity sha512-sn8unbDfUL585NtR3cwHefPicOyaHvPaX7VD0aOg/siIxUBoKyKKaGEqzJZDS64mM43TnxurkYDtmB1wsJlZsw== + dependencies: + "@docusaurus/logger" "3.10.2" + "@docusaurus/utils" "3.10.2" + "@docusaurus/utils-common" "3.10.2" + fs-extra "^11.2.0" + joi "^17.9.2" + js-yaml "^4.1.0" + lodash "^4.17.21" + tslib "^2.6.0" + "@docusaurus/utils@3.10.1", "@docusaurus/utils@^2 || ^3": version "3.10.1" resolved "https://registry.yarnpkg.com/@docusaurus/utils/-/utils-3.10.1.tgz#535968caa2c9bff69f997a081b98b95b3c5d3785" @@ -1976,6 +2232,33 @@ utility-types "^3.10.0" webpack "^5.88.1" +"@docusaurus/utils@3.10.2": + version "3.10.2" + resolved "https://registry.yarnpkg.com/@docusaurus/utils/-/utils-3.10.2.tgz#d99c1ffc5c7961e912344269a8728ce2aad8b3dc" + integrity sha512-xx0W3eav2uW1NRIpuHJWNwLTC15xPNjU4Uxi9NSnd3swYC96BE3vFiT93SD8s24kmAAWNwgZwfZ2fghGZ01Lcw== + dependencies: + "@11ty/gray-matter" "^1.0.0" + "@docusaurus/logger" "3.10.2" + "@docusaurus/types" "3.10.2" + "@docusaurus/utils-common" "3.10.2" + escape-string-regexp "^4.0.0" + execa "^5.1.1" + file-loader "^6.2.0" + fs-extra "^11.1.1" + github-slugger "^1.5.0" + globby "^11.1.0" + jiti "^1.20.0" + js-yaml "^4.1.0" + lodash "^4.17.21" + micromatch "^4.0.5" + p-queue "^6.6.2" + prompts "^2.4.2" + resolve-pathname "^3.0.0" + tslib "^2.6.0" + url-loader "^4.1.1" + utility-types "^3.10.0" + webpack "^5.88.1" + "@easyops-cn/autocomplete.js@^0.38.1": version "0.38.1" resolved "https://registry.yarnpkg.com/@easyops-cn/autocomplete.js/-/autocomplete.js-0.38.1.tgz#46dff5795a9a032fa9b9250fdf63ca6c61c07629" @@ -2837,11 +3120,6 @@ "@types/qs" "*" "@types/serve-static" "^1" -"@types/gtag.js@^0.0.20": - version "0.0.20" - resolved "https://registry.yarnpkg.com/@types/gtag.js/-/gtag.js-0.0.20.tgz#e47edabb4ed5ecac90a079275958e6c929d7c08a" - integrity sha512-wwAbk3SA2QeU67unN7zPxjEHmPmlXwZXZvQEpbEUQuMCRGgKyE1m6XDuTUA9b6pCGb/GqJmdfMOY5LuDjJSbbg== - "@types/hast@^3.0.0": version "3.0.4" resolved "https://registry.yarnpkg.com/@types/hast/-/hast-3.0.4.tgz#1d6b39993b82cea6ad783945b0508c25903e15aa" @@ -3240,6 +3518,11 @@ address@^1.0.1: resolved "https://registry.yarnpkg.com/address/-/address-1.2.2.tgz#2b5248dac5485a6390532c6a517fda2e3faac89e" integrity sha512-4B/qKCfeE/ODUaAUpSwfzazo5x29WD4r3vXiWsB7I2mSDAihwEqKO+g8GELZUQSSAo5e1XTYh3ZVfLyxBc12nA== +address@^2.0.1: + version "2.0.3" + resolved "https://registry.yarnpkg.com/address/-/address-2.0.3.tgz#e910900615db3d8a20c040d4c710631062fc4ba8" + integrity sha512-XNAb/a6TCqou+TufU8/u11HCu9x1gYvOoxLwtlXgIqmkrYQADVv6ljyW2zwiPhHz9R1gItAWpuDrdJMmrOBFEA== + aggregate-error@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-3.1.0.tgz#92670ff50f5359bdb7a3e0d40d0ec30c5737687a" @@ -4353,6 +4636,13 @@ detect-port@^1.5.1: address "^1.0.1" debug "4" +detect-port@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/detect-port/-/detect-port-2.1.0.tgz#03d72644891fa451ca5609b83107a8a0ebd03f91" + integrity sha512-epZuWb/6Q62L+nDHJc/hQAqf8pylsqgk3BpZXVBx1CDnr3nkrVNn73Uu1rXcFzkNcc+hkP3whuOg7JZYaQB65Q== + dependencies: + address "^2.0.1" + devlop@^1.0.0, devlop@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/devlop/-/devlop-1.1.0.tgz#4db7c2ca4dc6e0e834c30be70c94bbc976dc7018" @@ -5864,7 +6154,7 @@ keyv@^4.5.3: dependencies: json-buffer "3.0.1" -kind-of@^6.0.0, kind-of@^6.0.2: +kind-of@^6.0.0, kind-of@^6.0.2, kind-of@^6.0.3: version "6.0.3" resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== From 24758e8b906fc8aa2ef8cc4f14acbc00b7465a4d Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 15 Jul 2026 13:34:21 +0200 Subject: [PATCH 064/134] chore(deps): lock file maintenance (#988) Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- web/yarn.lock | 983 +++++++++++++++++--------------------------------- 1 file changed, 336 insertions(+), 647 deletions(-) diff --git a/web/yarn.lock b/web/yarn.lock index 94de4ee..1f4caf7 100644 --- a/web/yarn.lock +++ b/web/yarn.lock @@ -12,15 +12,15 @@ section-matter "^1.0.0" strip-bom-string "^1.0.0" -"@algolia/abtesting@1.21.0": - version "1.21.0" - resolved "https://registry.yarnpkg.com/@algolia/abtesting/-/abtesting-1.21.0.tgz#a156291a4b3f19516f79dc8c163a8f5a38b5e8ae" - integrity sha512-kGvHfBa9oQCvZh0YXeguSToBD9GNJ+gzUZQ9KPTg+KSsM36obYcsKPoX0NnlJtPflHXu7RkMaIi44xs9meR6Zw== +"@algolia/abtesting@1.21.2": + version "1.21.2" + resolved "https://registry.yarnpkg.com/@algolia/abtesting/-/abtesting-1.21.2.tgz#798e51b0226b6ed303a7d891235606b674a87857" + integrity sha512-uXj0rgk30EpsKvOpuS+R+1XFDrnm56hED1Lz56e8uBkZdKCxw99LS2U8eXBqAHYU8kpkbsnV1GC8velBG070Hg== dependencies: - "@algolia/client-common" "5.55.0" - "@algolia/requester-browser-xhr" "5.55.0" - "@algolia/requester-fetch" "5.55.0" - "@algolia/requester-node-http" "5.55.0" + "@algolia/client-common" "5.55.2" + "@algolia/requester-browser-xhr" "5.55.2" + "@algolia/requester-fetch" "5.55.2" + "@algolia/requester-node-http" "5.55.2" "@algolia/autocomplete-core@1.19.2": version "1.19.2" @@ -31,12 +31,12 @@ "@algolia/autocomplete-shared" "1.19.2" "@algolia/autocomplete-core@^1.19.2": - version "1.19.8" - resolved "https://registry.yarnpkg.com/@algolia/autocomplete-core/-/autocomplete-core-1.19.8.tgz#7c84c771d28643fb00d09026c05013fb97aeea23" - integrity sha512-3YEorYg44niXcm7gkft3nXYItHd44e8tmh4D33CTszPgP0QWkaLEaFywiNyJBo7UL/mqObA/G9RYuU7R8tN1IA== + version "1.19.9" + resolved "https://registry.yarnpkg.com/@algolia/autocomplete-core/-/autocomplete-core-1.19.9.tgz#bbed371e56aeea4a31a3af239f16733e1b8aedca" + integrity sha512-4U2JKLMWlDu0CotYyUkWakDxr8AIav3QtIUXXRpfavYN29aVWfzlwJp9T0rPKEf/dO2QCPAUc0Kq1Tj1GJxo2A== dependencies: - "@algolia/autocomplete-plugin-algolia-insights" "1.19.8" - "@algolia/autocomplete-shared" "1.19.8" + "@algolia/autocomplete-plugin-algolia-insights" "1.19.9" + "@algolia/autocomplete-shared" "1.19.9" "@algolia/autocomplete-plugin-algolia-insights@1.19.2": version "1.19.2" @@ -45,143 +45,143 @@ dependencies: "@algolia/autocomplete-shared" "1.19.2" -"@algolia/autocomplete-plugin-algolia-insights@1.19.8": - version "1.19.8" - resolved "https://registry.yarnpkg.com/@algolia/autocomplete-plugin-algolia-insights/-/autocomplete-plugin-algolia-insights-1.19.8.tgz#f60d21edbe2a42e6d4e2215430733e3f51641471" - integrity sha512-ZvJWO8ZZJDpc1LNM2TTBdmQsZBLMR4rU5iNR2OYvEeFBiaf/0ESnRSSLQbryarJY4SVxtoz6A2ZtDMNM+iQEAA== +"@algolia/autocomplete-plugin-algolia-insights@1.19.9": + version "1.19.9" + resolved "https://registry.yarnpkg.com/@algolia/autocomplete-plugin-algolia-insights/-/autocomplete-plugin-algolia-insights-1.19.9.tgz#f799737d13bf0c4ec8421619c7107fa05c836535" + integrity sha512-6mExC6X7762s2SV3eJy3QOkB8bdMmnUhQ2agvGVDuzwoGyr3PquGSY/0vPQXCfiAiCaXUz1rXn+lwghgSi0l0w== dependencies: - "@algolia/autocomplete-shared" "1.19.8" + "@algolia/autocomplete-shared" "1.19.9" "@algolia/autocomplete-shared@1.19.2": version "1.19.2" resolved "https://registry.yarnpkg.com/@algolia/autocomplete-shared/-/autocomplete-shared-1.19.2.tgz#c0b7b8dc30a5c65b70501640e62b009535e4578f" integrity sha512-jEazxZTVD2nLrC+wYlVHQgpBoBB5KPStrJxLzsIFl6Kqd1AlG9sIAGl39V5tECLpIQzB3Qa2T6ZPJ1ChkwMK/w== -"@algolia/autocomplete-shared@1.19.8": - version "1.19.8" - resolved "https://registry.yarnpkg.com/@algolia/autocomplete-shared/-/autocomplete-shared-1.19.8.tgz#5d723d8bdb448efbb1b0e1c7ff94cc18e5b1dc0e" - integrity sha512-h5hf2t8ejF6vlOgvLaZzQbWs5SyH2z4PAWygNAvvD/2RI29hdQ54ldUGwqVuj9Srs+n8XUKTPUqb7fvhBhQrnQ== +"@algolia/autocomplete-shared@1.19.9": + version "1.19.9" + resolved "https://registry.yarnpkg.com/@algolia/autocomplete-shared/-/autocomplete-shared-1.19.9.tgz#c5b05e23c71027e4e45a301f286593dffdcdfbdf" + integrity sha512-YosP9Uoek6y/Ur1r1qeogk4biMe/hzkyNcgMCciw0//3XpCM7VlYLSHnyt/vOnEOGhCCc0+3v+unEiH6zz+Z1A== -"@algolia/client-abtesting@5.55.0": - version "5.55.0" - resolved "https://registry.yarnpkg.com/@algolia/client-abtesting/-/client-abtesting-5.55.0.tgz#8bcfc18f7796790ec68ece4cc4a5a6b26b80ff1e" - integrity sha512-Zt2GjIm7vsaf7K23tk5JmtcVNc38G9p0C2L2Lrm06miyLE/NL2etHtHInvuLc1DjxTp7Y2nId4X/tzwo372K8Q== +"@algolia/client-abtesting@5.55.2": + version "5.55.2" + resolved "https://registry.yarnpkg.com/@algolia/client-abtesting/-/client-abtesting-5.55.2.tgz#5c7d1632051b05ef155a6ea7e4a9454d5c6d5a08" + integrity sha512-y7Epol8HcjlBxKXHhyhfFPFhm78B3P6x9cCbCyGTdxjsdVCptXCy5hpkZWxjGpnaLHvWsHS4QRF0TiBOLst2xg== dependencies: - "@algolia/client-common" "5.55.0" - "@algolia/requester-browser-xhr" "5.55.0" - "@algolia/requester-fetch" "5.55.0" - "@algolia/requester-node-http" "5.55.0" + "@algolia/client-common" "5.55.2" + "@algolia/requester-browser-xhr" "5.55.2" + "@algolia/requester-fetch" "5.55.2" + "@algolia/requester-node-http" "5.55.2" -"@algolia/client-analytics@5.55.0": - version "5.55.0" - resolved "https://registry.yarnpkg.com/@algolia/client-analytics/-/client-analytics-5.55.0.tgz#895c0460b52d304cf5db2df8d0f78861d9a87dca" - integrity sha512-7BueMuWYg/KBA2EX9zsQ+3OAleEyrJcB+SV5Al/9pLjMQq5mXB/8M5HaUPqZwN812g5kLzj9j43VThlZgWq0hg== +"@algolia/client-analytics@5.55.2": + version "5.55.2" + resolved "https://registry.yarnpkg.com/@algolia/client-analytics/-/client-analytics-5.55.2.tgz#770694ceef05213a2dc1c64bf3cb9c0b33a16b71" + integrity sha512-8Pxj2VVmpM2d+UZufnlTq7T1QIcYPVugLV5XC50PnHsV5uRM9CSoYkg2Y+CwqwRk2La0xK5QsfZ0obIU+9XftQ== dependencies: - "@algolia/client-common" "5.55.0" - "@algolia/requester-browser-xhr" "5.55.0" - "@algolia/requester-fetch" "5.55.0" - "@algolia/requester-node-http" "5.55.0" + "@algolia/client-common" "5.55.2" + "@algolia/requester-browser-xhr" "5.55.2" + "@algolia/requester-fetch" "5.55.2" + "@algolia/requester-node-http" "5.55.2" -"@algolia/client-common@5.55.0": - version "5.55.0" - resolved "https://registry.yarnpkg.com/@algolia/client-common/-/client-common-5.55.0.tgz#5b4e1cea958da4ad0c91bc4d7858ea87998eb5bf" - integrity sha512-pJZIyhvUrs+B7c5Lw0iP5yP/NsqJMda7pKRYbfG4KtfGIVSMcAalZhdqL5UX8Z9DOC4KxO9tKV5RDeVjZU0VfQ== +"@algolia/client-common@5.55.2": + version "5.55.2" + resolved "https://registry.yarnpkg.com/@algolia/client-common/-/client-common-5.55.2.tgz#17347bdd5a118b7966231a73c59cac44d256071c" + integrity sha512-9L4IpIYUqA63a7sw1trnHQGUvwiAjKz67nsgDnal98JGAc7wyposRb0Iag+eiMuyzFFaSHLe2/rGyIo+PafRBA== -"@algolia/client-insights@5.55.0": - version "5.55.0" - resolved "https://registry.yarnpkg.com/@algolia/client-insights/-/client-insights-5.55.0.tgz#20a1c3cd34c44a5b7cf3f5734096b2bcb5fb877d" - integrity sha512-RydkKDhx0GWTYuw0ndTXHGM8hD8hgwftKE65FfnJZb5bPc9CevOqv3qNPUQiviAwkqT9hQNH31uDGeV3yZkgfA== +"@algolia/client-insights@5.55.2": + version "5.55.2" + resolved "https://registry.yarnpkg.com/@algolia/client-insights/-/client-insights-5.55.2.tgz#3e575307d01d2e6ccd7394b7428edd22ec68057c" + integrity sha512-ZBm2ytY5EHFcj+kjNsXxMNO/TGlOHe2fBFXGKHJOM1bk1rAy4o2YI+d9oV/w/jrqx44pvJMJlc8X6vKnCuDgUQ== dependencies: - "@algolia/client-common" "5.55.0" - "@algolia/requester-browser-xhr" "5.55.0" - "@algolia/requester-fetch" "5.55.0" - "@algolia/requester-node-http" "5.55.0" + "@algolia/client-common" "5.55.2" + "@algolia/requester-browser-xhr" "5.55.2" + "@algolia/requester-fetch" "5.55.2" + "@algolia/requester-node-http" "5.55.2" -"@algolia/client-personalization@5.55.0": - version "5.55.0" - resolved "https://registry.yarnpkg.com/@algolia/client-personalization/-/client-personalization-5.55.0.tgz#041ec1f2a43bb24860805d236afb9d06e2220fc1" - integrity sha512-XiS7gdFq/COWiwdWXZ8+RHuewfEo03TkGESk44zU8zTc/Z6R8fm4DNmV52swJKkeB2N9iC7NKpgpM22OOkcgTw== +"@algolia/client-personalization@5.55.2": + version "5.55.2" + resolved "https://registry.yarnpkg.com/@algolia/client-personalization/-/client-personalization-5.55.2.tgz#1c5458095fdfdd2dd0ed8dcd5b94962db2852400" + integrity sha512-3FGVW/jDk7sdYwqa2NKnF/qXWcttc4bvGrwNbvqz3VoWSRv42CNvRk+3Y9QJFIUf1vY50hAuVWUoFKdyc8vaXA== dependencies: - "@algolia/client-common" "5.55.0" - "@algolia/requester-browser-xhr" "5.55.0" - "@algolia/requester-fetch" "5.55.0" - "@algolia/requester-node-http" "5.55.0" + "@algolia/client-common" "5.55.2" + "@algolia/requester-browser-xhr" "5.55.2" + "@algolia/requester-fetch" "5.55.2" + "@algolia/requester-node-http" "5.55.2" -"@algolia/client-query-suggestions@5.55.0": - version "5.55.0" - resolved "https://registry.yarnpkg.com/@algolia/client-query-suggestions/-/client-query-suggestions-5.55.0.tgz#94c57fbf92233f60bdade9a8a53a1976c031cb58" - integrity sha512-LBEJ/q+hn1nJ0aYg5IcWgLNCPjWHTahWmpHNx1qUZMho+9CyWM6LaEnhac45UHjQm/j0m374HP685VrpL133lA== +"@algolia/client-query-suggestions@5.55.2": + version "5.55.2" + resolved "https://registry.yarnpkg.com/@algolia/client-query-suggestions/-/client-query-suggestions-5.55.2.tgz#7bf49bf6f7832943646dcaa1ffc2873e54bb783e" + integrity sha512-JsG8LovDAYul5t8e533tZ3O1uZILxso5zsTtB7ONc5RJ8ACdTxAAC/jaOnsBNYb+x+STP7fzx/Iro55v5DNgoQ== dependencies: - "@algolia/client-common" "5.55.0" - "@algolia/requester-browser-xhr" "5.55.0" - "@algolia/requester-fetch" "5.55.0" - "@algolia/requester-node-http" "5.55.0" + "@algolia/client-common" "5.55.2" + "@algolia/requester-browser-xhr" "5.55.2" + "@algolia/requester-fetch" "5.55.2" + "@algolia/requester-node-http" "5.55.2" -"@algolia/client-search@5.55.0": - version "5.55.0" - resolved "https://registry.yarnpkg.com/@algolia/client-search/-/client-search-5.55.0.tgz#eace5977fa8a6ff3d1170ec387a363184d2165b0" - integrity sha512-2/9jUXKH4IcdU5qxH6cbDH46ZBe46G7xr+MrcHwgEXZcUfdAvUgLSH53MAWuMgxvw0G5yoqiWMifHc62Os0fiQ== +"@algolia/client-search@5.55.2": + version "5.55.2" + resolved "https://registry.yarnpkg.com/@algolia/client-search/-/client-search-5.55.2.tgz#8cd3d994598210e5428ca9a64dd3f17620bfbf08" + integrity sha512-5wDnoIfC75zJ2MSHv5SSzTlRL2z7jQMbqQ5jrzottuq2p3oBObv8pD/JpXWu8pRaimaxNr3/Bs/KZIGVXxJ7hg== dependencies: - "@algolia/client-common" "5.55.0" - "@algolia/requester-browser-xhr" "5.55.0" - "@algolia/requester-fetch" "5.55.0" - "@algolia/requester-node-http" "5.55.0" + "@algolia/client-common" "5.55.2" + "@algolia/requester-browser-xhr" "5.55.2" + "@algolia/requester-fetch" "5.55.2" + "@algolia/requester-node-http" "5.55.2" "@algolia/events@^4.0.1": version "4.0.1" resolved "https://registry.yarnpkg.com/@algolia/events/-/events-4.0.1.tgz#fd39e7477e7bc703d7f893b556f676c032af3950" integrity sha512-FQzvOCgoFXAbf5Y6mYozw2aj5KCJoA3m4heImceldzPSMbdyS4atVjJzXKMsfX3wnZTFYwkkt8/z8UesLHlSBQ== -"@algolia/ingestion@1.55.0": - version "1.55.0" - resolved "https://registry.yarnpkg.com/@algolia/ingestion/-/ingestion-1.55.0.tgz#ad2ba098363d8d3849991f0d5e50a65bd091a193" - integrity sha512-80tKsQgxXWo+jK0v4YGCHqyTEXawhAKYyr3kOdN51ElfRqUFjZNPVhZk6vRiqSqXfvrH85ytacT3cbJR6+qolA== +"@algolia/ingestion@1.55.2": + version "1.55.2" + resolved "https://registry.yarnpkg.com/@algolia/ingestion/-/ingestion-1.55.2.tgz#e247f70c5055569af70e3c676853bad4c422ab6c" + integrity sha512-da+SC6ikpza98W7C5ChsKEQDvZc8PQLQ0sxmQ5yMRsHpdD3iPKnclJA6ViB5Nr5T9qOX+IDswC6AyqY4V3rtug== dependencies: - "@algolia/client-common" "5.55.0" - "@algolia/requester-browser-xhr" "5.55.0" - "@algolia/requester-fetch" "5.55.0" - "@algolia/requester-node-http" "5.55.0" + "@algolia/client-common" "5.55.2" + "@algolia/requester-browser-xhr" "5.55.2" + "@algolia/requester-fetch" "5.55.2" + "@algolia/requester-node-http" "5.55.2" -"@algolia/monitoring@1.55.0": - version "1.55.0" - resolved "https://registry.yarnpkg.com/@algolia/monitoring/-/monitoring-1.55.0.tgz#4a4935c61b11c4e0319569e355c585d4c1ed3262" - integrity sha512-4UjmAL8ywGW4rCfK6Qmgw3wIjbrO2wl2s4Eq56JTiN40L2t0XTv0HZkYAmr6nfeiXO0he/2crvZRX6SATSepag== +"@algolia/monitoring@1.55.2": + version "1.55.2" + resolved "https://registry.yarnpkg.com/@algolia/monitoring/-/monitoring-1.55.2.tgz#56c8b9e5b8e64d5f8fd41a37854eb5559cb798d4" + integrity sha512-Y8kEcPqCiIEeaGv83l9RRA09mfYECqAJHNnOyEtZc9UirI6XBMUyFVss/sSeYUiV/Lf30hkbWcl00V1uXsf86Q== dependencies: - "@algolia/client-common" "5.55.0" - "@algolia/requester-browser-xhr" "5.55.0" - "@algolia/requester-fetch" "5.55.0" - "@algolia/requester-node-http" "5.55.0" + "@algolia/client-common" "5.55.2" + "@algolia/requester-browser-xhr" "5.55.2" + "@algolia/requester-fetch" "5.55.2" + "@algolia/requester-node-http" "5.55.2" -"@algolia/recommend@5.55.0": - version "5.55.0" - resolved "https://registry.yarnpkg.com/@algolia/recommend/-/recommend-5.55.0.tgz#d89fbb2148731dafcb7f458cd334dc18465bb9ed" - integrity sha512-LMpJPtIkfDsHIx5Ga+baNr22ntYbY+e2wT7MSIc/FjAnu9wnBFhx1H/GfhmP/c5/IvbThDX+3ilxPRjSfCI8aA== +"@algolia/recommend@5.55.2": + version "5.55.2" + resolved "https://registry.yarnpkg.com/@algolia/recommend/-/recommend-5.55.2.tgz#9549d2fe261dca9ac94c144131ea980c56a6442b" + integrity sha512-5zmobuCQqFZkx+84Nt+suL7vo6jTh2CfAs2ndDSeTS2QHvnzP8YEEGWtWftjyACI0cK/FuH8urWwCHP+d2j8TA== dependencies: - "@algolia/client-common" "5.55.0" - "@algolia/requester-browser-xhr" "5.55.0" - "@algolia/requester-fetch" "5.55.0" - "@algolia/requester-node-http" "5.55.0" + "@algolia/client-common" "5.55.2" + "@algolia/requester-browser-xhr" "5.55.2" + "@algolia/requester-fetch" "5.55.2" + "@algolia/requester-node-http" "5.55.2" -"@algolia/requester-browser-xhr@5.55.0": - version "5.55.0" - resolved "https://registry.yarnpkg.com/@algolia/requester-browser-xhr/-/requester-browser-xhr-5.55.0.tgz#5b05c8a993b1c8052ec656005a1989515bcdb2ea" - integrity sha512-tDymJ7nFOAoUuecma3usK6o94dp8m4HYFDGh4ByYQXWkv14cpmDn+nWdylmcZO0Qvco107vqDo4+Anksnl8w1Q== +"@algolia/requester-browser-xhr@5.55.2": + version "5.55.2" + resolved "https://registry.yarnpkg.com/@algolia/requester-browser-xhr/-/requester-browser-xhr-5.55.2.tgz#087322fcdfb35fdf8226d2ca966628c49f711d74" + integrity sha512-qnGUUuWG66dRMnr33owLsrYIh9fHVxtU4R2rd3SpneAHuoAUcGbDOWNrj05glVU6M8yOqo9gQ22K8zpz0I8Xpg== dependencies: - "@algolia/client-common" "5.55.0" + "@algolia/client-common" "5.55.2" -"@algolia/requester-fetch@5.55.0": - version "5.55.0" - resolved "https://registry.yarnpkg.com/@algolia/requester-fetch/-/requester-fetch-5.55.0.tgz#4b9aefcc31debd8c58429dab70a95d49b923eeea" - integrity sha512-6IDSB5o5dkDPQ4LdOW0Yuw/qy5MdWlO2xDHgPVZgW4YDjbxvnX5PAiV7/WWZdWyVObScZZnnHpPbiqfYs/zBLg== +"@algolia/requester-fetch@5.55.2": + version "5.55.2" + resolved "https://registry.yarnpkg.com/@algolia/requester-fetch/-/requester-fetch-5.55.2.tgz#a01695738861a80181f231ce7e8fca6f7a6e4072" + integrity sha512-lKZ5uhafMvR7dWCJEyuaeyZitid1I3ICx+k0vGf5x/ktdIQvc7bndCiOPpmIDqUmN26FE3jTehkAzSqee95G2Q== dependencies: - "@algolia/client-common" "5.55.0" + "@algolia/client-common" "5.55.2" -"@algolia/requester-node-http@5.55.0": - version "5.55.0" - resolved "https://registry.yarnpkg.com/@algolia/requester-node-http/-/requester-node-http-5.55.0.tgz#d62bf8a3b4f053e1b0df3f0e409b4aca330ac4fc" - integrity sha512-Yyyne4l//vDSdg4MhYJkaVne+KEPi833eCj3/T/87ernTwrvP6j9biXXZELsN8sLI/f2ndV/vugDIy2jdJQB6g== +"@algolia/requester-node-http@5.55.2": + version "5.55.2" + resolved "https://registry.yarnpkg.com/@algolia/requester-node-http/-/requester-node-http-5.55.2.tgz#5ceae3de5e223366fc5b3e643fcc0542909b87e8" + integrity sha512-Zc90xvKWUvxcNicvvTO9Pr/hT2TAnkixOIzJm/KMj5Ptm2pKjk71ngTsdkbRtJQvhZ2Kr9N1YdIjLrNHB5P2xw== dependencies: - "@algolia/client-common" "5.55.0" + "@algolia/client-common" "5.55.2" "@babel/code-frame@^7.0.0", "@babel/code-frame@^7.29.7": version "7.29.7" @@ -1509,26 +1509,6 @@ "@docsearch/core" "4.6.3" "@docsearch/css" "4.6.3" -"@docusaurus/babel@3.10.1": - version "3.10.1" - resolved "https://registry.yarnpkg.com/@docusaurus/babel/-/babel-3.10.1.tgz#2f714f682117658ba43d308e9b35b6a73a105227" - integrity sha512-DZzFO1K3v/GoEt1fx1DiYHF4en+PuhtQf1AkQJa5zu3CoeKSpr5cpQRUlz3jr0m44wyzmSXu9bVpfir+N4+8bg== - dependencies: - "@babel/core" "^7.25.9" - "@babel/generator" "^7.25.9" - "@babel/plugin-syntax-dynamic-import" "^7.8.3" - "@babel/plugin-transform-runtime" "^7.25.9" - "@babel/preset-env" "^7.25.9" - "@babel/preset-react" "^7.25.9" - "@babel/preset-typescript" "^7.25.9" - "@babel/runtime" "^7.25.9" - "@babel/traverse" "^7.25.9" - "@docusaurus/logger" "3.10.1" - "@docusaurus/utils" "3.10.1" - babel-plugin-dynamic-import-node "^2.3.3" - fs-extra "^11.1.1" - tslib "^2.6.0" - "@docusaurus/babel@3.10.2": version "3.10.2" resolved "https://registry.yarnpkg.com/@docusaurus/babel/-/babel-3.10.2.tgz#4d5f8ac4d16bfe26c06f256687831787edb46e8a" @@ -1549,36 +1529,6 @@ fs-extra "^11.1.1" tslib "^2.6.0" -"@docusaurus/bundler@3.10.1": - version "3.10.1" - resolved "https://registry.yarnpkg.com/@docusaurus/bundler/-/bundler-3.10.1.tgz#82fa5079f3787a67502e25f82d37d05ec5de0cc3" - integrity sha512-HIqQPvbqnnQRe4NsBd1774KRarjXqS6wHsWELtyuSs1gCfvixJO2jUGH/OEBtr1Gvzpw+ze5CjGMvSJ8UE1KUw== - dependencies: - "@babel/core" "^7.25.9" - "@docusaurus/babel" "3.10.1" - "@docusaurus/cssnano-preset" "3.10.1" - "@docusaurus/logger" "3.10.1" - "@docusaurus/types" "3.10.1" - "@docusaurus/utils" "3.10.1" - babel-loader "^9.2.1" - clean-css "^5.3.3" - copy-webpack-plugin "^11.0.0" - css-loader "^6.11.0" - css-minimizer-webpack-plugin "^5.0.1" - cssnano "^6.1.2" - file-loader "^6.2.0" - html-minifier-terser "^7.2.0" - mini-css-extract-plugin "^2.9.2" - null-loader "^4.0.1" - postcss "^8.5.4" - postcss-loader "^7.3.4" - postcss-preset-env "^10.2.1" - terser-webpack-plugin "^5.3.9" - tslib "^2.6.0" - url-loader "^4.1.1" - webpack "^5.95.0" - webpackbar "^7.0.0" - "@docusaurus/bundler@3.10.2": version "3.10.2" resolved "https://registry.yarnpkg.com/@docusaurus/bundler/-/bundler-3.10.2.tgz#323492eb0550b6a7f6e5fa6b9877cdb2c53b1be3" @@ -1609,54 +1559,6 @@ webpack "^5.95.0" webpackbar "^7.0.0" -"@docusaurus/core@3.10.1": - version "3.10.1" - resolved "https://registry.yarnpkg.com/@docusaurus/core/-/core-3.10.1.tgz#3f8bdb97451b4df14f2a3b39ab0186366fbf8fbe" - integrity sha512-3pf2fXXw0eVk8WnC3T4LIigRDupcpvngpKo9Vy7mYyBhuddc0klDUuZAIfzMoK6z05pdlk6EFC/vBSX43+1O5w== - dependencies: - "@docusaurus/babel" "3.10.1" - "@docusaurus/bundler" "3.10.1" - "@docusaurus/logger" "3.10.1" - "@docusaurus/mdx-loader" "3.10.1" - "@docusaurus/utils" "3.10.1" - "@docusaurus/utils-common" "3.10.1" - "@docusaurus/utils-validation" "3.10.1" - boxen "^6.2.1" - chalk "^4.1.2" - chokidar "^3.5.3" - cli-table3 "^0.6.3" - combine-promises "^1.1.0" - commander "^5.1.0" - core-js "^3.31.1" - detect-port "^1.5.1" - escape-html "^1.0.3" - eta "^2.2.0" - eval "^0.1.8" - execa "^5.1.1" - fs-extra "^11.1.1" - html-tags "^3.3.1" - html-webpack-plugin "^5.6.0" - leven "^3.1.0" - lodash "^4.17.21" - open "^8.4.0" - p-map "^4.0.0" - prompts "^2.4.2" - react-helmet-async "npm:@slorber/react-helmet-async@1.3.0" - react-loadable "npm:@docusaurus/react-loadable@6.0.0" - react-loadable-ssr-addon-v5-slorber "^1.0.3" - react-router "^5.3.4" - react-router-config "^5.1.1" - react-router-dom "^5.3.4" - semver "^7.5.4" - serve-handler "^6.1.7" - tinypool "^1.0.2" - tslib "^2.6.0" - update-notifier "^6.0.2" - webpack "^5.95.0" - webpack-bundle-analyzer "^4.10.2" - webpack-dev-server "^5.2.2" - webpack-merge "^6.0.1" - "@docusaurus/core@3.10.2": version "3.10.2" resolved "https://registry.yarnpkg.com/@docusaurus/core/-/core-3.10.2.tgz#349cae728fc3769b3f8aef4cf538ccb79aace8d0" @@ -1705,16 +1607,6 @@ webpack-dev-server "^5.2.2" webpack-merge "^6.0.1" -"@docusaurus/cssnano-preset@3.10.1": - version "3.10.1" - resolved "https://registry.yarnpkg.com/@docusaurus/cssnano-preset/-/cssnano-preset-3.10.1.tgz#4b6bafeca8bb9423364d2fd6683c28e2f85a4665" - integrity sha512-eNfHGcTKCSq6xmcavAkX3RRclHaE2xRCMParlDXLdXVP01/a2e/jKXMj/0ULnLFQSNwwuI62L0Ge8J+nZsR7UQ== - dependencies: - cssnano-preset-advanced "^6.1.2" - postcss "^8.5.4" - postcss-sort-media-queries "^5.2.0" - tslib "^2.6.0" - "@docusaurus/cssnano-preset@3.10.2": version "3.10.2" resolved "https://registry.yarnpkg.com/@docusaurus/cssnano-preset/-/cssnano-preset-3.10.2.tgz#e3ac7e85585f77e8fdef95176ab7c211d1296630" @@ -1725,14 +1617,6 @@ postcss-sort-media-queries "^5.2.0" tslib "^2.6.0" -"@docusaurus/logger@3.10.1": - version "3.10.1" - resolved "https://registry.yarnpkg.com/@docusaurus/logger/-/logger-3.10.1.tgz#34c964e32e18f120e30f80171a38cfefe72cfb4b" - integrity sha512-oPjNFnfJsRCkePVjkGrxWGq4MvJKRQT0r9jOP0eRBTZ7Wr9FAbzdP/Gjs0I2Ss6YRkPoEgygKG112OkE6skvJw== - dependencies: - chalk "^4.1.2" - tslib "^2.6.0" - "@docusaurus/logger@3.10.2": version "3.10.2" resolved "https://registry.yarnpkg.com/@docusaurus/logger/-/logger-3.10.2.tgz#280bed53d0eb9cdc56e896a155036207910e89c9" @@ -1741,36 +1625,6 @@ chalk "^4.1.2" tslib "^2.6.0" -"@docusaurus/mdx-loader@3.10.1": - version "3.10.1" - resolved "https://registry.yarnpkg.com/@docusaurus/mdx-loader/-/mdx-loader-3.10.1.tgz#050ae9bc614158a4ec07a628aa75fa9ae90d7e82" - integrity sha512-GRmeb/wQ+iXRrFwcHBfgQhrJxGElgCsoTWZYDhccjsZVne1p8MK/EpQVIloXttz76TCe78kKD5AEG9n1xc1oxQ== - dependencies: - "@docusaurus/logger" "3.10.1" - "@docusaurus/utils" "3.10.1" - "@docusaurus/utils-validation" "3.10.1" - "@mdx-js/mdx" "^3.0.0" - "@slorber/remark-comment" "^1.0.0" - escape-html "^1.0.3" - estree-util-value-to-estree "^3.0.1" - file-loader "^6.2.0" - fs-extra "^11.1.1" - image-size "^2.0.2" - mdast-util-mdx "^3.0.0" - mdast-util-to-string "^4.0.0" - rehype-raw "^7.0.0" - remark-directive "^3.0.0" - remark-emoji "^4.0.0" - remark-frontmatter "^5.0.0" - remark-gfm "^4.0.0" - stringify-object "^3.3.0" - tslib "^2.6.0" - unified "^11.0.3" - unist-util-visit "^5.0.0" - url-loader "^4.1.1" - vfile "^6.0.1" - webpack "^5.88.1" - "@docusaurus/mdx-loader@3.10.2": version "3.10.2" resolved "https://registry.yarnpkg.com/@docusaurus/mdx-loader/-/mdx-loader-3.10.2.tgz#3b4e7ffacff4ed856db2ec4e94c13b0a652d62eb" @@ -1801,19 +1655,6 @@ vfile "^6.0.1" webpack "^5.88.1" -"@docusaurus/module-type-aliases@3.10.1": - version "3.10.1" - resolved "https://registry.yarnpkg.com/@docusaurus/module-type-aliases/-/module-type-aliases-3.10.1.tgz#22d39177c296786eb6e0d940699cd590cc93ca77" - integrity sha512-YoOZKUdGlp8xSYhuAkGdSo5Ydkbq4V4eK3sD8v0a2hloxCWdQbNBhkc+Ko9QyjpESc0BYcIGM5iHVAy5hdFV6w== - dependencies: - "@docusaurus/types" "3.10.1" - "@types/history" "^4.7.11" - "@types/react" "*" - "@types/react-router-config" "*" - "@types/react-router-dom" "*" - react-helmet-async "npm:@slorber/react-helmet-async@1.3.0" - react-loadable "npm:@docusaurus/react-loadable@6.0.0" - "@docusaurus/module-type-aliases@3.10.2": version "3.10.2" resolved "https://registry.yarnpkg.com/@docusaurus/module-type-aliases/-/module-type-aliases-3.10.2.tgz#7c3b940c77d72e71d33a1e76f0e003b418e6163a" @@ -1852,7 +1693,7 @@ utility-types "^3.10.0" webpack "^5.88.1" -"@docusaurus/plugin-content-docs@3.10.2": +"@docusaurus/plugin-content-docs@3.10.2", "@docusaurus/plugin-content-docs@^2 || ^3": version "3.10.2" resolved "https://registry.yarnpkg.com/@docusaurus/plugin-content-docs/-/plugin-content-docs-3.10.2.tgz#249bbc806437f227b06410ecc771eb67d8910a9a" integrity sha512-Sqwl4FPoZBDrlY8I2VU2H8O0M91CHp9T8ToMSkTZmjvHCif+1laqfXi6sTk8IfyVS/trN5yNjcWd1bFsGB6W5Q== @@ -1876,30 +1717,6 @@ utility-types "^3.10.0" webpack "^5.88.1" -"@docusaurus/plugin-content-docs@^2 || ^3": - version "3.10.1" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-content-docs/-/plugin-content-docs-3.10.1.tgz#261e0e982e4a937c05b462e3c5729374f433b752" - integrity sha512-2jRVrtzjf8LClGTHQlwlwuD3wQXRx3WEoF7XUarJ8Ou+0onV+SLtejsyfY9JLpfUh9hPhXM4pbBGkyAY4Bi3HQ== - dependencies: - "@docusaurus/core" "3.10.1" - "@docusaurus/logger" "3.10.1" - "@docusaurus/mdx-loader" "3.10.1" - "@docusaurus/module-type-aliases" "3.10.1" - "@docusaurus/theme-common" "3.10.1" - "@docusaurus/types" "3.10.1" - "@docusaurus/utils" "3.10.1" - "@docusaurus/utils-common" "3.10.1" - "@docusaurus/utils-validation" "3.10.1" - "@types/react-router-config" "^5.0.7" - combine-promises "^1.1.0" - fs-extra "^11.1.1" - js-yaml "^4.1.0" - lodash "^4.17.21" - schema-dts "^1.1.2" - tslib "^2.6.0" - utility-types "^3.10.0" - webpack "^5.88.1" - "@docusaurus/plugin-content-pages@3.10.2": version "3.10.2" resolved "https://registry.yarnpkg.com/@docusaurus/plugin-content-pages/-/plugin-content-pages-3.10.2.tgz#377c11b36a6a5e0c0c14dd9dea799f986d662ed7" @@ -2049,24 +1866,6 @@ tslib "^2.6.0" utility-types "^3.10.0" -"@docusaurus/theme-common@3.10.1": - version "3.10.1" - resolved "https://registry.yarnpkg.com/@docusaurus/theme-common/-/theme-common-3.10.1.tgz#cbfec82b1b107be5c229811ed9caae14a501361c" - integrity sha512-0YtmIeoNo1fIw65LO8+/1dPgmDV86UmhMkow37gzjytuiCSQm9xob6PJy0L4kuQEMTLfUOGvkXvZr7GPrHquMA== - dependencies: - "@docusaurus/mdx-loader" "3.10.1" - "@docusaurus/module-type-aliases" "3.10.1" - "@docusaurus/utils" "3.10.1" - "@docusaurus/utils-common" "3.10.1" - "@types/history" "^4.7.11" - "@types/react" "*" - "@types/react-router-config" "*" - clsx "^2.0.0" - parse-numeric-range "^1.3.0" - prism-react-renderer "^2.3.0" - tslib "^2.6.0" - utility-types "^3.10.0" - "@docusaurus/theme-common@3.10.2": version "3.10.2" resolved "https://registry.yarnpkg.com/@docusaurus/theme-common/-/theme-common-3.10.2.tgz#5cf2a8b76554b8b38c6afe8448470c411f683e5b" @@ -2108,7 +1907,7 @@ tslib "^2.6.0" utility-types "^3.10.0" -"@docusaurus/theme-translations@3.10.2": +"@docusaurus/theme-translations@3.10.2", "@docusaurus/theme-translations@^2 || ^3": version "3.10.2" resolved "https://registry.yarnpkg.com/@docusaurus/theme-translations/-/theme-translations-3.10.2.tgz#cd649083babd12df324e7129008aaccacd4cfb13" integrity sha512-iv20wrxnyXkY89LM3TzRlzGlt5fIGO5UnaR6UL1ZVfB9RRFjxQFQ6awDrwAc6Km8Y5gD8pInuwYPF+6/TiCxXA== @@ -2116,35 +1915,11 @@ fs-extra "^11.1.1" tslib "^2.6.0" -"@docusaurus/theme-translations@^2 || ^3": - version "3.10.1" - resolved "https://registry.yarnpkg.com/@docusaurus/theme-translations/-/theme-translations-3.10.1.tgz#c3119a015652290eea560ca45ac775963d6eb75b" - integrity sha512-cLMyaKivjBVWKMJuWqyFVVgtqe8DPJNPkog0bn8W1MDVAKcPdxRFycBfC1We1RaNp7Rdk513bmtW78RR6OBxBw== - dependencies: - fs-extra "^11.1.1" - tslib "^2.6.0" - "@docusaurus/tsconfig@3.10.2": version "3.10.2" resolved "https://registry.yarnpkg.com/@docusaurus/tsconfig/-/tsconfig-3.10.2.tgz#0ad085ebf2900391632e2d56635d94c4283efffb" integrity sha512-5GiB7h/nFsMFPO9mCqcRNE1yA5TSXXNCshNIgHPL6fCPOjcTDixs6qjQBu8ddkgPcicwCvOA7n3jeK2rGdJk6g== -"@docusaurus/types@3.10.1": - version "3.10.1" - resolved "https://registry.yarnpkg.com/@docusaurus/types/-/types-3.10.1.tgz#d42837938ae43ca2be0ca47e63e00476b5eb94be" - integrity sha512-XYMK8k1szDCFMw2V+Xyen0g7Kee1sP3dtFnl7vkGkZOkeAJ/oPDQPL8iz4HBKOo/cwU8QeV6onVjMqtP+tFzsw== - dependencies: - "@mdx-js/mdx" "^3.0.0" - "@types/history" "^4.7.11" - "@types/mdast" "^4.0.2" - "@types/react" "*" - commander "^5.1.0" - joi "^17.9.2" - react-helmet-async "npm:@slorber/react-helmet-async@1.3.0" - utility-types "^3.10.0" - webpack "^5.95.0" - webpack-merge "^5.9.0" - "@docusaurus/types@3.10.2": version "3.10.2" resolved "https://registry.yarnpkg.com/@docusaurus/types/-/types-3.10.2.tgz#9ffe35adfb4587e49158ee9e10d94b86419a5932" @@ -2161,15 +1936,7 @@ webpack "^5.95.0" webpack-merge "^5.9.0" -"@docusaurus/utils-common@3.10.1", "@docusaurus/utils-common@^2 || ^3": - version "3.10.1" - resolved "https://registry.yarnpkg.com/@docusaurus/utils-common/-/utils-common-3.10.1.tgz#6350b4898691e765de750f90eade0e0fa7902d99" - integrity sha512-5mFSgEADtnFxFH7RLw02QA5MpU5JVUCj0MPeIvi/aF4Fi45tQRIuTwXoXDqJ+1VfQJuYJGz3SI63wmGz4HvXzA== - dependencies: - "@docusaurus/types" "3.10.1" - tslib "^2.6.0" - -"@docusaurus/utils-common@3.10.2": +"@docusaurus/utils-common@3.10.2", "@docusaurus/utils-common@^2 || ^3": version "3.10.2" resolved "https://registry.yarnpkg.com/@docusaurus/utils-common/-/utils-common-3.10.2.tgz#a65fcfffafa4e15a59fe61d7ba315ee5d4c49269" integrity sha512-x3Dz6jv6iQKBNjBmVTu8p57abMp/VNTUgKBMgRVXJc5444orBTsArv0+cdfrXTiz/VMmHfDRVkPbL7GH2B7T7w== @@ -2177,21 +1944,7 @@ "@docusaurus/types" "3.10.2" tslib "^2.6.0" -"@docusaurus/utils-validation@3.10.1", "@docusaurus/utils-validation@^2 || ^3": - version "3.10.1" - resolved "https://registry.yarnpkg.com/@docusaurus/utils-validation/-/utils-validation-3.10.1.tgz#ddbcce997a5506424cdd16abf6845cc51692acae" - integrity sha512-cRv1X69jwaWv47waglllgZVWzeBFLhl53XT/XED/83BerVBTC5FTP8WTcVl8Z6sZOegDSwitu/wpCSPCDOT6lg== - dependencies: - "@docusaurus/logger" "3.10.1" - "@docusaurus/utils" "3.10.1" - "@docusaurus/utils-common" "3.10.1" - fs-extra "^11.2.0" - joi "^17.9.2" - js-yaml "^4.1.0" - lodash "^4.17.21" - tslib "^2.6.0" - -"@docusaurus/utils-validation@3.10.2": +"@docusaurus/utils-validation@3.10.2", "@docusaurus/utils-validation@^2 || ^3": version "3.10.2" resolved "https://registry.yarnpkg.com/@docusaurus/utils-validation/-/utils-validation-3.10.2.tgz#2624b0ca6675675da2f063828115b43c9a22de47" integrity sha512-sn8unbDfUL585NtR3cwHefPicOyaHvPaX7VD0aOg/siIxUBoKyKKaGEqzJZDS64mM43TnxurkYDtmB1wsJlZsw== @@ -2205,34 +1958,7 @@ lodash "^4.17.21" tslib "^2.6.0" -"@docusaurus/utils@3.10.1", "@docusaurus/utils@^2 || ^3": - version "3.10.1" - resolved "https://registry.yarnpkg.com/@docusaurus/utils/-/utils-3.10.1.tgz#535968caa2c9bff69f997a081b98b95b3c5d3785" - integrity sha512-3ojeJry9xBYdJO6qoyyzqeJFSJBVx2mXhyDzSdjwL2+URFQMf+h25gG38iswGImicK0ELjTd1EL2xzk8hf3QPw== - dependencies: - "@docusaurus/logger" "3.10.1" - "@docusaurus/types" "3.10.1" - "@docusaurus/utils-common" "3.10.1" - escape-string-regexp "^4.0.0" - execa "^5.1.1" - file-loader "^6.2.0" - fs-extra "^11.1.1" - github-slugger "^1.5.0" - globby "^11.1.0" - gray-matter "^4.0.3" - jiti "^1.20.0" - js-yaml "^4.1.0" - lodash "^4.17.21" - micromatch "^4.0.5" - p-queue "^6.6.2" - prompts "^2.4.2" - resolve-pathname "^3.0.0" - tslib "^2.6.0" - url-loader "^4.1.1" - utility-types "^3.10.0" - webpack "^5.88.1" - -"@docusaurus/utils@3.10.2": +"@docusaurus/utils@3.10.2", "@docusaurus/utils@^2 || ^3": version "3.10.2" resolved "https://registry.yarnpkg.com/@docusaurus/utils/-/utils-3.10.2.tgz#d99c1ffc5c7961e912344269a8728ce2aad8b3dc" integrity sha512-xx0W3eav2uW1NRIpuHJWNwLTC15xPNjU4Uxi9NSnd3swYC96BE3vFiT93SD8s24kmAAWNwgZwfZ2fghGZ01Lcw== @@ -2291,17 +2017,17 @@ tslib "^2.4.0" "@emnapi/core@^1.4.3": - version "1.11.1" - resolved "https://registry.yarnpkg.com/@emnapi/core/-/core-1.11.1.tgz#b9e1064f3a6b1631e241e638eb48d736bfd372a6" - integrity sha512-RSvbQmHzdKzNsLYa/wHrbc3KN4sYLKAdPZxqiM2HATqv/SBk2/ENSHpvXGaLOMcsAyz0poEGqkmmKYG3OWiJEQ== + version "1.11.2" + resolved "https://registry.yarnpkg.com/@emnapi/core/-/core-1.11.2.tgz#fab0a0f3c492d11f5a9ac9065d0d73955ee1c1c9" + integrity sha512-TC8MkTuZUtcTSiFeuC0ksCh9QIJ5+F21MvZ4Wn4ORfYaFJ/0dsiudv5tVkejgwZlwQ39jL9WWDe2lz8x0WglOA== dependencies: "@emnapi/wasi-threads" "1.2.2" tslib "^2.4.0" "@emnapi/runtime@^1.4.3": - version "1.11.1" - resolved "https://registry.yarnpkg.com/@emnapi/runtime/-/runtime-1.11.1.tgz#58f1f3d5d81a9b12f793ab688c96371901027c24" - integrity sha512-vgj7R3y3Wgx24IQaGPA/R6YFXLHVMOZ0uVEyIQPaWs+rd1AzfEMXlAC22FYwO1XkKR6NPsq7mUandH8oIRdZFw== + version "1.11.2" + resolved "https://registry.yarnpkg.com/@emnapi/runtime/-/runtime-1.11.2.tgz#eb22f04d76febfdf4f87fdaff54c8a53f6bf0dbd" + integrity sha512-kyOl3X0DuTiT1h2ft8r2fYO8JYtU9a9Xis/zBSiGArNaagCOWx90N1k2wxp18czFDH+OgcWGb5ZP/XMt3dcyPA== dependencies: tslib "^2.4.0" @@ -2415,74 +2141,75 @@ resolved "https://registry.yarnpkg.com/@jsonjoy.com/codegen/-/codegen-1.0.0.tgz#5c23f796c47675f166d23b948cdb889184b93207" integrity sha512-E8Oy+08cmCf0EK/NMxpaJZmOxPqM+6iSe2S4nlSBrPZOORoDJILxtbSUEDKQyTamm/BVAhIGllOBNU79/dwf0g== -"@jsonjoy.com/fs-core@4.57.8": - version "4.57.8" - resolved "https://registry.yarnpkg.com/@jsonjoy.com/fs-core/-/fs-core-4.57.8.tgz#3e399ca856968194b0be73aa4b6fc943bf313bb8" - integrity sha512-YzVbwggV9452VCeHgo0bjsTaUt1O7JE0XpEsPar93nn/+RAwXk0mb1Y+f5EDJ3TRtRCFe+Ck5RuojdfB4jeHVw== +"@jsonjoy.com/fs-core@4.64.0": + version "4.64.0" + resolved "https://registry.yarnpkg.com/@jsonjoy.com/fs-core/-/fs-core-4.64.0.tgz#82378ecedc5cbd8558fcc0a8e3c6b254db070fc8" + integrity sha512-zs2TAq7Six5jgMuoMNjpspAvOP3mhtgq/k1UyQodEzCtQi/N83y2/y+zcvnZSGp/Rxq96DBN+bValOBQAyn/ew== dependencies: - "@jsonjoy.com/fs-node-builtins" "4.57.8" - "@jsonjoy.com/fs-node-utils" "4.57.8" + "@jsonjoy.com/fs-node-builtins" "4.64.0" + "@jsonjoy.com/fs-node-utils" "4.64.0" thingies "^2.5.0" -"@jsonjoy.com/fs-fsa@4.57.8": - version "4.57.8" - resolved "https://registry.yarnpkg.com/@jsonjoy.com/fs-fsa/-/fs-fsa-4.57.8.tgz#26a1688ff5c8d1189d32e76bfe2364e0763b6737" - integrity sha512-vmClyvCQMxgqz7uamDiGtRfp4MjzOznk3pcQjCxlIwJcw7TWeyr+bF30hI0x8NxdtNOGMg1pHM74VDIXOeyjuw== +"@jsonjoy.com/fs-fsa@4.64.0": + version "4.64.0" + resolved "https://registry.yarnpkg.com/@jsonjoy.com/fs-fsa/-/fs-fsa-4.64.0.tgz#3cb0af64a33f075300ef63be97af89bb7849e6bd" + integrity sha512-nMWOVbkLFyEgmXZih3wyvxA9XpgyyqyfrINMHvEFqhi7uqfRl7c9ERJt6yX7vgMPrB9Uo+OJO+Spa0cFzPD01w== dependencies: - "@jsonjoy.com/fs-core" "4.57.8" - "@jsonjoy.com/fs-node-builtins" "4.57.8" - "@jsonjoy.com/fs-node-utils" "4.57.8" + "@jsonjoy.com/fs-core" "4.64.0" + "@jsonjoy.com/fs-node-builtins" "4.64.0" + "@jsonjoy.com/fs-node-utils" "4.64.0" thingies "^2.5.0" -"@jsonjoy.com/fs-node-builtins@4.57.8": - version "4.57.8" - resolved "https://registry.yarnpkg.com/@jsonjoy.com/fs-node-builtins/-/fs-node-builtins-4.57.8.tgz#ba350bf262571e38d3c195f5346eddec07c1d053" - integrity sha512-mxXSXw8zZwRVakcjLqR2I/psy4gURFSASZS10kKJ2kJw05GC2nXGroGrWVHxwgkxXgQLsFQnB74QaLzsxzdL/w== +"@jsonjoy.com/fs-node-builtins@4.64.0": + version "4.64.0" + resolved "https://registry.yarnpkg.com/@jsonjoy.com/fs-node-builtins/-/fs-node-builtins-4.64.0.tgz#84371474b2a06d209ae9f0b2b06fc570b00fb612" + integrity sha512-/o7WRFhUWaM/fOrslwLZGnzn4RmRILykn+lAL+mNObqqRNw+CQSiij6hpCeZ+C7buhdoVo7go/OYqzaSUfDYmA== -"@jsonjoy.com/fs-node-to-fsa@4.57.8": - version "4.57.8" - resolved "https://registry.yarnpkg.com/@jsonjoy.com/fs-node-to-fsa/-/fs-node-to-fsa-4.57.8.tgz#4372e75e7a6a76b4d8ac91dc2d93edfa8587599f" - integrity sha512-AWZcT/4+H+iDl4XCukbXrarvwEgOrf/prFI5/7eg4ix9FxqVsZysIDJd1Kjd+AjlCeHKHJOaRqjLd5HiGSCJEw== +"@jsonjoy.com/fs-node-to-fsa@4.64.0": + version "4.64.0" + resolved "https://registry.yarnpkg.com/@jsonjoy.com/fs-node-to-fsa/-/fs-node-to-fsa-4.64.0.tgz#fbb3026befa07d690f1523c0c166f0d447fa555e" + integrity sha512-WDD9WVs0hb7UAEKTgZW2f66WDrbj7gIIWwpP3spbLyXa0rghtUaFTB8L4gdR3ZCWwiKIsj38/CNijpVmpnuPUw== dependencies: - "@jsonjoy.com/fs-fsa" "4.57.8" - "@jsonjoy.com/fs-node-builtins" "4.57.8" - "@jsonjoy.com/fs-node-utils" "4.57.8" + "@jsonjoy.com/fs-fsa" "4.64.0" + "@jsonjoy.com/fs-node-builtins" "4.64.0" + "@jsonjoy.com/fs-node-utils" "4.64.0" -"@jsonjoy.com/fs-node-utils@4.57.8": - version "4.57.8" - resolved "https://registry.yarnpkg.com/@jsonjoy.com/fs-node-utils/-/fs-node-utils-4.57.8.tgz#a1a15d587fff235b616d5ea775e0f9a88f387a56" - integrity sha512-E/bJ7sQAb4pu9nbeJhbULU3WnqWrswte4N9Js/oHt7aHB746S8/XBqKlcbrqIgnD3095XluovNEZuu5ONT230g== +"@jsonjoy.com/fs-node-utils@4.64.0": + version "4.64.0" + resolved "https://registry.yarnpkg.com/@jsonjoy.com/fs-node-utils/-/fs-node-utils-4.64.0.tgz#5803eee4abd6871644a35ea35ad63a6b7f159892" + integrity sha512-k5Indsx9hWW9xSF7Y6oSKKwtCUNhzZxadub3owhIlitc+iMRVlPPdX2duTKQWBL3qNWpXya8jykgaaWpheeS4w== dependencies: - "@jsonjoy.com/fs-node-builtins" "4.57.8" + "@jsonjoy.com/fs-node-builtins" "4.64.0" + glob-to-regex.js "^1.0.1" -"@jsonjoy.com/fs-node@4.57.8": - version "4.57.8" - resolved "https://registry.yarnpkg.com/@jsonjoy.com/fs-node/-/fs-node-4.57.8.tgz#d16b418d2179f7092f9fe5daeb18d31a5835a19b" - integrity sha512-IPEOlDYSnTDYpjQlQg2F8h+eqxKQN3sdbroI0WrteRiQZ462HzVpBo9ZZX485njz4nAacoe3fd4iDiIhk+k5Hg== +"@jsonjoy.com/fs-node@4.64.0": + version "4.64.0" + resolved "https://registry.yarnpkg.com/@jsonjoy.com/fs-node/-/fs-node-4.64.0.tgz#e8c9c4346b38cc116ca0e9fb34b10419bcfc1916" + integrity sha512-dO+NNkODbUli4uV42bcNrrLvq5rE7SNpdZ5TNd0dtbLsAaNK3MDiIC9lUi+brboGoIjW6vd2fB1qao60nrk5xA== dependencies: - "@jsonjoy.com/fs-core" "4.57.8" - "@jsonjoy.com/fs-node-builtins" "4.57.8" - "@jsonjoy.com/fs-node-utils" "4.57.8" - "@jsonjoy.com/fs-print" "4.57.8" - "@jsonjoy.com/fs-snapshot" "4.57.8" + "@jsonjoy.com/fs-core" "4.64.0" + "@jsonjoy.com/fs-node-builtins" "4.64.0" + "@jsonjoy.com/fs-node-utils" "4.64.0" + "@jsonjoy.com/fs-print" "4.64.0" + "@jsonjoy.com/fs-snapshot" "4.64.0" glob-to-regex.js "^1.0.0" thingies "^2.5.0" -"@jsonjoy.com/fs-print@4.57.8": - version "4.57.8" - resolved "https://registry.yarnpkg.com/@jsonjoy.com/fs-print/-/fs-print-4.57.8.tgz#5ff6b2e0dd3f85aa7563f66cd36b4de1f0ce89a3" - integrity sha512-DfzhOBpmvNu5P/KSe4NNQaOnvNliTdcf0qrh/4EReErF/XUQXYkd0vZl/OiJCm/qjEEo8DWRstliw2/JNS84dA== +"@jsonjoy.com/fs-print@4.64.0": + version "4.64.0" + resolved "https://registry.yarnpkg.com/@jsonjoy.com/fs-print/-/fs-print-4.64.0.tgz#375085d90b50c85754667671f58d13a63da4330d" + integrity sha512-PHZFccchvkhWrwPWHjmVAhbC3vSHCtyZvlZfJJ3ho2bnzl450hXri6/8e6pbkWdH+SkmLXNml0sV8e5HDAfxKw== dependencies: - "@jsonjoy.com/fs-node-utils" "4.57.8" + "@jsonjoy.com/fs-node-utils" "4.64.0" tree-dump "^1.1.0" -"@jsonjoy.com/fs-snapshot@4.57.8": - version "4.57.8" - resolved "https://registry.yarnpkg.com/@jsonjoy.com/fs-snapshot/-/fs-snapshot-4.57.8.tgz#65b317f7698816c7196dbebc73e9d43e06f143be" - integrity sha512-L+eqKaWOHLDaiMv1dh/EWQ4hA+o6xAhWSumTo3Teg7OM18jU/KE13/e8Mfal+eAZ/pSl4wIhKHcDiwapJzC8Wg== +"@jsonjoy.com/fs-snapshot@4.64.0": + version "4.64.0" + resolved "https://registry.yarnpkg.com/@jsonjoy.com/fs-snapshot/-/fs-snapshot-4.64.0.tgz#99a76af8664595875def5b20ed1cf159adc5f098" + integrity sha512-oM7UDeL83q6NBzzsfKAsYKXKVXlykKFqqOLh4xZZKAzzROTlInkPbc6LTDGThEOnPiFiUzA7tYziHG9xavd76Q== dependencies: "@jsonjoy.com/buffers" "^17.65.0" - "@jsonjoy.com/fs-node-utils" "4.57.8" + "@jsonjoy.com/fs-node-utils" "4.64.0" "@jsonjoy.com/json-pack" "^17.65.0" "@jsonjoy.com/util" "^17.65.0" @@ -3026,9 +2753,9 @@ defer-to-connect "^2.0.1" "@tybys/wasm-util@^0.10.0": - version "0.10.2" - resolved "https://registry.yarnpkg.com/@tybys/wasm-util/-/wasm-util-0.10.2.tgz#12b3a1b33db1f9cad4ddff1f604ab7dd00bf464e" - integrity sha512-RoBvJ2X0wuKlWFIjrwffGw1IqZHKQqzIchKaadZZfnNpsAYp2mM0h36JtPCjNDAHGgYez/15uMBpfGwchhiMgg== + version "0.10.3" + resolved "https://registry.yarnpkg.com/@tybys/wasm-util/-/wasm-util-0.10.3.tgz#015cba9e9dd47ce14d03d2a8c5d547bfb169665d" + integrity sha512-F3fo1MYrRJYL3zER0OUOmkutjr1Vp23m7OsSgp7nq4SP6OqX6C/56XFIPAl5bt3zaBRjmW7SGz3u/6LwFpYcOg== dependencies: tslib "^2.4.0" @@ -3082,9 +2809,9 @@ integrity sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg== "@types/express-serve-static-core@*", "@types/express-serve-static-core@^5.0.0": - version "5.1.1" - resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-5.1.1.tgz#1a77faffee9572d39124933259be2523837d7eaa" - integrity sha512-v4zIMr/cX7/d2BpAEX3KNKL/JrT1s43s96lLvvdTmza1oEvDudCqK9aF/djc/SWgy8Yh0h30TZx5VpzqFCxk5A== + version "5.1.2" + resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-5.1.2.tgz#19afe821c79f18d05946892bbd5b924b96c8a4f6" + integrity sha512-d3KvEXBSo/lOAMc2u6fkyDHBvetBHeqD7wm/AcXfLpSOQwlmG9D/aQ0SFswVjv05p7ullQS7Mjohj6/VdbZuTg== dependencies: "@types/node" "*" "@types/qs" "*" @@ -3092,9 +2819,9 @@ "@types/send" "*" "@types/express-serve-static-core@^4.17.21", "@types/express-serve-static-core@^4.17.33": - version "4.19.8" - resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.19.8.tgz#99b960322a4d576b239a640ab52ef191989b036f" - integrity sha512-02S5fmqeoKzVZCHPZid4b8JH2eM5HzQLZWN2FohQEy/0eXTq8VXZfSN6Pcr3F6N9R/vNrj7cpgbhjie6m/1tCA== + version "4.19.9" + resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.19.9.tgz#b746a8bb6c389af7a31141397bb539f775b0ae84" + integrity sha512-QP2ESEe/ImWY0HDwNAnK9PvEffUyhLTnWkk7KXzHfyeWAnlrDe1fN77bXl6ia8KT3wPlmA7t9/VPRpnf4Ex9sg== dependencies: "@types/node" "*" "@types/qs" "*" @@ -3121,9 +2848,9 @@ "@types/serve-static" "^1" "@types/hast@^3.0.0": - version "3.0.4" - resolved "https://registry.yarnpkg.com/@types/hast/-/hast-3.0.4.tgz#1d6b39993b82cea6ad783945b0508c25903e15aa" - integrity sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ== + version "3.0.5" + resolved "https://registry.yarnpkg.com/@types/hast/-/hast-3.0.5.tgz#48020de4c0e63492f4ca9db42068c108f68b7f8f" + integrity sha512-rp/ezSWaD1m44dPKICGhiskI13nVr7qTloFwDa/IYkhhf5nzwP+zIQcIJh3WIFSBOy/H1PzB40jPjMDksN4F+g== dependencies: "@types/unist" "*" @@ -3201,9 +2928,9 @@ integrity sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA== "@types/node@*": - version "26.0.0" - resolved "https://registry.yarnpkg.com/@types/node/-/node-26.0.0.tgz#d4aece9e9412e9f2008d59bc2d74f5279316b665" - integrity sha512-vf2YFi1iY9lHGwNJMs01biZFbKJkrZR1T6/MlzjhJLPdntOHLhTrDSnSVcdtvjihi4VQNlrFRIxLsDBlQpAipA== + version "26.1.1" + resolved "https://registry.yarnpkg.com/@types/node/-/node-26.1.1.tgz#bad758d601e97d6cf457d204ee76a35fce7bd119" + integrity sha512-nxAkRSVkN1Y0JC1W8ky/fTfkGsMmcrRsbx+3XoZE+rMOX71kLYTV7fLXpqud1GpbpP5TuffXFqfX7fH2GgZREw== dependencies: undici-types "~8.3.0" @@ -3348,9 +3075,9 @@ "@types/yargs-parser" "*" "@ungap/structured-clone@^1.0.0": - version "1.3.1" - resolved "https://registry.yarnpkg.com/@ungap/structured-clone/-/structured-clone-1.3.1.tgz#0e8f34854df7966b09304a18e808b23997bb9fc1" - integrity sha512-mUFwbeTqrVgDQxFveS+df2yfap6iuP20NAKAsBt5jDEoOTDew+zwLAOilHCeQJOVSvmgCX4ogqIrA0mnyr08yQ== + version "1.3.3" + resolved "https://registry.yarnpkg.com/@ungap/structured-clone/-/structured-clone-1.3.3.tgz#094041e1a4cb1987f038335421281ac8be390bcc" + integrity sha512-60YRaenCQcVjYEKOcG824+DRGGIQ3VKErcBoAEDJZz5bKIs2ZG+X/H9Nk+Q6EVkwJk5QNApxbrc5QtBSwtrXAg== "@webassemblyjs/ast@1.14.1", "@webassemblyjs/ast@^1.14.1": version "1.14.1" @@ -3513,11 +3240,6 @@ acorn@^8.0.0, acorn@^8.0.4, acorn@^8.11.0, acorn@^8.15.0, acorn@^8.16.0: resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.17.0.tgz#1785adb84faf8d8add10369b93826fc2bd08f1fe" integrity sha512-xRQbDb9BnwDafYNn6Vwl839DYVjqXYb1XVGtWAZ1kcDc6iwAL4hg3B1dZlRiuENFeO2H53gFG3in621AdERVAg== -address@^1.0.1: - version "1.2.2" - resolved "https://registry.yarnpkg.com/address/-/address-1.2.2.tgz#2b5248dac5485a6390532c6a517fda2e3faac89e" - integrity sha512-4B/qKCfeE/ODUaAUpSwfzazo5x29WD4r3vXiWsB7I2mSDAihwEqKO+g8GELZUQSSAo5e1XTYh3ZVfLyxBc12nA== - address@^2.0.1: version "2.0.3" resolved "https://registry.yarnpkg.com/address/-/address-2.0.3.tgz#e910900615db3d8a20c040d4c710631062fc4ba8" @@ -3571,31 +3293,31 @@ ajv@^8.0.0, ajv@^8.9.0: require-from-string "^2.0.2" algoliasearch-helper@^3.26.0: - version "3.29.1" - resolved "https://registry.yarnpkg.com/algoliasearch-helper/-/algoliasearch-helper-3.29.1.tgz#4e764351493d461aa825d2a1209403a98e9b2477" - integrity sha512-6ck2YFudF2Pje7szQoPBiRFTGfd+1I+0I/WfLPGn0bj1kvrFoOQmNyedNiDxTk3/r4IfSLDYk+RA4G7u8H6+yA== + version "3.29.2" + resolved "https://registry.yarnpkg.com/algoliasearch-helper/-/algoliasearch-helper-3.29.2.tgz#ceb699ae6ec9bb088f8a2b781b66868222e9c23a" + integrity sha512-SaV+rZM3drExb0punEYYjT+sNcH74YFwN8ocjya7IDOyQvKWeQpEaSMVG3+IGTVos+feuatj7ljQ4BXlXdUp3w== dependencies: "@algolia/events" "^4.0.1" algoliasearch@^5.37.0: - version "5.55.0" - resolved "https://registry.yarnpkg.com/algoliasearch/-/algoliasearch-5.55.0.tgz#ed56f8f10ad42e056761b1200b867ada2f5c5db4" - integrity sha512-af+rI+tUVeS9KWHPAZQHIHPOIC3StPRR6IwQu2nz1aQoTL6Gs5Ty3KsHCgbXMHOpoh9QqSjq8F3KJ8xmaCZSBA== + version "5.55.2" + resolved "https://registry.yarnpkg.com/algoliasearch/-/algoliasearch-5.55.2.tgz#5aa9426faedfa63c6433e6ba78b1843c8208e012" + integrity sha512-OyacJsaeuLUvGWOynNqYc6sx88XvyoG39wMT8SYqL3l9wwaorDW/LPRbUPfhzw0bWsUWzNCZTnFYOrWFBKsUaw== dependencies: - "@algolia/abtesting" "1.21.0" - "@algolia/client-abtesting" "5.55.0" - "@algolia/client-analytics" "5.55.0" - "@algolia/client-common" "5.55.0" - "@algolia/client-insights" "5.55.0" - "@algolia/client-personalization" "5.55.0" - "@algolia/client-query-suggestions" "5.55.0" - "@algolia/client-search" "5.55.0" - "@algolia/ingestion" "1.55.0" - "@algolia/monitoring" "1.55.0" - "@algolia/recommend" "5.55.0" - "@algolia/requester-browser-xhr" "5.55.0" - "@algolia/requester-fetch" "5.55.0" - "@algolia/requester-node-http" "5.55.0" + "@algolia/abtesting" "1.21.2" + "@algolia/client-abtesting" "5.55.2" + "@algolia/client-analytics" "5.55.2" + "@algolia/client-common" "5.55.2" + "@algolia/client-insights" "5.55.2" + "@algolia/client-personalization" "5.55.2" + "@algolia/client-query-suggestions" "5.55.2" + "@algolia/client-search" "5.55.2" + "@algolia/ingestion" "1.55.2" + "@algolia/monitoring" "1.55.2" + "@algolia/recommend" "5.55.2" + "@algolia/requester-browser-xhr" "5.55.2" + "@algolia/requester-fetch" "5.55.2" + "@algolia/requester-node-http" "5.55.2" ansi-align@^3.0.1: version "3.0.1" @@ -3649,13 +3371,6 @@ arg@^5.0.0: resolved "https://registry.yarnpkg.com/arg/-/arg-5.0.2.tgz#c81433cc427c92c4dcf4865142dbca6f15acd59c" integrity sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg== -argparse@^1.0.7: - version "1.0.10" - resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" - integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== - dependencies: - sprintf-js "~1.0.2" - argparse@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" @@ -3686,12 +3401,12 @@ astring@^1.8.0: integrity sha512-LElXdjswlqjWrPpJFg1Fx4wpkOCxj1TDHlSV4PlaRxHGWko024xICaa97ZkMfs6DRKlCguiAI+rbXv5GWwXIkg== autoprefixer@^10.4.19, autoprefixer@^10.4.23: - version "10.5.0" - resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-10.5.0.tgz#33d87e443430f020a0f85319d6ff1593cb291be9" - integrity sha512-FMhOoZV4+qR6aTUALKX2rEqGG+oyATvwBt9IIzVR5rMa2HRWPkxf+P+PAJLD1I/H5/II+HuZcBJYEFBpq39ong== + version "10.5.3" + resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-10.5.3.tgz#cd6f4c611cef98055c998b5de8e6b1759f024447" + integrity sha512-bJRzflk8GgE4JX+iZNEwz9f9p460NCHnU7bd+CZ9vIjIlZuTkt6F3WSl2oNO8StZBFx17nLEsiQ6H2wcZiY7nA== dependencies: - browserslist "^4.28.2" - caniuse-lite "^1.0.30001787" + browserslist "^4.28.6" + caniuse-lite "^1.0.30001805" fraction.js "^5.3.4" picocolors "^1.1.1" postcss-value-parser "^4.2.0" @@ -3753,10 +3468,10 @@ balanced-match@^1.0.0: resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== -baseline-browser-mapping@^2.10.12: - version "2.10.38" - resolved "https://registry.yarnpkg.com/baseline-browser-mapping/-/baseline-browser-mapping-2.10.38.tgz#c84d093c4bf7325c5053c279d90f153c66526042" - integrity sha512-31/02mVB4yuQU6adKk5SlY6m+mxDwUq5KZkyYgnLrrKl7TEm1+3PyDtDBz2kOv/wxZz41GHsvV1A/u6RmiyBvw== +baseline-browser-mapping@^2.10.42: + version "2.10.43" + resolved "https://registry.yarnpkg.com/baseline-browser-mapping/-/baseline-browser-mapping-2.10.43.tgz#7b5d11590ce5acdbe4859443e3c940e81ce8c02d" + integrity sha512-AjYpR78kDWAY3Efj+cDTFH9t9SCoL7OoTp1BOb0mQV7S+6CiLwnWM3FyxhJtdPufDFKzmCSFoUncKjWgJEZTCQ== batch@0.6.1: version "0.6.1" @@ -3774,9 +3489,9 @@ binary-extensions@^2.0.0: integrity sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw== body-parser@~1.20.5: - version "1.20.5" - resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.5.tgz#303c8c34423d1d6fa799bc764e93c1e4dc6ebf64" - integrity sha512-3grm+/2tUOvu2cjJkvsIxrv/wVpfXQW4PsQHYm7yk4vfpu7Ekl6nEsYBoJUL6qDwZUx8wUhQ8tR2qz+ad9c9OA== + version "1.20.6" + resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.6.tgz#60c789c78e0992d906da0a29d71ae01d15c1ed76" + integrity sha512-p5tAzS57i5MV9fZFDj9LeIiTZEufbSe2eDozP+ElheSUq1m74CRq1jI4mYNDdVs9vQztXFLuk/Gd6BWTdwRJ5g== dependencies: bytes "~3.1.2" content-type "~1.0.5" @@ -3792,9 +3507,9 @@ body-parser@~1.20.5: unpipe "~1.0.0" bonjour-service@^1.2.1: - version "1.4.1" - resolved "https://registry.yarnpkg.com/bonjour-service/-/bonjour-service-1.4.1.tgz#67d0d4e50523a90b1d4b445c490cafdf10b99f58" - integrity sha512-9KM4QMPKnaJqaja1v7gYO/+TXZGLtzPA05NmUTqDAJjcsWeVoOXKMvU9g0gfuuoYTQqJZ924hivICd5R/bCJbA== + version "1.4.3" + resolved "https://registry.yarnpkg.com/bonjour-service/-/bonjour-service-1.4.3.tgz#5854e34a33ab5252a66cc31ffb46687e30c3a5f6" + integrity sha512-2Kd5UYlFUVgAKMTyuBLl6w49wqfOnbxHqmuH0oCl/n7TfAikR0zoowNOP5BU4dfXmm+Vr9JyEN370auSMx+CNg== dependencies: fast-deep-equal "^3.1.3" multicast-dns "^7.2.5" @@ -3833,9 +3548,9 @@ boxen@^7.0.0: wrap-ansi "^8.1.0" brace-expansion@^1.1.7: - version "1.1.15" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.15.tgz#a6d90d54067236e5f42570a3b7378d594d9b7738" - integrity sha512-EwOCDEex4quD37XhqM3omwtMoJjr//isUZz1JopUNWms+4Z2ViyM/k1YIRePpoVNnQhENnxtFjLaxNHrT7xIUg== + version "1.1.16" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.16.tgz#723d3a30c0558c225abc9fc479a73e14e26c3c2f" + integrity sha512-IDw48K2/2kRkg9LdJxurvq3lV3aBgq0REY89duEqFRthjlPdXHKMj7EnQOXVckxzgisinf3nHfrcE2FufFLXMw== dependencies: balanced-match "^1.0.0" concat-map "0.0.1" @@ -3847,15 +3562,15 @@ braces@^3.0.3, braces@~3.0.2: dependencies: fill-range "^7.1.1" -browserslist@^4.0.0, browserslist@^4.23.0, browserslist@^4.24.0, browserslist@^4.28.1, browserslist@^4.28.2: - version "4.28.2" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.28.2.tgz#f50b65362ef48974ca9f50b3680566d786b811d2" - integrity sha512-48xSriZYYg+8qXna9kwqjIVzuQxi+KYWp2+5nCYnYKPTr0LvD89Jqk2Or5ogxz0NUMfIjhh2lIUX/LyX9B4oIg== +browserslist@^4.0.0, browserslist@^4.23.0, browserslist@^4.24.0, browserslist@^4.28.1, browserslist@^4.28.6: + version "4.28.6" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.28.6.tgz#7cf83afcd69c55fde6fb2dcc5039ff0f4ba42610" + integrity sha512-FQBYNK15VMslhLHpA7+n+n1GOlF1kId2xcCg7/j95f24AOF6VDYMNH4mFxF7KuaTdv627faazpOAjFzMrfJOUw== dependencies: - baseline-browser-mapping "^2.10.12" - caniuse-lite "^1.0.30001782" - electron-to-chromium "^1.5.328" - node-releases "^2.0.36" + baseline-browser-mapping "^2.10.42" + caniuse-lite "^1.0.30001803" + electron-to-chromium "^1.5.389" + node-releases "^2.0.51" update-browserslist-db "^1.2.3" buffer-from@^1.0.0: @@ -3962,10 +3677,10 @@ caniuse-api@^3.0.0: lodash.memoize "^4.1.2" lodash.uniq "^4.5.0" -caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001782, caniuse-lite@^1.0.30001787: - version "1.0.30001799" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001799.tgz#5c909138c27f1a61219d3e092071c1cc7d32dc55" - integrity sha512-hG1bReV+OUU+MOqK4t/ZWI0tZOyz3rqS9XuhOUz1cIcbwBKjOyJEJuw9ER5JuNyqxNk8u/JUVbGibBOL1yrjFw== +caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001803, caniuse-lite@^1.0.30001805: + version "1.0.30001805" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001805.tgz#78d5d5968a69b7ff81af87a96d7ddc7ea6670b1e" + integrity sha512-52noaS3DubycKSXaU30TwPGIp+POyQSUVa5jBEq3vkRkY0kjyb3LQgvhU6WGyCcyXqVLWO0Cw0Q6BSdD0kUfVA== ccount@^2.0.0: version "2.0.1" @@ -4526,7 +4241,7 @@ debug@2.6.9: dependencies: ms "2.0.0" -debug@4, debug@^4.0.0, debug@^4.1.0, debug@^4.2.0, debug@^4.3.1, debug@^4.4.3: +debug@^4.0.0, debug@^4.1.0, debug@^4.2.0, debug@^4.3.1, debug@^4.4.3: version "4.4.3" resolved "https://registry.yarnpkg.com/debug/-/debug-4.4.3.tgz#c6ae432d9bd9662582fce08709b038c58e9e3d6a" integrity sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA== @@ -4628,14 +4343,6 @@ detect-node@^2.0.4: resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.1.0.tgz#c9c70775a49c3d03bc2c06d9a73be550f978f8b1" integrity sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g== -detect-port@^1.5.1: - version "1.6.1" - resolved "https://registry.yarnpkg.com/detect-port/-/detect-port-1.6.1.tgz#45e4073997c5f292b957cb678fb0bb8ed4250a67" - integrity sha512-CmnVc+Hek2egPx1PeTFVta2W78xy2K/9Rkf6cC4T59S50tVnzKj+tnx5mmx5lwvCkujZ4uRrpRSuV+IVs3f90Q== - dependencies: - address "^1.0.1" - debug "4" - detect-port@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/detect-port/-/detect-port-2.1.0.tgz#03d72644891fa451ca5609b83107a8a0ebd03f91" @@ -4765,10 +4472,10 @@ ee-first@1.1.1: resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== -electron-to-chromium@^1.5.328: - version "1.5.376" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.376.tgz#16a9d4b72cb16c416aa73a879d92b047b96797ac" - integrity sha512-cUVA7/RvbFTEuw/i3obUwDTRIXojaxkResf+ibByPFxjc6XK3VNtcQXV0NSbAlJ0FMjcJGgftVVB4Qo184EXvA== +electron-to-chromium@^1.5.389: + version "1.5.392" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.392.tgz#31e9f9af0d8df3d1489468a4242b173605617482" + integrity sha512-1yQq3VQCZRwsnYc67Oc+1fge6Lwtn0hzi6zmEVkB61Zx21kTbwJAW4dFLadl5Rc1tKhG/kSpYXnfiAhu0f0a1g== emoji-regex@^8.0.0: version "8.0.0" @@ -4808,10 +4515,10 @@ encoding-sniffer@^0.2.1: iconv-lite "^0.6.3" whatwg-encoding "^3.1.1" -enhanced-resolve@^5.22.0: - version "5.24.0" - resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.24.0.tgz#cf14b9768a774cb6a5087220c0dc6e55df6ec35a" - integrity sha512-SkE2t82KlkkxQRVMVLAGKxLfORGQfrkx5dkj+vlgXRVNEdPc4eZcR+J/Fvj8C+yKSFH5L0q3NFlyufOVQnCcYQ== +enhanced-resolve@^5.22.2: + version "5.24.2" + resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.24.2.tgz#f25d703a24431cb1e02f944adb74aefa4fcb8d7e" + integrity sha512-rpsZEGT1jFuve6QlpyRp9ckQ+kN61hvF9BzCPyMdaKTm8UJce96KBn3sorXOFXlzjPrs3Vc4T1NsSroZ3PxlFw== dependencies: graceful-fs "^4.2.4" tapable "^2.3.3" @@ -4854,9 +4561,9 @@ es-errors@^1.3.0: integrity sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw== es-module-lexer@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-2.1.0.tgz#1dfcbb5ea3bbfb63f28e1fc3676c3676d1c9624c" - integrity sha512-n27zTYMjYu1aj4MjCWzSP7G9r75utsaoc8m61weK+W8JMBGGQybd43GstCXZ3WNmSFtGT9wi59qQTW6mhTR5LQ== + version "2.3.1" + resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-2.3.1.tgz#5bf2df06999dbbe5f006a5f46a11fb9f5b7b391b" + integrity sha512-shc1dbU90Yl/xq1QrC7QRtfcwURZuVRfPhZbDoldJ1cn1gzDvBaBWlv0eFolj5+0znnPJz5TXLxsN77X/12KTA== es-object-atoms@^1.0.0, es-object-atoms@^1.1.1: version "1.1.2" @@ -4918,11 +4625,6 @@ eslint-scope@5.1.1: esrecurse "^4.3.0" estraverse "^4.1.1" -esprima@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" - integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== - esrecurse@^4.3.0: version "4.3.0" resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" @@ -5120,9 +4822,9 @@ fast-json-stable-stringify@^2.0.0: integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== fast-uri@^3.0.1: - version "3.1.2" - resolved "https://registry.yarnpkg.com/fast-uri/-/fast-uri-3.1.2.tgz#8af3d4fc9d3e71b11572cc2673b514a7d1a8c8ec" - integrity sha512-rVjf7ArG3LTk+FS6Yw81V1DLuZl1bRbNrev6Tmd/9RaroeeRRJhAt7jg/6YFxbvAQXUCavSoZhPPj6oOx+5KjQ== + version "3.1.3" + resolved "https://registry.yarnpkg.com/fast-uri/-/fast-uri-3.1.3.tgz#f695a40f006aba505631573a0021ddb21194ad11" + integrity sha512-i70LwGWUduXqzicKXWshooq+sWL1K3WUU5rKZNG/0i3a1OSoX3HqhH5WbWwTmqWfor4urUakGPiRQcleRZTwOg== fastq@^1.6.0: version "1.20.1" @@ -5241,9 +4943,9 @@ fs-extra@^10.0.0: universalify "^2.0.0" fs-extra@^11.1.1, fs-extra@^11.2.0: - version "11.3.5" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-11.3.5.tgz#07a44eff40bea53e719909a532f91a23bf0769ff" - integrity sha512-eKpRKAovdpZtR1WopLHxlBWvAgPny3c4gX1G5Jhwmmw4XJj0ifSD5qB5TOo8hmA0wlRKDAOAhEE1yVPgs6Fgcg== + version "11.3.6" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-11.3.6.tgz#f7cb80e9df550cd1db6f537fa5cdd568d3e70d10" + integrity sha512-w8ZNZr2mKIc7qeNaQ9AVPT1+iFaI+Avd4xudVOvdDJ8VytREi1Ft5Ih7hd9jjehod8vAM5GMsfQ/TpPf4EyoEA== dependencies: graceful-fs "^4.2.0" jsonfile "^6.0.1" @@ -5322,11 +5024,6 @@ glob-to-regex.js@^1.0.0, glob-to-regex.js@^1.0.1: resolved "https://registry.yarnpkg.com/glob-to-regex.js/-/glob-to-regex.js-1.2.0.tgz#2b323728271d133830850e32311f40766c5f6413" integrity sha512-QMwlOQKU/IzqMUOAZWubUOT8Qft+Y0KQWnX9nK3ch0CJg0tTp4TvGZsTfudYKv2NzoQSyPcnA6TYeIQ3jGichQ== -glob-to-regexp@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz#c75297087c851b9a578bd217dd59a92f59fe546e" - integrity sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw== - global-dirs@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/global-dirs/-/global-dirs-3.0.1.tgz#0c488971f066baceda21447aecb1a8b911d22485" @@ -5389,16 +5086,6 @@ graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== -gray-matter@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/gray-matter/-/gray-matter-4.0.3.tgz#e893c064825de73ea1f5f7d88c7a9f7274288798" - integrity sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q== - dependencies: - js-yaml "^3.13.1" - kind-of "^6.0.2" - section-matter "^1.0.0" - strip-bom-string "^1.0.0" - gzip-size@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/gzip-size/-/gzip-size-6.0.0.tgz#065367fd50c239c0671cbcbad5be3e2eeb10e462" @@ -6093,18 +5780,10 @@ joi@^17.9.2: resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== -js-yaml@^3.13.1: - version "3.14.2" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.2.tgz#77485ce1dd7f33c061fd1b16ecea23b55fcb04b0" - integrity sha512-PMSmkqxr106Xa156c2M265Z+FTrPl+oxd/rgOQy2tijQeK5TxQ43psO1ZCwhVOSdnn+RzkzlRz/eY4BgJBYVpg== - dependencies: - argparse "^1.0.7" - esprima "^4.0.0" - js-yaml@^4.1.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.2.0.tgz#2bd9e85682dd91bd469afb809d816043b3d49524" - integrity sha512-ePWsvanv0DWuDRsW8dnt+R4jQ31SCRCQ7hhNcPXZPsoBZiemuZNYGf7adZdqX2D86j6rvKp3RpCxVTSb8WQlOw== + version "4.3.0" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.3.0.tgz#d1900572a7f7cf0b5f540c83673e60bad3436592" + integrity sha512-1td788aAnnZ5qs7V2QIRl1owjtYpbKt749Y3xauqQgwIIGF/xXWz1wMTEBx5O3LK3lXLVuqXPdPxj2BoFHaW9Q== dependencies: argparse "^2.0.1" @@ -6178,7 +5857,7 @@ latest-version@^7.0.0: dependencies: package-json "^8.1.0" -launch-editor@^2.6.1: +launch-editor@^2.14.1: version "2.14.1" resolved "https://registry.yarnpkg.com/launch-editor/-/launch-editor-2.14.1.tgz#f7e0da3f58aaea03fea01074d840b5f739ed7ddc" integrity sha512-QWBrQsMpH7gPr965dsKD/3cKWiNoTjpATQf++Xq63N6sKRGMwlVXz41O1IZTMfZQgBctD/K5Zt06+/I6pP6+HA== @@ -6537,18 +6216,18 @@ media-typer@0.3.0: integrity sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ== memfs@^4.43.1: - version "4.57.8" - resolved "https://registry.yarnpkg.com/memfs/-/memfs-4.57.8.tgz#b9c1995040307c60a1503e65a3e5902ad3927628" - integrity sha512-bApYhn8BLpFAnAQmFfEl/NPN+8qx5Ar3V4Qt3ek23mVwBEElzV7c6XoPkb/PCG8ZFpowCEpHcPwMFTwHS7tSMA== + version "4.64.0" + resolved "https://registry.yarnpkg.com/memfs/-/memfs-4.64.0.tgz#88bb85610804c154a8121424d2aeba7c5bdf4e38" + integrity sha512-Kw72fgY7Wn+sD8KmtNWSafl1dz0UvAsE/PHs3YVfLiaZuA3HxNm9sRLqAu0ATiBGJvME1PxZXbBZPv5GycDeAw== dependencies: - "@jsonjoy.com/fs-core" "4.57.8" - "@jsonjoy.com/fs-fsa" "4.57.8" - "@jsonjoy.com/fs-node" "4.57.8" - "@jsonjoy.com/fs-node-builtins" "4.57.8" - "@jsonjoy.com/fs-node-to-fsa" "4.57.8" - "@jsonjoy.com/fs-node-utils" "4.57.8" - "@jsonjoy.com/fs-print" "4.57.8" - "@jsonjoy.com/fs-snapshot" "4.57.8" + "@jsonjoy.com/fs-core" "4.64.0" + "@jsonjoy.com/fs-fsa" "4.64.0" + "@jsonjoy.com/fs-node" "4.64.0" + "@jsonjoy.com/fs-node-builtins" "4.64.0" + "@jsonjoy.com/fs-node-to-fsa" "4.64.0" + "@jsonjoy.com/fs-node-utils" "4.64.0" + "@jsonjoy.com/fs-print" "4.64.0" + "@jsonjoy.com/fs-snapshot" "4.64.0" "@jsonjoy.com/json-pack" "^1.11.0" "@jsonjoy.com/util" "^1.9.0" glob-to-regex.js "^1.0.1" @@ -7081,6 +6760,16 @@ minimist@^1.2.0: resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== +minimizer-webpack-plugin@^5.6.1: + version "5.6.1" + resolved "https://registry.yarnpkg.com/minimizer-webpack-plugin/-/minimizer-webpack-plugin-5.6.1.tgz#289922a4c96c4ed1ddb76b8a00bd8074e89a2f7f" + integrity sha512-DoeAZz8Q1C1znwsUzej1fdoi4jCf7/+Em27ouLqfK/+3m8G+D7yDhUwrc3CNhjSzGUN1kn7Iv4sWmjflQHenpw== + dependencies: + "@jridgewell/trace-mapping" "^0.3.25" + jest-worker "^27.4.5" + schema-utils "^4.3.0" + terser "^5.31.1" + mrmime@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/mrmime/-/mrmime-2.0.1.tgz#bc3e87f7987853a54c9850eeb1f1078cd44adddc" @@ -7105,9 +6794,9 @@ multicast-dns@^7.2.5: thunky "^1.0.2" nanoid@^3.3.12: - version "3.3.15" - resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.15.tgz#36c490fad8c6e86c824c940dfdde999b69ed4316" - integrity sha512-y7Wygv/7mEOvxTuEQDB8StXdMRBWf1kR/tlhAzBRUFkB2jfcLOAxO/SHmOO2zgz1pVgK29/kyupn059/bCHdjA== + version "3.3.16" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.16.tgz#a04d8ec4b1f10009d2d533947aefe4293737816c" + integrity sha512-bzlKTyNJ7+LdGIIwy8ijFpIqEQIvafahV7eYykJ8Cvh42EdJeODoJ6gUJXpQJvej1BddH8OqTXZNE/KfbWAu8Q== negotiator@0.6.3: version "0.6.3" @@ -7142,10 +6831,10 @@ node-emoji@^2.1.0: emojilib "^2.4.0" skin-tone "^2.0.0" -node-releases@^2.0.36: - version "2.0.48" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.48.tgz#4da73d040ada751fc9959d993f27de48792e3b7d" - integrity sha512-1uz8041X6LoI6ZSdZacM9lVY28vuzDlSKitnpbSNK0RfKoIJkX29NBPVEFXhnuSuEOA9Ww0xnPJ+ILWbGAv8DA== +node-releases@^2.0.51: + version "2.0.51" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.51.tgz#cdc08433577f5b32ad01694481726e22eeb54aef" + integrity sha512-wRNIrw4DmVLKQlbgOMdkMx27Wrpzes2hh5Jtbi2bjPd+4wJstWIqP5A+lscnqbm0xxmT5Bpg8Lec5ItEBwx6BQ== normalize-path@^3.0.0, normalize-path@~3.0.0: version "3.0.0" @@ -8029,9 +7718,9 @@ postcss-zindex@^6.0.2: integrity sha512-5BxW9l1evPB/4ZIc+2GobEBoKC+h8gPGCMi+jxsYvd2x0mjq7wazk6DrP71pStqxE9Foxh5TVnonbWpFZzXaYg== postcss@^8.4.21, postcss@^8.4.24, postcss@^8.4.33, postcss@^8.5.4: - version "8.5.15" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.5.15.tgz#d1eaf677a324e9ec02196da2d3fecf4a0b9a735c" - integrity sha512-FfR8sjd4em2T6fb3I2MwAJU7HWVMr9zba+enmQeeWFfCbm+UOC/0X4DS8XtpUTMwWMGbjKYP7xjfNekzyGmB3A== + version "8.5.19" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.5.19.tgz#45ad5cfde499408e20147348237551381a922037" + integrity sha512-Mz8SaolMd8nB+G13WkORcxQKHZ/NE4xXevtkJHVuG+guo9/wYKlIMTKAqGdEmYOXR2ijPjTYNHssizdaVSUNdQ== dependencies: nanoid "^3.3.12" picocolors "^1.1.1" @@ -8128,11 +7817,12 @@ pvutils@^1.1.3, pvutils@^1.1.5: integrity sha512-KTqnxsgGiQ6ZAzZCVlJH5eOjSnvlyEgx1m8bkRJfOhmGRqfo5KLvmAlACQkrjEtOQ4B7wF9TdSLIs9O90MX9xA== qs@~6.15.1: - version "6.15.2" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.15.2.tgz#fd55426d710403ddccc45e0f9eab16db7727ece9" - integrity sha512-Rzq0KEyX/w/tEybncDgdkZrJgVUsUMk3xjh3t5bv3S1HTAtg+uOYt72+ZfwiQwKdysThkTBdL/rTi6HDmX9Ddw== + version "6.15.3" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.15.3.tgz#76852132a58ed5c7c0ef67e4441b9bb5d6061b3b" + integrity sha512-O9gl3zCl5h5blw1KGUzQKhA5oUXSl8rwUIM5o0S3nCXMliSvy5Dzx7/DJcI+SwgICv+IneSZwhBh1oSyEHA71A== dependencies: - side-channel "^1.1.0" + es-define-property "^1.0.1" + side-channel "^1.1.1" queue-microtask@^1.2.2: version "1.2.3" @@ -8149,7 +7839,12 @@ range-parser@1.2.0: resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.0.tgz#f49be6b487894ddc40dcc94a322f611092e00d5e" integrity sha512-kA5WQoNVo4t9lNx2kQNFCxKeBl5IbbSNBl1M/tLkw9WCn+hxNBAW5Qh8gdhs63CJnhjJ2zQWFoqPJP2sK1AV5A== -range-parser@^1.2.1, range-parser@~1.2.1: +range-parser@^1.2.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.3.0.tgz#d7f19be812bb62721472b45d3be219ef09572b47" + integrity sha512-hek2mFQpPuI4E1BBKrSto+BU3e3x4xuarsbiwr3+lf7p44juvFMV0XFWQAP3xUyqXA4RrXLIoaSUGbSt056ZMw== + +range-parser@~1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== @@ -8768,9 +8463,9 @@ shebang-regex@^3.0.0: integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== shell-quote@^1.8.4: - version "1.8.4" - resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.8.4.tgz#2edd9a4dcefc96649e2e2cb12f637b1f1d92a190" - integrity sha512-VsC6n6vz1ihYYyZZwX7YZSF5l5x36ca17OC+a69h94YqB7X6XLwf+5MOgynYir2SLFUbl8gIYvBo8K8RoNQ6bQ== + version "1.10.0" + resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.10.0.tgz#482033e192e4f5c07151521ffa03400ec71b1b0f" + integrity sha512-w1aiOKwKuRgtwAReIIj89puqg+I7GvX4IbLrvmhXbzQsj1+Zwi4VO3+fa6ZF91TWSjIxoEkKnMeHcLEODK5ZXA== side-channel-list@^1.0.1: version "1.0.1" @@ -8801,7 +8496,7 @@ side-channel-weakmap@^1.0.2: object-inspect "^1.13.3" side-channel-map "^1.0.1" -side-channel@^1.1.0: +side-channel@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.1.1.tgz#ea02c62e05dc4bea67d4442f0fb71ee192f8e0ab" integrity sha512-6x6dK6zJdpTzF4sQeNYxwtvBzf6Eg4GtlesS94HOvTudUeyK2WXAaIfmDgsyslYrRBeFIlsi54AYsFGUuhmvrQ== @@ -8931,11 +8626,6 @@ spdy@^4.0.2: select-hose "^2.0.0" spdy-transport "^3.0.0" -sprintf-js@~1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" - integrity sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g== - srcset@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/srcset/-/srcset-4.0.0.tgz#336816b665b14cd013ba545b6fe62357f86e65f4" @@ -9086,9 +8776,9 @@ svg-parser@^2.0.4: integrity sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ== svgo@^3.0.2, svgo@^3.2.0: - version "3.3.3" - resolved "https://registry.yarnpkg.com/svgo/-/svgo-3.3.3.tgz#8246aee0b08791fde3b0ed22b5661b471fadf58e" - integrity sha512-+wn7I4p7YgJhHs38k2TNjy1vCfPIfLIJWR5MnCStsN8WuuTcBnRKcMHQLMM2ijxGZmDoZwNv8ipl5aTTen62ng== + version "3.3.4" + resolved "https://registry.yarnpkg.com/svgo/-/svgo-3.3.4.tgz#fd2aa10ff585b3bd2b83ce3602f5582bc0718bb5" + integrity sha512-GsNRis4e8jxn2Y9ENz/8lbJ93CstG8svtMnuRaHbiF2LTJ5tK0/q3t/URPq9Zc7zVWBJnNnJMIp6bevK7bSmNg== dependencies: commander "^7.2.0" css-select "^5.1.0" @@ -9103,7 +8793,7 @@ tapable@^2.0.0, tapable@^2.2.1, tapable@^2.3.0, tapable@^2.3.3: resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.3.3.tgz#5da7c9992c46038221267985ab28421a8879f160" integrity sha512-uxc/zpqFg6x7C8vOE7lh6Lbda8eEL9zmVm/PLeTPBRhh1xCgdWaQ+J1CUieGpIfm2HdtsUpRv+HshiasBMcc6A== -terser-webpack-plugin@^5.3.9, terser-webpack-plugin@^5.5.0: +terser-webpack-plugin@^5.3.9: version "5.6.1" resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-5.6.1.tgz#47bc41bd8b8fab8383b62ec763b7394829097e7b" integrity sha512-201R5j+sJpK8nFWwKVyNfZot8FaJbLZDq5evriVzbV1wDtSXDjRUDRfJzHpAaxFDMEhsZL1QkeqM61wgsS3KaQ== @@ -9114,9 +8804,9 @@ terser-webpack-plugin@^5.3.9, terser-webpack-plugin@^5.5.0: terser "^5.31.1" terser@^5.10.0, terser@^5.15.1, terser@^5.31.1: - version "5.48.0" - resolved "https://registry.yarnpkg.com/terser/-/terser-5.48.0.tgz#8b391171cfbb7ac4a88f9f04ba1cfabc54f643db" - integrity sha512-J/9An6vs9Us6wKRriSFXBWdRZapREHqFzdNUKk0pmu804EMR6dr6winwo7e5JDxN4xahxQsuysyYFwlwj4XN/Q== + version "5.49.0" + resolved "https://registry.yarnpkg.com/terser/-/terser-5.49.0.tgz#30b341fdf70cfc98486965125ae660fda8403670" + integrity sha512-SNiDnXyHSrxVcIOtVbULzcTmniUiwcV7Nwdyj1twVubeTmbjoa8p69KKDpfkdoOavuM4/GRm1+ykI8qqnavHoA== dependencies: "@jridgewell/source-map" "^0.3.3" acorn "^8.15.0" @@ -9443,7 +9133,7 @@ vfile@^6.0.0, vfile@^6.0.1: "@types/unist" "^3.0.0" vfile-message "^4.0.0" -watchpack@^2.5.1: +watchpack@^2.5.2: version "2.5.2" resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-2.5.2.tgz#e12e82d84674266fc1c6dbfe38891b92ff0522ec" integrity sha512-6i/00NBjP4yGPs+caKSyRfpTF/8Torsu0MOW3mMzIbhgISFder8i7xbqgHlLMwJrdiN8ndBV3UA1/AfzPSr+jg== @@ -9493,9 +9183,9 @@ webpack-dev-middleware@^7.4.2: schema-utils "^4.0.0" webpack-dev-server@^5.2.2: - version "5.2.5" - resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-5.2.5.tgz#648fceaac6a5736b0935e5c1e55d6aa1d0626119" - integrity sha512-4wZtCquSuv9CKX8oybo+mqxtxZqWz47uM1Ch94lxowBztOhWCbhqvRbfC/mODOwxgV2brY+JGZpHq58/SuVFYg== + version "5.2.6" + resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-5.2.6.tgz#3a5d41233cbb7504f814d19e59a59173fb8ae23d" + integrity sha512-HNLRmamRvVavZQ+avceZifmv8hmdUjg43t6MI4SqJDwFdW7RPQwH5vzGhDRZSX59SgfbeHhLnq3g+uooWo7pVw== dependencies: "@types/bonjour" "^3.5.13" "@types/connect-history-api-fallback" "^1.5.4" @@ -9515,7 +9205,7 @@ webpack-dev-server@^5.2.2: graceful-fs "^4.2.6" http-proxy-middleware "^2.0.9" ipaddr.js "^2.1.0" - launch-editor "^2.6.1" + launch-editor "^2.14.1" open "^10.0.3" p-retry "^6.2.0" schema-utils "^4.2.0" @@ -9545,14 +9235,14 @@ webpack-merge@^6.0.1: wildcard "^2.0.1" webpack-sources@^3.5.0: - version "3.5.0" - resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-3.5.0.tgz#87bf7f5801a4e985b1f1c92b64b9620a02f76d08" - integrity sha512-HPuy+uuoTCaaoEoI1LQ3JN9+vrPBvEesnnX1jADHy728cHSMlq4wUc4afYqahq2B1mhQVZxCXOkNTnXltr+2vQ== + version "3.5.1" + resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-3.5.1.tgz#76c2418486dcc02b2aa0694c104176c2858fe84a" + integrity sha512-jyuiGJdtvY434z5bUZrjz67v76/ePNvFZTp9Mdz29IlH4+GPsgyGjiv0fKI+M7BdkU6ADjulUcKAd3tUK3WlEw== webpack@^5.88.1, webpack@^5.95.0: - version "5.107.2" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.107.2.tgz#dea14dcb177b46b29de15f952f7303691ee2b596" - integrity sha512-v7RhXaJbpMlV0D7hC7lb2EbnxkoeUqf9qhKr6lozx3Q48pmFrqqNRmZFUEGmi7pSwm6fCQ2H1IjvCkHqdpVdjQ== + version "5.108.4" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.108.4.tgz#141818a411662773a0bb32dc5536acc5409943b7" + integrity sha512-yur8LyJoeiWh47dErD+Ok7vlbmDsJ3UbbRPAoxbGJ54WpE2y5yVo5G/inUzujnYgw3tPmBRdn+G7PoxXaYC33w== dependencies: "@types/estree" "^1.0.8" "@types/json-schema" "^7.0.15" @@ -9563,19 +9253,18 @@ webpack@^5.88.1, webpack@^5.95.0: acorn-import-phases "^1.0.3" browserslist "^4.28.1" chrome-trace-event "^1.0.2" - enhanced-resolve "^5.22.0" + enhanced-resolve "^5.22.2" es-module-lexer "^2.1.0" eslint-scope "5.1.1" events "^3.2.0" - glob-to-regexp "^0.4.1" graceful-fs "^4.2.11" loader-runner "^4.3.2" mime-db "^1.54.0" + minimizer-webpack-plugin "^5.6.1" neo-async "^2.6.2" schema-utils "^4.3.3" tapable "^2.3.0" - terser-webpack-plugin "^5.5.0" - watchpack "^2.5.1" + watchpack "^2.5.2" webpack-sources "^3.5.0" webpackbar@^7.0.0: @@ -9653,14 +9342,14 @@ write-file-atomic@^3.0.3: typedarray-to-buffer "^3.1.5" ws@^7.3.1: - version "7.5.11" - resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.11.tgz#9460daf1812bb81a423c5b9eac746941a86310fa" - integrity sha512-zS54Oen9bITtp7kp2XM3AydrCIq1D+HwJOuH+c+e4LfpL/lotP5osijd+UoMnxwAam1GN8R4KtLAyIrIcBNpiA== + version "7.5.12" + resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.12.tgz#4ca2c04966db4dcd2f9bc4d1419d23cd1e4a18db" + integrity sha512-1xGnbYN3zbog9CwuNDQULNRrTCLIn46/WmpR1f0w6PsCYQHkylZr5vkd6kfMZYV6pRnQkcPNRyiA8LsrNKyhpg== ws@^8.18.0: - version "8.21.0" - resolved "https://registry.yarnpkg.com/ws/-/ws-8.21.0.tgz#012e413fc07429945121b0c153158c4343086951" - integrity sha512-Vsp28b7DRcimFQvrqu2Wek3z1iYxDCWqHYB8Qsnk/S4RfaCQzPGPyBNuVjJV3cd6UiKtUtp6sNM77gWvzcCH+g== + version "8.21.1" + resolved "https://registry.yarnpkg.com/ws/-/ws-8.21.1.tgz#045650cd4b1207809e7547146223c3814a9af586" + integrity sha512-+0NTnW77fFN/DjQi6k/Sq/Yvk4Sgajw7urW8V+asjXnRgDs9gyGkdb7EzgfhA4goXsRIZKE28fzIXBHEzhuiWw== wsl-utils@^0.1.0: version "0.1.0" From 2bfa0e0239d6fb3ebd77faec2b53ce5ca46c4969 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 16 Jul 2026 11:08:48 +0200 Subject: [PATCH 065/134] chore(deps): update dependency typescript to v7 (#1006) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) | |---|---|---|---| | [typescript](https://www.typescriptlang.org/) ([source](https://redirect.github.com/microsoft/TypeScript)) | [`~6.0.0` β†’ `~7.0.0`](https://renovatebot.com/diffs/npm/typescript/6.0.3/7.0.2) | ![age](https://developer.mend.io/api/mc/badges/age/npm/typescript/7.0.2?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/typescript/6.0.3/7.0.2?slim=true) | Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- web/package.json | 2 +- web/yarn.lock | 129 +++++++++++++++++++++++++++++++++++++++++++++-- 2 files changed, 126 insertions(+), 5 deletions(-) diff --git a/web/package.json b/web/package.json index 43f341e..2d6031e 100644 --- a/web/package.json +++ b/web/package.json @@ -28,7 +28,7 @@ "@docusaurus/module-type-aliases": "3.10.2", "@docusaurus/tsconfig": "3.10.2", "@docusaurus/types": "3.10.2", - "typescript": "~6.0.0" + "typescript": "~7.0.0" }, "browserslist": { "production": [ diff --git a/web/yarn.lock b/web/yarn.lock index 1f4caf7..c00d612 100644 --- a/web/yarn.lock +++ b/web/yarn.lock @@ -3074,6 +3074,106 @@ dependencies: "@types/yargs-parser" "*" +"@typescript/typescript-aix-ppc64@7.0.2": + version "7.0.2" + resolved "https://registry.yarnpkg.com/@typescript/typescript-aix-ppc64/-/typescript-aix-ppc64-7.0.2.tgz#cdc7ce81d60f1e09034960ddfb1fb880d7a776b6" + integrity sha512-MTKKkWB7p/0E9xi1d1tHtZ5PiLkGEMIq88pK2CubZjOsLtYTLqhgIgi6zepFa+9GHZ6h05NMCkQxGKiPXMxXtQ== + +"@typescript/typescript-darwin-arm64@7.0.2": + version "7.0.2" + resolved "https://registry.yarnpkg.com/@typescript/typescript-darwin-arm64/-/typescript-darwin-arm64-7.0.2.tgz#a55fdfcfa58df58d27db2237cde6a5c1e35a7235" + integrity sha512-gowzar9MwS/aRWp6f3a4KUqzRjAZjOsmGNCM6LcTgXum+dBfgsBVMN+AgvOCCbguXyick6LJhpBszxMebJ8syA== + +"@typescript/typescript-darwin-x64@7.0.2": + version "7.0.2" + resolved "https://registry.yarnpkg.com/@typescript/typescript-darwin-x64/-/typescript-darwin-x64-7.0.2.tgz#38d1c9172800a91d707bec64d2a370a016634db4" + integrity sha512-SZ9xZInqApNlNGc9s0W1VSsktYSOe9cFqNOIqmN1Gs8SmkjKZYFt017G4VwPxASInODuAdbTW7sXiFUf893RgA== + +"@typescript/typescript-freebsd-arm64@7.0.2": + version "7.0.2" + resolved "https://registry.yarnpkg.com/@typescript/typescript-freebsd-arm64/-/typescript-freebsd-arm64-7.0.2.tgz#f1ff8810030b35d2b5be0db6a2dc650460ea94fa" + integrity sha512-W5NH4y/J0plIIS5b2xvTEkU7JFxyqdMAOgf+Ilhl0vHQXKO5dZoxd+C/jEtq56c4F3wk71RB4BMRQ2XdI+bwYQ== + +"@typescript/typescript-freebsd-x64@7.0.2": + version "7.0.2" + resolved "https://registry.yarnpkg.com/@typescript/typescript-freebsd-x64/-/typescript-freebsd-x64-7.0.2.tgz#3d86b03f353c5b1ba95162eb6ce35533bfc294bd" + integrity sha512-UMGDx5sTpzNw3WiPebH7l90IWfJggEd+egHt/q6p7/Cm3zqoV7VxkGXt+3DxPIw8CcmvAB0j3sVVfbhX+M4Tpw== + +"@typescript/typescript-linux-arm64@7.0.2": + version "7.0.2" + resolved "https://registry.yarnpkg.com/@typescript/typescript-linux-arm64/-/typescript-linux-arm64-7.0.2.tgz#d9334d96d6dac6ff85da9c865588948de939e91f" + integrity sha512-Qh4eU4/y3yDjnfjjyPYihMj5/ODIlmt+Bzu17OI+fiSRDW57QmU5SiN63exPRNJPKUzcc1INa1NXdrJ+MqHjUQ== + +"@typescript/typescript-linux-arm@7.0.2": + version "7.0.2" + resolved "https://registry.yarnpkg.com/@typescript/typescript-linux-arm/-/typescript-linux-arm-7.0.2.tgz#ad94b41e1aee2a4dcc6a298c7b67c43345fde32e" + integrity sha512-gffT3xPz9sR7j/YJExkyPntrI0P2EP9XbOyWzth2/Gs0RstK+90RBcO0ncXoXy/beYll1SXw846Nf2zdnEz0QQ== + +"@typescript/typescript-linux-loong64@7.0.2": + version "7.0.2" + resolved "https://registry.yarnpkg.com/@typescript/typescript-linux-loong64/-/typescript-linux-loong64-7.0.2.tgz#2965aee4fc873360139d893daafe6397a29138ad" + integrity sha512-uEHck9i8hoAzXPiYRib1O7miOnz23SxIeVl6F4LXox+qov1K35jHcEW6VHKvZI+pyvl7fZEP4MCU5LYvIq1GuQ== + +"@typescript/typescript-linux-mips64el@7.0.2": + version "7.0.2" + resolved "https://registry.yarnpkg.com/@typescript/typescript-linux-mips64el/-/typescript-linux-mips64el-7.0.2.tgz#1a887a311bed3a833f80bfd4a9ed37c271936cf0" + integrity sha512-R4KvAMnE43W5Qeqb0Ly56O3mWMWIAgsMyz36DCaycd5nbg/9kzm0liw3JocfRqyJY0KPmzFjbswozXyW0DnIYA== + +"@typescript/typescript-linux-ppc64@7.0.2": + version "7.0.2" + resolved "https://registry.yarnpkg.com/@typescript/typescript-linux-ppc64/-/typescript-linux-ppc64-7.0.2.tgz#8b63c9b2f445b393eb4e43ec21da225dade3577d" + integrity sha512-DORx5b3sd/4S7eayxm4FQv+A7CrkUIGRaHiwI8oiHTAI1fAPWhF4J0vAlkC8biAlHSVVwxMQ3tjZ2/DVbnQiiA== + +"@typescript/typescript-linux-riscv64@7.0.2": + version "7.0.2" + resolved "https://registry.yarnpkg.com/@typescript/typescript-linux-riscv64/-/typescript-linux-riscv64-7.0.2.tgz#b6e8a35c289b3ea97a92a41d461aaeed0d3b36e1" + integrity sha512-wf0jqEDOjrPRnKwYRyyJDRo11KMbvMFrU+q4zqKyChODBzvlkbhNQfKvLxQCcwTpdDaXSHZTVuh0JoCrKCUMHQ== + +"@typescript/typescript-linux-s390x@7.0.2": + version "7.0.2" + resolved "https://registry.yarnpkg.com/@typescript/typescript-linux-s390x/-/typescript-linux-s390x-7.0.2.tgz#2ef96693be4861f6d17965427e5b009cbbed1a3e" + integrity sha512-IkwJc3L7yhytWd/ewjyxNDfOmswCm9GWMJT/ue/dU4aZNbwZeYAetq42VyLmsmSjvoX7z74X6ZaYCtzAr0EuGw== + +"@typescript/typescript-linux-x64@7.0.2": + version "7.0.2" + resolved "https://registry.yarnpkg.com/@typescript/typescript-linux-x64/-/typescript-linux-x64-7.0.2.tgz#73269cb0baba50aea0ca060445a6b88e583f1ce2" + integrity sha512-EYdf2cNg7rgCWJnxCdJ+F3V39O8ihb37eHAu1LK8oAFizgTQbPOK7zHHXbPt8rX24COqODXeI3sIf0fCXG7H/A== + +"@typescript/typescript-netbsd-arm64@7.0.2": + version "7.0.2" + resolved "https://registry.yarnpkg.com/@typescript/typescript-netbsd-arm64/-/typescript-netbsd-arm64-7.0.2.tgz#3a3649f97fafa210b4e6e3798c15e06605c8a901" + integrity sha512-+polYF4MF04aPpO5FTkHran9yUQDSXqy5GiSDKpsll5jy3l3+g9QLhpf39T+ePtefhXLOGrLl0QIjkQP6VnelA== + +"@typescript/typescript-netbsd-x64@7.0.2": + version "7.0.2" + resolved "https://registry.yarnpkg.com/@typescript/typescript-netbsd-x64/-/typescript-netbsd-x64-7.0.2.tgz#47ec59491a40c470d2807dc4d2b825528fd979ab" + integrity sha512-8YIT0EHM/3dq10ZOVF/A7pc/YSMtbcecct4rWtexrnSCHOPcpC2KTLXfTCR6vDpnSiY12heNb1GiN/wu+T/FyA== + +"@typescript/typescript-openbsd-arm64@7.0.2": + version "7.0.2" + resolved "https://registry.yarnpkg.com/@typescript/typescript-openbsd-arm64/-/typescript-openbsd-arm64-7.0.2.tgz#796be8da0bd989d8a3fb96f2801e38a8365b4baf" + integrity sha512-APT8+ClYnuYm1u9+kgGXoMj2VzWzcymwh2gNSQVySHfkRDGOTVkoWLjCmOQSaO+PoqQ57B0flRp9SA+7GnnkzQ== + +"@typescript/typescript-openbsd-x64@7.0.2": + version "7.0.2" + resolved "https://registry.yarnpkg.com/@typescript/typescript-openbsd-x64/-/typescript-openbsd-x64-7.0.2.tgz#d37fe2a729eb942c076c454ee7f1815faf7d560f" + integrity sha512-yX7s+Q0Dln0Dt9tEzZsAjXXR/+ytBM7AlglaqyeMPxQszJ1JhlJdZ6jLA+IzldHtflX81em7lDao1xXu+aRRkg== + +"@typescript/typescript-sunos-x64@7.0.2": + version "7.0.2" + resolved "https://registry.yarnpkg.com/@typescript/typescript-sunos-x64/-/typescript-sunos-x64-7.0.2.tgz#aba8d3464c3565a7044789baba96916bd4ab2c88" + integrity sha512-dLJDGaLZ1D4HPQn62u1n8mBDkJREwMsAkCdkwd4Ieqw+x3TUyTsqY0YiBCtE6H6OzzgGk3iuZ3vFWRS+E8/d1g== + +"@typescript/typescript-win32-arm64@7.0.2": + version "7.0.2" + resolved "https://registry.yarnpkg.com/@typescript/typescript-win32-arm64/-/typescript-win32-arm64-7.0.2.tgz#b9de50a17196383f62620b5f9d0a2f34ad3b60d7" + integrity sha512-Gyl1Vy6OsWesLzmq+EP0Fb7b4Nid5232AvcA2SFcdYreldpNtYFFofPjnt62y9hQy7VTaZp65ICJjuAQRaVcIQ== + +"@typescript/typescript-win32-x64@7.0.2": + version "7.0.2" + resolved "https://registry.yarnpkg.com/@typescript/typescript-win32-x64/-/typescript-win32-x64-7.0.2.tgz#cf3b7b0d6ce5635daca4c8e01c189cdcde47ec3c" + integrity sha512-0BQ3HkAHHlKLSp1qRvf3SUhGpGsDuhB/jgFw75guyqbxJqEaS0Cw/VFO8i2nHglJUzQCRtMMR/IBAKE3ETMC4g== + "@ungap/structured-clone@^1.0.0": version "1.3.3" resolved "https://registry.yarnpkg.com/@ungap/structured-clone/-/structured-clone-1.3.3.tgz#094041e1a4cb1987f038335421281ac8be390bcc" @@ -8912,10 +9012,31 @@ typedarray-to-buffer@^3.1.5: dependencies: is-typedarray "^1.0.0" -typescript@~6.0.0: - version "6.0.3" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-6.0.3.tgz#90251dc007916e972786cb94d74d15b185577d21" - integrity sha512-y2TvuxSZPDyQakkFRPZHKFm+KKVqIisdg9/CZwm9ftvKXLP8NRWj38/ODjNbr43SsoXqNuAisEf1GdCxqWcdBw== +typescript@~7.0.0: + version "7.0.2" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-7.0.2.tgz#9ec773d7954a8c182c17cc5bbd575aa28bc51582" + integrity sha512-8FYau96o3NKOhbjKi/qNvG/W5jhzxkbdm5sj9AbZ/5T5sWqn3hJgLfGx27sRKZWTvyzCP8dLRBTf5tBTSRVUNA== + optionalDependencies: + "@typescript/typescript-aix-ppc64" "7.0.2" + "@typescript/typescript-darwin-arm64" "7.0.2" + "@typescript/typescript-darwin-x64" "7.0.2" + "@typescript/typescript-freebsd-arm64" "7.0.2" + "@typescript/typescript-freebsd-x64" "7.0.2" + "@typescript/typescript-linux-arm" "7.0.2" + "@typescript/typescript-linux-arm64" "7.0.2" + "@typescript/typescript-linux-loong64" "7.0.2" + "@typescript/typescript-linux-mips64el" "7.0.2" + "@typescript/typescript-linux-ppc64" "7.0.2" + "@typescript/typescript-linux-riscv64" "7.0.2" + "@typescript/typescript-linux-s390x" "7.0.2" + "@typescript/typescript-linux-x64" "7.0.2" + "@typescript/typescript-netbsd-arm64" "7.0.2" + "@typescript/typescript-netbsd-x64" "7.0.2" + "@typescript/typescript-openbsd-arm64" "7.0.2" + "@typescript/typescript-openbsd-x64" "7.0.2" + "@typescript/typescript-sunos-x64" "7.0.2" + "@typescript/typescript-win32-arm64" "7.0.2" + "@typescript/typescript-win32-x64" "7.0.2" undici-types@~8.3.0: version "8.3.0" From 7bf9c6c8bddcecbf255414153411c7a2e97ee150 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 16 Jul 2026 11:33:34 +0200 Subject: [PATCH 066/134] chore(deps): update arduino/setup-task action to v3 (#1004) Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/ci.yml | 2 +- .github/workflows/release-please.yml | 2 +- .github/workflows/release-publish.yml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index b048294..0d8c09c 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -40,7 +40,7 @@ jobs: - name: Install QEMU static binaries uses: docker/setup-qemu-action@v4 - name: Install Task - uses: arduino/setup-task@v2 + uses: arduino/setup-task@v3.0.0 - name: Install Dagger env: # renovate: datasource=github-tags depName=dagger/dagger versioning=semver diff --git a/.github/workflows/release-please.yml b/.github/workflows/release-please.yml index 459cda4..cc32f3c 100644 --- a/.github/workflows/release-please.yml +++ b/.github/workflows/release-please.yml @@ -27,7 +27,7 @@ jobs: - name: Install QEMU static binaries uses: docker/setup-qemu-action@v4 - name: Install Task - uses: arduino/setup-task@v2 + uses: arduino/setup-task@v3.0.0 - name: Install Dagger env: # renovate: datasource=github-tags depName=dagger/dagger versioning=semver diff --git a/.github/workflows/release-publish.yml b/.github/workflows/release-publish.yml index 45c0c79..f1a26b3 100644 --- a/.github/workflows/release-publish.yml +++ b/.github/workflows/release-publish.yml @@ -17,7 +17,7 @@ jobs: - name: Install QEMU static binaries uses: docker/setup-qemu-action@v4 - name: Install Task - uses: arduino/setup-task@v2 + uses: arduino/setup-task@v3.0.0 - name: Install Dagger env: # renovate: datasource=github-tags depName=dagger/dagger versioning=semver From 8af1fa77f82691bfd485e3a59c3630e0e7ed45f6 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 16 Jul 2026 11:34:10 +0200 Subject: [PATCH 067/134] chore(deps): update actions/setup-node action to v7 (#1003) Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/publish-docs.yml | 2 +- .github/workflows/release-please.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/publish-docs.yml b/.github/workflows/publish-docs.yml index 4d0a534..4c39a66 100644 --- a/.github/workflows/publish-docs.yml +++ b/.github/workflows/publish-docs.yml @@ -28,7 +28,7 @@ jobs: uses: actions/checkout@v7.0.0 - name: Setup Node - uses: actions/setup-node@v6 + uses: actions/setup-node@v7 with: # Use the latest LTS version of Node.js already installed on the runner. node-version: latest diff --git a/.github/workflows/release-please.yml b/.github/workflows/release-please.yml index cc32f3c..e980806 100644 --- a/.github/workflows/release-please.yml +++ b/.github/workflows/release-please.yml @@ -21,7 +21,7 @@ jobs: - name: Checkout uses: actions/checkout@v7.0.0 - name: Install node - uses: actions/setup-node@v6 + uses: actions/setup-node@v7 with: node-version: 24 - name: Install QEMU static binaries From 3c273641e3fb8027011be74ebb09d0ba91f71c7b Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 16 Jul 2026 12:24:44 +0200 Subject: [PATCH 068/134] fix(deps): update module google.golang.org/grpc to v1.82.1 (#1008) Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 00b85c3..5a95b0e 100644 --- a/go.mod +++ b/go.mod @@ -14,7 +14,7 @@ require ( github.com/onsi/gomega v1.42.1 github.com/spf13/cobra v1.10.2 github.com/spf13/viper v1.21.0 - google.golang.org/grpc v1.82.0 + google.golang.org/grpc v1.82.1 gopkg.in/yaml.v3 v3.0.1 k8s.io/api v0.36.2 k8s.io/apiextensions-apiserver v0.36.2 diff --git a/go.sum b/go.sum index b9dc753..ada804d 100644 --- a/go.sum +++ b/go.sum @@ -293,8 +293,8 @@ google.golang.org/genproto/googleapis/api v0.0.0-20260414002931-afd174a4e478 h1: google.golang.org/genproto/googleapis/api v0.0.0-20260414002931-afd174a4e478/go.mod h1:C6ADNqOxbgdUUeRTU+LCHDPB9ttAMCTff6auwCVa4uc= google.golang.org/genproto/googleapis/rpc v0.0.0-20260610212136-7ab31c22f7ad h1:45WmJvIV6C2+O/jjLkPUH+F3aOj/1miDoU2DD0+NWbg= google.golang.org/genproto/googleapis/rpc v0.0.0-20260610212136-7ab31c22f7ad/go.mod h1:4Hqkh8ycfw05ld/3BWL7rJOSfebL2Q+DVDeRgYgxUU8= -google.golang.org/grpc v1.82.0 h1:vguDnZUPjE26w09A63VoxZPnvPjB5Riyc0mkXPFmAIU= -google.golang.org/grpc v1.82.0/go.mod h1:yzTZ1TB1Z3SG+LIYaI+WiE8D5+PZ3ArnrSp8zF3+/ZA= +google.golang.org/grpc v1.82.1 h1:NnAxzGRA0677vCa4BUkOAnO5+FfQqVl9iUXeD0IqcGE= +google.golang.org/grpc v1.82.1/go.mod h1:yzTZ1TB1Z3SG+LIYaI+WiE8D5+PZ3ArnrSp8zF3+/ZA= google.golang.org/protobuf v1.36.12-0.20260120151049-f2248ac996af h1:+5/Sw3GsDNlEmu7TfklWKPdQ0Ykja5VEmq2i817+jbI= google.golang.org/protobuf v1.36.12-0.20260120151049-f2248ac996af/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= From 173c6d622b36b82f727eb824bcbb7f039519f979 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 16 Jul 2026 12:25:01 +0200 Subject: [PATCH 069/134] chore(deps): update amazon/aws-cli docker tag to v2.35.24 (#998) Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- test/e2e/internal/tests/walrestore/fixtures.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/e2e/internal/tests/walrestore/fixtures.go b/test/e2e/internal/tests/walrestore/fixtures.go index e417dd9..68ab404 100644 --- a/test/e2e/internal/tests/walrestore/fixtures.go +++ b/test/e2e/internal/tests/walrestore/fixtures.go @@ -121,8 +121,8 @@ func newS3ClientDeployment(namespace string) *appsv1.Deployment { { Name: s3ClientName, // renovate: datasource=docker depName=amazon/aws-cli versioning=docker - // Version: 2.35.11 - Image: "docker.io/amazon/aws-cli@sha256:749bfaf91d690b9a1768083822d620f96c19defdf9ca2dc227eb3695281fda5b", + // Version: 2.35.24 + Image: "docker.io/amazon/aws-cli@sha256:f7e6c7fb03510fd1f4e27469458ca372a37c823a8c32860e0dd2f04a41787794", Command: []string{"sleep", "infinity"}, Env: []corev1.EnvVar{ { From c592966a4af5c2649481a906b56784af22f7fbd2 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 16 Jul 2026 12:25:15 +0200 Subject: [PATCH 070/134] chore(deps): update mcr.microsoft.com/azure-storage/azurite docker tag to v3.36.0 (#1005) Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- test/e2e/internal/objectstore/azurite.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/e2e/internal/objectstore/azurite.go b/test/e2e/internal/objectstore/azurite.go index d9d4e64..6a9f20d 100644 --- a/test/e2e/internal/objectstore/azurite.go +++ b/test/e2e/internal/objectstore/azurite.go @@ -72,8 +72,8 @@ func newAzuriteDeployment(namespace, name string) *appsv1.Deployment { { Name: name, // renovate: datasource=docker depName=mcr.microsoft.com/azure-storage/azurite versioning=docker - // Version: 3.35.0 - Image: "mcr.microsoft.com/azure-storage/azurite@sha256:647c63a91102a9d8e8000aab803436e1fc85fbb285e7ce830a82ee5d6661cf37", + // Version: 3.36.0 + Image: "mcr.microsoft.com/azure-storage/azurite@sha256:37493d0f2e764467421ffe16eb3caa39277e5fa7f6adea18eb5bbfb3c5247f98", Args: []string{ "azurite-blob", "--blobHost", From b0f4feb04a550df75d1970a033843bc7b7c782a8 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 17 Jul 2026 10:40:23 +0200 Subject: [PATCH 071/134] chore(deps): update amazon/aws-cli docker tag to v2.36.1 (#1010) Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- test/e2e/internal/tests/walrestore/fixtures.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/e2e/internal/tests/walrestore/fixtures.go b/test/e2e/internal/tests/walrestore/fixtures.go index 68ab404..a3176d6 100644 --- a/test/e2e/internal/tests/walrestore/fixtures.go +++ b/test/e2e/internal/tests/walrestore/fixtures.go @@ -121,8 +121,8 @@ func newS3ClientDeployment(namespace string) *appsv1.Deployment { { Name: s3ClientName, // renovate: datasource=docker depName=amazon/aws-cli versioning=docker - // Version: 2.35.24 - Image: "docker.io/amazon/aws-cli@sha256:f7e6c7fb03510fd1f4e27469458ca372a37c823a8c32860e0dd2f04a41787794", + // Version: 2.36.1 + Image: "docker.io/amazon/aws-cli@sha256:406ca32d31e640a56e8d52921b40528cc64bfa59ec9cb4ee1456db6746cb7292", Command: []string{"sleep", "infinity"}, Env: []corev1.EnvVar{ { From f2753bbfdeac6e36d7aa6afada33e0e325d0c6b0 Mon Sep 17 00:00:00 2001 From: Marco Nenciarini Date: Fri, 17 Jul 2026 11:33:01 +0200 Subject: [PATCH 072/134] chore(deps): update dagger modules to engine v0.21.7 (#1012) Bump the Dagger engine version and Go toolchain across all three dagger modules (check-doc-version, e2e, gotest), pulling in the matching SDK and transitive dependency updates. Signed-off-by: Marco Nenciarini --- dagger/check-doc-version/dagger.json | 2 +- dagger/check-doc-version/go.mod | 10 +++---- dagger/check-doc-version/go.sum | 16 +++++------ dagger/e2e/dagger.json | 2 +- dagger/e2e/go.mod | 42 +++++++++++++--------------- dagger/e2e/go.sum | 16 +++++------ dagger/gotest/dagger.json | 2 +- dagger/gotest/go.mod | 10 +++---- dagger/gotest/go.sum | 16 +++++------ 9 files changed, 57 insertions(+), 59 deletions(-) diff --git a/dagger/check-doc-version/dagger.json b/dagger/check-doc-version/dagger.json index 8f37cca..309bdef 100644 --- a/dagger/check-doc-version/dagger.json +++ b/dagger/check-doc-version/dagger.json @@ -1,6 +1,6 @@ { "name": "check-doc-version", - "engineVersion": "v0.20.6", + "engineVersion": "v0.21.7", "sdk": { "source": "go" }, diff --git a/dagger/check-doc-version/go.mod b/dagger/check-doc-version/go.mod index 57b4f76..b4ec1e5 100644 --- a/dagger/check-doc-version/go.mod +++ b/dagger/check-doc-version/go.mod @@ -1,6 +1,6 @@ module dagger/check-doc-version -go 1.25.0 +go 1.26.1 require ( github.com/Khan/genqlient v0.8.1 @@ -30,8 +30,8 @@ require ( ) require ( - dagger.io/dagger v0.20.6-0.20260415192040-7058e9313c72 github.com/cespare/xxhash/v2 v2.3.0 // indirect + github.com/dagger/querybuilder v0.0.0-20260402040506-574a5e81cb59 github.com/go-logr/logr v1.4.3 // indirect github.com/go-logr/stdr v1.2.2 // indirect github.com/google/uuid v1.6.0 // indirect @@ -39,9 +39,9 @@ require ( github.com/sosodev/duration v1.4.0 // indirect go.opentelemetry.io/auto/sdk v1.2.1 // indirect go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.43.0 // indirect - golang.org/x/net v0.53.0 // indirect - golang.org/x/sys v0.43.0 // indirect - golang.org/x/text v0.36.0 // indirect + golang.org/x/net v0.55.0 // indirect + golang.org/x/sys v0.45.0 // indirect + golang.org/x/text v0.37.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20260414002931-afd174a4e478 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20260414002931-afd174a4e478 // indirect google.golang.org/protobuf v1.36.11 // indirect diff --git a/dagger/check-doc-version/go.sum b/dagger/check-doc-version/go.sum index 898c8fa..8dd6701 100644 --- a/dagger/check-doc-version/go.sum +++ b/dagger/check-doc-version/go.sum @@ -1,5 +1,3 @@ -dagger.io/dagger v0.20.6-0.20260415192040-7058e9313c72 h1:s39e07WvaUU6tLhpojK8ZEIoIbOSn5hHOJra0waenxQ= -dagger.io/dagger v0.20.6-0.20260415192040-7058e9313c72/go.mod h1:ZXg8+pQZaZUC8rAw4V/gPP8aKvKARIJZ+pfcV+RC1es= github.com/99designs/gqlgen v0.17.89 h1:KzEcxPiMgQoMw3m/E85atUEHyZyt0PbAflMia5Kw8z8= github.com/99designs/gqlgen v0.17.89/go.mod h1:GFqruTVGB7ZTdrf1uzOagpXbY7DrEt1pIxnTdhIbWvQ= github.com/Khan/genqlient v0.8.1 h1:wtOCc8N9rNynRLXN3k3CnfzheCUNKBcvXmVv5zt6WCs= @@ -14,6 +12,8 @@ github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UF github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/dagger/otel-go v1.43.0 h1:AYCnAamWmxtSxigWPTgC+8EWqiWPcDZEegh8y05gdJ8= github.com/dagger/otel-go v1.43.0/go.mod h1:83CTuXi70zcx1kaym5buqmb7RNzg1E9dEiQSFyLbLdU= +github.com/dagger/querybuilder v0.0.0-20260402040506-574a5e81cb59 h1:g6vfdGRyz6fAjfHz5FyYPZgHy8qcQ31fHrBl1iCOzxw= +github.com/dagger/querybuilder v0.0.0-20260402040506-574a5e81cb59/go.mod h1:jsdUJeYzcbyK1j/EqMGPrQgNYxl/Zfg06vvM9C/xXxs= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= @@ -75,14 +75,14 @@ go.opentelemetry.io/proto/otlp v1.10.0 h1:IQRWgT5srOCYfiWnpqUYz9CVmbO8bFmKcwYxpu go.opentelemetry.io/proto/otlp v1.10.0/go.mod h1:/CV4QoCR/S9yaPj8utp3lvQPoqMtxXdzn7ozvvozVqk= go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE= -golang.org/x/net v0.53.0 h1:d+qAbo5L0orcWAr0a9JweQpjXF19LMXJE8Ey7hwOdUA= -golang.org/x/net v0.53.0/go.mod h1:JvMuJH7rrdiCfbeHoo3fCQU24Lf5JJwT9W3sJFulfgs= +golang.org/x/net v0.55.0 h1:bcvxaJn3e1U6InsFWt1JUq1aSjnRxLzT2rtD2KfkDF8= +golang.org/x/net v0.55.0/go.mod h1:L5U2KuzuOe1lY7Z+aWVIKK6qEeJXnXV9yzGA+WCHJww= golang.org/x/sync v0.20.0 h1:e0PTpb7pjO8GAtTs2dQ6jYa5BWYlMuX047Dco/pItO4= golang.org/x/sync v0.20.0/go.mod h1:9xrNwdLfx4jkKbNva9FpL6vEN7evnE43NNNJQ2LF3+0= -golang.org/x/sys v0.43.0 h1:Rlag2XtaFTxp19wS8MXlJwTvoh8ArU6ezoyFsMyCTNI= -golang.org/x/sys v0.43.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= -golang.org/x/text v0.36.0 h1:JfKh3XmcRPqZPKevfXVpI1wXPTqbkE5f7JA92a55Yxg= -golang.org/x/text v0.36.0/go.mod h1:NIdBknypM8iqVmPiuco0Dh6P5Jcdk8lJL0CUebqK164= +golang.org/x/sys v0.45.0 h1:dO4czNzziLiiXplLQgBCEpCvXQ3dnkn0SdaZSYdQ+FY= +golang.org/x/sys v0.45.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= +golang.org/x/text v0.37.0 h1:Cqjiwd9eSg8e0QAkyCaQTNHFIIzWtidPahFWR83rTrc= +golang.org/x/text v0.37.0/go.mod h1:a5sjxXGs9hsn/AJVwuElvCAo9v8QYLzvavO5z2PiM38= gonum.org/v1/gonum v0.17.0 h1:VbpOemQlsSMrYmn7T2OUvQ4dqxQXU+ouZFQsZOx50z4= gonum.org/v1/gonum v0.17.0/go.mod h1:El3tOrEuMpv2UdMrbNlKEh9vd86bmQ6vqIcDwxEOc1E= google.golang.org/genproto/googleapis/api v0.0.0-20260414002931-afd174a4e478 h1:yQugLulqltosq0B/f8l4w9VryjV+N/5gcW0jQ3N8Qec= diff --git a/dagger/e2e/dagger.json b/dagger/e2e/dagger.json index 043bffb..c7d7f89 100644 --- a/dagger/e2e/dagger.json +++ b/dagger/e2e/dagger.json @@ -1,6 +1,6 @@ { "name": "e2e", - "engineVersion": "v0.20.6", + "engineVersion": "v0.21.7", "sdk": { "source": "go" }, diff --git a/dagger/e2e/go.mod b/dagger/e2e/go.mod index 8e419c1..e4486d6 100644 --- a/dagger/e2e/go.mod +++ b/dagger/e2e/go.mod @@ -1,37 +1,35 @@ module dagger/e-2-e -go 1.25.0 +go 1.26.1 require ( + github.com/99designs/gqlgen v0.17.89 github.com/Khan/genqlient v0.8.1 github.com/dagger/otel-go v1.43.0 github.com/vektah/gqlparser/v2 v2.5.32 go.opentelemetry.io/otel v1.43.0 + go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc v0.19.0 + go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp v0.19.0 + go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.43.0 + go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.43.0 + go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.43.0 + go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.43.0 + go.opentelemetry.io/otel/log v0.19.0 + go.opentelemetry.io/otel/metric v1.43.0 go.opentelemetry.io/otel/sdk v1.43.0 + go.opentelemetry.io/otel/sdk/log v0.19.0 + go.opentelemetry.io/otel/sdk/metric v1.43.0 go.opentelemetry.io/otel/trace v1.43.0 + go.opentelemetry.io/proto/otlp v1.10.0 + golang.org/x/sync v0.20.0 + google.golang.org/grpc v1.80.0 ) -require ( - github.com/99designs/gqlgen v0.17.89 // indirect - github.com/cenkalti/backoff/v5 v5.0.3 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc v0.19.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp v0.19.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.43.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.43.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.43.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.43.0 // indirect - go.opentelemetry.io/otel/log v0.19.0 // indirect - go.opentelemetry.io/otel/metric v1.43.0 // indirect - go.opentelemetry.io/otel/sdk/log v0.19.0 // indirect - go.opentelemetry.io/otel/sdk/metric v1.43.0 // indirect - go.opentelemetry.io/proto/otlp v1.10.0 // indirect - golang.org/x/sync v0.20.0 // indirect - google.golang.org/grpc v1.80.0 // indirect -) +require github.com/cenkalti/backoff/v5 v5.0.3 // indirect require ( - dagger.io/dagger v0.20.6-0.20260415192040-7058e9313c72 github.com/cespare/xxhash/v2 v2.3.0 // indirect + github.com/dagger/querybuilder v0.0.0-20260402040506-574a5e81cb59 github.com/go-logr/logr v1.4.3 // indirect github.com/go-logr/stdr v1.2.2 // indirect github.com/google/uuid v1.6.0 // indirect @@ -39,9 +37,9 @@ require ( github.com/sosodev/duration v1.4.0 // indirect go.opentelemetry.io/auto/sdk v1.2.1 // indirect go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.43.0 // indirect - golang.org/x/net v0.53.0 // indirect - golang.org/x/sys v0.43.0 // indirect - golang.org/x/text v0.36.0 // indirect + golang.org/x/net v0.55.0 // indirect + golang.org/x/sys v0.45.0 // indirect + golang.org/x/text v0.37.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20260414002931-afd174a4e478 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20260414002931-afd174a4e478 // indirect google.golang.org/protobuf v1.36.11 // indirect diff --git a/dagger/e2e/go.sum b/dagger/e2e/go.sum index 898c8fa..8dd6701 100644 --- a/dagger/e2e/go.sum +++ b/dagger/e2e/go.sum @@ -1,5 +1,3 @@ -dagger.io/dagger v0.20.6-0.20260415192040-7058e9313c72 h1:s39e07WvaUU6tLhpojK8ZEIoIbOSn5hHOJra0waenxQ= -dagger.io/dagger v0.20.6-0.20260415192040-7058e9313c72/go.mod h1:ZXg8+pQZaZUC8rAw4V/gPP8aKvKARIJZ+pfcV+RC1es= github.com/99designs/gqlgen v0.17.89 h1:KzEcxPiMgQoMw3m/E85atUEHyZyt0PbAflMia5Kw8z8= github.com/99designs/gqlgen v0.17.89/go.mod h1:GFqruTVGB7ZTdrf1uzOagpXbY7DrEt1pIxnTdhIbWvQ= github.com/Khan/genqlient v0.8.1 h1:wtOCc8N9rNynRLXN3k3CnfzheCUNKBcvXmVv5zt6WCs= @@ -14,6 +12,8 @@ github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UF github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/dagger/otel-go v1.43.0 h1:AYCnAamWmxtSxigWPTgC+8EWqiWPcDZEegh8y05gdJ8= github.com/dagger/otel-go v1.43.0/go.mod h1:83CTuXi70zcx1kaym5buqmb7RNzg1E9dEiQSFyLbLdU= +github.com/dagger/querybuilder v0.0.0-20260402040506-574a5e81cb59 h1:g6vfdGRyz6fAjfHz5FyYPZgHy8qcQ31fHrBl1iCOzxw= +github.com/dagger/querybuilder v0.0.0-20260402040506-574a5e81cb59/go.mod h1:jsdUJeYzcbyK1j/EqMGPrQgNYxl/Zfg06vvM9C/xXxs= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= @@ -75,14 +75,14 @@ go.opentelemetry.io/proto/otlp v1.10.0 h1:IQRWgT5srOCYfiWnpqUYz9CVmbO8bFmKcwYxpu go.opentelemetry.io/proto/otlp v1.10.0/go.mod h1:/CV4QoCR/S9yaPj8utp3lvQPoqMtxXdzn7ozvvozVqk= go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE= -golang.org/x/net v0.53.0 h1:d+qAbo5L0orcWAr0a9JweQpjXF19LMXJE8Ey7hwOdUA= -golang.org/x/net v0.53.0/go.mod h1:JvMuJH7rrdiCfbeHoo3fCQU24Lf5JJwT9W3sJFulfgs= +golang.org/x/net v0.55.0 h1:bcvxaJn3e1U6InsFWt1JUq1aSjnRxLzT2rtD2KfkDF8= +golang.org/x/net v0.55.0/go.mod h1:L5U2KuzuOe1lY7Z+aWVIKK6qEeJXnXV9yzGA+WCHJww= golang.org/x/sync v0.20.0 h1:e0PTpb7pjO8GAtTs2dQ6jYa5BWYlMuX047Dco/pItO4= golang.org/x/sync v0.20.0/go.mod h1:9xrNwdLfx4jkKbNva9FpL6vEN7evnE43NNNJQ2LF3+0= -golang.org/x/sys v0.43.0 h1:Rlag2XtaFTxp19wS8MXlJwTvoh8ArU6ezoyFsMyCTNI= -golang.org/x/sys v0.43.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= -golang.org/x/text v0.36.0 h1:JfKh3XmcRPqZPKevfXVpI1wXPTqbkE5f7JA92a55Yxg= -golang.org/x/text v0.36.0/go.mod h1:NIdBknypM8iqVmPiuco0Dh6P5Jcdk8lJL0CUebqK164= +golang.org/x/sys v0.45.0 h1:dO4czNzziLiiXplLQgBCEpCvXQ3dnkn0SdaZSYdQ+FY= +golang.org/x/sys v0.45.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= +golang.org/x/text v0.37.0 h1:Cqjiwd9eSg8e0QAkyCaQTNHFIIzWtidPahFWR83rTrc= +golang.org/x/text v0.37.0/go.mod h1:a5sjxXGs9hsn/AJVwuElvCAo9v8QYLzvavO5z2PiM38= gonum.org/v1/gonum v0.17.0 h1:VbpOemQlsSMrYmn7T2OUvQ4dqxQXU+ouZFQsZOx50z4= gonum.org/v1/gonum v0.17.0/go.mod h1:El3tOrEuMpv2UdMrbNlKEh9vd86bmQ6vqIcDwxEOc1E= google.golang.org/genproto/googleapis/api v0.0.0-20260414002931-afd174a4e478 h1:yQugLulqltosq0B/f8l4w9VryjV+N/5gcW0jQ3N8Qec= diff --git a/dagger/gotest/dagger.json b/dagger/gotest/dagger.json index 7c9937c..6acdd90 100644 --- a/dagger/gotest/dagger.json +++ b/dagger/gotest/dagger.json @@ -1,6 +1,6 @@ { "name": "gotest", - "engineVersion": "v0.20.6", + "engineVersion": "v0.21.7", "sdk": { "source": "go" }, diff --git a/dagger/gotest/go.mod b/dagger/gotest/go.mod index dfc9259..674f930 100644 --- a/dagger/gotest/go.mod +++ b/dagger/gotest/go.mod @@ -1,6 +1,6 @@ module dagger/gotest -go 1.25.0 +go 1.26.1 require ( github.com/Khan/genqlient v0.8.1 @@ -26,8 +26,8 @@ require ( ) require ( - dagger.io/dagger v0.20.6-0.20260415192040-7058e9313c72 github.com/cespare/xxhash/v2 v2.3.0 // indirect + github.com/dagger/querybuilder v0.0.0-20260402040506-574a5e81cb59 github.com/go-logr/logr v1.4.3 // indirect github.com/go-logr/stdr v1.2.2 // indirect github.com/google/uuid v1.6.0 // indirect @@ -39,9 +39,9 @@ require ( go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.43.0 // indirect go.opentelemetry.io/otel/metric v1.43.0 // indirect go.opentelemetry.io/otel/sdk/metric v1.43.0 // indirect - golang.org/x/net v0.53.0 // indirect - golang.org/x/sys v0.43.0 // indirect - golang.org/x/text v0.36.0 // indirect + golang.org/x/net v0.55.0 // indirect + golang.org/x/sys v0.45.0 // indirect + golang.org/x/text v0.37.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20260414002931-afd174a4e478 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20260414002931-afd174a4e478 // indirect google.golang.org/protobuf v1.36.11 // indirect diff --git a/dagger/gotest/go.sum b/dagger/gotest/go.sum index 898c8fa..8dd6701 100644 --- a/dagger/gotest/go.sum +++ b/dagger/gotest/go.sum @@ -1,5 +1,3 @@ -dagger.io/dagger v0.20.6-0.20260415192040-7058e9313c72 h1:s39e07WvaUU6tLhpojK8ZEIoIbOSn5hHOJra0waenxQ= -dagger.io/dagger v0.20.6-0.20260415192040-7058e9313c72/go.mod h1:ZXg8+pQZaZUC8rAw4V/gPP8aKvKARIJZ+pfcV+RC1es= github.com/99designs/gqlgen v0.17.89 h1:KzEcxPiMgQoMw3m/E85atUEHyZyt0PbAflMia5Kw8z8= github.com/99designs/gqlgen v0.17.89/go.mod h1:GFqruTVGB7ZTdrf1uzOagpXbY7DrEt1pIxnTdhIbWvQ= github.com/Khan/genqlient v0.8.1 h1:wtOCc8N9rNynRLXN3k3CnfzheCUNKBcvXmVv5zt6WCs= @@ -14,6 +12,8 @@ github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UF github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/dagger/otel-go v1.43.0 h1:AYCnAamWmxtSxigWPTgC+8EWqiWPcDZEegh8y05gdJ8= github.com/dagger/otel-go v1.43.0/go.mod h1:83CTuXi70zcx1kaym5buqmb7RNzg1E9dEiQSFyLbLdU= +github.com/dagger/querybuilder v0.0.0-20260402040506-574a5e81cb59 h1:g6vfdGRyz6fAjfHz5FyYPZgHy8qcQ31fHrBl1iCOzxw= +github.com/dagger/querybuilder v0.0.0-20260402040506-574a5e81cb59/go.mod h1:jsdUJeYzcbyK1j/EqMGPrQgNYxl/Zfg06vvM9C/xXxs= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= @@ -75,14 +75,14 @@ go.opentelemetry.io/proto/otlp v1.10.0 h1:IQRWgT5srOCYfiWnpqUYz9CVmbO8bFmKcwYxpu go.opentelemetry.io/proto/otlp v1.10.0/go.mod h1:/CV4QoCR/S9yaPj8utp3lvQPoqMtxXdzn7ozvvozVqk= go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE= -golang.org/x/net v0.53.0 h1:d+qAbo5L0orcWAr0a9JweQpjXF19LMXJE8Ey7hwOdUA= -golang.org/x/net v0.53.0/go.mod h1:JvMuJH7rrdiCfbeHoo3fCQU24Lf5JJwT9W3sJFulfgs= +golang.org/x/net v0.55.0 h1:bcvxaJn3e1U6InsFWt1JUq1aSjnRxLzT2rtD2KfkDF8= +golang.org/x/net v0.55.0/go.mod h1:L5U2KuzuOe1lY7Z+aWVIKK6qEeJXnXV9yzGA+WCHJww= golang.org/x/sync v0.20.0 h1:e0PTpb7pjO8GAtTs2dQ6jYa5BWYlMuX047Dco/pItO4= golang.org/x/sync v0.20.0/go.mod h1:9xrNwdLfx4jkKbNva9FpL6vEN7evnE43NNNJQ2LF3+0= -golang.org/x/sys v0.43.0 h1:Rlag2XtaFTxp19wS8MXlJwTvoh8ArU6ezoyFsMyCTNI= -golang.org/x/sys v0.43.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= -golang.org/x/text v0.36.0 h1:JfKh3XmcRPqZPKevfXVpI1wXPTqbkE5f7JA92a55Yxg= -golang.org/x/text v0.36.0/go.mod h1:NIdBknypM8iqVmPiuco0Dh6P5Jcdk8lJL0CUebqK164= +golang.org/x/sys v0.45.0 h1:dO4czNzziLiiXplLQgBCEpCvXQ3dnkn0SdaZSYdQ+FY= +golang.org/x/sys v0.45.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= +golang.org/x/text v0.37.0 h1:Cqjiwd9eSg8e0QAkyCaQTNHFIIzWtidPahFWR83rTrc= +golang.org/x/text v0.37.0/go.mod h1:a5sjxXGs9hsn/AJVwuElvCAo9v8QYLzvavO5z2PiM38= gonum.org/v1/gonum v0.17.0 h1:VbpOemQlsSMrYmn7T2OUvQ4dqxQXU+ouZFQsZOx50z4= gonum.org/v1/gonum v0.17.0/go.mod h1:El3tOrEuMpv2UdMrbNlKEh9vd86bmQ6vqIcDwxEOc1E= google.golang.org/genproto/googleapis/api v0.0.0-20260414002931-afd174a4e478 h1:yQugLulqltosq0B/f8l4w9VryjV+N/5gcW0jQ3N8Qec= From d40eb06600633ea1f6d02aaed4b6bf3c1a6e733f Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 17 Jul 2026 11:33:50 +0200 Subject: [PATCH 073/134] chore(deps): update fsouza/fake-gcs-server docker tag to v1.55.0 (#1011) Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- test/e2e/internal/objectstore/fakegcsserver.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/e2e/internal/objectstore/fakegcsserver.go b/test/e2e/internal/objectstore/fakegcsserver.go index a9abafa..4023efb 100644 --- a/test/e2e/internal/objectstore/fakegcsserver.go +++ b/test/e2e/internal/objectstore/fakegcsserver.go @@ -72,8 +72,8 @@ func newGCSDeployment(namespace, name string) *appsv1.Deployment { { Name: name, // renovate: datasource=docker depName=fsouza/fake-gcs-server versioning=docker - // Version: 1.54.0 - Image: "fsouza/fake-gcs-server@sha256:3730da0e31f7e5186a90ec4899dc2c336104e7599df400411392ef17e684c31f", + // Version: 1.55.0 + Image: "fsouza/fake-gcs-server@sha256:2845d1504bb4a5a4fe54b16dd70e398814eb139af49b01b07839e016120ff123", Ports: []corev1.ContainerPort{ { ContainerPort: 4443, From 9c84d069edc39c2848813aff5fd13c13c2ac8ff9 Mon Sep 17 00:00:00 2001 From: Marco Nenciarini Date: Fri, 17 Jul 2026 15:00:16 +0200 Subject: [PATCH 074/134] fix(docs): fix broken anchor link in concepts.md (#1013) The heading in misc.md was renamed to "Extra Options for Backup, WAL Archiving, and Restore", which changed its anchor slug, but the link in concepts.md still pointed at the old anchor. Update the link in both the current docs and the affected 0.13.0 versioned snapshot. Also migrate the deprecated onBrokenMarkdownLinks config option to markdown.hooks.onBrokenMarkdownLinks, since it will be removed in Docusaurus v4, and bump the transitive uuid dependency pulled in via docusaurus/core, docusaurus/preset-classic, and docusaurus-search-local to a patched version to fix an alert for CVE-2026-41907. Docusaurus build now completes with no warnings. Signed-off-by: Marco Nenciarini --- web/docs/concepts.md | 2 +- web/docusaurus.config.ts | 7 ++++++- web/package.json | 3 ++- web/versioned_docs/version-0.13.0/concepts.md | 2 +- web/yarn.lock | 8 ++++---- 5 files changed, 14 insertions(+), 8 deletions(-) diff --git a/web/docs/concepts.md b/web/docs/concepts.md index 3832df3..388714a 100644 --- a/web/docs/concepts.md +++ b/web/docs/concepts.md @@ -43,7 +43,7 @@ as **tarballs** in the `base` directory, following the The plugin also offers advanced capabilities, including [backup tagging](misc.md#backup-object-tagging) and -[extra options for backups and WAL archiving](misc.md#extra-options-for-backup-and-wal-archiving). +[extra options for backups and WAL archiving](misc.md#extra-options-for-backup-wal-archiving-and-restore). :::tip For details, refer to the diff --git a/web/docusaurus.config.ts b/web/docusaurus.config.ts index a319f1b..d90f8da 100644 --- a/web/docusaurus.config.ts +++ b/web/docusaurus.config.ts @@ -21,7 +21,12 @@ const config: Config = { deploymentBranch: 'gh-pages', onBrokenLinks: 'throw', - onBrokenMarkdownLinks: 'throw', + + markdown: { + hooks: { + onBrokenMarkdownLinks: 'throw', + }, + }, // Even if you don't use internationalization, you can use this field to set // useful metadata like html lang. For example, if your site is Chinese, you diff --git a/web/package.json b/web/package.json index 2d6031e..b8f157d 100644 --- a/web/package.json +++ b/web/package.json @@ -47,6 +47,7 @@ }, "resolutions": { "webpackbar": "^7.0.0", - "serialize-javascript": ">=7.0.5" + "serialize-javascript": ">=7.0.5", + "uuid": ">=11.1.1" } } diff --git a/web/versioned_docs/version-0.13.0/concepts.md b/web/versioned_docs/version-0.13.0/concepts.md index 3832df3..388714a 100644 --- a/web/versioned_docs/version-0.13.0/concepts.md +++ b/web/versioned_docs/version-0.13.0/concepts.md @@ -43,7 +43,7 @@ as **tarballs** in the `base` directory, following the The plugin also offers advanced capabilities, including [backup tagging](misc.md#backup-object-tagging) and -[extra options for backups and WAL archiving](misc.md#extra-options-for-backup-and-wal-archiving). +[extra options for backups and WAL archiving](misc.md#extra-options-for-backup-wal-archiving-and-restore). :::tip For details, refer to the diff --git a/web/yarn.lock b/web/yarn.lock index c00d612..5b0c7aa 100644 --- a/web/yarn.lock +++ b/web/yarn.lock @@ -9215,10 +9215,10 @@ utils-merge@1.0.1: resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" integrity sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA== -uuid@^8.3.2: - version "8.3.2" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" - integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== +uuid@>=11.1.1, uuid@^8.3.2: + version "14.0.1" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-14.0.1.tgz#8a5975b3e038902bfd169a10b5202f5ec0cf3faf" + integrity sha512-6ZxzVpzDXDa3bJWaHilVayA+BH/1zmxCJoVgvmqJnid/gPoKHxUrS/aC/T6LGQtNHT+XHG9fXPJB4d+IrU30Ew== value-equal@^1.0.1: version "1.0.1" From 7ef0754c4390bfd528585501dfaaba228c5ece72 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 20 Jul 2026 16:12:12 +0200 Subject: [PATCH 075/134] chore(deps): refresh pip-compile outputs (#1020) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Update | Change | |---|---| | lockFileMaintenance | All locks refreshed | πŸ”§ This Pull Request updates lock files to use the latest dependency versions. --- ### Configuration πŸ“… **Schedule**: (UTC) - Branch creation - "before 4am on monday" - Automerge - At any time (no schedule defined) 🚦 **Automerge**: Enabled. β™» **Rebasing**: Never, or you tick the rebase/retry checkbox. πŸ‘» **Immortal**: This PR will be recreated if closed unmerged. Get [config help](https://redirect.github.com/renovatebot/renovate/discussions) if that's undesired. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/cloudnative-pg/plugin-barman-cloud). Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- containers/sidecar-requirements.txt | 464 +++++++++++++--------------- 1 file changed, 222 insertions(+), 242 deletions(-) diff --git a/containers/sidecar-requirements.txt b/containers/sidecar-requirements.txt index 67343e8..6dfacff 100644 --- a/containers/sidecar-requirements.txt +++ b/containers/sidecar-requirements.txt @@ -22,13 +22,13 @@ barman==3.19.1 \ --hash=sha256:0a6a9e1babf97687732d8b2a3eb79ea95d55246a5257b9433865cb6e755221c0 \ --hash=sha256:2f71c4a1f1ba53f694cbdf838bb9906d8ba02b97d1fd3041196e8999bec7a1ee # via -r sidecar-requirements.in -boto3==1.43.36 \ - --hash=sha256:42942dde254673abcbc9e6e60017c88341a4f49d99d24e1f2e290fb38138c26f \ - --hash=sha256:587d7ee92a12e440ad12b0e7f11f3358f0c4d65b19f64726efc94aaf194aff28 +boto3==1.43.51 \ + --hash=sha256:a97057bb609fd38c80448db6a93db770786775dabd651401debf09816d4553d7 \ + --hash=sha256:b5a416cc703db73b69b22bef563c89c1fb14a4b10a93628d3c7abc4dd1aaf979 # via barman -botocore==1.43.36 \ - --hash=sha256:3c65fdc39ed01d8dfde1e961b34038aed03c459f8ddf80717a12ac006475e49d \ - --hash=sha256:4cae47d1b2d426316b85a0087d9e69e048f13bc003b5177d74639fe9dfd28205 +botocore==1.43.51 \ + --hash=sha256:7c2c538c932bddc95834e177ce6f91dcc388c6a7934b4f8d0db13caa30e3e543 \ + --hash=sha256:e0e5e88585fdb01dcb6b533ac2dd3f18d5d45092a14ccbfd330e3576a4152128 # via # boto3 # s3transfer @@ -36,222 +36,202 @@ certifi==2026.6.17 \ --hash=sha256:024c88eeec92ca068db80f02b8b07c9cef7b9fe261d1d535abfd5abd6f6af432 \ --hash=sha256:2227dcbaafe0d2f59279d1762ddddc37783ed4354594f194ffc31d20f41fc3db # via requests -cffi==2.0.0 \ - --hash=sha256:00bdf7acc5f795150faa6957054fbbca2439db2f775ce831222b66f192f03beb \ - --hash=sha256:07b271772c100085dd28b74fa0cd81c8fb1a3ba18b21e03d7c27f3436a10606b \ - --hash=sha256:087067fa8953339c723661eda6b54bc98c5625757ea62e95eb4898ad5e776e9f \ - --hash=sha256:0a1527a803f0a659de1af2e1fd700213caba79377e27e4693648c2923da066f9 \ - --hash=sha256:0cf2d91ecc3fcc0625c2c530fe004f82c110405f101548512cce44322fa8ac44 \ - --hash=sha256:0f6084a0ea23d05d20c3edcda20c3d006f9b6f3fefeac38f59262e10cef47ee2 \ - --hash=sha256:12873ca6cb9b0f0d3a0da705d6086fe911591737a59f28b7936bdfed27c0d47c \ - --hash=sha256:19f705ada2530c1167abacb171925dd886168931e0a7b78f5bffcae5c6b5be75 \ - --hash=sha256:1cd13c99ce269b3ed80b417dcd591415d3372bcac067009b6e0f59c7d4015e65 \ - --hash=sha256:1e3a615586f05fc4065a8b22b8152f0c1b00cdbc60596d187c2a74f9e3036e4e \ - --hash=sha256:1f72fb8906754ac8a2cc3f9f5aaa298070652a0ffae577e0ea9bd480dc3c931a \ - --hash=sha256:1fc9ea04857caf665289b7a75923f2c6ed559b8298a1b8c49e59f7dd95c8481e \ - --hash=sha256:203a48d1fb583fc7d78a4c6655692963b860a417c0528492a6bc21f1aaefab25 \ - --hash=sha256:2081580ebb843f759b9f617314a24ed5738c51d2aee65d31e02f6f7a2b97707a \ - --hash=sha256:21d1152871b019407d8ac3985f6775c079416c282e431a4da6afe7aefd2bccbe \ - --hash=sha256:24b6f81f1983e6df8db3adc38562c83f7d4a0c36162885ec7f7b77c7dcbec97b \ - --hash=sha256:256f80b80ca3853f90c21b23ee78cd008713787b1b1e93eae9f3d6a7134abd91 \ - --hash=sha256:28a3a209b96630bca57cce802da70c266eb08c6e97e5afd61a75611ee6c64592 \ - --hash=sha256:2c8f814d84194c9ea681642fd164267891702542f028a15fc97d4674b6206187 \ - --hash=sha256:2de9a304e27f7596cd03d16f1b7c72219bd944e99cc52b84d0145aefb07cbd3c \ - --hash=sha256:38100abb9d1b1435bc4cc340bb4489635dc2f0da7456590877030c9b3d40b0c1 \ - --hash=sha256:3925dd22fa2b7699ed2617149842d2e6adde22b262fcbfada50e3d195e4b3a94 \ - --hash=sha256:3e17ed538242334bf70832644a32a7aae3d83b57567f9fd60a26257e992b79ba \ - --hash=sha256:3e837e369566884707ddaf85fc1744b47575005c0a229de3327f8f9a20f4efeb \ - --hash=sha256:3f4d46d8b35698056ec29bca21546e1551a205058ae1a181d871e278b0b28165 \ - --hash=sha256:44d1b5909021139fe36001ae048dbdde8214afa20200eda0f64c068cac5d5529 \ - --hash=sha256:45d5e886156860dc35862657e1494b9bae8dfa63bf56796f2fb56e1679fc0bca \ - --hash=sha256:4647afc2f90d1ddd33441e5b0e85b16b12ddec4fca55f0d9671fef036ecca27c \ - --hash=sha256:4671d9dd5ec934cb9a73e7ee9676f9362aba54f7f34910956b84d727b0d73fb6 \ - --hash=sha256:53f77cbe57044e88bbd5ed26ac1d0514d2acf0591dd6bb02a3ae37f76811b80c \ - --hash=sha256:5eda85d6d1879e692d546a078b44251cdd08dd1cfb98dfb77b670c97cee49ea0 \ - --hash=sha256:5fed36fccc0612a53f1d4d9a816b50a36702c28a2aa880cb8a122b3466638743 \ - --hash=sha256:61d028e90346df14fedc3d1e5441df818d095f3b87d286825dfcbd6459b7ef63 \ - --hash=sha256:66f011380d0e49ed280c789fbd08ff0d40968ee7b665575489afa95c98196ab5 \ - --hash=sha256:6824f87845e3396029f3820c206e459ccc91760e8fa24422f8b0c3d1731cbec5 \ - --hash=sha256:6c6c373cfc5c83a975506110d17457138c8c63016b563cc9ed6e056a82f13ce4 \ - --hash=sha256:6d02d6655b0e54f54c4ef0b94eb6be0607b70853c45ce98bd278dc7de718be5d \ - --hash=sha256:6d50360be4546678fc1b79ffe7a66265e28667840010348dd69a314145807a1b \ - --hash=sha256:730cacb21e1bdff3ce90babf007d0a0917cc3e6492f336c2f0134101e0944f93 \ - --hash=sha256:737fe7d37e1a1bffe70bd5754ea763a62a066dc5913ca57e957824b72a85e205 \ - --hash=sha256:74a03b9698e198d47562765773b4a8309919089150a0bb17d829ad7b44b60d27 \ - --hash=sha256:7553fb2090d71822f02c629afe6042c299edf91ba1bf94951165613553984512 \ - --hash=sha256:7a66c7204d8869299919db4d5069a82f1561581af12b11b3c9f48c584eb8743d \ - --hash=sha256:7cc09976e8b56f8cebd752f7113ad07752461f48a58cbba644139015ac24954c \ - --hash=sha256:81afed14892743bbe14dacb9e36d9e0e504cd204e0b165062c488942b9718037 \ - --hash=sha256:8941aaadaf67246224cee8c3803777eed332a19d909b47e29c9842ef1e79ac26 \ - --hash=sha256:89472c9762729b5ae1ad974b777416bfda4ac5642423fa93bd57a09204712322 \ - --hash=sha256:8ea985900c5c95ce9db1745f7933eeef5d314f0565b27625d9a10ec9881e1bfb \ - --hash=sha256:8eca2a813c1cb7ad4fb74d368c2ffbbb4789d377ee5bb8df98373c2cc0dee76c \ - --hash=sha256:92b68146a71df78564e4ef48af17551a5ddd142e5190cdf2c5624d0c3ff5b2e8 \ - --hash=sha256:9332088d75dc3241c702d852d4671613136d90fa6881da7d770a483fd05248b4 \ - --hash=sha256:94698a9c5f91f9d138526b48fe26a199609544591f859c870d477351dc7b2414 \ - --hash=sha256:9a67fc9e8eb39039280526379fb3a70023d77caec1852002b4da7e8b270c4dd9 \ - --hash=sha256:9de40a7b0323d889cf8d23d1ef214f565ab154443c42737dfe52ff82cf857664 \ - --hash=sha256:a05d0c237b3349096d3981b727493e22147f934b20f6f125a3eba8f994bec4a9 \ - --hash=sha256:afb8db5439b81cf9c9d0c80404b60c3cc9c3add93e114dcae767f1477cb53775 \ - --hash=sha256:b18a3ed7d5b3bd8d9ef7a8cb226502c6bf8308df1525e1cc676c3680e7176739 \ - --hash=sha256:b1e74d11748e7e98e2f426ab176d4ed720a64412b6a15054378afdb71e0f37dc \ - --hash=sha256:b21e08af67b8a103c71a250401c78d5e0893beff75e28c53c98f4de42f774062 \ - --hash=sha256:b4c854ef3adc177950a8dfc81a86f5115d2abd545751a304c5bcf2c2c7283cfe \ - --hash=sha256:b882b3df248017dba09d6b16defe9b5c407fe32fc7c65a9c69798e6175601be9 \ - --hash=sha256:baf5215e0ab74c16e2dd324e8ec067ef59e41125d3eade2b863d294fd5035c92 \ - --hash=sha256:c649e3a33450ec82378822b3dad03cc228b8f5963c0c12fc3b1e0ab940f768a5 \ - --hash=sha256:c654de545946e0db659b3400168c9ad31b5d29593291482c43e3564effbcee13 \ - --hash=sha256:c6638687455baf640e37344fe26d37c404db8b80d037c3d29f58fe8d1c3b194d \ - --hash=sha256:c8d3b5532fc71b7a77c09192b4a5a200ea992702734a2e9279a37f2478236f26 \ - --hash=sha256:cb527a79772e5ef98fb1d700678fe031e353e765d1ca2d409c92263c6d43e09f \ - --hash=sha256:cf364028c016c03078a23b503f02058f1814320a56ad535686f90565636a9495 \ - --hash=sha256:d48a880098c96020b02d5a1f7d9251308510ce8858940e6fa99ece33f610838b \ - --hash=sha256:d68b6cef7827e8641e8ef16f4494edda8b36104d79773a334beaa1e3521430f6 \ - --hash=sha256:d9b29c1f0ae438d5ee9acb31cadee00a58c46cc9c0b2f9038c6b0b3470877a8c \ - --hash=sha256:d9b97165e8aed9272a6bb17c01e3cc5871a594a446ebedc996e2397a1c1ea8ef \ - --hash=sha256:da68248800ad6320861f129cd9c1bf96ca849a2771a59e0344e88681905916f5 \ - --hash=sha256:da902562c3e9c550df360bfa53c035b2f241fed6d9aef119048073680ace4a18 \ - --hash=sha256:dbd5c7a25a7cb98f5ca55d258b103a2054f859a46ae11aaf23134f9cc0d356ad \ - --hash=sha256:dd4f05f54a52fb558f1ba9f528228066954fee3ebe629fc1660d874d040ae5a3 \ - --hash=sha256:de8dad4425a6ca6e4e5e297b27b5c824ecc7581910bf9aee86cb6835e6812aa7 \ - --hash=sha256:e11e82b744887154b182fd3e7e8512418446501191994dbf9c9fc1f32cc8efd5 \ - --hash=sha256:e6e73b9e02893c764e7e8d5bb5ce277f1a009cd5243f8228f75f842bf937c534 \ - --hash=sha256:f73b96c41e3b2adedc34a7356e64c8eb96e03a3782b535e043a986276ce12a49 \ - --hash=sha256:f93fd8e5c8c0a4aa1f424d6173f14a892044054871c771f8566e4008eaa359d2 \ - --hash=sha256:fc33c5141b55ed366cfaad382df24fe7dcbc686de5be719b207bb248e3053dc5 \ - --hash=sha256:fc7de24befaeae77ba923797c7c87834c73648a05a4bde34b3b7e5588973a453 \ - --hash=sha256:fe562eb1a64e67dd297ccc4f5addea2501664954f2692b69a76449ec7913ecbf +cffi==2.1.0 \ + --hash=sha256:02cb7ff33ded4f1532476731f89ede53e2e488a8e6205515a82144246ffa7dcc \ + --hash=sha256:03e9810d18c646077e501f661b682fbf5dee4676048527ca3cffe66faa9960dd \ + --hash=sha256:0520e1f4c35f44e209cbbb421b67eec42e6a157f59444dfb6058874ff3610e5d \ + --hash=sha256:0582a58f3051372229ca8e7f5f589f9e5632678208d8636fea3676711fdf7fe5 \ + --hash=sha256:0611e7ebf90573a535ebdc33ae9da222d037853983e13359f580fab781ca017f \ + --hash=sha256:0a42c688d19fca6e095a53c6a6e2295a5b050a8b289f109adab02a9e61a25de6 \ + --hash=sha256:0a96b74cda968eebbad56d973efe5098974f0a9fb323865bf99ea1fd24e3e64c \ + --hash=sha256:10537b1df4967ca26d21e5072d7d54188354483b91dc75058968d3f0cf13fbda \ + --hash=sha256:11b3fb55f4f8ad92274ed26705f65d8f91457de71f5380061eb6d125a768fecd \ + --hash=sha256:15faec4adfff450819f3aee0e2e02c812de6edb88203aa58807955db2003472a \ + --hash=sha256:164bff1657b2a74f0b6d54e11c9b375bc97b931f2ca9c43fcf875838da1570dd \ + --hash=sha256:1854b724d00f6654c742097d5387569021be12d3a0f770eae1df8f8acfcc6acd \ + --hash=sha256:19c54ac121cad98450b4896fa9a43ee0180d57bc4bc911a33db6cab1efab6cd3 \ + --hash=sha256:1b96bfe2c4bd825681b7d311ad6d9b7280a091f43e8f63da5729638083cd3bfb \ + --hash=sha256:1e9f50d192a3e525b15a75ab5114e442d83d657b7ec29182a991bc9a88fd3a66 \ + --hash=sha256:1ff3456eab0d889592d1936d6125bbfbc7ae4d3354a700f8bd80450a66445d4d \ + --hash=sha256:2282cd5e38aa8accd03e99d1256af8411c84cdbee6a89d841b563fdbd1f3e50f \ + --hash=sha256:276f20fffd7b396e12516ba8edf9509210ac248cbbc5acbc39cd512f9f59ebe6 \ + --hash=sha256:2b71d409cccee78310ab5dec549aed052aaea483346e282c7b02362596e01bb0 \ + --hash=sha256:2e9dabb9abcb7ad15938c7196ad5c1718a4e6d33cc79b4c0209bdb64c4a54a5c \ + --hash=sha256:30b65779d598c370374fefabf138d456fd6f3216bfa7bedfab1ba82025b0cd93 \ + --hash=sha256:33eb1ad83ebe8f313e0df035c406227d55a79456704a863fad9842136af5ad7d \ + --hash=sha256:35aaea0c7ee0e58a5cd8c2fd1a48fdf7ece0d2699b7ecdda08194e9ce5dd9b3d \ + --hash=sha256:3681e031db29958a7502f5c0c9d6bbc4c36cb20f7b104086fa642d1799631ff8 \ + --hash=sha256:379de10ce1ba048b1448599d1b37b24caee16309d1ac98d3982fc997f768700b \ + --hash=sha256:37f525a7e7e50c017fdebe58b787be310ad59357ae43a053943a6e1a6c526001 \ + --hash=sha256:3b926723c13eba9f81d2ef3820d63aeceec3b2d4639906047bf675cb8a7a500d \ + --hash=sha256:3d7f118b5adbfdfead90c25822690b02bc8074fba949bb7858bec4ebd55adb43 \ + --hash=sha256:46b1c8db8f6122420f32d02fffb924c2fe9bc772d228c7c711748fff56aabb2b \ + --hash=sha256:47ff3a8bfd8cb9da1af7524b965127095055654c177fcfc7578debcb015eecd0 \ + --hash=sha256:4d433a51f1870e43a13b6732f92aaf540ff77c2015097c78556f75a2d6c030e0 \ + --hash=sha256:4f26194e3d95e06501b942642855aed4f953d55e95d7d01b7c4483db3ecff458 \ + --hash=sha256:510aeeeac94811b138077451da1fb18b308a5feab47dd2b603af55804155e1c8 \ + --hash=sha256:5972433ad71a9e46516584ef60a0fda12d9dc459938d1539c3ddecf9bdc1368d \ + --hash=sha256:5ecbd0499275d57506d397eebe1981cee87b47fcd9ef5c22cab7ed7644a39a94 \ + --hash=sha256:6274dcb2d15cef48daa73ed1be5a40d501d74dccd0cd6db364776d12cb6ba022 \ + --hash=sha256:63960549e4f8dc41e31accb97b975abaecfc44c03e396c093a6436763c2ea7db \ + --hash=sha256:64c753a0f87a256020004f37a1c8c02c480e725f910f0b2a0f3f07debd1b2479 \ + --hash=sha256:6af371f3767faeffc6ac1ef57cdfd25844403e9d3f476c5537caee499de96376 \ + --hash=sha256:6ca4919c6e4f89aa99c42510b42cf54596892c00b3f9077f6bdd1505e24b9c8d \ + --hash=sha256:6d194185eabd279f1c05ebe3504265ddfc5ad2b58d0714f7db9f01da592e9eb6 \ + --hash=sha256:702c436735fbe99d59ada02a1f65cfc0d31c0ee8b7290912f8fbc5cd1e4b16c3 \ + --hash=sha256:716ff8ec22f20b4d988b12884086bcef0fc99737043e503f7a3935a6be99b1ea \ + --hash=sha256:762f99479dcb369f60ab9017ad4ab97a36a1dd7c1ee5a3b15db0f4b8659120cd \ + --hash=sha256:7762faa47e8ff7eb80bd261d9a7d8eea2d8baa69de5e95b70c1f338bbe712f02 \ + --hash=sha256:78474632761faa0fb96f30b1c928c84ebcf68713cbb80d15bab09dfe61640fde \ + --hash=sha256:799416bae98336e400981ff6e532d67d5c709cfb30afb79865a1315f94b0e224 \ + --hash=sha256:7d034dcffa09e9a46c93fa3a3be402096cb5354ac6e41ab8e5cc9cd8b642ad76 \ + --hash=sha256:7d28dff1db6764108bc30788d85d61c876beff416d9a49cb9dd7c5a9f34f5804 \ + --hash=sha256:7d3538f9c0e50670f4deb93dbb696576e60590369cae2faf7de681e597a8a1f1 \ + --hash=sha256:7d5980a3433d4b71a5e120f9dd551403d7824e31e2e67124fe2769c404c06913 \ + --hash=sha256:7ea6b3e2c4250ff1de21c630fe72d0f63eb95c2c32ffbf64a358cf4a8836d714 \ + --hash=sha256:86cf8755a791f72c85dc287128cc62d4f24d392e3f1e15837245623f4a33cccc \ + --hash=sha256:88023dfe18799507b73f1dbb0d14326a17465de1bc9c9c7655c22845e9ddc3a2 \ + --hash=sha256:89095c1968b4ba8285840e131bf2891b09ae137fe2146905acae0354fbce1b5e \ + --hash=sha256:8d35c139744adb3e727cd51b1a18324bbe44b8bd41bf8322bca4d41289f48eda \ + --hash=sha256:8e74a6135550c4748af665b1b1118b6aab33b1fc6a16f9aff630af107c3b4512 \ + --hash=sha256:8f9ec95b8a043d3dfbc74d9abc6f7baf524dd27a8dc160b0a32ff9cdab650c28 \ + --hash=sha256:90bec57cf82089383bd06a605b3eb8daebf7e5a668520beaf6e327a83a947699 \ + --hash=sha256:95f2954c2c9473d892eca6e0409f3568b37ab62a8eedb122461f73cc273476e3 \ + --hash=sha256:961be50688f7fba2fa65f63712d3b9b341a22311f5253460ce933f52f0de1c8c \ + --hash=sha256:98fff996e983a36d3aa2eca83af40c5821202e7e6f32d13ae94e3d2286f10cfe \ + --hash=sha256:9b8f0f26ca4e7513c534d351eca551947d053fac438f2a04ac96d882909b0d3a \ + --hash=sha256:9d72af0cf10a76a600a9690078fe31c63b9588c8e86bf9fd353f713c84b5db0f \ + --hash=sha256:9d8272c0e483b024e1b9ad029821470ed8ec65631dbd90217469da0e7cd89f1c \ + --hash=sha256:a016194dbe13d14ee9556e734b772d8d67b947092b268d757fd4290e3ba2dfc2 \ + --hash=sha256:a5781494d4d400a3f47f8f1da94b324f6e6b440a53387774002890a2a2f4b50f \ + --hash=sha256:a95b05f9baf29b91171b3a8bd2020b028835243e7b0ff6bb23e2a3c228518b1b \ + --hash=sha256:aa7a1b53a2a4452ada2d1b5dade9960b2522f1e61293a811a077439e39029565 \ + --hash=sha256:ac0f1a2d0cfa7eea3f2aaf006ab6e70e8feeb16b75d65b7e5939982ca2f11056 \ + --hash=sha256:af5e2915d41fe6c961694d7bfdc8562942638200f3ce2765dfb8b745cf997629 \ + --hash=sha256:b6422532152adf4e59b110cb2808cee7a033800952f5c036b4af047ee43199e7 \ + --hash=sha256:b65f590ef2a44640f9a05dbb548a429b4ade77913ce683ac8b1480777658a6c0 \ + --hash=sha256:ba00f661f8ba35d075c937174e27c2c421cec3942fd2e0ea3e66996757c0fdd9 \ + --hash=sha256:bccbbb5ee76a61f9d99b5bf3846a51d7fca4b6a732fe46f89295610edaf41853 \ + --hash=sha256:bf01d8c84cbea96b944c73b22182e6c7c432b3475632b8111dbfdc95ddad6e13 \ + --hash=sha256:bf5c6cf48238b0eb4c086978c492ad1cbc22373fc5b2d7353b3a598ce6db887a \ + --hash=sha256:c16914df9fb7f500e440e6875fa23ff5e0b31db01fa9c06af98d59a91f0dc2e4 \ + --hash=sha256:c351efb95e832a853a29361675f33a7ce53de1a109cd73fd47af0712213aa4ce \ + --hash=sha256:c4165821e131d6d4ca444347c2b694e2311bcfa3fe5a861cc72968f28867beac \ + --hash=sha256:c5f5df567f6eb216de69be06ce55c8b714090fae02b18a3b40da8163b8c5fa9c \ + --hash=sha256:c941bb58d5a6e1c3892d86e42927ed6c180302f07e6d395d08c416e594b98b46 \ + --hash=sha256:c97f080ea627e2863524c5af3836e2270b5f5dfff1f104392b959f8df0c5d384 \ + --hash=sha256:cb96698e3c7413d906ce83f8ffd245ec1bd94707541f299d0ce4d6b0193e982b \ + --hash=sha256:cbb7640ce37159548d2147b5b8c241f962143d4c71231431820783f4dc78f210 \ + --hash=sha256:cdf2448aab5f661c9315308ec8b93f4e8a1a67a3c733f8631067a2b67d5913dc \ + --hash=sha256:d2117334c3af3bdcb9a88522b844a2bdb5efdc4f71c6c822df55486ae1c3347a \ + --hash=sha256:d53d10f7da99ae46f7373b9150393e9c5eab9b224909982b43832668de4779f5 \ + --hash=sha256:d9fafc5aa2e2a39aaf7f8cc0c1f044a9b07fca12e558dca53a3cc5c654ad67a7 \ + --hash=sha256:db3eb7d46527159a878ec3460e9d40615bc25ba337d477db681aea6e4f05c5d2 \ + --hash=sha256:dbf7c7a88e2bac086f06d14577332760bdeecc42bdec8ac4077f6260557d9326 \ + --hash=sha256:df2b82571a1b30f58a87bf4e5a9e78d2b1eff6c6ce8fd3aa3757221f93f0863f \ + --hash=sha256:df92f2aba50eb4d96718b68ef76f2e57a57b54f2fa62333496d16c6d585a85ca \ + --hash=sha256:eb4e8997a49aa2c08a3e43c9045d224448b8941d88e7ac163c7d383e560cbf98 \ + --hash=sha256:efc1cdd798b1aaf39b4610bba7aad28c9bea9b910f25c784ccf9ec1fa719d1f9 \ + --hash=sha256:f146d154428a2523f9cc7936c02353c2459b8f6cf07d3cd1ee1c0a611109c5d5 \ + --hash=sha256:f5bce581e6b8c235e566a14768a943b172ada3ed73537bb0c0be1edee312d4e7 \ + --hash=sha256:f9912624a0c0b834b7520d7769b3644453aabc0a7e1c839da7359f050750e9bc \ + --hash=sha256:fb62edb5bb52cca65fab91a63afa7561607120d26090a7e8fda6fb9f064726da \ + --hash=sha256:ff067a8d8d880e7809e4ac88eb009bb848870115317b306666502ccad30b147f # via cryptography -charset-normalizer==3.4.7 \ - --hash=sha256:007d05ec7321d12a40227aae9e2bc6dca73f3cb21058999a1df9e193555a9dcc \ - --hash=sha256:03853ed82eeebbce3c2abfdbc98c96dc205f32a79627688ac9a27370ea61a49c \ - --hash=sha256:07d9e39b01743c3717745f4c530a6349eadbfa043c7577eef86c502c15df2c67 \ - --hash=sha256:08e721811161356f97b4059a9ba7bafb23ea5ee2255402c42881c214e173c6b4 \ - --hash=sha256:0c96c3b819b5c3e9e165495db84d41914d6894d55181d2d108cc1a69bfc9cce0 \ - --hash=sha256:0ea948db76d31190bf08bd371623927ee1339d5f2a0b4b1b4a4439a65298703c \ - --hash=sha256:0f7eb884681e3938906ed0434f20c63046eacd0111c4ba96f27b76084cd679f5 \ - --hash=sha256:12a6fff75f6bc66711b73a2f0addfc4c8c15a20e805146a02d147a318962c444 \ - --hash=sha256:12d8baf840cc7889b37c7c770f478adea7adce3dcb3944d02ec87508e2dcf153 \ - --hash=sha256:14265bfe1f09498b9d8ec91e9ec9fa52775edf90fcbde092b25f4a33d444fea9 \ - --hash=sha256:16d971e29578a5e97d7117866d15889a4a07befe0e87e703ed63cd90cb348c01 \ - --hash=sha256:177a0ba5f0211d488e295aaf82707237e331c24788d8d76c96c5a41594723217 \ - --hash=sha256:1a87ca9d5df6fe460483d9a5bbf2b18f620cbed41b432e2bddb686228282d10b \ - --hash=sha256:1c2a768fdd44ee4a9339a9b0b130049139b8ce3c01d2ce09f67f5a68048d477c \ - --hash=sha256:1c2aed2e5e41f24ea8ef1590b8e848a79b56f3a5564a65ceec43c9d692dc7d8a \ - --hash=sha256:1dc8b0ea451d6e69735094606991f32867807881400f808a106ee1d963c46a83 \ - --hash=sha256:1efde3cae86c8c273f1eb3b287be7d8499420cf2fe7585c41d370d3e790054a5 \ - --hash=sha256:202389074300232baeb53ae2569a60901f7efadd4245cf3a3bf0617d60b439d7 \ - --hash=sha256:203104ed3e428044fd943bc4bf45fa73c0730391f9621e37fe39ecf477b128cb \ - --hash=sha256:2257141f39fe65a3fdf38aeccae4b953e5f3b3324f4ff0daf9f15b8518666a2c \ - --hash=sha256:298930cec56029e05497a76988377cbd7457ba864beeea92ad7e844fe74cd1f1 \ - --hash=sha256:2cd4a60d0e2fb04537162c62bbbb4182f53541fe0ede35cdf270a1c1e723cc42 \ - --hash=sha256:2d6eb928e13016cea4f1f21d1e10c1cebd5a421bc57ddf5b1142ae3f86824fab \ - --hash=sha256:2fe249cb4651fd12605b7288b24751d8bfd46d35f12a20b1ba33dea122e690df \ - --hash=sha256:30b8d1d8c52a48c2c5690e152c169b673487a2a58de1ec7393196753063fcd5e \ - --hash=sha256:320ade88cfb846b8cd6b4ddf5ee9e80ee0c1f52401f2456b84ae1ae6a1a5f207 \ - --hash=sha256:3534e7dcbdcf757da6b85a0bbf5b6868786d5982dd959b065e65481644817a18 \ - --hash=sha256:36836d6ff945a00b88ba1e4572d721e60b5b8c98c155d465f56ad19d68f23734 \ - --hash=sha256:38c0109396c4cfc574d502df99742a45c72c08eff0a36158b6f04000043dbf38 \ - --hash=sha256:3946fa46a0cf3e4c8cb1cc52f56bb536310d34f25f01ca9b6c16afa767dab110 \ - --hash=sha256:3bec022aec2c514d9cf199522a802bd007cd588ab17ab2525f20f9c34d067c18 \ - --hash=sha256:3c9a494bc5ec77d43cea229c4f6db1e4d8fe7e1bbffa8b6f0f0032430ff8ab44 \ - --hash=sha256:3dce51d0f5e7951f8bb4900c257dad282f49190fdbebecd4ba99bcc41fef404d \ - --hash=sha256:3dedcc22d73ec993f42055eff4fcfed9318d1eeb9a6606c55892a26964964e48 \ - --hash=sha256:4042d5c8f957e15221d423ba781e85d553722fc4113f523f2feb7b188cc34c5e \ - --hash=sha256:481551899c856c704d58119b5025793fa6730adda3571971af568f66d2424bb5 \ - --hash=sha256:4dc1e73c36828f982bfe79fadf5919923f8a6f4df2860804db9a98c48824ce8d \ - --hash=sha256:4e5163c14bffd570ef2affbfdd77bba66383890797df43dc8b4cc7d6f500bf53 \ - --hash=sha256:511ef87c8aec0783e08ac18565a16d435372bc1ac25a91e6ac7f5ef2b0bff790 \ - --hash=sha256:532bc9bf33a68613fd7d65e4b1c71a6a38d7d42604ecf239c77392e9b4e8998c \ - --hash=sha256:54523e136b8948060c0fa0bc7b1b50c32c186f2fceee897a495406bb6e311d2b \ - --hash=sha256:5649fd1c7bade02f320a462fdefd0b4bd3ce036065836d4f42e0de958038e116 \ - --hash=sha256:56be790f86bfb2c98fb742ce566dfb4816e5a83384616ab59c49e0604d49c51d \ - --hash=sha256:5b77459df20e08151cd6f8b9ef8ef1f961ef73d85c21a555c7eed5b79410ec10 \ - --hash=sha256:5ed6ab538499c8644b8a3e18debabcd7ce684f3fa91cf867521a7a0279cab2d6 \ - --hash=sha256:6178f72c5508bfc5fd446a5905e698c6212932f25bcdd4b47a757a50605a90e2 \ - --hash=sha256:6370e8686f662e6a3941ee48ed4742317cafbe5707e36406e9df792cdb535776 \ - --hash=sha256:64f02c6841d7d83f832cd97ccf8eb8a906d06eb95d5276069175c696b024b60a \ - --hash=sha256:65bcd23054beab4d166035cabbc868a09c1a49d1efe458fe8e4361215df40265 \ - --hash=sha256:66671f93accb62ed07da56613636f3641f1a12c13046ce91ffc923721f23c008 \ - --hash=sha256:6696b7688f54f5af4462118f0bfa7c1621eeb87154f77fa04b9295ce7a8f2943 \ - --hash=sha256:6785f414ae0f3c733c437e0f3929197934f526d19dfaa75e18fdb4f94c6fb374 \ - --hash=sha256:67f6279d125ca0046a7fd386d01b311c6363844deac3e5b069b514ba3e63c246 \ - --hash=sha256:6c114670c45346afedc0d947faf3c7f701051d2518b943679c8ff88befe14f8e \ - --hash=sha256:6e0d51f618228538a3e8f46bd246f87a6cd030565e015803691603f55e12afb5 \ - --hash=sha256:6ed74185b2db44f41ef35fd1617c5888e59792da9bbc9190d6c7300617182616 \ - --hash=sha256:708838739abf24b2ceb208d0e22403dd018faeef86ddac04319a62ae884c4f15 \ - --hash=sha256:715479b9a2802ecac752a3b0efa2b0b60285cf962ee38414211abdfccc233b41 \ - --hash=sha256:733784b6d6def852c814bce5f318d25da2ee65dd4839a0718641c696e09a2960 \ - --hash=sha256:750e02e074872a3fad7f233b47734166440af3cdea0add3e95163110816d6752 \ - --hash=sha256:752a45dc4a6934060b3b0dab47e04edc3326575f82be64bc4fc293914566503e \ - --hash=sha256:7579e913a5339fb8fa133f6bbcfd8e6749696206cf05acdbdca71a1b436d8e72 \ - --hash=sha256:7641bb8895e77f921102f72833904dcd9901df5d6d72a2ab8f31d04b7e51e4e7 \ - --hash=sha256:7804338df6fcc08105c7745f1502ba68d900f45fd770d5bdd5288ddccb8a42d8 \ - --hash=sha256:80d04837f55fc81da168b98de4f4b797ef007fc8a79ab71c6ec9bc4dd662b15b \ - --hash=sha256:813c0e0132266c08eb87469a642cb30aaff57c5f426255419572aaeceeaa7bf4 \ - --hash=sha256:82b271f5137d07749f7bf32f70b17ab6eaabedd297e75dce75081a24f76eb545 \ - --hash=sha256:84c018e49c3bf790f9c2771c45e9313a08c2c2a6342b162cd650258b57817706 \ - --hash=sha256:8751d2787c9131302398b11e6c8068053dcb55d5a8964e114b6e196cf16cb366 \ - --hash=sha256:8778f0c7a52e56f75d12dae53ae320fae900a8b9b4164b981b9c5ce059cd1fcb \ - --hash=sha256:87fad7d9ba98c86bcb41b2dc8dbb326619be2562af1f8ff50776a39e55721c5a \ - --hash=sha256:8d828b6667a32a728a1ad1d93957cdf37489c57b97ae6c4de2860fa749b8fc1e \ - --hash=sha256:8e385e4267ab76874ae30db04c627faaaf0b509e1ccc11a95b3fc3e83f855c00 \ - --hash=sha256:92a0a01ead5e668468e952e4238cccd7c537364eb7d851ab144ab6627dbbe12f \ - --hash=sha256:94e1885b270625a9a828c9793b4d52a64445299baa1fea5a173bf1d3dd9a1a5a \ - --hash=sha256:a180c5e59792af262bf263b21a3c49353f25945d8d9f70628e73de370d55e1e1 \ - --hash=sha256:a277ab8928b9f299723bc1a2dabb1265911b1a76341f90a510368ca44ad9ab66 \ - --hash=sha256:a5fe03b42827c13cdccd08e6c0247b6a6d4b5e3cdc53fd1749f5896adcdc2356 \ - --hash=sha256:a6c5863edfbe888d9eff9c8b8087354e27618d9da76425c119293f11712a6319 \ - --hash=sha256:a89c23ef8d2c6b27fd200a42aa4ac72786e7c60d40efdc76e6011260b6e949c4 \ - --hash=sha256:adb2597b428735679446b46c8badf467b4ca5f5056aae4d51a19f9570301b1ad \ - --hash=sha256:ae196f021b5e7c78e918242d217db021ed2a6ace2bc6ae94c0fc596221c7f58d \ - --hash=sha256:ae89db9e5f98a11a4bf50407d4363e7b09b31e55bc117b4f7d80aab97ba009e5 \ - --hash=sha256:aed52fea0513bac0ccde438c188c8a471c4e0f457c2dd20cdbf6ea7a450046c7 \ - --hash=sha256:aef65cd602a6d0e0ff6f9930fcb1c8fec60dd2cfcb6facaf4bdb0e5873042db0 \ - --hash=sha256:af21eb4409a119e365397b2adbaca4c9ccab56543a65d5dbd9f920d6ac29f686 \ - --hash=sha256:b14b2d9dac08e28bb8046a1a0434b1750eb221c8f5b87a68f4fa11a6f97b5e34 \ - --hash=sha256:bb6d88045545b26da47aa879dd4a89a71d1dce0f0e549b1abcb31dfe4a8eac49 \ - --hash=sha256:bb8cc7534f51d9a017b93e3e85b260924f909601c3df002bcdb58ddb4dc41a5c \ - --hash=sha256:bc17a677b21b3502a21f66a8cc64f5bfad4df8a0b8434d661666f8ce90ac3af1 \ - --hash=sha256:bd6c2a1c7573c64738d716488d2cdd3c00e340e4835707d8fdb8dc1a66ef164e \ - --hash=sha256:bd9b23791fe793e4968dba0c447e12f78e425c59fc0e3b97f6450f4781f3ee60 \ - --hash=sha256:c03a41a8784091e67a39648f70c5f97b5b6a37f216896d44d2cdcb82615339a0 \ - --hash=sha256:c0f081d69a6e58272819b70288d3221a6ee64b98df852631c80f293514d3b274 \ - --hash=sha256:c35abb8bfff0185efac5878da64c45dafd2b37fb0383add1be155a763c1f083d \ - --hash=sha256:c36c333c39be2dbca264d7803333c896ab8fa7d4d6f0ab7edb7dfd7aea6e98c0 \ - --hash=sha256:c45e9440fb78f8ddabcf714b68f936737a121355bf59f3907f4e17721b9d1aae \ - --hash=sha256:c593052c465475e64bbfe5dbd81680f64a67fdc752c56d7a0ae205dc8aeefe0f \ - --hash=sha256:cdd68a1fb318e290a2077696b7eb7a21a49163c455979c639bf5a5dcdc46617d \ - --hash=sha256:ce3412fbe1e31eb81ea42f4169ed94861c56e643189e1e75f0041f3fe7020abe \ - --hash=sha256:cf1493cd8607bec4d8a7b9b004e699fcf8f9103a9284cc94962cb73d20f9d4a3 \ - --hash=sha256:cf29836da5119f3c8a8a70667b0ef5fdca3bb12f80fd06487cfa575b3909b393 \ - --hash=sha256:d4a48e5b3c2a489fae013b7589308a40146ee081f6f509e047e0e096084ceca1 \ - --hash=sha256:d560742f3c0d62afaccf9f41fe485ed69bd7661a241f86a3ef0f0fb8b1a397af \ - --hash=sha256:d6038d37043bced98a66e68d3aa2b6a35505dc01328cd65217cefe82f25def44 \ - --hash=sha256:d61f00a0869d77422d9b2aba989e2d24afa6ffd552af442e0e58de4f35ea6d00 \ - --hash=sha256:d635aab80466bc95771bb78d5370e74d36d1fe31467b6b29b8b57b2a3cd7d22c \ - --hash=sha256:dca4bbc466a95ba9c0234ef56d7dd9509f63da22274589ebd4ed7f1f4d4c54e3 \ - --hash=sha256:dd915403e231e6b1809fe9b6d9fc55cf8fb5e02765ac625d9cd623342a7905d7 \ - --hash=sha256:e044c39e41b92c845bc815e5ae4230804e8e7bc29e399b0437d64222d92809dd \ - --hash=sha256:e060d01aec0a910bdccb8be71faf34e7799ce36950f8294c8bf612cba65a2c9e \ - --hash=sha256:e1421b502d83040e6d7fb2fb18dff63957f720da3d77b2fbd3187ceb63755d7b \ - --hash=sha256:e17b8d5d6a8c47c85e68ca8379def1303fd360c3e22093a807cd34a71cd082b8 \ - --hash=sha256:e5f4d355f0a2b1a31bc3edec6795b46324349c9cb25eed068049e4f472fb4259 \ - --hash=sha256:e712b419df8ba5e42b226c510472b37bd57b38e897d3eca5e8cfd410a29fa859 \ - --hash=sha256:e74327fb75de8986940def6e8dee4f127cc9752bee7355bb323cc5b2659b6d46 \ - --hash=sha256:e80c8378d8f3d83cd3164da1ad2df9e37a666cdde7b1cb2298ed0b558064be30 \ - --hash=sha256:e8ac484bf18ce6975760921bb6148041faa8fef0547200386ea0b52b5d27bf7b \ - --hash=sha256:eca9705049ad3c7345d574e3510665cb2cf844c2f2dcfe675332677f081cbd46 \ - --hash=sha256:ed065083d0898c9d5b4bbec7b026fd755ff7454e6e8b73a67f8c744b13986e24 \ - --hash=sha256:edac0f1ab77644605be2cbba52e6b7f630731fc42b34cb0f634be1a6eface56a \ - --hash=sha256:effc3f449787117233702311a1b7d8f59cba9ced946ba727bdc329ec69028e24 \ - --hash=sha256:f22dec1690b584cea26fade98b2435c132c1b5f68e39f5a0b7627cd7ae31f1dc \ - --hash=sha256:f495a1652cf3fbab2eb0639776dad966c2fb874d79d87ca07f9d5f059b8bd215 \ - --hash=sha256:f496c9c3cc02230093d8330875c4c3cdfc3b73612a5fd921c65d39cbcef08063 \ - --hash=sha256:f59099f9b66f0d7145115e6f80dd8b1d847176df89b234a5a6b3f00437aa0832 \ - --hash=sha256:f59ad4c0e8f6bba240a9bb85504faa1ab438237199d4cce5f622761507b8f6a6 \ - --hash=sha256:fbccdc05410c9ee21bbf16a35f4c1d16123dcdeb8a1d38f33654fa21d0234f79 \ - --hash=sha256:fea24543955a6a729c45a73fe90e08c743f0b3334bbf3201e6c4bc1b0c7fa464 +charset-normalizer==3.4.9 \ + --hash=sha256:0327fcd59a935777d83410750c50600ee9571af2846f71ce40f25b13da1ef380 \ + --hash=sha256:03d07803992c6c7bbc976327f34b18b6160327fc81cb82c9d504720ac0be3b62 \ + --hash=sha256:04ce310cb89c15df659582aee80a0603788732a5e017d5bd5c81158106ce249c \ + --hash=sha256:0d861473f743244d349b50f850d10eb87aeb22bbdcc8e64f79273c94af5a8226 \ + --hash=sha256:0e94703ec9684807f20cfb5eed95c70f67f2a8f21ad620146d7b5a13677b93e5 \ + --hash=sha256:0fa1aec2d32bcc03c8fa0f6f1712caad1adc38509f31142112e5c9daf5b9c833 \ + --hash=sha256:16b65ea0f2465b6fb52aa22de5eca612aa964ddfec00a912e26f4656cbef890b \ + --hash=sha256:16d10d789dd9bcca1173c95af82c58433122564b7bc39385124be735a35cbe99 \ + --hash=sha256:19ac87f93086ce37b86e098888555c4b4bc48102279bae3350098c0ed664b501 \ + --hash=sha256:1d22856ffbe153a602df38e4a5464f0b748a54002e0d69ac6d2ad0a197cc99ec \ + --hash=sha256:21e764fd1e70b6a3e205a0e46f3051701f98a8cb3fad66eeb80e48bb502f8698 \ + --hash=sha256:231ddcbb35e2ff8973e1365db41fe0572662893b99a05deb183b68ad4c0c8bd4 \ + --hash=sha256:253a4a220747e8b5faf57ec320c4f5efb0cef05f647420bf267143ec15dba10a \ + --hash=sha256:280081916dc341820640489a66e4696049401ef1cf6dd672f672e70ad915aca3 \ + --hash=sha256:2a441ea71902098ffe78c5abe6c494f44160b4af614ed16c3d9a3b1d17fd8ee2 \ + --hash=sha256:304b13570067b2547562e308af560b3963857b1fa90bd6afd978130130fe2d6a \ + --hash=sha256:32286a2c8d167e897177b673176c1e3e00d4057caf5d2b64eef9a3666b03018e \ + --hash=sha256:33bdcc2a32c0a0e861f60841a512c8acc658c87c2ac59d89e3a46dacf7d866e4 \ + --hash=sha256:375b83ed0aecfce76c16d198fbc21f3b11b337d68662bea0a995046682a11419 \ + --hash=sha256:3c09a49d6cde137258beb3d551994a2927fd35ad5cf96aed573f61bbd67c5f84 \ + --hash=sha256:3d92613ec25e43b05f042302531ec0f00b8445190e43325880cbd6ab7c2581da \ + --hash=sha256:40a126142a56b2dfc0aacbad1de8310cbf60da7656db0e6b16eebd48e3e93519 \ + --hash=sha256:416c229f77e5ea25b3dfd4b582f8d73d7e43c22320302b9ab128a2d3a0b38efe \ + --hash=sha256:432786d3561e69aeeae6c7e8648964ce0ad05736120135601f87ac26b9c83381 \ + --hash=sha256:43b9e366a31fdd1c87d0eb08f579b4a82b723ea54338f040d6b4e518a026ea29 \ + --hash=sha256:440eede837960000d74978f0eba527be106b5b9aee0daf779d395276ed0b0614 \ + --hash=sha256:45b0cc4e3556cd875e09102988d1ab8356c998b596c9fced84547c8138b487a0 \ + --hash=sha256:476743fe6dfe14a2da12e3ac79125dc84a3b2cf8094369a47a1529b0cd8549fe \ + --hash=sha256:4773092f8019072343a7447203308b176e10199920eb02d6195e81bbb3274c29 \ + --hash=sha256:4b3dac63058cc36820b0dd072f89898604e2d39686fe05321729d00d8ac185a0 \ + --hash=sha256:4d1c96a7a18b9690a4d46df09e3e3382406ae3213727cd1019ebade1c4a81917 \ + --hash=sha256:51307f5c71007673a2bf8232ad973483d281e74cb99c8c5a990af1eefa6277d9 \ + --hash=sha256:51447e9aa2684679af07ca5021c3db526e0284347ebf4ffcec1154c3350cfe32 \ + --hash=sha256:58150c9f9b9a552505912d182ccdf26f6396fb6094816ceebcbb20eecabaed94 \ + --hash=sha256:5b10cd92fc5c498b35a8635df6d5a100207f88b63a4dc1de7ef9a548e1e2cd63 \ + --hash=sha256:5e226f6218febc71f6c1fc2fafb91c226f75bdc1d8fb12d66823716e891608fd \ + --hash=sha256:609b3ba8fcc0fb5ab7af00719d0fb6ad0cb518e48e7712d12fd68f1327951198 \ + --hash=sha256:60f44ade2cf573dad7a277e6f8ca9a51a21dda572b13bd7d8539bb3cd5dbedde \ + --hash=sha256:611057cc5d5c0afc743ba8be6bd828c17e0aaa8643f9d0a9b9bb7dea80eb8012 \ + --hash=sha256:6366a16e1a25018694d6a5d784d09b046edc9eac40ea2b54065c3052672516a1 \ + --hash=sha256:65a7ff3f705e57d392f7261b6d0550fe137c3019477431f1c355e0db0a7d3e15 \ + --hash=sha256:673611bbd43f0810bec0b0f028ddeaaa501190339cac411f347ac76917c3ae7b \ + --hash=sha256:67830fc78e67501f47bb950471b2dcb9b35b140084429318e862895a8e89c993 \ + --hash=sha256:68ce9f4d6b26d5ccbf7fd4459bf75f74a0a146677ebba80597df60cbdb20e6f4 \ + --hash=sha256:68e5f26a1ad57ded6d1cfb85331d1c1a195314756471d97758c48498bb4dcdf5 \ + --hash=sha256:69b157c5d3292bcd443faca052f3096f637f1e074b98212a933c074ae23dc3b8 \ + --hash=sha256:75286256590a6320cf106a0d28970d3560aad9ee09aa7b34fb40524792436d35 \ + --hash=sha256:78841cccf1af7b40f6f716338d50c0902dbe88d9f800b3c973b7a9a0a693a642 \ + --hash=sha256:78fa18e436a1a0e58dbd7e02fc4473f3f32cceb12df9dfca542d075961c307d2 \ + --hash=sha256:79580094b00d1789d1f93ea55bc43cb2f611910c72235b7657f3482ddcc1b22d \ + --hash=sha256:7b86a2b16095d250c6f58b3d9b2eee6f4147754344f3dab0922f7c9bf7d226c9 \ + --hash=sha256:83aed2c10721ddd90f68140685391b50811a880af20654c59af6b6c66c40513c \ + --hash=sha256:84fd18bcc17526fc2b3c1af7d2b9217d32c9c04448c16ec693b9b4f1985c3d33 \ + --hash=sha256:871ff67ea1aad4dfd91736464934d56b32dac49f9fbe16cddba36198a7b3a0db \ + --hash=sha256:898f0e9068ca27d37f8e83a5b962821df851532e6c4a7d615c1c033f9da6eedf \ + --hash=sha256:8a79d9f4d8001473a30c163556b3c3bfebec837495a412dde78b51672f6134f9 \ + --hash=sha256:8c041122946b7ba21bb32c45b1aa57b1be35527690aeb3c5c234521085632eee \ + --hash=sha256:90c44bc373b7687f6948b693cceaea1348ae0975d7474746559494468e3c1d84 \ + --hash=sha256:9104ed0bd76a429d46f9ec0dbc9b08ad1d2dcdf2b00a5a0daa1c145329b35b44 \ + --hash=sha256:920079c3f7456fa213e0829ed2073aaa727fd39d889ead5b4f35d0de5460d04f \ + --hash=sha256:93d59d504b230e83c7a843251681959a0b6a9cd76f6e146ce1b8a80eb8739af9 \ + --hash=sha256:9b2aff1c7b3884512b9512c3eaadd9bab39fb45042ffaaa1dd08ff2b9f8109d9 \ + --hash=sha256:9b8e0f3107e2200b76f6054de99016eac3ee6762713587b36baaa7e4bd2ae177 \ + --hash=sha256:9bb41182d93ea91f60b4bc8fbf4c820c69ef8a12ab2d917f3f1834f1acad07e8 \ + --hash=sha256:9cdef90ae47919cae358d8ab15797a800ed41da7aba5d72419fb510729e2ed4b \ + --hash=sha256:a1786910334ed46ab1dd73222f2cd1e05c2c3bb39f6dddb4f8b36fc382058a39 \ + --hash=sha256:a4cfde78a9f2880208d16a93b795726a3017d5977e08d1e162a7a31322479c41 \ + --hash=sha256:a4fbdde9dd4a9ce5fd52c2b3a347bb50cc89483ef783f1cb00d408c13f7a96c0 \ + --hash=sha256:aa99adc8f081b475a12843953db36831eaf83ec33eb46a90629ca6a5de45a616 \ + --hash=sha256:ac351b3b8014eead140e77e9717e2992c6bbe30b63bc3422422eb84865412e3d \ + --hash=sha256:ad41ba96094304aa090f5a30cb6e4fb3b3f1c264c523394b4c39bbacc4dc92ba \ + --hash=sha256:b5314963fce9b0b12743891de876e724997864ee22aa496f903f426c7e2fa5b2 \ + --hash=sha256:bcf74c1df76758a395bf0af608c04c82257523f55c9868b334f06270d0f2112b \ + --hash=sha256:bd47ba7fc3ca94896759ea0109775132d3e7ab921fbf54038e1bab2e46c313c9 \ + --hash=sha256:c0323c9daef75ef2e5083624b4585018a0c9d5e3b40f607eed81a311270b934b \ + --hash=sha256:c1225416b463483160e4af85d5fc3a9690ccb53fd4b1865a6437825f5ede3209 \ + --hash=sha256:c1c948747b03be832dceed96ca815cef7360de9aa19d37c730f8e3f6101aca48 \ + --hash=sha256:c25fe15c70c59eb7c5ce8c06a1f3fa1da0ecc5ea1e7a5922c40fd2fa9b0d5046 \ + --hash=sha256:cc1b0fff8ead343dae06305f954eb8468ba0ec1a97881f42489d198e4ce3c632 \ + --hash=sha256:cd6280cf040f233bd7d3407b743b4b4c74f70e8e1c4199cb112a62c941c0772a \ + --hash=sha256:cd6c3d4b783c556fa00bf540854e42f135e2f256abd29669fcd0da0f2dec79c2 \ + --hash=sha256:d4d6fcde76f94f5cb9e43e9e9a61f16dacefd228cbbf6f1a09bd9b219a92f1a1 \ + --hash=sha256:ddf4af30b417d9fe16481e9b81c27ab2a7cde1ff7ba3e85653b02db7d145dc7b \ + --hash=sha256:df115d4d83168fdf2cae48ef1ff6d1cb4c466364e30861b37121de0f3bf1b990 \ + --hash=sha256:df7276909358e5635ae203673ab7e509ddd224225a8d6b0790bf13eb2bde1cc5 \ + --hash=sha256:e4fd89cc178bced6ad29cb3e6dd4aa63fa5017c3524dbd0b25998fb64a87cc8b \ + --hash=sha256:e9701d0049d92c16703a42771b98d560b95248949f23f8cf7b4eddd201814fb9 \ + --hash=sha256:ee2f2a527e3c1a6e6411eb4209642e138b544a2d72fe5d0d76daf77b24063534 \ + --hash=sha256:f7fb7d750cfa0a070d2c24e831fd3481019a60dd317ea2b39acbcebc08b6ed81 \ + --hash=sha256:f840ed6d8ecba8255df8c42b87fadeda98ddfc6eeec05e2dc66e26d46dd6f58a \ + --hash=sha256:f86c6358749bd4fda175388691e3ba8c46e24c5347d0afd20f9b7edfc9faf07d \ + --hash=sha256:fa36ec09ef71d158186bc79e359ff5fdd6e7996fe8ab638f00d6b93139ba4fcf \ + --hash=sha256:fe2c7201c642b7c308f1675355ad7ff7b66acfe3541625efe5a3ad38f29d6115 # via requests cramjam==2.11.0 \ --hash=sha256:028400d699442d40dbda02f74158c73d05cb76587a12490d0bfedd958fd49188 \ @@ -443,15 +423,15 @@ cryptography==49.0.0 \ # google-auth # msal # pyjwt -google-api-core==2.31.0 \ - --hash=sha256:2be84ee0f584c48e6bde1b36766e23348b361fb7e55e56135fc76ce1c397f9c2 \ - --hash=sha256:ef79fb3784c71cbac89cbd03301ba0c8fb8ad2aa95d7f9204dd9628f7adf59ab +google-api-core==2.32.0 \ + --hash=sha256:2b33aad226b19272458c46abfe5c5a38d9531ece0c44502129a1463ce83674ac \ + --hash=sha256:ae1f0d58a6c8869350bf469f8eb3092e7f8c494a942d9525494afb6c162b0904 # via # google-cloud-core # google-cloud-storage -google-auth==2.55.1 \ - --hash=sha256:eada68dfd52b3b81191827601e2a0c3fa12540c818534b630ddc5355769c3995 \ - --hash=sha256:fb2d9b730f2c9b8d326ec8d7222f21aef2ead15bf0513793d6442485d87af0a1 +google-auth==2.56.0 \ + --hash=sha256:6e88c10217e07a92bfd01cac8ee99e32ccfb08414c3102e6c5b8d58f37a0d1e0 \ + --hash=sha256:f90fa030b569a92654b9d690665a073841df33d57487be53db583a9a0867a553 # via # google-api-core # google-cloud-core @@ -460,9 +440,9 @@ google-cloud-core==2.6.0 \ --hash=sha256:6d63ac8e5eca6d9e4319d0a1e2265fadcd7f1049904378caecfa01cf52dd869e \ --hash=sha256:e76149739f90fac1fc6757c09f47eaccb3145b54adbd7759b0f7c4b235f46c83 # via google-cloud-storage -google-cloud-storage==3.12.0 \ - --hash=sha256:03ae9847c6babb368f35f054126b8a08cbc0e3266efb990eb17b9926a45cf3be \ - --hash=sha256:3880773754ddf7c27567b04e2a4d193950b6b99429f37b9097d873686e95b09c +google-cloud-storage==3.13.0 \ + --hash=sha256:648af3ef8a6acc674e1359d3c920c67eb89a7a5ab66b336bd3ac43fed6b5ab84 \ + --hash=sha256:d11d8706ea1520fba0f21043bcb7897caf7015d76ce1ad9a4f60237e4d7a9f6c # via barman google-crc32c==1.8.0 \ --hash=sha256:014a7e68d623e9a4222d663931febc3033c5c7c9730785727de2a81f87d5bab8 \ @@ -592,9 +572,9 @@ msal-extensions==1.3.1 \ --hash=sha256:96d3de4d034504e969ac5e85bae8106c8373b5c6568e4c8fa7af2eca9dbe6bca \ --hash=sha256:c5b0fd10f65ef62b5f1d62f4251d51cbcaf003fcedae8c91b040a488614be1a4 # via azure-identity -proto-plus==1.28.0 \ - --hash=sha256:38e5696342835b08fc116f30a25665b29531cda9d5d5643e9b81fc312385abd9 \ - --hash=sha256:a630604310899e73c59ec302e5765c058d412b2f090b9c79c8822589f14955b8 +proto-plus==1.28.1 \ + --hash=sha256:6660f5f1970874bdcfc3088b435188a36a37bd3596668f7d726417c4ae8cfbed \ + --hash=sha256:832e68e7fe064cf90ab153b6e5eb935b27891bb89aaeb68b115e9b702f6cb168 # via google-api-core protobuf==7.35.1 \ --hash=sha256:11d6b0ec246892d85215b0a13ca6e0233cf5284b68f0ac02646427f4ff88a799 \ @@ -618,9 +598,9 @@ psycopg2==2.9.12 \ --hash=sha256:a73d5513bfe929c56555006c7a9cc7ae6e4276aa99dd2b1e2544eb8bb54f8b23 \ --hash=sha256:d5fbe092315fb007c03544704e6d1e678a6c0378139d01cea433dc59edf041b4 # via barman -pyasn1==0.6.3 \ - --hash=sha256:697a8ecd6d98891189184ca1fa05d1bb00e2f84b5977c481452050549c8a72cf \ - --hash=sha256:a80184d120f0864a52a073acc6fc642847d0be408e7c7252f31390c0f4eadcde +pyasn1==0.6.4 \ + --hash=sha256:9c447d8431c947fe4c8febc4ed9e760bc29011a5b01e5c74b67025bd9fb8ce81 \ + --hash=sha256:deda9277cfd454080ec40b207fb6df82206a3a2688735233cdcd8d3d565f088b # via pyasn1-modules pyasn1-modules==0.4.2 \ --hash=sha256:29253a9207ce32b64c3ac6600edc75368f98473906e8fd1043bd6b5b1de2c14a \ @@ -654,17 +634,17 @@ requests==2.34.2 \ # google-api-core # google-cloud-storage # msal -s3transfer==0.19.0 \ - --hash=sha256:777cc2415536f1debadb5c2ef7779275d0fc0fe0e042411cdd6caebeb2685262 \ - --hash=sha256:ce436931687addc4c1712d52d40b32f53e88315723f107ffa20ba82b05a0f685 +s3transfer==0.19.1 \ + --hash=sha256:d3d6371dc3f1e5c5427b2b457bcf13bcf87bec334c95aed18642eae61f6926f3 \ + --hash=sha256:d5fd7005ee39307455ad5f310b5ea67f4b1960d7fed5b3671ee50c249de675de # via boto3 six==1.17.0 \ --hash=sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274 \ --hash=sha256:ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81 # via python-dateutil -typing-extensions==4.15.0 \ - --hash=sha256:0cea48d173cc12fa28ecabc3b837ea3cf6f38c6d1136f85cbaaf598984861466 \ - --hash=sha256:f0fa19c6845758ab08074a0cfa8b7aecb71c999ca73d62883bc25cc018c4e548 +typing-extensions==4.16.0 \ + --hash=sha256:481caa481374e813c1b176ada14e97f1f67a4539ce9cfeb3f350d78d6370c2e8 \ + --hash=sha256:dc983d19a509c94dba722ee6abd33940f7c05a89e243c47e907eb4db6f1a43e5 # via # azure-core # azure-identity From 0d75cb9ca226822f3ed0f0c64f9610830b6d3f3e Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 20 Jul 2026 17:00:18 +0200 Subject: [PATCH 076/134] chore(deps): lock file maintenance (#1019) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Update | Change | |---|---| | lockFileMaintenance | All locks refreshed | πŸ”§ This Pull Request updates lock files to use the latest dependency versions. --- ### Configuration πŸ“… **Schedule**: (UTC) - Branch creation - "before 4am on monday" - Automerge - At any time (no schedule defined) 🚦 **Automerge**: Enabled. β™» **Rebasing**: Never, or you tick the rebase/retry checkbox. πŸ‘» **Immortal**: This PR will be recreated if closed unmerged. Get [config help](https://redirect.github.com/renovatebot/renovate/discussions) if that's undesired. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/cloudnative-pg/plugin-barman-cloud). Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Leonardo Cecchi --- web/yarn.lock | 282 +++++++++++++++++++++++++------------------------- 1 file changed, 141 insertions(+), 141 deletions(-) diff --git a/web/yarn.lock b/web/yarn.lock index 5b0c7aa..d8ee774 100644 --- a/web/yarn.lock +++ b/web/yarn.lock @@ -12,15 +12,15 @@ section-matter "^1.0.0" strip-bom-string "^1.0.0" -"@algolia/abtesting@1.21.2": - version "1.21.2" - resolved "https://registry.yarnpkg.com/@algolia/abtesting/-/abtesting-1.21.2.tgz#798e51b0226b6ed303a7d891235606b674a87857" - integrity sha512-uXj0rgk30EpsKvOpuS+R+1XFDrnm56hED1Lz56e8uBkZdKCxw99LS2U8eXBqAHYU8kpkbsnV1GC8velBG070Hg== +"@algolia/abtesting@1.22.0": + version "1.22.0" + resolved "https://registry.yarnpkg.com/@algolia/abtesting/-/abtesting-1.22.0.tgz#7537637f52d2fe00b3714fe2d5ce8cb856be35ff" + integrity sha512-BFR6zNowNKcY7Ou7TaJc9QWexES4YKPbmf/OTFofpdsdhz4x6q0lbxp3duO0EHnyrN7rE4ba/TSXuY+BDGu4+g== dependencies: - "@algolia/client-common" "5.55.2" - "@algolia/requester-browser-xhr" "5.55.2" - "@algolia/requester-fetch" "5.55.2" - "@algolia/requester-node-http" "5.55.2" + "@algolia/client-common" "5.56.0" + "@algolia/requester-browser-xhr" "5.56.0" + "@algolia/requester-fetch" "5.56.0" + "@algolia/requester-node-http" "5.56.0" "@algolia/autocomplete-core@1.19.2": version "1.19.2" @@ -62,126 +62,126 @@ resolved "https://registry.yarnpkg.com/@algolia/autocomplete-shared/-/autocomplete-shared-1.19.9.tgz#c5b05e23c71027e4e45a301f286593dffdcdfbdf" integrity sha512-YosP9Uoek6y/Ur1r1qeogk4biMe/hzkyNcgMCciw0//3XpCM7VlYLSHnyt/vOnEOGhCCc0+3v+unEiH6zz+Z1A== -"@algolia/client-abtesting@5.55.2": - version "5.55.2" - resolved "https://registry.yarnpkg.com/@algolia/client-abtesting/-/client-abtesting-5.55.2.tgz#5c7d1632051b05ef155a6ea7e4a9454d5c6d5a08" - integrity sha512-y7Epol8HcjlBxKXHhyhfFPFhm78B3P6x9cCbCyGTdxjsdVCptXCy5hpkZWxjGpnaLHvWsHS4QRF0TiBOLst2xg== +"@algolia/client-abtesting@5.56.0": + version "5.56.0" + resolved "https://registry.yarnpkg.com/@algolia/client-abtesting/-/client-abtesting-5.56.0.tgz#25be0db6f97ae91dfdbaffbe9eae99e963310891" + integrity sha512-7r4Z3NC7yU1oAQVWJNA2HX7tX481F3pJvCGyLIXiTdBcthz4Q/o21jwcMYDFkuI92UWTNBQQmHYgwHo1zS5dzg== dependencies: - "@algolia/client-common" "5.55.2" - "@algolia/requester-browser-xhr" "5.55.2" - "@algolia/requester-fetch" "5.55.2" - "@algolia/requester-node-http" "5.55.2" + "@algolia/client-common" "5.56.0" + "@algolia/requester-browser-xhr" "5.56.0" + "@algolia/requester-fetch" "5.56.0" + "@algolia/requester-node-http" "5.56.0" -"@algolia/client-analytics@5.55.2": - version "5.55.2" - resolved "https://registry.yarnpkg.com/@algolia/client-analytics/-/client-analytics-5.55.2.tgz#770694ceef05213a2dc1c64bf3cb9c0b33a16b71" - integrity sha512-8Pxj2VVmpM2d+UZufnlTq7T1QIcYPVugLV5XC50PnHsV5uRM9CSoYkg2Y+CwqwRk2La0xK5QsfZ0obIU+9XftQ== +"@algolia/client-analytics@5.56.0": + version "5.56.0" + resolved "https://registry.yarnpkg.com/@algolia/client-analytics/-/client-analytics-5.56.0.tgz#bcace36358cda26ca285f3a100544db0ce29aabe" + integrity sha512-avmjXQSq+jadFO8Xl2em05/uQdQnEmHsJyOAdVbZkmVgpMfxL12aJwVVfGNwYr9nulcpuJN1X0lTaQ5wxuNGcA== dependencies: - "@algolia/client-common" "5.55.2" - "@algolia/requester-browser-xhr" "5.55.2" - "@algolia/requester-fetch" "5.55.2" - "@algolia/requester-node-http" "5.55.2" + "@algolia/client-common" "5.56.0" + "@algolia/requester-browser-xhr" "5.56.0" + "@algolia/requester-fetch" "5.56.0" + "@algolia/requester-node-http" "5.56.0" -"@algolia/client-common@5.55.2": - version "5.55.2" - resolved "https://registry.yarnpkg.com/@algolia/client-common/-/client-common-5.55.2.tgz#17347bdd5a118b7966231a73c59cac44d256071c" - integrity sha512-9L4IpIYUqA63a7sw1trnHQGUvwiAjKz67nsgDnal98JGAc7wyposRb0Iag+eiMuyzFFaSHLe2/rGyIo+PafRBA== +"@algolia/client-common@5.56.0": + version "5.56.0" + resolved "https://registry.yarnpkg.com/@algolia/client-common/-/client-common-5.56.0.tgz#6190221a7091dfa1a0e0a3b5964e92b1b59968ba" + integrity sha512-v2TPStUhY//ripPjIVclZ8AWc7DEGooXULZGFlFu37zNatgHjw34oZZ+OSbbc/YHO+xZwPl62I1k8xH1m4S2eg== -"@algolia/client-insights@5.55.2": - version "5.55.2" - resolved "https://registry.yarnpkg.com/@algolia/client-insights/-/client-insights-5.55.2.tgz#3e575307d01d2e6ccd7394b7428edd22ec68057c" - integrity sha512-ZBm2ytY5EHFcj+kjNsXxMNO/TGlOHe2fBFXGKHJOM1bk1rAy4o2YI+d9oV/w/jrqx44pvJMJlc8X6vKnCuDgUQ== +"@algolia/client-insights@5.56.0": + version "5.56.0" + resolved "https://registry.yarnpkg.com/@algolia/client-insights/-/client-insights-5.56.0.tgz#2ff179c8924ff188d4604e32aef645c709cc76be" + integrity sha512-P0ehROpM4Sem3Sqo5x2cKPgj67D3G3jy0rh1Amwkcvsfr6tkvIcdCmerieanqTF7NxUMPNFLkpIFeMO8Rpa50w== dependencies: - "@algolia/client-common" "5.55.2" - "@algolia/requester-browser-xhr" "5.55.2" - "@algolia/requester-fetch" "5.55.2" - "@algolia/requester-node-http" "5.55.2" + "@algolia/client-common" "5.56.0" + "@algolia/requester-browser-xhr" "5.56.0" + "@algolia/requester-fetch" "5.56.0" + "@algolia/requester-node-http" "5.56.0" -"@algolia/client-personalization@5.55.2": - version "5.55.2" - resolved "https://registry.yarnpkg.com/@algolia/client-personalization/-/client-personalization-5.55.2.tgz#1c5458095fdfdd2dd0ed8dcd5b94962db2852400" - integrity sha512-3FGVW/jDk7sdYwqa2NKnF/qXWcttc4bvGrwNbvqz3VoWSRv42CNvRk+3Y9QJFIUf1vY50hAuVWUoFKdyc8vaXA== +"@algolia/client-personalization@5.56.0": + version "5.56.0" + resolved "https://registry.yarnpkg.com/@algolia/client-personalization/-/client-personalization-5.56.0.tgz#64f8197c46c60306a115bc4024f6ebce2d8140d8" + integrity sha512-SXK3Vn3WVxyzbm31oePZBJkp1wpOyuWdd4B/Pv7n0aXDxmeSWhC1R1FC1517mMrFAIaPH4Rt0x6RUe7ZNjz8FA== dependencies: - "@algolia/client-common" "5.55.2" - "@algolia/requester-browser-xhr" "5.55.2" - "@algolia/requester-fetch" "5.55.2" - "@algolia/requester-node-http" "5.55.2" + "@algolia/client-common" "5.56.0" + "@algolia/requester-browser-xhr" "5.56.0" + "@algolia/requester-fetch" "5.56.0" + "@algolia/requester-node-http" "5.56.0" -"@algolia/client-query-suggestions@5.55.2": - version "5.55.2" - resolved "https://registry.yarnpkg.com/@algolia/client-query-suggestions/-/client-query-suggestions-5.55.2.tgz#7bf49bf6f7832943646dcaa1ffc2873e54bb783e" - integrity sha512-JsG8LovDAYul5t8e533tZ3O1uZILxso5zsTtB7ONc5RJ8ACdTxAAC/jaOnsBNYb+x+STP7fzx/Iro55v5DNgoQ== +"@algolia/client-query-suggestions@5.56.0": + version "5.56.0" + resolved "https://registry.yarnpkg.com/@algolia/client-query-suggestions/-/client-query-suggestions-5.56.0.tgz#e4a28bc249e9c69f0b5ef280b72a12e32e8c53c8" + integrity sha512-5+ZdX8garFnmycnZgKhtXHePEaLj5zqDxI/0lkhhluzCcvTn0/PvvTirTg8hHYetQHvn7GDyeAiqTAieMvMW4A== dependencies: - "@algolia/client-common" "5.55.2" - "@algolia/requester-browser-xhr" "5.55.2" - "@algolia/requester-fetch" "5.55.2" - "@algolia/requester-node-http" "5.55.2" + "@algolia/client-common" "5.56.0" + "@algolia/requester-browser-xhr" "5.56.0" + "@algolia/requester-fetch" "5.56.0" + "@algolia/requester-node-http" "5.56.0" -"@algolia/client-search@5.55.2": - version "5.55.2" - resolved "https://registry.yarnpkg.com/@algolia/client-search/-/client-search-5.55.2.tgz#8cd3d994598210e5428ca9a64dd3f17620bfbf08" - integrity sha512-5wDnoIfC75zJ2MSHv5SSzTlRL2z7jQMbqQ5jrzottuq2p3oBObv8pD/JpXWu8pRaimaxNr3/Bs/KZIGVXxJ7hg== +"@algolia/client-search@5.56.0": + version "5.56.0" + resolved "https://registry.yarnpkg.com/@algolia/client-search/-/client-search-5.56.0.tgz#66b19d5382bf47a16105817b78e372f5e9039508" + integrity sha512-+mKUdYvqOi0BcvpAEyCEw49vSBptufIcfibtHz2bdr1pI789M46Yt0uQEk/sxtK3teh71OQvVFHaTDzShUWewQ== dependencies: - "@algolia/client-common" "5.55.2" - "@algolia/requester-browser-xhr" "5.55.2" - "@algolia/requester-fetch" "5.55.2" - "@algolia/requester-node-http" "5.55.2" + "@algolia/client-common" "5.56.0" + "@algolia/requester-browser-xhr" "5.56.0" + "@algolia/requester-fetch" "5.56.0" + "@algolia/requester-node-http" "5.56.0" "@algolia/events@^4.0.1": version "4.0.1" resolved "https://registry.yarnpkg.com/@algolia/events/-/events-4.0.1.tgz#fd39e7477e7bc703d7f893b556f676c032af3950" integrity sha512-FQzvOCgoFXAbf5Y6mYozw2aj5KCJoA3m4heImceldzPSMbdyS4atVjJzXKMsfX3wnZTFYwkkt8/z8UesLHlSBQ== -"@algolia/ingestion@1.55.2": - version "1.55.2" - resolved "https://registry.yarnpkg.com/@algolia/ingestion/-/ingestion-1.55.2.tgz#e247f70c5055569af70e3c676853bad4c422ab6c" - integrity sha512-da+SC6ikpza98W7C5ChsKEQDvZc8PQLQ0sxmQ5yMRsHpdD3iPKnclJA6ViB5Nr5T9qOX+IDswC6AyqY4V3rtug== +"@algolia/ingestion@1.56.0": + version "1.56.0" + resolved "https://registry.yarnpkg.com/@algolia/ingestion/-/ingestion-1.56.0.tgz#1b3c41b8f1c5a2d309610683e3d1b99f962d92df" + integrity sha512-9g/zj+AZx5moFcdFIrYQoVrueXivjUcc3MQHtCYT8WhIuk1lUh1AyEhvJCS0XBZld09cLvd1AZ3BvDBpVpX2UA== dependencies: - "@algolia/client-common" "5.55.2" - "@algolia/requester-browser-xhr" "5.55.2" - "@algolia/requester-fetch" "5.55.2" - "@algolia/requester-node-http" "5.55.2" + "@algolia/client-common" "5.56.0" + "@algolia/requester-browser-xhr" "5.56.0" + "@algolia/requester-fetch" "5.56.0" + "@algolia/requester-node-http" "5.56.0" -"@algolia/monitoring@1.55.2": - version "1.55.2" - resolved "https://registry.yarnpkg.com/@algolia/monitoring/-/monitoring-1.55.2.tgz#56c8b9e5b8e64d5f8fd41a37854eb5559cb798d4" - integrity sha512-Y8kEcPqCiIEeaGv83l9RRA09mfYECqAJHNnOyEtZc9UirI6XBMUyFVss/sSeYUiV/Lf30hkbWcl00V1uXsf86Q== +"@algolia/monitoring@1.56.0": + version "1.56.0" + resolved "https://registry.yarnpkg.com/@algolia/monitoring/-/monitoring-1.56.0.tgz#11cc9198e778466eafde5a12d02fd02cfcbd1710" + integrity sha512-Qf3Sr6f9A9uxCZUf3MXS0d2b877uYzEB5yxqpVGXAhcJnBCQjrRRon0KvefpGkxy+BshrIJs96OUoMtGqXTFDA== dependencies: - "@algolia/client-common" "5.55.2" - "@algolia/requester-browser-xhr" "5.55.2" - "@algolia/requester-fetch" "5.55.2" - "@algolia/requester-node-http" "5.55.2" + "@algolia/client-common" "5.56.0" + "@algolia/requester-browser-xhr" "5.56.0" + "@algolia/requester-fetch" "5.56.0" + "@algolia/requester-node-http" "5.56.0" -"@algolia/recommend@5.55.2": - version "5.55.2" - resolved "https://registry.yarnpkg.com/@algolia/recommend/-/recommend-5.55.2.tgz#9549d2fe261dca9ac94c144131ea980c56a6442b" - integrity sha512-5zmobuCQqFZkx+84Nt+suL7vo6jTh2CfAs2ndDSeTS2QHvnzP8YEEGWtWftjyACI0cK/FuH8urWwCHP+d2j8TA== +"@algolia/recommend@5.56.0": + version "5.56.0" + resolved "https://registry.yarnpkg.com/@algolia/recommend/-/recommend-5.56.0.tgz#6c96193cb91cf5c9f3c884fdf064e15dfe6cb742" + integrity sha512-GXWG1rWc5wu8hY4N33Y3b6ernY6sAdAvmKWN/zHAiACOx40WnpG0TVX5YazCAr/9gOYGInSiM2A0y2jy2xbiDA== dependencies: - "@algolia/client-common" "5.55.2" - "@algolia/requester-browser-xhr" "5.55.2" - "@algolia/requester-fetch" "5.55.2" - "@algolia/requester-node-http" "5.55.2" + "@algolia/client-common" "5.56.0" + "@algolia/requester-browser-xhr" "5.56.0" + "@algolia/requester-fetch" "5.56.0" + "@algolia/requester-node-http" "5.56.0" -"@algolia/requester-browser-xhr@5.55.2": - version "5.55.2" - resolved "https://registry.yarnpkg.com/@algolia/requester-browser-xhr/-/requester-browser-xhr-5.55.2.tgz#087322fcdfb35fdf8226d2ca966628c49f711d74" - integrity sha512-qnGUUuWG66dRMnr33owLsrYIh9fHVxtU4R2rd3SpneAHuoAUcGbDOWNrj05glVU6M8yOqo9gQ22K8zpz0I8Xpg== +"@algolia/requester-browser-xhr@5.56.0": + version "5.56.0" + resolved "https://registry.yarnpkg.com/@algolia/requester-browser-xhr/-/requester-browser-xhr-5.56.0.tgz#b1f4705c53f1602ec14339999bfbf0e3e9a7bbc8" + integrity sha512-7t24cBxaInS3mZb7ddEaZT/tp6q+/aR4YttsQVyP1/i+LmwPR34atO35KjaLFCcRVrlP7sYOAqkCfg6lIRB+ew== dependencies: - "@algolia/client-common" "5.55.2" + "@algolia/client-common" "5.56.0" -"@algolia/requester-fetch@5.55.2": - version "5.55.2" - resolved "https://registry.yarnpkg.com/@algolia/requester-fetch/-/requester-fetch-5.55.2.tgz#a01695738861a80181f231ce7e8fca6f7a6e4072" - integrity sha512-lKZ5uhafMvR7dWCJEyuaeyZitid1I3ICx+k0vGf5x/ktdIQvc7bndCiOPpmIDqUmN26FE3jTehkAzSqee95G2Q== +"@algolia/requester-fetch@5.56.0": + version "5.56.0" + resolved "https://registry.yarnpkg.com/@algolia/requester-fetch/-/requester-fetch-5.56.0.tgz#03f0aeea08efc991ab9f0663f1ea63df720fd9ba" + integrity sha512-R7ePHgVYmDFjZpvrsVAfbDz/d4RxKAYZ5/vgLfIsCVRZRryjWl/3INOxpOICzitehQ5FjNtNjcLQTrmHPTcHBQ== dependencies: - "@algolia/client-common" "5.55.2" + "@algolia/client-common" "5.56.0" -"@algolia/requester-node-http@5.55.2": - version "5.55.2" - resolved "https://registry.yarnpkg.com/@algolia/requester-node-http/-/requester-node-http-5.55.2.tgz#5ceae3de5e223366fc5b3e643fcc0542909b87e8" - integrity sha512-Zc90xvKWUvxcNicvvTO9Pr/hT2TAnkixOIzJm/KMj5Ptm2pKjk71ngTsdkbRtJQvhZ2Kr9N1YdIjLrNHB5P2xw== +"@algolia/requester-node-http@5.56.0": + version "5.56.0" + resolved "https://registry.yarnpkg.com/@algolia/requester-node-http/-/requester-node-http-5.56.0.tgz#238bfa98ed145e261c1db7e133bee6390ba58c94" + integrity sha512-PIOUXlSnrqM0S+WOgDRb4RzotydJH7ZoT6tOyL7tAO7qJOfvX5wsEW8Pe+PMKMwvuI4/gIyK9cg2H7lJXqnc4Q== dependencies: - "@algolia/client-common" "5.55.2" + "@algolia/client-common" "5.56.0" "@babel/code-frame@^7.0.0", "@babel/code-frame@^7.29.7": version "7.29.7" @@ -2616,9 +2616,9 @@ integrity sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ== "@sinclair/typebox@^0.27.8": - version "0.27.10" - resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.27.10.tgz#beefe675f1853f73676aecc915b2bd2ac98c4fc6" - integrity sha512-MTBk/3jGLNB2tVxv6uLlFh1iu64iYOQ2PbdOSK3NW8JZsmlaOh2q6sdtKowBhfw8QFLmYNzTW4/oK4uATIi6ZA== + version "0.27.12" + resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.27.12.tgz#0cacd3cff047a32936b1ace47ea7c86eaab60a7f" + integrity sha512-hhyNJ+nbR6ZR7pToHvllEFun9TL0sbL+tk/ON75lo+Xas054uez98qRbsuNt7MBCyZKK4+8Yli/OAGZhmfBZ/g== "@sindresorhus/is@^4.6.0": version "4.6.0" @@ -3400,24 +3400,24 @@ algoliasearch-helper@^3.26.0: "@algolia/events" "^4.0.1" algoliasearch@^5.37.0: - version "5.55.2" - resolved "https://registry.yarnpkg.com/algoliasearch/-/algoliasearch-5.55.2.tgz#5aa9426faedfa63c6433e6ba78b1843c8208e012" - integrity sha512-OyacJsaeuLUvGWOynNqYc6sx88XvyoG39wMT8SYqL3l9wwaorDW/LPRbUPfhzw0bWsUWzNCZTnFYOrWFBKsUaw== + version "5.56.0" + resolved "https://registry.yarnpkg.com/algoliasearch/-/algoliasearch-5.56.0.tgz#042f1a39dfa951356206f43dece1c8d1ea1721bd" + integrity sha512-PrqppUmhT4ENdas2pH9caE7efUcxy6EcSFhWzosiVuQBzu2tQ5yLTI6jwomT/1cuBnivzGfxiJCqDNN9FRRh+Q== dependencies: - "@algolia/abtesting" "1.21.2" - "@algolia/client-abtesting" "5.55.2" - "@algolia/client-analytics" "5.55.2" - "@algolia/client-common" "5.55.2" - "@algolia/client-insights" "5.55.2" - "@algolia/client-personalization" "5.55.2" - "@algolia/client-query-suggestions" "5.55.2" - "@algolia/client-search" "5.55.2" - "@algolia/ingestion" "1.55.2" - "@algolia/monitoring" "1.55.2" - "@algolia/recommend" "5.55.2" - "@algolia/requester-browser-xhr" "5.55.2" - "@algolia/requester-fetch" "5.55.2" - "@algolia/requester-node-http" "5.55.2" + "@algolia/abtesting" "1.22.0" + "@algolia/client-abtesting" "5.56.0" + "@algolia/client-analytics" "5.56.0" + "@algolia/client-common" "5.56.0" + "@algolia/client-insights" "5.56.0" + "@algolia/client-personalization" "5.56.0" + "@algolia/client-query-suggestions" "5.56.0" + "@algolia/client-search" "5.56.0" + "@algolia/ingestion" "1.56.0" + "@algolia/monitoring" "1.56.0" + "@algolia/recommend" "5.56.0" + "@algolia/requester-browser-xhr" "5.56.0" + "@algolia/requester-fetch" "5.56.0" + "@algolia/requester-node-http" "5.56.0" ansi-align@^3.0.1: version "3.0.1" @@ -3501,12 +3501,12 @@ astring@^1.8.0: integrity sha512-LElXdjswlqjWrPpJFg1Fx4wpkOCxj1TDHlSV4PlaRxHGWko024xICaa97ZkMfs6DRKlCguiAI+rbXv5GWwXIkg== autoprefixer@^10.4.19, autoprefixer@^10.4.23: - version "10.5.3" - resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-10.5.3.tgz#cd6f4c611cef98055c998b5de8e6b1759f024447" - integrity sha512-bJRzflk8GgE4JX+iZNEwz9f9p460NCHnU7bd+CZ9vIjIlZuTkt6F3WSl2oNO8StZBFx17nLEsiQ6H2wcZiY7nA== + version "10.5.4" + resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-10.5.4.tgz#3b7dd848b4155514a95ad1f6ce598844bea09697" + integrity sha512-MaU0U/za7N3r6brxD4YB/l4NSrFzLPlANv6wEuQVaIPlD3L4W9rFcQPbL/EilY9BHhHvhfcz3gInDLrEtWT4EA== dependencies: browserslist "^4.28.6" - caniuse-lite "^1.0.30001805" + caniuse-lite "^1.0.30001806" fraction.js "^5.3.4" picocolors "^1.1.1" postcss-value-parser "^4.2.0" @@ -3777,10 +3777,10 @@ caniuse-api@^3.0.0: lodash.memoize "^4.1.2" lodash.uniq "^4.5.0" -caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001803, caniuse-lite@^1.0.30001805: - version "1.0.30001805" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001805.tgz#78d5d5968a69b7ff81af87a96d7ddc7ea6670b1e" - integrity sha512-52noaS3DubycKSXaU30TwPGIp+POyQSUVa5jBEq3vkRkY0kjyb3LQgvhU6WGyCcyXqVLWO0Cw0Q6BSdD0kUfVA== +caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001803, caniuse-lite@^1.0.30001806: + version "1.0.30001806" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001806.tgz#1bc8e502b723fa393455dfbedd5ccec0c29bb74e" + integrity sha512-72Cuvd95zbSYPKq6Fhg8eDJRlzgWDf7/mtoZv6Qe/DYNCEBdNxoA3+rZAU2ZhGCpZlns3EssFavaZomckT5Uuw== ccount@^2.0.0: version "2.0.1" @@ -4573,9 +4573,9 @@ ee-first@1.1.1: integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== electron-to-chromium@^1.5.389: - version "1.5.392" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.392.tgz#31e9f9af0d8df3d1489468a4242b173605617482" - integrity sha512-1yQq3VQCZRwsnYc67Oc+1fge6Lwtn0hzi6zmEVkB61Zx21kTbwJAW4dFLadl5Rc1tKhG/kSpYXnfiAhu0f0a1g== + version "1.5.393" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.393.tgz#aec971df2a6f4f7e51fbacb200d66cebfc7d3c17" + integrity sha512-kiDJdIUawuEIcp9XoICKp1iTYDEbgguIPq526N1Q7jIQDeQ3CqoMx71025PI/7E48Ddtw2HuWsVjY7afEgNxmg== emoji-regex@^8.0.0: version "8.0.0" @@ -4922,9 +4922,9 @@ fast-json-stable-stringify@^2.0.0: integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== fast-uri@^3.0.1: - version "3.1.3" - resolved "https://registry.yarnpkg.com/fast-uri/-/fast-uri-3.1.3.tgz#f695a40f006aba505631573a0021ddb21194ad11" - integrity sha512-i70LwGWUduXqzicKXWshooq+sWL1K3WUU5rKZNG/0i3a1OSoX3HqhH5WbWwTmqWfor4urUakGPiRQcleRZTwOg== + version "3.1.4" + resolved "https://registry.yarnpkg.com/fast-uri/-/fast-uri-3.1.4.tgz#3b3daf9ce68f41f956df0b505132c0cfce9ec7af" + integrity sha512-8JnbkQ4juDyvYs4mgFGQqg4yCYtFDtUtmp2QIQq11ZZe5CFQ5wcqm1rqDgAh/QdMySuBnPzMUiJUNZG5N/AiQw== fastq@^1.6.0: version "1.20.1" @@ -6893,7 +6893,7 @@ multicast-dns@^7.2.5: dns-packet "^5.2.2" thunky "^1.0.2" -nanoid@^3.3.12: +nanoid@^3.3.16: version "3.3.16" resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.16.tgz#a04d8ec4b1f10009d2d533947aefe4293737816c" integrity sha512-bzlKTyNJ7+LdGIIwy8ijFpIqEQIvafahV7eYykJ8Cvh42EdJeODoJ6gUJXpQJvej1BddH8OqTXZNE/KfbWAu8Q== @@ -7818,11 +7818,11 @@ postcss-zindex@^6.0.2: integrity sha512-5BxW9l1evPB/4ZIc+2GobEBoKC+h8gPGCMi+jxsYvd2x0mjq7wazk6DrP71pStqxE9Foxh5TVnonbWpFZzXaYg== postcss@^8.4.21, postcss@^8.4.24, postcss@^8.4.33, postcss@^8.5.4: - version "8.5.19" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.5.19.tgz#45ad5cfde499408e20147348237551381a922037" - integrity sha512-Mz8SaolMd8nB+G13WkORcxQKHZ/NE4xXevtkJHVuG+guo9/wYKlIMTKAqGdEmYOXR2ijPjTYNHssizdaVSUNdQ== + version "8.5.20" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.5.20.tgz#316a139da79484ce55969fa7bb6f2f1abcc14060" + integrity sha512-lW616l85ucIQL+FocMmL7pQFPqBmwejrCMg+iPxyImlrANNJG9NHq/RkyCZopDhd8C3LA03PHRJDjkbGu8vvug== dependencies: - nanoid "^3.3.12" + nanoid "^3.3.16" picocolors "^1.1.1" source-map-js "^1.2.1" @@ -9463,9 +9463,9 @@ write-file-atomic@^3.0.3: typedarray-to-buffer "^3.1.5" ws@^7.3.1: - version "7.5.12" - resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.12.tgz#4ca2c04966db4dcd2f9bc4d1419d23cd1e4a18db" - integrity sha512-1xGnbYN3zbog9CwuNDQULNRrTCLIn46/WmpR1f0w6PsCYQHkylZr5vkd6kfMZYV6pRnQkcPNRyiA8LsrNKyhpg== + version "7.5.13" + resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.13.tgz#12aa507eaca76c295c278b1aebf4698ab2c1845f" + integrity sha512-rsKI6xDBFVf4r/x8XyChGK04QR/XHroxs/jUcoWvtEZM8TPU/X/uIY9B1CsSzYws9ZJb/6bbBu7dPhFW00CAoA== ws@^8.18.0: version "8.21.1" From 13450a370d16fda87c128fc3a2f420f5b0cc442b Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 20 Jul 2026 17:08:30 +0200 Subject: [PATCH 077/134] fix(deps): update module github.com/cloudnative-pg/cnpg-i to v0.6.0 (#1021) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) | |---|---|---|---| | [github.com/cloudnative-pg/cnpg-i](https://redirect.github.com/cloudnative-pg/cnpg-i) | `v0.5.0` β†’ `v0.6.0` | ![age](https://developer.mend.io/api/mc/badges/age/go/github.com%2fcloudnative-pg%2fcnpg-i/v0.6.0?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/go/github.com%2fcloudnative-pg%2fcnpg-i/v0.5.0/v0.6.0?slim=true) | Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 5a95b0e..d3e56db 100644 --- a/go.mod +++ b/go.mod @@ -7,7 +7,7 @@ require ( github.com/cloudnative-pg/api v1.30.0 github.com/cloudnative-pg/barman-cloud v0.5.2-0.20260709152604-43158c204df1 github.com/cloudnative-pg/cloudnative-pg v1.30.0 - github.com/cloudnative-pg/cnpg-i v0.5.0 + github.com/cloudnative-pg/cnpg-i v0.6.0 github.com/cloudnative-pg/cnpg-i-machinery v0.4.2 github.com/cloudnative-pg/machinery v0.5.0 github.com/onsi/ginkgo/v2 v2.32.0 diff --git a/go.sum b/go.sum index ada804d..d64259e 100644 --- a/go.sum +++ b/go.sum @@ -24,8 +24,8 @@ github.com/cloudnative-pg/barman-cloud v0.5.2-0.20260709152604-43158c204df1 h1:+ github.com/cloudnative-pg/barman-cloud v0.5.2-0.20260709152604-43158c204df1/go.mod h1:ZQLkdpk44FW5/BGWzABTOEcV9qPbwC+rbdscg2I8mBI= github.com/cloudnative-pg/cloudnative-pg v1.30.0 h1:fnhVq44xXx97MNiuvJsPrX1vSjYbgdyBK5MSGfdHdp0= github.com/cloudnative-pg/cloudnative-pg v1.30.0/go.mod h1:QkolwBOWZ+GvAiJt6KpDSymwkpf0K19/p4Q6MQlTM8U= -github.com/cloudnative-pg/cnpg-i v0.5.0 h1:/TOzpNT6cwNgrpftTtrnLKdoHgMwd+88vZgXjlVgXeE= -github.com/cloudnative-pg/cnpg-i v0.5.0/go.mod h1:7Gh4+UzhBpGhr4DreB1GN9wGYfvxwXCXZUyVt3zE/3I= +github.com/cloudnative-pg/cnpg-i v0.6.0 h1:LA//DLkFOLIjU0ASOpFkydZhGir9IAIDfgSsTTX9IpU= +github.com/cloudnative-pg/cnpg-i v0.6.0/go.mod h1:4kcpLAj+feMTnh0TVadXRASdVnEhBytNSm/BvktLgmI= github.com/cloudnative-pg/cnpg-i-machinery v0.4.2 h1:0reS9MtyLYINHXQ/MfxJ9jp39hhBf8e3Qdj+T5Nsq6I= github.com/cloudnative-pg/cnpg-i-machinery v0.4.2/go.mod h1:gvrKabgxXq0zGthXGucemDdsxakLEQDMxn43M4HLW30= github.com/cloudnative-pg/machinery v0.5.0 h1:hhTnkzn+AiN3NmbjCQ6RXj5rfqV3K6arzq6kdXAzcnQ= From ccc950dd9f3baa19c88c1e6f87e9cc26f5c7c759 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 20 Jul 2026 17:10:20 +0200 Subject: [PATCH 078/134] chore(deps): update amazon/aws-cli docker tag to v2.36.2 (#1014) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Update | Change | |---|---|---| | amazon/aws-cli | patch | `2.36.1` β†’ `2.36.2` | Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Leonardo Cecchi --- test/e2e/internal/tests/walrestore/fixtures.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/e2e/internal/tests/walrestore/fixtures.go b/test/e2e/internal/tests/walrestore/fixtures.go index a3176d6..39a0017 100644 --- a/test/e2e/internal/tests/walrestore/fixtures.go +++ b/test/e2e/internal/tests/walrestore/fixtures.go @@ -121,8 +121,8 @@ func newS3ClientDeployment(namespace string) *appsv1.Deployment { { Name: s3ClientName, // renovate: datasource=docker depName=amazon/aws-cli versioning=docker - // Version: 2.36.1 - Image: "docker.io/amazon/aws-cli@sha256:406ca32d31e640a56e8d52921b40528cc64bfa59ec9cb4ee1456db6746cb7292", + // Version: 2.36.2 + Image: "docker.io/amazon/aws-cli@sha256:964336bffb17b82d2e84a2526b0672e70a2c881544e1a281acaca1d9aa41b536", Command: []string{"sleep", "infinity"}, Env: []corev1.EnvVar{ { From 5aa67b095199aaf101bed5eadb8b48e2529410b4 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 20 Jul 2026 17:46:48 +0200 Subject: [PATCH 079/134] chore(deps): update fsouza/fake-gcs-server docker tag to v1.55.1 (#1018) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Update | Change | |---|---|---| | [fsouza/fake-gcs-server](https://redirect.github.com/fsouza/fake-gcs-server) | patch | `1.55.0` β†’ `1.55.1` | Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- test/e2e/internal/objectstore/fakegcsserver.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/e2e/internal/objectstore/fakegcsserver.go b/test/e2e/internal/objectstore/fakegcsserver.go index 4023efb..9ee2791 100644 --- a/test/e2e/internal/objectstore/fakegcsserver.go +++ b/test/e2e/internal/objectstore/fakegcsserver.go @@ -72,8 +72,8 @@ func newGCSDeployment(namespace, name string) *appsv1.Deployment { { Name: name, // renovate: datasource=docker depName=fsouza/fake-gcs-server versioning=docker - // Version: 1.55.0 - Image: "fsouza/fake-gcs-server@sha256:2845d1504bb4a5a4fe54b16dd70e398814eb139af49b01b07839e016120ff123", + // Version: 1.55.1 + Image: "fsouza/fake-gcs-server@sha256:91afded49de804aa61b5f3eb6c7cd65205acf9e5c5e047cf0ba7d9507af806c8", Ports: []corev1.ContainerPort{ { ContainerPort: 4443, From 98537c4d0e899e136e85237b29020a9bbbf9f5aa Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 20 Jul 2026 17:47:21 +0200 Subject: [PATCH 080/134] fix(deps): update github.com/cloudnative-pg/barman-cloud digest to 950b0f5 (#1022) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [github.com/cloudnative-pg/barman-cloud](https://redirect.github.com/cloudnative-pg/barman-cloud) | require | digest | `43158c2` β†’ `950b0f5` | Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index d3e56db..afcb792 100644 --- a/go.mod +++ b/go.mod @@ -5,7 +5,7 @@ go 1.26.4 require ( github.com/cert-manager/cert-manager v1.21.0 github.com/cloudnative-pg/api v1.30.0 - github.com/cloudnative-pg/barman-cloud v0.5.2-0.20260709152604-43158c204df1 + github.com/cloudnative-pg/barman-cloud v0.5.2-0.20260720143032-950b0f57e122 github.com/cloudnative-pg/cloudnative-pg v1.30.0 github.com/cloudnative-pg/cnpg-i v0.6.0 github.com/cloudnative-pg/cnpg-i-machinery v0.4.2 diff --git a/go.sum b/go.sum index d64259e..b39006c 100644 --- a/go.sum +++ b/go.sum @@ -20,8 +20,8 @@ github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UF github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/cloudnative-pg/api v1.30.0 h1:L8hnvV/tPEQA1xYEi41FUBFA7FUNVGju8+SlgFlDDjI= github.com/cloudnative-pg/api v1.30.0/go.mod h1:XrKBbOWObL33si0FNuwX4uHNf5JShiZyOUqd6LxbJQo= -github.com/cloudnative-pg/barman-cloud v0.5.2-0.20260709152604-43158c204df1 h1:+AV67yFPqnwmHQ5PIYkAaJUDsOrrwJCvH+J1JzHXyQc= -github.com/cloudnative-pg/barman-cloud v0.5.2-0.20260709152604-43158c204df1/go.mod h1:ZQLkdpk44FW5/BGWzABTOEcV9qPbwC+rbdscg2I8mBI= +github.com/cloudnative-pg/barman-cloud v0.5.2-0.20260720143032-950b0f57e122 h1:NuOztBdp+bUr/xYtaAw8o/x880hvWDRhJGl+R1YsZNw= +github.com/cloudnative-pg/barman-cloud v0.5.2-0.20260720143032-950b0f57e122/go.mod h1:ZQLkdpk44FW5/BGWzABTOEcV9qPbwC+rbdscg2I8mBI= github.com/cloudnative-pg/cloudnative-pg v1.30.0 h1:fnhVq44xXx97MNiuvJsPrX1vSjYbgdyBK5MSGfdHdp0= github.com/cloudnative-pg/cloudnative-pg v1.30.0/go.mod h1:QkolwBOWZ+GvAiJt6KpDSymwkpf0K19/p4Q6MQlTM8U= github.com/cloudnative-pg/cnpg-i v0.6.0 h1:LA//DLkFOLIjU0ASOpFkydZhGir9IAIDfgSsTTX9IpU= From f386c2d85a042bb8f807cb0853374e25368c59fe Mon Sep 17 00:00:00 2001 From: Marco Nenciarini Date: Mon, 20 Jul 2026 18:17:21 +0200 Subject: [PATCH 081/134] ci: make runner labels configurable via CI_RUNNERS variable (#1023) Switch all workflow jobs from a hardcoded ubuntu-latest to ${{ vars.CI_RUNNERS || 'ubuntu-latest' }}, so runner sizing can be changed via the CI_RUNNERS organization/repository variable without editing workflow files. The cloudnative-pg organization CI_RUNNERS variable is already set to ubuntu-latest-16-cores. Signed-off-by: Marco Nenciarini --- .github/workflows/ci.yml | 4 +++- .github/workflows/publish-docs.yml | 4 ++-- .github/workflows/release-please.yml | 2 +- .github/workflows/release-publish.yml | 2 +- 4 files changed, 7 insertions(+), 5 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 0d8c09c..8c03c3c 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -8,12 +8,13 @@ permissions: read-all jobs: ci: - runs-on: ubuntu-latest + runs-on: ${{ vars.CI_RUNNERS || 'ubuntu-latest' }} permissions: packages: write contents: write steps: - name: Cleanup Disk + if: vars.CI_RUNNERS == '' || vars.CI_RUNNERS == 'ubuntu-latest' uses: jlumbroso/free-disk-space@v1.3.1 with: android: true @@ -23,6 +24,7 @@ jobs: large-packages: false swap-storage: false - name: Cleanup docker cache + if: vars.CI_RUNNERS == '' || vars.CI_RUNNERS == 'ubuntu-latest' run: | echo "-------------Disk info before cleanup----------------" df -h diff --git a/.github/workflows/publish-docs.yml b/.github/workflows/publish-docs.yml index 4c39a66..c01dee1 100644 --- a/.github/workflows/publish-docs.yml +++ b/.github/workflows/publish-docs.yml @@ -20,7 +20,7 @@ permissions: read-all jobs: build: - runs-on: ubuntu-latest + runs-on: ${{ vars.CI_RUNNERS || 'ubuntu-latest' }} permissions: contents: read steps: @@ -60,7 +60,7 @@ jobs: name: github-pages url: ${{ steps.deployment.outputs.page_url }} needs: build - runs-on: ubuntu-latest + runs-on: ${{ vars.CI_RUNNERS || 'ubuntu-latest' }} steps: - name: Deploy to GitHub Pages id: deployment diff --git a/.github/workflows/release-please.yml b/.github/workflows/release-please.yml index e980806..959ed72 100644 --- a/.github/workflows/release-please.yml +++ b/.github/workflows/release-please.yml @@ -9,7 +9,7 @@ permissions: read-all jobs: release-please: - runs-on: ubuntu-latest + runs-on: ${{ vars.CI_RUNNERS || 'ubuntu-latest' }} permissions: contents: write pull-requests: write diff --git a/.github/workflows/release-publish.yml b/.github/workflows/release-publish.yml index f1a26b3..2390dc9 100644 --- a/.github/workflows/release-publish.yml +++ b/.github/workflows/release-publish.yml @@ -7,7 +7,7 @@ permissions: read-all jobs: release-publish-artifacts: - runs-on: ubuntu-latest + runs-on: ${{ vars.CI_RUNNERS || 'ubuntu-latest' }} permissions: packages: write contents: write From 7dab33a923d21d23b55c1f30379fd8030ae85cf3 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 20 Jul 2026 18:17:40 +0200 Subject: [PATCH 082/134] chore(deps): update actions/checkout action to v7.0.1 (#1024) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [actions/checkout](https://redirect.github.com/actions/checkout) | action | patch | `v7.0.0` β†’ `v7.0.1` | Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/ci.yml | 2 +- .github/workflows/publish-docs.yml | 2 +- .github/workflows/release-please.yml | 2 +- .github/workflows/release-publish.yml | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 8c03c3c..ec64a5b 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -34,7 +34,7 @@ jobs: df -h echo "-----------------------------------------------------" - name: Checkout - uses: actions/checkout@v7.0.0 + uses: actions/checkout@v7.0.1 # We need the full history for the commitlint task with: fetch-depth: 0 diff --git a/.github/workflows/publish-docs.yml b/.github/workflows/publish-docs.yml index c01dee1..166a6c3 100644 --- a/.github/workflows/publish-docs.yml +++ b/.github/workflows/publish-docs.yml @@ -25,7 +25,7 @@ jobs: contents: read steps: - name: Checkout - uses: actions/checkout@v7.0.0 + uses: actions/checkout@v7.0.1 - name: Setup Node uses: actions/setup-node@v7 diff --git a/.github/workflows/release-please.yml b/.github/workflows/release-please.yml index 959ed72..a7aad70 100644 --- a/.github/workflows/release-please.yml +++ b/.github/workflows/release-please.yml @@ -19,7 +19,7 @@ jobs: # We'll use the cli until there's a fix for # https://github.com/googleapis/release-please/issues/2280. - name: Checkout - uses: actions/checkout@v7.0.0 + uses: actions/checkout@v7.0.1 - name: Install node uses: actions/setup-node@v7 with: diff --git a/.github/workflows/release-publish.yml b/.github/workflows/release-publish.yml index 2390dc9..fa7212d 100644 --- a/.github/workflows/release-publish.yml +++ b/.github/workflows/release-publish.yml @@ -13,7 +13,7 @@ jobs: contents: write steps: - name: Checkout - uses: actions/checkout@v7.0.0 + uses: actions/checkout@v7.0.1 - name: Install QEMU static binaries uses: docker/setup-qemu-action@v4 - name: Install Task From 806f47b4836ab66a7c135978641e0012c5ca175b Mon Sep 17 00:00:00 2001 From: Gabriele Bartolini Date: Tue, 21 Jul 2026 08:21:32 +1000 Subject: [PATCH 083/134] chore: expand account names in CODEOWNERS (#1016) Add @NiccoloFei as contributor Closes #1015 Signed-off-by: Gabriele Bartolini --- CODEOWNERS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CODEOWNERS b/CODEOWNERS index c0e7e8b..adf378c 100644 --- a/CODEOWNERS +++ b/CODEOWNERS @@ -2,4 +2,4 @@ # responsible for code in a repository. For details, please refer to # https://docs.github.com/en/free-pro-team@latest/github/creating-cloning-and-archiving-repositories/about-code-owners -* @cloudnative-pg/maintainers +* @leonardoce @mnencia @gbartolini @fcanovai @armru @NiccoloFei From 5e62b7ef88fb6fcc2d8ce967ac16d7a2d85b95fe Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 21 Jul 2026 09:22:11 +0200 Subject: [PATCH 084/134] chore(deps): update all cloudnative-pg daggerverse dependencies to f7187c3 (#1028) Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Taskfile.yml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/Taskfile.yml b/Taskfile.yml index 7ee4eb2..3ded397 100644 --- a/Taskfile.yml +++ b/Taskfile.yml @@ -46,7 +46,7 @@ tasks: - wordlist-ordered env: # renovate: datasource=git-refs depName=spellcheck lookupName=https://github.com/cloudnative-pg/daggerverse currentValue=main - DAGGER_SPELLCHECK_SHA: 7431c24907de3c6b1516114c8990d4f8d23d92cd + DAGGER_SPELLCHECK_SHA: f7187c307f2ba79290efbfff5ce436b956162c53 cmds: - > GITHUB_REF= dagger -s call -m github.com/cloudnative-pg/daggerverse/spellcheck@${DAGGER_SPELLCHECK_SHA} @@ -60,7 +60,7 @@ tasks: desc: Check for conventional commits env: # renovate: datasource=git-refs depName=commitlint lookupName=https://github.com/cloudnative-pg/daggerverse currentValue=main - DAGGER_COMMITLINT_SHA: 7431c24907de3c6b1516114c8990d4f8d23d92cd + DAGGER_COMMITLINT_SHA: f7187c307f2ba79290efbfff5ce436b956162c53 cmds: - > GITHUB_REF= dagger -s call -m github.com/cloudnative-pg/daggerverse/commitlint@${DAGGER_COMMITLINT_SHA} @@ -74,7 +74,7 @@ tasks: - wordlist-ordered env: # renovate: datasource=git-refs depName=uncommitted lookupName=https://github.com/cloudnative-pg/daggerverse currentValue=main - DAGGER_UNCOMMITTED_SHA: 7431c24907de3c6b1516114c8990d4f8d23d92cd + DAGGER_UNCOMMITTED_SHA: f7187c307f2ba79290efbfff5ce436b956162c53 cmds: - GITHUB_REF= dagger -s call -m github.com/cloudnative-pg/daggerverse/uncommitted@${DAGGER_UNCOMMITTED_SHA} check-uncommitted --source . stdout sources: @@ -86,7 +86,7 @@ tasks: - controller-gen env: # renovate: datasource=git-refs depName=crd-gen-refs lookupName=https://github.com/cloudnative-pg/daggerverse currentValue=main - DAGGER_CRDGENREF_SHA: 7431c24907de3c6b1516114c8990d4f8d23d92cd + DAGGER_CRDGENREF_SHA: f7187c307f2ba79290efbfff5ce436b956162c53 # renovate: datasource=go depName=github.com/elastic/crd-ref-docs CRDREFDOCS_VERSION: v0.3.0 cmds: @@ -383,7 +383,7 @@ tasks: run: once env: # renovate: datasource=git-refs depName=controller-gen lookupName=https://github.com/cloudnative-pg/daggerverse currentValue=main - DAGGER_CONTROLLER_GEN_SHA: 7431c24907de3c6b1516114c8990d4f8d23d92cd + DAGGER_CONTROLLER_GEN_SHA: f7187c307f2ba79290efbfff5ce436b956162c53 cmds: - > GITHUB_REF= dagger -s call -m github.com/cloudnative-pg/daggerverse/controller-gen@${DAGGER_CONTROLLER_GEN_SHA} From fe82a311ecfecf467b0fdb3c68ebfc7d52de7123 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 21 Jul 2026 09:53:34 +0200 Subject: [PATCH 085/134] chore(deps): update amazon/aws-cli docker tag to v2.36.3 (#1027) Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- test/e2e/internal/tests/walrestore/fixtures.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/e2e/internal/tests/walrestore/fixtures.go b/test/e2e/internal/tests/walrestore/fixtures.go index 39a0017..371e380 100644 --- a/test/e2e/internal/tests/walrestore/fixtures.go +++ b/test/e2e/internal/tests/walrestore/fixtures.go @@ -121,8 +121,8 @@ func newS3ClientDeployment(namespace string) *appsv1.Deployment { { Name: s3ClientName, // renovate: datasource=docker depName=amazon/aws-cli versioning=docker - // Version: 2.36.2 - Image: "docker.io/amazon/aws-cli@sha256:964336bffb17b82d2e84a2526b0672e70a2c881544e1a281acaca1d9aa41b536", + // Version: 2.36.3 + Image: "docker.io/amazon/aws-cli@sha256:bdd02067a00c354684086071b475955c54caa7bd88b851aac99a51326fe19652", Command: []string{"sleep", "infinity"}, Env: []corev1.EnvVar{ { From fb3f0f9dabba85d87af85418d58b2f8224ed6305 Mon Sep 17 00:00:00 2001 From: Armando Ruocco Date: Tue, 21 Jul 2026 15:01:51 +0200 Subject: [PATCH 086/134] fix(walrestore): serve pg_rewind without prefetching and flag machinery (#1007) When a demoted primary rejoins the cluster after a failover, the instance manager runs `pg_rewind --restore-target-wal`, and the resulting `restore_command` invocations are served by this sidecar exactly as if an instance in recovery were asking. pg_rewind walks the timeline backwards, fetches every WAL file it needs exactly once, and treats any restore failure as fatal, so two optimizations meant for recovery break it: prefetching the following segments is wasted work that, past the end of the timeline, is guaranteed to end in an archive miss, and the end-of-wal-stream flag recorded by that miss makes a later invocation fail without contacting the object store, on a segment the archive actually has, aborting the whole rewind. The restore request now carries the context it is made in (cloudnative-pg/cnpg-i#351). When it says `MODE_REWIND`, the sidecar restores exactly the requested file: no prefetching, no end-of-wal-stream flag check, no flag recording. Requests from operators predating the field keep the current behavior. This is the plugin-side counterpart of cloudnative-pg/cloudnative-pg#11204. The cnpg-i dependency points to a pseudo-version of the protocol pull request and will move to the next tagged release once it is available. Signed-off-by: Armando Ruocco Signed-off-by: Marco Nenciarini Co-authored-by: Marco Nenciarini --- internal/cnpgi/common/wal.go | 85 +++++++++++++++++++++++++++---- internal/cnpgi/common/wal_test.go | 81 +++++++++++++++++++++++++++++ 2 files changed, 156 insertions(+), 10 deletions(-) diff --git a/internal/cnpgi/common/wal.go b/internal/cnpgi/common/wal.go index bb7d3e0..1d4fd30 100644 --- a/internal/cnpgi/common/wal.go +++ b/internal/cnpgi/common/wal.go @@ -27,6 +27,7 @@ import ( "path" "time" + barmanapi "github.com/cloudnative-pg/barman-cloud/pkg/api" "github.com/cloudnative-pg/barman-cloud/pkg/archiver" barmanCommand "github.com/cloudnative-pg/barman-cloud/pkg/command" barmanCredentials "github.com/cloudnative-pg/barman-cloud/pkg/credentials" @@ -249,9 +250,11 @@ func (w WALServiceImplementation) Restore( "Restoring WAL file", "objectStore", objectStore.Name, "serverName", serverName, - "walName", walName) + "walName", walName, + "mode", request.GetMode()) return &wal.WALRestoreResult{}, w.restoreFromBarmanObjectStore( - ctx, configuration.Cluster, &objectStore, serverName, walName, destinationPath) + ctx, configuration.Cluster, &objectStore, serverName, walName, destinationPath, + request.GetMode() == wal.WALRestoreRequest_MODE_REWIND) } // resolveRestoreObjectStore selects the object store and server name to use when @@ -288,6 +291,7 @@ func (w WALServiceImplementation) restoreFromBarmanObjectStore( serverName string, walName string, destinationPath string, + rewindMode bool, ) error { contextLogger := log.FromContext(ctx) startTime := time.Now() @@ -319,6 +323,20 @@ func (w WALServiceImplementation) restoreFromBarmanObjectStore( return fmt.Errorf("while creating the restorer: %w", err) } + // A flag left over from a normal-recovery invocation that ran before this pod + // was demoted must not survive into a pg_rewind restore: the flag machinery + // does not apply while restoring on behalf of pg_rewind (see + // shouldUseEndOfWALStreamFlag below), so it is never checked here, but left + // untouched it would resurface and wrongly abort the first normal-recovery + // invocation that runs once the rewind is done. This runs unconditionally, + // before the spool short-circuit in Step 1, so a request for a WAL file that + // happens to already be staged in the spool cannot skip the clear. + if rewindMode { + if err := clearEndOfWALStreamFlag(walRestorer); err != nil { + return err + } + } + // Step 1: check if this WAL file is not already in the spool var wasInSpool bool if wasInSpool, err = walRestorer.RestoreFromSpool(walName, destinationPath); err != nil { @@ -331,8 +349,10 @@ func (w WALServiceImplementation) restoreFromBarmanObjectStore( return nil } - // We skip this step if streaming connection is not available - if isStreamingAvailable(cluster, w.InstanceName) { + // Step 2: return error if the end-of-wal-stream flag is set. + // We skip this step if the flag machinery does not apply to this invocation + useEndOfWALStreamFlag := shouldUseEndOfWALStreamFlag(cluster, w.InstanceName, rewindMode) + if useEndOfWALStreamFlag { if err := checkEndOfWALStreamFlag(walRestorer); err != nil { return err } @@ -340,10 +360,7 @@ func (w WALServiceImplementation) restoreFromBarmanObjectStore( // Step 3: gather the WAL files names to restore. If the required file isn't a regular WAL, we download it directly. var walFilesList []string - maxParallel := 1 - if barmanConfiguration.Wal != nil && barmanConfiguration.Wal.MaxParallel > 1 { - maxParallel = barmanConfiguration.Wal.MaxParallel - } + maxParallel := maxWALFilesPerInvocation(barmanConfiguration, rewindMode) if IsWALFile(walName) { // If this is a regular WAL file, we try to prefetch if walFilesList, err = gatherWALFilesToRestore(walName, maxParallel); err != nil { @@ -365,9 +382,9 @@ func (w WALServiceImplementation) restoreFromBarmanObjectStore( return classifyWALRestoreError(walStatus[0].WalName, walStatus[0].Err) } - // We skip this step if streaming connection is not available + // We skip this step if the flag machinery does not apply to this invocation endOfWALStream := isEndOfWALStream(walStatus) - if isStreamingAvailable(cluster, w.InstanceName) && endOfWALStream { + if useEndOfWALStreamFlag && endOfWALStream { contextLogger.Info( "Set end-of-wal-stream flag as one of the WAL files to be prefetched was not found") @@ -415,6 +432,38 @@ func (w WALServiceImplementation) SetFirstRequired( panic("implement me") } +// maxWALFilesPerInvocation returns how many WAL files a single restore +// invocation is allowed to fetch, the requested one included. Prefetching is +// disabled when restoring on behalf of pg_rewind, which walks the WAL +// backward: the following segments would never be requested, and past the end +// of the timeline they do not even exist +func maxWALFilesPerInvocation(barmanConfiguration *barmanapi.BarmanObjectStoreConfiguration, rewindMode bool) int { + if rewindMode { + return 1 + } + + if barmanConfiguration.Wal != nil && barmanConfiguration.Wal.MaxParallel > 1 { + return barmanConfiguration.Wal.MaxParallel + } + + return 1 +} + +// shouldUseEndOfWALStreamFlag returns true when the end-of-wal-stream flag +// machinery applies to the current invocation. The flag makes the following +// invocation fail, so that PostgreSQL stops polling the WAL archive and +// switches to streaming replication. It does not apply when no streaming +// connection is available, nor when restoring on behalf of pg_rewind: +// pg_rewind cannot fall back to streaming replication, and a stale flag would +// make it abort on a segment that is available in the archive +func shouldUseEndOfWALStreamFlag(cluster *cnpgv1.Cluster, podName string, rewindMode bool) bool { + if rewindMode { + return false + } + + return isStreamingAvailable(cluster, podName) +} + // isStreamingAvailable checks if this pod can replicate via streaming connection. func isStreamingAvailable(cluster *cnpgv1.Cluster, podName string) bool { if cluster == nil { @@ -491,6 +540,22 @@ func checkEndOfWALStreamFlag(walRestorer *barmanRestorer.WALRestorer) error { return nil } +// clearEndOfWALStreamFlag removes the end-of-wal-stream flag, if present, without +// treating it as an error. It is used instead of checkEndOfWALStreamFlag when +// restoring on behalf of pg_rewind, which must not abort on a flag it did not +// set itself. +func clearEndOfWALStreamFlag(walRestorer *barmanRestorer.WALRestorer) error { + contain, err := walRestorer.IsEndOfWALStream() + if err != nil { + return err + } + + if contain { + return walRestorer.ResetEndOfWalStream() + } + return nil +} + // isEndOfWALStream returns true if one of the downloads has returned // a file-not-found error. func isEndOfWALStream(results []barmanRestorer.Result) bool { diff --git a/internal/cnpgi/common/wal_test.go b/internal/cnpgi/common/wal_test.go index 92d836c..1529800 100644 --- a/internal/cnpgi/common/wal_test.go +++ b/internal/cnpgi/common/wal_test.go @@ -20,6 +20,10 @@ SPDX-License-Identifier: Apache-2.0 package common import ( + "context" + + barmanapi "github.com/cloudnative-pg/barman-cloud/pkg/api" + barmanRestorer "github.com/cloudnative-pg/barman-cloud/pkg/restorer" cnpgv1 "github.com/cloudnative-pg/cloudnative-pg/api/v1" . "github.com/onsi/ginkgo/v2" . "github.com/onsi/gomega" @@ -96,3 +100,80 @@ var _ = Describe("resolveRestoreObjectStore", func() { "cluster-server", "cluster-store"), ) }) + +var _ = Describe("maxWALFilesPerInvocation", func() { + configWithMaxParallel := func(maxParallel int) *barmanapi.BarmanObjectStoreConfiguration { + return &barmanapi.BarmanObjectStoreConfiguration{ + Wal: &barmanapi.WalBackupConfiguration{MaxParallel: maxParallel}, + } + } + + DescribeTable( + "computes how many WAL files a single invocation may fetch", + func(cfg *barmanapi.BarmanObjectStoreConfiguration, rewindMode bool, want int) { + Expect(maxWALFilesPerInvocation(cfg, rewindMode)).To(Equal(want)) + }, + + Entry("no WAL configuration", &barmanapi.BarmanObjectStoreConfiguration{}, false, 1), + Entry("parallel restore configured", configWithMaxParallel(8), false, 8), + + // pg_rewind walks the timeline backwards: prefetching must stay off no + // matter what the object store configuration asks for + Entry("rewind mode overrides the configured parallelism", configWithMaxParallel(8), true, 1), + ) +}) + +var _ = Describe("shouldUseEndOfWALStreamFlag", func() { + clusterWithPrimary := func(currentPrimary string) *cnpgv1.Cluster { + return &cnpgv1.Cluster{ + Status: cnpgv1.ClusterStatus{CurrentPrimary: currentPrimary}, + } + } + + DescribeTable( + "decides whether the end-of-wal-stream flag machinery applies", + func(cluster *cnpgv1.Cluster, podName string, rewindMode bool, want bool) { + Expect(shouldUseEndOfWALStreamFlag(cluster, podName, rewindMode)).To(Equal(want)) + }, + + Entry("replica with streaming available", clusterWithPrimary("cluster-1"), "cluster-2", false, true), + Entry("primary cannot stream from anyone", clusterWithPrimary("cluster-1"), "cluster-1", false, false), + + // pg_rewind cannot fall back to streaming replication: the flag machinery + // must stay off even where a standby would use it + Entry("rewind mode wins over streaming availability", clusterWithPrimary("cluster-1"), "cluster-2", true, false), + ) +}) + +var _ = Describe("clearEndOfWALStreamFlag", func() { + newRestorer := func() *barmanRestorer.WALRestorer { + restorer, err := barmanRestorer.New(context.Background(), nil, GinkgoT().TempDir()) + Expect(err).ToNot(HaveOccurred()) + return restorer + } + + It("is a no-op when the flag is not set", func() { + restorer := newRestorer() + + Expect(clearEndOfWALStreamFlag(restorer)).To(Succeed()) + + isEOS, err := restorer.IsEndOfWALStream() + Expect(err).ToNot(HaveOccurred()) + Expect(isEOS).To(BeFalse()) + }) + + // Regression guard: a flag left over from a normal-recovery invocation that + // ran before this pod was demoted must not survive a pg_rewind restore, or + // it would resurface and wrongly abort the first normal-recovery invocation + // that runs once the rewind is done. + It("removes a pre-existing flag without returning an error", func() { + restorer := newRestorer() + Expect(restorer.SetEndOfWALStream()).To(Succeed()) + + Expect(clearEndOfWALStreamFlag(restorer)).To(Succeed()) + + isEOS, err := restorer.IsEndOfWALStream() + Expect(err).ToNot(HaveOccurred()) + Expect(isEOS).To(BeFalse()) + }) +}) From 1d777435d012accc925ee5d4f45b28491a5dda60 Mon Sep 17 00:00:00 2001 From: Marco Nenciarini Date: Tue, 21 Jul 2026 17:03:39 +0200 Subject: [PATCH 087/134] ci: run image publish in a separate parallel job (#1026) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Neither task depends on the other's output: task ci runs lint, tests, e2e, and docs, while task publish builds and pushes the multi-arch images. Running them as sequential steps in one job only adds their durations. Splitting publish into its own job lets it run alongside ci instead, and lets each job carry only the permissions it actually needs: ci never writes to the registry, and neither task touches repository contents, so only packages: write on the publish job remains. QEMU is only needed for publish, since it's the only job that builds non-native (arm64) platforms; ci's e2e-ephemeral image build is amd64-only. The disk cleanup steps aren't needed for publish either: it only builds two lean multi-arch images, well within the free disk space available even on the default ubuntu-latest runner. Note that publishing testing images no longer waits on ci passing, since gating it away would remove the parallelism this is meant to gain. Note: main's required status checks are currently ["DCO", "ci"]. A failure in the new publish job will no longer block merging a PR, since it isn't in that list (today it does, since publishing is a step inside the required ci job). Flagging for a decision on whether publish should be added as a required check. Signed-off-by: Marco Nenciarini Signed-off-by: NiccolΓ² Fei Co-authored-by: NiccolΓ² Fei --- .github/workflows/ci.yml | 30 ++++++++++++++++++++++++++---- 1 file changed, 26 insertions(+), 4 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index ec64a5b..e3a143e 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -6,12 +6,15 @@ on: permissions: read-all +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: ${{ github.event_name == 'pull_request' }} + jobs: ci: runs-on: ${{ vars.CI_RUNNERS || 'ubuntu-latest' }} permissions: - packages: write - contents: write + contents: read steps: - name: Cleanup Disk if: vars.CI_RUNNERS == '' || vars.CI_RUNNERS == 'ubuntu-latest' @@ -39,8 +42,6 @@ jobs: with: fetch-depth: 0 ref: ${{ github.event.pull_request.head.sha }} - - name: Install QEMU static binaries - uses: docker/setup-qemu-action@v4 - name: Install Task uses: arduino/setup-task@v3.0.0 - name: Install Dagger @@ -52,6 +53,27 @@ jobs: - name: Run CI task run: | task ci + + publish: + runs-on: ${{ vars.CI_RUNNERS || 'ubuntu-latest' }} + permissions: + contents: read + packages: write + steps: + - name: Checkout + uses: actions/checkout@v7.0.1 + with: + ref: ${{ github.event.pull_request.head.sha }} + - name: Install QEMU static binaries + uses: docker/setup-qemu-action@v4 + - name: Install Task + uses: arduino/setup-task@v3.0.0 + - name: Install Dagger + env: + # renovate: datasource=github-tags depName=dagger/dagger versioning=semver + DAGGER_VERSION: 0.21.7 + run: | + curl -L https://dl.dagger.io/dagger/install.sh | BIN_DIR=$HOME/.local/bin sh - name: Write manifest run: | task manifest From 7bcb74b987a3cca232c6f8021157eb711a1289b0 Mon Sep 17 00:00:00 2001 From: Marco Nenciarini Date: Tue, 21 Jul 2026 17:29:10 +0200 Subject: [PATCH 088/134] feat: honor the operator's check_empty_wal_archive decision (#1009) Archive() and the restore job hook each re-derived, on their own, whether to verify the WAL archive destination is empty, by reading a Cluster annotation and, for Archive, an on-disk marker file. That decision belongs to the operator, which already tracks both the annotation and the marker file's lifecycle. Honor cnpg-i's new WALArchiveRequest/RestoreRequest field CheckEmptyWalArchive when the operator sets it: obey it directly, without re-inspecting the marker file. Only fall back to the previous annotation-and-marker-file logic when talking to an operator that predates this field. Related: cloudnative-pg/cnpg-i#353 adds the field this depends on; cloudnative-pg/cloudnative-pg#11216 is the operator-side counterpart. Signed-off-by: Marco Nenciarini Signed-off-by: Armando Ruocco Co-authored-by: Armando Ruocco --- internal/cnpgi/common/wal.go | 37 +++++++++++-- internal/cnpgi/common/wal_test.go | 73 ++++++++++++++++++++++++-- internal/cnpgi/restore/restore.go | 18 ++++++- internal/cnpgi/restore/restore_test.go | 66 +++++++++++++++++++++++ internal/cnpgi/restore/suite_test.go | 32 +++++++++++ 5 files changed, 217 insertions(+), 9 deletions(-) create mode 100644 internal/cnpgi/restore/restore_test.go create mode 100644 internal/cnpgi/restore/suite_test.go diff --git a/internal/cnpgi/common/wal.go b/internal/cnpgi/common/wal.go index 1d4fd30..537fa34 100644 --- a/internal/cnpgi/common/wal.go +++ b/internal/cnpgi/common/wal.go @@ -156,13 +156,17 @@ func (w WALServiceImplementation) Archive( return nil, err } - // Step 2: Check if the archive location is safe to perform archiving - checkFileExisting, err := fileutils.FileExists(emptyWalArchiveFile) + // Step 2: Check if the archive location is safe to perform archiving. + checkEmptyWalArchive, err := resolveArchiveEmptyWalArchiveCheck( + request.CheckEmptyWalArchive, + configuration.Cluster, + emptyWalArchiveFile, + ) if err != nil { - return nil, fmt.Errorf("while checking for empty wal archive check file %q: %w", emptyWalArchiveFile, err) + return nil, err } - if utils.IsEmptyWalArchiveCheckEnabled(&configuration.Cluster.ObjectMeta) && checkFileExisting { + if checkEmptyWalArchive { if err := CheckBackupDestination( ctx, &objectStore.Spec.Configuration, @@ -224,6 +228,31 @@ func (w WALServiceImplementation) Archive( return &wal.WALArchiveResult{}, nil } +// resolveArchiveEmptyWalArchiveCheck reports whether the WAL archive +// destination must be verified before archiving this segment. +// +// The operator owns the marker file's lifecycle, so when it sets the decision +// (non-nil) that value already accounts for the marker and is obeyed as-is. A +// nil value comes from an operator that predates this field, so we fall back to +// the previous logic: the Cluster annotation combined with the on-disk marker +// file. +func resolveArchiveEmptyWalArchiveCheck( + operatorDecision *bool, + cluster *cnpgv1.Cluster, + markerFilePath string, +) (bool, error) { + if operatorDecision != nil { + return *operatorDecision, nil + } + + markerFilePresent, err := fileutils.FileExists(markerFilePath) + if err != nil { + return false, fmt.Errorf("while checking for empty wal archive check file %q: %w", markerFilePath, err) + } + + return utils.IsEmptyWalArchiveCheckEnabled(&cluster.ObjectMeta) && markerFilePresent, nil +} + // Restore implements the WALService interface func (w WALServiceImplementation) Restore( ctx context.Context, diff --git a/internal/cnpgi/common/wal_test.go b/internal/cnpgi/common/wal_test.go index 1529800..0ce2dfd 100644 --- a/internal/cnpgi/common/wal_test.go +++ b/internal/cnpgi/common/wal_test.go @@ -21,15 +21,20 @@ package common import ( "context" + "os" + "path/filepath" barmanapi "github.com/cloudnative-pg/barman-cloud/pkg/api" barmanRestorer "github.com/cloudnative-pg/barman-cloud/pkg/restorer" cnpgv1 "github.com/cloudnative-pg/cloudnative-pg/api/v1" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/utils/ptr" + + "github.com/cloudnative-pg/plugin-barman-cloud/internal/cnpgi/metadata" + "github.com/cloudnative-pg/plugin-barman-cloud/internal/cnpgi/operator/config" + . "github.com/onsi/ginkgo/v2" . "github.com/onsi/gomega" - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" - - "github.com/cloudnative-pg/plugin-barman-cloud/internal/cnpgi/operator/config" ) var _ = Describe("resolveRestoreObjectStore", func() { @@ -177,3 +182,65 @@ var _ = Describe("clearEndOfWALStreamFlag", func() { Expect(isEOS).To(BeFalse()) }) }) + +var _ = Describe("resolveArchiveEmptyWalArchiveCheck", func() { + // skipAnnotation mirrors the unexported constant in cloudnative-pg's + // pkg/utils; hard-coding the literal makes a divergence surface as a + // failing test rather than silently disabling the check. + const skipAnnotation = "cnpg.io/skipEmptyWalArchiveCheck" + + clusterWith := func(annotationValue *string) *cnpgv1.Cluster { + cluster := &cnpgv1.Cluster{} + if annotationValue != nil { + cluster.Annotations = map[string]string{skipAnnotation: *annotationValue} + } + return cluster + } + + // markerPath returns the marker file path inside a fresh temp dir, + // creating the file there when present is true. + markerPath := func(present bool) string { + filePath := filepath.Join(GinkgoT().TempDir(), metadata.CheckEmptyWalArchiveFile) + if present { + Expect(os.WriteFile(filePath, []byte{}, 0o600)).To(Succeed()) + } + return filePath + } + + When("the operator sets the decision", func() { + It("obeys true, ignoring the annotation and the marker file", func() { + // annotation would skip the check and the marker is absent, yet the + // operator's explicit true must still win. + got, err := resolveArchiveEmptyWalArchiveCheck( + ptr.To(true), clusterWith(ptr.To("enabled")), markerPath(false)) + Expect(err).NotTo(HaveOccurred()) + Expect(got).To(BeTrue()) + }) + + It("obeys false, ignoring the annotation and the marker file", func() { + // annotation would keep the check on and the marker is present, yet the + // operator's explicit false must still win. + got, err := resolveArchiveEmptyWalArchiveCheck( + ptr.To(false), clusterWith(nil), markerPath(true)) + Expect(err).NotTo(HaveOccurred()) + Expect(got).To(BeFalse()) + }) + }) + + When("the operator predates the field (nil decision)", func() { + DescribeTable( + "falls back to the annotation combined with the marker file", + func(annotationValue *string, markerPresent bool, expected bool) { + got, err := resolveArchiveEmptyWalArchiveCheck( + nil, clusterWith(annotationValue), markerPath(markerPresent)) + Expect(err).NotTo(HaveOccurred()) + Expect(got).To(Equal(expected)) + }, + Entry("no annotation and marker present: check runs", nil, true, true), + Entry("no annotation and marker absent: check skipped", nil, false, false), + Entry("opt-out annotation and marker present: check skipped", ptr.To("enabled"), true, false), + Entry("unrelated annotation value and marker present: check runs", ptr.To("something-else"), true, true), + Entry("empty annotation value and marker present: check runs", ptr.To(""), true, true), + ) + }) +}) diff --git a/internal/cnpgi/restore/restore.go b/internal/cnpgi/restore/restore.go index f286565..9ee7354 100644 --- a/internal/cnpgi/restore/restore.go +++ b/internal/cnpgi/restore/restore.go @@ -113,6 +113,7 @@ func (impl JobHookImpl) Restore( configuration.Cluster, &targetObjectStore.Spec.Configuration, targetObjectStore.Name, + req.CheckEmptyWalArchive, ); err != nil { return nil, err } @@ -250,6 +251,7 @@ func (impl *JobHookImpl) checkBackupDestination( cluster *cnpgv1.Cluster, barmanConfiguration *cnpgv1.BarmanObjectStoreConfiguration, objectStoreName string, + operatorCheckEmptyWalArchive *bool, ) error { // Get environment from cache env, err := barmanCredentials.EnvSetCloudCredentialsAndCertificates(ctx, @@ -288,14 +290,26 @@ func (impl *JobHookImpl) checkBackupDestination( } } - // Check if we're ok to archive in the desired destination - if utils.IsEmptyWalArchiveCheckEnabled(&cluster.ObjectMeta) { + if resolveRestoreEmptyWalArchiveCheck(operatorCheckEmptyWalArchive, cluster) { return common.CheckBackupDestination(ctx, barmanConfiguration, walArchiver, serverName) } return nil } +// resolveRestoreEmptyWalArchiveCheck reports whether the destination must be +// verified before restoring. When the operator sets the decision (non-nil) it +// is obeyed as-is; a nil value comes from an operator that predates this field, +// so we fall back to the Cluster annotation. Unlike archiving, restore is a +// one-shot operation that has never been gated on the first-archive marker +// file, so the annotation is the only fallback needed. +func resolveRestoreEmptyWalArchiveCheck(operatorDecision *bool, cluster *cnpgv1.Cluster) bool { + if operatorDecision != nil { + return *operatorDecision + } + return utils.IsEmptyWalArchiveCheckEnabled(&cluster.ObjectMeta) +} + // restoreCustomWalDir moves the current pg_wal data to the specified custom wal dir and applies the symlink // returns indicating if any changes were made and any error encountered in the process func (impl JobHookImpl) restoreCustomWalDir(ctx context.Context) (bool, error) { diff --git a/internal/cnpgi/restore/restore_test.go b/internal/cnpgi/restore/restore_test.go new file mode 100644 index 0000000..a88a7f3 --- /dev/null +++ b/internal/cnpgi/restore/restore_test.go @@ -0,0 +1,66 @@ +/* +Copyright Β© contributors to CloudNativePG, established as +CloudNativePG a Series of LF Projects, LLC. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + +SPDX-License-Identifier: Apache-2.0 +*/ + +package restore + +import ( + cnpgv1 "github.com/cloudnative-pg/cloudnative-pg/api/v1" + "k8s.io/utils/ptr" + + . "github.com/onsi/ginkgo/v2" + . "github.com/onsi/gomega" +) + +var _ = Describe("resolveRestoreEmptyWalArchiveCheck", func() { + // skipAnnotation mirrors the unexported constant in cloudnative-pg's + // pkg/utils; hard-coding the literal makes a divergence surface as a + // failing test rather than silently disabling the check. + const skipAnnotation = "cnpg.io/skipEmptyWalArchiveCheck" + + clusterWith := func(annotationValue *string) *cnpgv1.Cluster { + cluster := &cnpgv1.Cluster{} + if annotationValue != nil { + cluster.Annotations = map[string]string{skipAnnotation: *annotationValue} + } + return cluster + } + + When("the operator sets the decision", func() { + It("obeys true even when the annotation would skip the check", func() { + Expect(resolveRestoreEmptyWalArchiveCheck(ptr.To(true), clusterWith(ptr.To("enabled")))).To(BeTrue()) + }) + + It("obeys false even when the annotation would keep the check on", func() { + Expect(resolveRestoreEmptyWalArchiveCheck(ptr.To(false), clusterWith(nil))).To(BeFalse()) + }) + }) + + When("the operator predates the field (nil decision)", func() { + DescribeTable( + "falls back to the Cluster annotation, never to a marker file", + func(annotationValue *string, expected bool) { + Expect(resolveRestoreEmptyWalArchiveCheck(nil, clusterWith(annotationValue))).To(Equal(expected)) + }, + Entry("no annotation: check runs", nil, true), + Entry("opt-out annotation: check skipped", ptr.To("enabled"), false), + Entry("unrelated annotation value: check runs", ptr.To("something-else"), true), + Entry("empty annotation value: check runs", ptr.To(""), true), + ) + }) +}) diff --git a/internal/cnpgi/restore/suite_test.go b/internal/cnpgi/restore/suite_test.go new file mode 100644 index 0000000..b110bef --- /dev/null +++ b/internal/cnpgi/restore/suite_test.go @@ -0,0 +1,32 @@ +/* +Copyright Β© contributors to CloudNativePG, established as +CloudNativePG a Series of LF Projects, LLC. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + +SPDX-License-Identifier: Apache-2.0 +*/ + +package restore + +import ( + "testing" + + . "github.com/onsi/ginkgo/v2" + . "github.com/onsi/gomega" +) + +func TestRestore(t *testing.T) { + RegisterFailHandler(Fail) + RunSpecs(t, "Restore job hook test suite") +} From 65b028003ec8fcb85ea62885268b559a66e30d59 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 23 Jul 2026 12:23:12 +0200 Subject: [PATCH 089/134] chore(deps): update documentation dependencies to v19.2.8 (#1030) Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- web/yarn.lock | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/web/yarn.lock b/web/yarn.lock index d8ee774..bbf60d3 100644 --- a/web/yarn.lock +++ b/web/yarn.lock @@ -7970,9 +7970,9 @@ rc@1.2.8: strip-json-comments "~2.0.1" react-dom@^19.0.0: - version "19.2.7" - resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-19.2.7.tgz#0450dc9ae9ddbff76ef196401cd8b8c7fb466ccc" - integrity sha512-t0BRVXvbiE/o20Hfw669rLbMCDWtYZLvmJigy2f0MxsXF+71pxhR3xOkspmsO8h3ZlNzyibAmtCa3l4lYKk6gQ== + version "19.2.8" + resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-19.2.8.tgz#3b46b9eeda877cdff2cf13d2770fff4ae36c2ec2" + integrity sha512-rVprimfGBG3DR+Tq0IQG2DT5PxKth1WIGDmj5yPmlzr4YBe7uyE+Du4oVqTDXZSHGGGXRtTJEGSSePyQCMBglQ== dependencies: scheduler "^0.27.0" @@ -8052,9 +8052,9 @@ react-router@5.3.4, react-router@^5.3.4: tiny-warning "^1.0.0" react@^19.0.0: - version "19.2.7" - resolved "https://registry.yarnpkg.com/react/-/react-19.2.7.tgz#1f47a1bfc06f8ec885752c6f4af14369a9f8260b" - integrity sha512-HNe9WslTbXmFK8o8cmwgAeJFSBvt1bPdHCVKtaaV+WlAN36mpT4hcRpwbf3fY56ar2oIXzsBpOAiIRHAdY0OlQ== + version "19.2.8" + resolved "https://registry.yarnpkg.com/react/-/react-19.2.8.tgz#a80663dbb58d69c6fe3fd291d3cb324e8a7dff2d" + integrity sha512-PWaYA1L/q9u2u7xYQi+Y3L3Yfnie7XyLeaJICV1MGD6LprsBxcAqGjYyr0eY3p+QdsA+x/Irkt4Qif8D63+Sbw== readable-stream@^2.0.1: version "2.3.8" From ce8179442b49e0686ec05505b4ba79360b54ec8c Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 23 Jul 2026 15:38:26 +0200 Subject: [PATCH 090/134] fix(deps): update kubernetes monorepo to v0.36.3 (#1031) Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- go.mod | 14 +++++++------- go.sum | 28 ++++++++++++++-------------- 2 files changed, 21 insertions(+), 21 deletions(-) diff --git a/go.mod b/go.mod index afcb792..22bb35a 100644 --- a/go.mod +++ b/go.mod @@ -16,10 +16,10 @@ require ( github.com/spf13/viper v1.21.0 google.golang.org/grpc v1.82.1 gopkg.in/yaml.v3 v3.0.1 - k8s.io/api v0.36.2 - k8s.io/apiextensions-apiserver v0.36.2 - k8s.io/apimachinery v0.36.2 - k8s.io/client-go v0.36.2 + k8s.io/api v0.36.3 + k8s.io/apiextensions-apiserver v0.36.3 + k8s.io/apimachinery v0.36.3 + k8s.io/client-go v0.36.3 k8s.io/utils v0.0.0-20260707023825-cf1189d6abe3 sigs.k8s.io/controller-runtime v0.24.1 sigs.k8s.io/kustomize/api v0.21.1 @@ -125,11 +125,11 @@ require ( google.golang.org/protobuf v1.36.12-0.20260120151049-f2248ac996af // indirect gopkg.in/evanphx/json-patch.v4 v4.13.0 // indirect gopkg.in/inf.v0 v0.9.1 // indirect - k8s.io/apiserver v0.36.2 // indirect - k8s.io/component-base v0.36.2 // indirect + k8s.io/apiserver v0.36.3 // indirect + k8s.io/component-base v0.36.3 // indirect k8s.io/klog/v2 v2.140.0 // indirect k8s.io/kube-openapi v0.0.0-20260603220949-865597e52e25 // indirect - k8s.io/streaming v0.36.2 // indirect + k8s.io/streaming v0.36.3 // indirect sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.34.0 // indirect sigs.k8s.io/gateway-api v1.6.0 // indirect sigs.k8s.io/json v0.0.0-20250730193827-2d320260d730 // indirect diff --git a/go.sum b/go.sum index b39006c..d1d85f8 100644 --- a/go.sum +++ b/go.sum @@ -308,24 +308,24 @@ gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -k8s.io/api v0.36.2 h1:TF6YDLIzKfccK7cq9YpTcGX8TJmEkHVRv78DM51fRYY= -k8s.io/api v0.36.2/go.mod h1:F4LbMO4brjZYh7yFkXWhynSvtB7YauxV4c+HHkNRGNg= -k8s.io/apiextensions-apiserver v0.36.2 h1:3O5gqOj/dt2XWWbpMe+TXWpE9yU6pjM/tXxtHHJT/K4= -k8s.io/apiextensions-apiserver v0.36.2/go.mod h1:cL1tBWe8XSaP1H30iWKGo7hf6iAUUUJPEU70dskmAnA= -k8s.io/apimachinery v0.36.2 h1:0PE/W/WNy1UX61NLbXY5TMbJ6UwLL6E6lAPkYrKFxbQ= -k8s.io/apimachinery v0.36.2/go.mod h1:fvf/HOLXq9RId0rnDIbN1OEBvHXdQbLMM8nu0LcBUf4= -k8s.io/apiserver v0.36.2 h1:6vMnkmHZPeBloNkHUhmZYq7Ylv8WIB8xjyEl+eSt26E= -k8s.io/apiserver v0.36.2/go.mod h1:9PoQ2ikCytrZyZg11mGhLEF5m8Rgsb5FJmYJ4Wvnl1k= -k8s.io/client-go v0.36.2 h1:bfgxmFKc9CgqsgX4xKLAAdmTQlWee7Ob/HlDOrJ5TBI= -k8s.io/client-go v0.36.2/go.mod h1:1vgO4OAlfPnoLcb+Rze2GF5rAr14w8qjrYMoyXJzQj0= -k8s.io/component-base v0.36.2 h1:Z0VH80O7Ng0HDZnZj3WRR3urEGa0kTwmO8CwEwjVK1w= -k8s.io/component-base v0.36.2/go.mod h1:mGfFOA7Gwpdm1VW2cwSQYbiDIlz8GD2WGwH88QSeCyA= +k8s.io/api v0.36.3 h1:NxB+05W2UGqXWFXcLO0RB5cnqnUPP5v5sVlaOH0Iz4w= +k8s.io/api v0.36.3/go.mod h1:JzLQKqRHC5+I8RVj/lS3lCg0mg6nWI9Fo/Sk3ElxHzg= +k8s.io/apiextensions-apiserver v0.36.3 h1:dPmOAPhwTtqb1bTxbFPsy18KHPhktQeO3WUPXunZIB0= +k8s.io/apiextensions-apiserver v0.36.3/go.mod h1:KTXFqgXiuw2pRoL+Wpmttqc+up9Xt/GohadPWeLLOa4= +k8s.io/apimachinery v0.36.3 h1:PkzMRBRG8joFD8EhCuQAtNPvJlxb82FwplP26HIzvAM= +k8s.io/apimachinery v0.36.3/go.mod h1:cTSjBWgPe/6CQyBKzY/hDIRWCQQQeK0mfLbml0UYFHE= +k8s.io/apiserver v0.36.3 h1:MGSg2SkdfuytiDEcRylT5mQFmmSsbx90XFUO67Y4bsQ= +k8s.io/apiserver v0.36.3/go.mod h1:fVH7zv9EUNUA7Fl7LtDKh8aB9W7u1VQPSGtWV5SjUxg= +k8s.io/client-go v0.36.3 h1:M4JdVzXxYcZk4fGpfDdYnxSwhLKWCFoQsHW6t+z8Hfg= +k8s.io/client-go v0.36.3/go.mod h1:gcPwr0c87vjjG6HB6pWEqOeuYVoXSsREjzux2j6GF30= +k8s.io/component-base v0.36.3 h1:vc/UFvPCkW0irPz84LAodAL1j3f4xktPM6dDJIEheAY= +k8s.io/component-base v0.36.3/go.mod h1:hZbNFG+gCMl9EbykDGEu73feKP9/Cq6JsV4pTo9GTO8= k8s.io/klog/v2 v2.140.0 h1:Tf+J3AH7xnUzZyVVXhTgGhEKnFqye14aadWv7bzXdzc= k8s.io/klog/v2 v2.140.0/go.mod h1:o+/RWfJ6PwpnFn7OyAG3QnO47BFsymfEfrz6XyYSSp0= k8s.io/kube-openapi v0.0.0-20260603220949-865597e52e25 h1:mPMaPMpBij2V1Wv/fR+HW124vVGXXvOSS9ver/9yjWs= k8s.io/kube-openapi v0.0.0-20260603220949-865597e52e25/go.mod h1:V/QaCUYDa+0QpcHhVVc5l99Uz56wEMEXBSj9oCDkNDY= -k8s.io/streaming v0.36.2 h1:NSKthPPg9UFSKsRauVJUVGH2Dvn8fhKmY4qrMkw/p98= -k8s.io/streaming v0.36.2/go.mod h1:z6fV3D+NVkoeqRMtWwlUZK6U17SY/LqNzOxWL6GyR/s= +k8s.io/streaming v0.36.3 h1:9rAaqBk0C0Pc7+/fqGekj07NV+/Xrew58p647A0JT8w= +k8s.io/streaming v0.36.3/go.mod h1:z6fV3D+NVkoeqRMtWwlUZK6U17SY/LqNzOxWL6GyR/s= k8s.io/utils v0.0.0-20260707023825-cf1189d6abe3 h1:jVkFFVfXdXP74B/zbO3hM3hpSFD0xvhQ5U686DPurkE= k8s.io/utils v0.0.0-20260707023825-cf1189d6abe3/go.mod h1:M2s5JB1lIYP3jzZdorPLHXIPJzt9vv2muW5a6L9DtNM= sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.34.0 h1:hSfpvjjTQXQY2Fol2CS0QHMNs/WI1MOSGzCm1KhM5ec= From 6d0aeec36701f7d7bed4055883e6434027fd3c27 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 24 Jul 2026 11:16:13 +0200 Subject: [PATCH 091/134] chore(deps): update amazon/aws-cli docker tag to v2.36.7 (#1029) Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- test/e2e/internal/tests/walrestore/fixtures.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/e2e/internal/tests/walrestore/fixtures.go b/test/e2e/internal/tests/walrestore/fixtures.go index 371e380..a5d2e88 100644 --- a/test/e2e/internal/tests/walrestore/fixtures.go +++ b/test/e2e/internal/tests/walrestore/fixtures.go @@ -121,8 +121,8 @@ func newS3ClientDeployment(namespace string) *appsv1.Deployment { { Name: s3ClientName, // renovate: datasource=docker depName=amazon/aws-cli versioning=docker - // Version: 2.36.3 - Image: "docker.io/amazon/aws-cli@sha256:bdd02067a00c354684086071b475955c54caa7bd88b851aac99a51326fe19652", + // Version: 2.36.7 + Image: "docker.io/amazon/aws-cli@sha256:5b76c069e37cfa091ec6398dc683c09e0c9ef8ae2e557b0a36d931df34011227", Command: []string{"sleep", "infinity"}, Env: []corev1.EnvVar{ { From fcb0d1eaf4eaa1da1aed5830f430c01b9e2d1a4a Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 27 Jul 2026 11:13:04 +0200 Subject: [PATCH 092/134] chore(deps): update amazon/aws-cli docker tag to v2.36.8 (#1032) Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- test/e2e/internal/tests/walrestore/fixtures.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/e2e/internal/tests/walrestore/fixtures.go b/test/e2e/internal/tests/walrestore/fixtures.go index a5d2e88..a34d0f5 100644 --- a/test/e2e/internal/tests/walrestore/fixtures.go +++ b/test/e2e/internal/tests/walrestore/fixtures.go @@ -121,8 +121,8 @@ func newS3ClientDeployment(namespace string) *appsv1.Deployment { { Name: s3ClientName, // renovate: datasource=docker depName=amazon/aws-cli versioning=docker - // Version: 2.36.7 - Image: "docker.io/amazon/aws-cli@sha256:5b76c069e37cfa091ec6398dc683c09e0c9ef8ae2e557b0a36d931df34011227", + // Version: 2.36.8 + Image: "docker.io/amazon/aws-cli@sha256:7e1b11a3c93bc5af81f496de0662f666b2352a4a6666e8ebae904fe102b131b6", Command: []string{"sleep", "infinity"}, Env: []corev1.EnvVar{ { From ce8a3db8c5d471273360532b68aaf7049cafd9af Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 27 Jul 2026 13:23:29 +0200 Subject: [PATCH 093/134] chore(deps): refresh pip-compile outputs (#1034) Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- containers/sidecar-requirements.txt | 42 ++++++++++++++--------------- 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/containers/sidecar-requirements.txt b/containers/sidecar-requirements.txt index 6dfacff..e284cda 100644 --- a/containers/sidecar-requirements.txt +++ b/containers/sidecar-requirements.txt @@ -22,19 +22,19 @@ barman==3.19.1 \ --hash=sha256:0a6a9e1babf97687732d8b2a3eb79ea95d55246a5257b9433865cb6e755221c0 \ --hash=sha256:2f71c4a1f1ba53f694cbdf838bb9906d8ba02b97d1fd3041196e8999bec7a1ee # via -r sidecar-requirements.in -boto3==1.43.51 \ - --hash=sha256:a97057bb609fd38c80448db6a93db770786775dabd651401debf09816d4553d7 \ - --hash=sha256:b5a416cc703db73b69b22bef563c89c1fb14a4b10a93628d3c7abc4dd1aaf979 +boto3==1.43.56 \ + --hash=sha256:57c90df9fb026f2e6ae22530861198130203733c5c9ec4e5cca3a4037f5a8db4 \ + --hash=sha256:feb699d4ab241ef5c1b80bb58277be2aaad365cd4b672d7817e0bc59ee45131b # via barman -botocore==1.43.51 \ - --hash=sha256:7c2c538c932bddc95834e177ce6f91dcc388c6a7934b4f8d0db13caa30e3e543 \ - --hash=sha256:e0e5e88585fdb01dcb6b533ac2dd3f18d5d45092a14ccbfd330e3576a4152128 +botocore==1.43.56 \ + --hash=sha256:6c01f85f0ff9863076f4c761e74ee3aa96c5ccc1ad09fc1efd62ef8f2d22bf57 \ + --hash=sha256:aafc741f1b10f6fd63253eaf6ea029680c1ff436d87e1b8969d62aefa0c76976 # via # boto3 # s3transfer -certifi==2026.6.17 \ - --hash=sha256:024c88eeec92ca068db80f02b8b07c9cef7b9fe261d1d535abfd5abd6f6af432 \ - --hash=sha256:2227dcbaafe0d2f59279d1762ddddc37783ed4354594f194ffc31d20f41fc3db +certifi==2026.7.22 \ + --hash=sha256:62f22742b58a1a33014a2b6b706588a8d7e2a88ae7bd1a6ebe8c992928483775 \ + --hash=sha256:741e2c3b351ddf169a738da9f2c048608ff7f2c5cc02f1ebc6b118bb090d5d55 # via requests cffi==2.1.0 \ --hash=sha256:02cb7ff33ded4f1532476731f89ede53e2e488a8e6205515a82144246ffa7dcc \ @@ -423,15 +423,15 @@ cryptography==49.0.0 \ # google-auth # msal # pyjwt -google-api-core==2.32.0 \ - --hash=sha256:2b33aad226b19272458c46abfe5c5a38d9531ece0c44502129a1463ce83674ac \ - --hash=sha256:ae1f0d58a6c8869350bf469f8eb3092e7f8c494a942d9525494afb6c162b0904 +google-api-core==2.33.0 \ + --hash=sha256:3a36bcc3e319783f4c97da41f6f45ea6ffcaa55848e341de16e09cb70243c2bb \ + --hash=sha256:a2e22a0c1d0f03eafff1858b38cf46f832d5902b0c052235bf0ab8402929fbdc # via # google-cloud-core # google-cloud-storage -google-auth==2.56.0 \ - --hash=sha256:6e88c10217e07a92bfd01cac8ee99e32ccfb08414c3102e6c5b8d58f37a0d1e0 \ - --hash=sha256:f90fa030b569a92654b9d690665a073841df33d57487be53db583a9a0867a553 +google-auth==2.56.2 \ + --hash=sha256:c8270ea95b2697b74e3d8438ae9c5b898e38b623b915c7b5c5635921e7de68a6 \ + --hash=sha256:e28f103ca8091fb7012b99c44243d7366c29863713b8e34a220c3322b7a07051 # via # google-api-core # google-cloud-core @@ -572,9 +572,9 @@ msal-extensions==1.3.1 \ --hash=sha256:96d3de4d034504e969ac5e85bae8106c8373b5c6568e4c8fa7af2eca9dbe6bca \ --hash=sha256:c5b0fd10f65ef62b5f1d62f4251d51cbcaf003fcedae8c91b040a488614be1a4 # via azure-identity -proto-plus==1.28.1 \ - --hash=sha256:6660f5f1970874bdcfc3088b435188a36a37bd3596668f7d726417c4ae8cfbed \ - --hash=sha256:832e68e7fe064cf90ab153b6e5eb935b27891bb89aaeb68b115e9b702f6cb168 +proto-plus==1.28.2 \ + --hash=sha256:26d843eb99c1e32fdf1d20ff0faae56607f7748fe774acf9ecd5cfe6c6472501 \ + --hash=sha256:b874236fcac2358f601e4330bcb76cb8b89c851303ccf4078408b3d4774d1c52 # via google-api-core protobuf==7.35.1 \ --hash=sha256:11d6b0ec246892d85215b0a13ca6e0233cf5284b68f0ac02646427f4ff88a799 \ @@ -634,9 +634,9 @@ requests==2.34.2 \ # google-api-core # google-cloud-storage # msal -s3transfer==0.19.1 \ - --hash=sha256:d3d6371dc3f1e5c5427b2b457bcf13bcf87bec334c95aed18642eae61f6926f3 \ - --hash=sha256:d5fd7005ee39307455ad5f310b5ea67f4b1960d7fed5b3671ee50c249de675de +s3transfer==0.19.2 \ + --hash=sha256:ba0309fd86be3c27dbf78cdd813c13c5e1df16e5874b99d2535ebbdfb9892993 \ + --hash=sha256:d8168eccca828cbb2cd573675333f3bddd254313a9c42494b84c76b539e8ba25 # via boto3 six==1.17.0 \ --hash=sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274 \ From 76d4f22aa39df0065b634bd606d1609bad2461e2 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 27 Jul 2026 14:53:28 +0200 Subject: [PATCH 094/134] chore(deps): lock file maintenance (#1033) Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- web/yarn.lock | 120 +++++++++++++++++++++++--------------------------- 1 file changed, 54 insertions(+), 66 deletions(-) diff --git a/web/yarn.lock b/web/yarn.lock index bbf60d3..18e04d0 100644 --- a/web/yarn.lock +++ b/web/yarn.lock @@ -2017,24 +2017,24 @@ tslib "^2.4.0" "@emnapi/core@^1.4.3": - version "1.11.2" - resolved "https://registry.yarnpkg.com/@emnapi/core/-/core-1.11.2.tgz#fab0a0f3c492d11f5a9ac9065d0d73955ee1c1c9" - integrity sha512-TC8MkTuZUtcTSiFeuC0ksCh9QIJ5+F21MvZ4Wn4ORfYaFJ/0dsiudv5tVkejgwZlwQ39jL9WWDe2lz8x0WglOA== + version "1.11.3" + resolved "https://registry.yarnpkg.com/@emnapi/core/-/core-1.11.3.tgz#5e95348a42cd1e06f0b9aa380cd74091daa4d520" + integrity sha512-zLpS5asjEb7lq8jYLq37N6XKaE41DIexlY1rF/z4/tIl3wo13Sqm28fRyfIsKZD+NZ8mM5RoKkpW/rBcuoSZSg== dependencies: - "@emnapi/wasi-threads" "1.2.2" + "@emnapi/wasi-threads" "1.2.3" tslib "^2.4.0" "@emnapi/runtime@^1.4.3": - version "1.11.2" - resolved "https://registry.yarnpkg.com/@emnapi/runtime/-/runtime-1.11.2.tgz#eb22f04d76febfdf4f87fdaff54c8a53f6bf0dbd" - integrity sha512-kyOl3X0DuTiT1h2ft8r2fYO8JYtU9a9Xis/zBSiGArNaagCOWx90N1k2wxp18czFDH+OgcWGb5ZP/XMt3dcyPA== + version "1.11.3" + resolved "https://registry.yarnpkg.com/@emnapi/runtime/-/runtime-1.11.3.tgz#84257ae3b0531eb2aec1ffa23d70700da007ba95" + integrity sha512-Xz4Tpyki7XyrpbUK1jR1AhdAdaXyhhY4lZ3neLodmhpuWfy2PAQN5B46sAiU4liOXGLkHypn/qU+jvfWSCYYLA== dependencies: tslib "^2.4.0" -"@emnapi/wasi-threads@1.2.2": - version "1.2.2" - resolved "https://registry.yarnpkg.com/@emnapi/wasi-threads/-/wasi-threads-1.2.2.tgz#4c93becf5bfa3b13d1bbdcc06aee38321ad8139a" - integrity sha512-c95qOXkHdydNKhscBTebqEC1CVAZpyqOfVfBzQ1qgzyl3gfeldUjIggDbIZgDKsHLgnsM+igH7TJ/eAasaVuMA== +"@emnapi/wasi-threads@1.2.3": + version "1.2.3" + resolved "https://registry.yarnpkg.com/@emnapi/wasi-threads/-/wasi-threads-1.2.3.tgz#c9bf72fd4be5b928aee894820e8d814ed73916e9" + integrity sha512-ELEBe8PsLvvJ6QMr0zLt8ffvOHW/dc1m3CEzNMg7aJUv3bMaoDtw2TXyDAwkYBuroxxuHEwhRTLJSe5sya547g== dependencies: tslib "^2.4.0" @@ -3318,11 +3318,6 @@ accepts@~1.3.8: mime-types "~2.1.34" negotiator "0.6.3" -acorn-import-phases@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/acorn-import-phases/-/acorn-import-phases-1.0.4.tgz#16eb850ba99a056cb7cbfe872ffb8972e18c8bd7" - integrity sha512-wKmbr/DDiIXzEOiWrTTUcDm24kQ2vGfZQvM2fwg2vXqR5uW6aapr7ObPtj1th32b9u90/Pf4AItvdTh42fBmVQ== - acorn-jsx@^5.0.0: version "5.3.2" resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" @@ -3568,10 +3563,10 @@ balanced-match@^1.0.0: resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== -baseline-browser-mapping@^2.10.42: - version "2.10.43" - resolved "https://registry.yarnpkg.com/baseline-browser-mapping/-/baseline-browser-mapping-2.10.43.tgz#7b5d11590ce5acdbe4859443e3c940e81ce8c02d" - integrity sha512-AjYpR78kDWAY3Efj+cDTFH9t9SCoL7OoTp1BOb0mQV7S+6CiLwnWM3FyxhJtdPufDFKzmCSFoUncKjWgJEZTCQ== +baseline-browser-mapping@^2.10.44: + version "2.11.4" + resolved "https://registry.yarnpkg.com/baseline-browser-mapping/-/baseline-browser-mapping-2.11.4.tgz#3da1a877a8be2ec06495123ce994b43af58cc55e" + integrity sha512-s4+sLr9mZ/CyqeRritFeYV/Zx73OAtmaHn6kkBS1XRoJn1hrg3xIDUcpicAEX68tkcIN0iBCgti31C8zxtkhsQ== batch@0.6.1: version "0.6.1" @@ -3663,13 +3658,13 @@ braces@^3.0.3, braces@~3.0.2: fill-range "^7.1.1" browserslist@^4.0.0, browserslist@^4.23.0, browserslist@^4.24.0, browserslist@^4.28.1, browserslist@^4.28.6: - version "4.28.6" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.28.6.tgz#7cf83afcd69c55fde6fb2dcc5039ff0f4ba42610" - integrity sha512-FQBYNK15VMslhLHpA7+n+n1GOlF1kId2xcCg7/j95f24AOF6VDYMNH4mFxF7KuaTdv627faazpOAjFzMrfJOUw== + version "4.28.7" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.28.7.tgz#409046517fccd2e51cdc20f077454b7141184028" + integrity sha512-JxV13hNrFxqjOc8alRbq9dK1MM79NEXYpma2B2J4wAtpWS5zIEIKqWPGCl7N4o7Uc7B7itylh7SuDujATRyyTw== dependencies: - baseline-browser-mapping "^2.10.42" - caniuse-lite "^1.0.30001803" - electron-to-chromium "^1.5.389" + baseline-browser-mapping "^2.10.44" + caniuse-lite "^1.0.30001806" + electron-to-chromium "^1.5.393" node-releases "^2.0.51" update-browserslist-db "^1.2.3" @@ -3777,7 +3772,7 @@ caniuse-api@^3.0.0: lodash.memoize "^4.1.2" lodash.uniq "^4.5.0" -caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001803, caniuse-lite@^1.0.30001806: +caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001806: version "1.0.30001806" resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001806.tgz#1bc8e502b723fa393455dfbedd5ccec0c29bb74e" integrity sha512-72Cuvd95zbSYPKq6Fhg8eDJRlzgWDf7/mtoZv6Qe/DYNCEBdNxoA3+rZAU2ZhGCpZlns3EssFavaZomckT5Uuw== @@ -4572,10 +4567,10 @@ ee-first@1.1.1: resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== -electron-to-chromium@^1.5.389: - version "1.5.393" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.393.tgz#aec971df2a6f4f7e51fbacb200d66cebfc7d3c17" - integrity sha512-kiDJdIUawuEIcp9XoICKp1iTYDEbgguIPq526N1Q7jIQDeQ3CqoMx71025PI/7E48Ddtw2HuWsVjY7afEgNxmg== +electron-to-chromium@^1.5.393: + version "1.5.396" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.396.tgz#4aa96428486c8d1c9c8aeb205b2d6e04928ca046" + integrity sha512-yHiw2Y3C3H9U6TMbOfoWK/BPreiOPXRfTWPBwQBoZG6/8TB6eOPnsy5oaRYuatR7Fw2SJ4kKforgufeo7fq0EQ== emoji-regex@^8.0.0: version "8.0.0" @@ -4615,10 +4610,10 @@ encoding-sniffer@^0.2.1: iconv-lite "^0.6.3" whatwg-encoding "^3.1.1" -enhanced-resolve@^5.22.2: - version "5.24.2" - resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.24.2.tgz#f25d703a24431cb1e02f944adb74aefa4fcb8d7e" - integrity sha512-rpsZEGT1jFuve6QlpyRp9ckQ+kN61hvF9BzCPyMdaKTm8UJce96KBn3sorXOFXlzjPrs3Vc4T1NsSroZ3PxlFw== +enhanced-resolve@^5.24.2: + version "5.24.3" + resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.24.3.tgz#406bbf1ec20971265a30254f08030fce6a8207fe" + integrity sha512-PwKooW9JUzh5chmYfHM3IQl5OkK2u2Nm011MgeZrss3JmFraUx/fqrf78kk8GUMYoibx/14MdwTl/1WKkG7TpQ== dependencies: graceful-fs "^4.2.4" tapable "^2.3.3" @@ -5043,9 +5038,9 @@ fs-extra@^10.0.0: universalify "^2.0.0" fs-extra@^11.1.1, fs-extra@^11.2.0: - version "11.3.6" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-11.3.6.tgz#f7cb80e9df550cd1db6f537fa5cdd568d3e70d10" - integrity sha512-w8ZNZr2mKIc7qeNaQ9AVPT1+iFaI+Avd4xudVOvdDJ8VytREi1Ft5Ih7hd9jjehod8vAM5GMsfQ/TpPf4EyoEA== + version "11.4.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-11.4.0.tgz#f88ed6d180ac9e14b61b08e679468f0b1b6b4730" + integrity sha512-EQsFzMUJkCKGr1ePqlYADkIUmHW1s3ZXr5Yqy6wbGrfUCphpl2maM/kyOIRA2HpP3AaFQTZXD4ldjek+nccddA== dependencies: graceful-fs "^4.2.0" jsonfile "^6.0.1" @@ -5417,9 +5412,9 @@ html-void-elements@^3.0.0: integrity sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg== html-webpack-plugin@^5.6.0: - version "5.6.7" - resolved "https://registry.yarnpkg.com/html-webpack-plugin/-/html-webpack-plugin-5.6.7.tgz#429bab4e12abf3c07e1c608886608e2df2c06b11" - integrity sha512-md+vXtdCAe60s1k6AU3dUyMJnDxUyQAwfwPKoLisvgUF1IXjtlLsk2se54+qfL9Mdm26bbwvjJybpNx48NKRLw== + version "5.6.8" + resolved "https://registry.yarnpkg.com/html-webpack-plugin/-/html-webpack-plugin-5.6.8.tgz#5425dbc63eb533ffa59e92342be94894a125fc23" + integrity sha512-MZmKQcTnhEh1SPSyMiEytIeDZDUoBZVorNHivQGXMASHf/BSGGOrKa2xQ5bGx3TCe1n109ecCt+cpww7wwWhKA== dependencies: "@types/html-minifier-terser" "^6.0.0" html-minifier-terser "^6.0.2" @@ -5980,11 +5975,6 @@ lines-and-columns@^1.1.6: resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== -loader-runner@^4.3.2: - version "4.3.2" - resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-4.3.2.tgz#9913d3a15971f8f635915e601fb5c9d495d918e9" - integrity sha512-DFEqQ3ihfS9blba08cLfYf1NRAIEm+dDjic073DRDc3/JspI/8wYmtDsHwd3+4hwvdxSK7PGaElfTmm0awWJ4w== - loader-utils@^2.0.0: version "2.0.4" resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-2.0.4.tgz#8b5cb38b5c34a9a018ee1fc0e6a066d1dfcc528c" @@ -7818,9 +7808,9 @@ postcss-zindex@^6.0.2: integrity sha512-5BxW9l1evPB/4ZIc+2GobEBoKC+h8gPGCMi+jxsYvd2x0mjq7wazk6DrP71pStqxE9Foxh5TVnonbWpFZzXaYg== postcss@^8.4.21, postcss@^8.4.24, postcss@^8.4.33, postcss@^8.5.4: - version "8.5.20" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.5.20.tgz#316a139da79484ce55969fa7bb6f2f1abcc14060" - integrity sha512-lW616l85ucIQL+FocMmL7pQFPqBmwejrCMg+iPxyImlrANNJG9NHq/RkyCZopDhd8C3LA03PHRJDjkbGu8vvug== + version "8.5.23" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.5.23.tgz#3493550116f478487298301d2c2e8dc5a56e6594" + integrity sha512-g50586zr4bZmwFiTlflMu8E0bDTb5I5gertgwAKmsdUlTQIhZtunzUlD1WSzwcVWPoAVpsrA6vlfCD7oXvRwgg== dependencies: nanoid "^3.3.16" picocolors "^1.1.1" @@ -8390,9 +8380,9 @@ safe-buffer@~5.1.0, safe-buffer@~5.1.1: integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== sax@^1.2.4, sax@^1.5.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/sax/-/sax-1.6.0.tgz#da59637629307b97e7c4cb28e080a7bc38560d5b" - integrity sha512-6R3J5M4AcbtLUdZmRv2SygeVaM7IhrLXu9BmnOGmmACak8fiUtOsYNWUS4uK7upbmHIBbLBeFeI//477BKLBzA== + version "1.6.1" + resolved "https://registry.yarnpkg.com/sax/-/sax-1.6.1.tgz#4c23cf608c0b693ab54b4b5888e92cfe977b9843" + integrity sha512-42tBVwLWnaQvW5zc4HbZrTuWccECCZfBi92FDuwtqxasH+JbPB3/FOKb1m222K42R4WxuxzzMsTswfzgtSu64Q== scheduler@^0.27.0: version "0.27.0" @@ -8914,9 +8904,9 @@ terser@^5.10.0, terser@^5.15.1, terser@^5.31.1: source-map-support "~0.5.20" thingies@^2.5.0: - version "2.6.0" - resolved "https://registry.yarnpkg.com/thingies/-/thingies-2.6.0.tgz#e09b98b9e6f6caf8a759eca8481fea1de974d2b1" - integrity sha512-rMHRjmlFLM1R96UYPvpmnc3LYtdFrT33JIB7L9hetGue1qAPfn1N2LJeEjxUSidu1Iku+haLZXDuEXUHNGO/lg== + version "2.6.1" + resolved "https://registry.yarnpkg.com/thingies/-/thingies-2.6.1.tgz#4eb28e2585a75288f1765a0b08f1dfa020357a6f" + integrity sha512-cV/CMGTK3M4MlnJ/0At6ismOw/A0EEniDNScajjz/Br3c1sqE72YD01rGpPTKwd27wAxI5Pr+6+0w8yofzFRYw== thunky@^1.0.2: version "1.1.0" @@ -9044,9 +9034,9 @@ undici-types@~8.3.0: integrity sha512-j375ScV60dom+YkPFIfTLcOiPxkN/buHz5GobjLhixFuANaNs3C9l4GmrWqejgXWJ7BbJcFYpTEUkS1Ge8bpZQ== undici@^7.19.0: - version "7.28.0" - resolved "https://registry.yarnpkg.com/undici/-/undici-7.28.0.tgz#97d64564198b285bc281f0e8e29597e3d11fe7ec" - integrity sha512-cRZYrTDwWznlnRiPjggAGxZXanty6M8RV1ff8Wm4LWXBp7/IG8v5DnOm74DtUBp9OONpK75YlPnIjQqX0dBDtA== + version "7.29.0" + resolved "https://registry.yarnpkg.com/undici/-/undici-7.29.0.tgz#ae0f6f62e06e057a9cbb7b2b5fde2bb74f791b8f" + integrity sha512-IDxfleLmmbSskfWSUATiN1nfn2rDuvnMOqb5CWR92iIfojA0Ud+ulOAAEQ57LPr9rWmsreUyf5lwyao+7GNNVw== unicode-canonical-property-names-ecmascript@^2.0.0: version "2.0.1" @@ -9355,15 +9345,15 @@ webpack-merge@^6.0.1: flat "^5.0.2" wildcard "^2.0.1" -webpack-sources@^3.5.0: +webpack-sources@^3.5.1: version "3.5.1" resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-3.5.1.tgz#76c2418486dcc02b2aa0694c104176c2858fe84a" integrity sha512-jyuiGJdtvY434z5bUZrjz67v76/ePNvFZTp9Mdz29IlH4+GPsgyGjiv0fKI+M7BdkU6ADjulUcKAd3tUK3WlEw== webpack@^5.88.1, webpack@^5.95.0: - version "5.108.4" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.108.4.tgz#141818a411662773a0bb32dc5536acc5409943b7" - integrity sha512-yur8LyJoeiWh47dErD+Ok7vlbmDsJ3UbbRPAoxbGJ54WpE2y5yVo5G/inUzujnYgw3tPmBRdn+G7PoxXaYC33w== + version "5.109.0" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.109.0.tgz#871d8eee5e2d5e6eaf5ec8d1a6db74ea65491030" + integrity sha512-vomrngskVVXEZF9sMZfYAd4pXZUnfaWdJGlF+BTNF+gJBCKYCQBnOeVPlrh39Ewl7nlCsirDplMy6o5g9xJHBg== dependencies: "@types/estree" "^1.0.8" "@types/json-schema" "^7.0.15" @@ -9371,22 +9361,20 @@ webpack@^5.88.1, webpack@^5.95.0: "@webassemblyjs/wasm-edit" "^1.14.1" "@webassemblyjs/wasm-parser" "^1.14.1" acorn "^8.16.0" - acorn-import-phases "^1.0.3" browserslist "^4.28.1" chrome-trace-event "^1.0.2" - enhanced-resolve "^5.22.2" + enhanced-resolve "^5.24.2" es-module-lexer "^2.1.0" eslint-scope "5.1.1" events "^3.2.0" graceful-fs "^4.2.11" - loader-runner "^4.3.2" mime-db "^1.54.0" minimizer-webpack-plugin "^5.6.1" neo-async "^2.6.2" schema-utils "^4.3.3" tapable "^2.3.0" watchpack "^2.5.2" - webpack-sources "^3.5.0" + webpack-sources "^3.5.1" webpackbar@^7.0.0: version "7.0.0" From 5ff12acda03306e87fb77e266a9eab95dd7837e2 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 28 Jul 2026 19:17:29 +0200 Subject: [PATCH 095/134] chore(deps): update mcr.microsoft.com/azure-storage/azurite:3.36.0 docker digest to 76b8127 (#1036) Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- test/e2e/internal/objectstore/azurite.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/e2e/internal/objectstore/azurite.go b/test/e2e/internal/objectstore/azurite.go index 6a9f20d..a795f26 100644 --- a/test/e2e/internal/objectstore/azurite.go +++ b/test/e2e/internal/objectstore/azurite.go @@ -73,7 +73,7 @@ func newAzuriteDeployment(namespace, name string) *appsv1.Deployment { Name: name, // renovate: datasource=docker depName=mcr.microsoft.com/azure-storage/azurite versioning=docker // Version: 3.36.0 - Image: "mcr.microsoft.com/azure-storage/azurite@sha256:37493d0f2e764467421ffe16eb3caa39277e5fa7f6adea18eb5bbfb3c5247f98", + Image: "mcr.microsoft.com/azure-storage/azurite@sha256:76b8127d608fab8287a14a4bfeb9a5502cdcffb4bf1e86f09f324ebb0e70edba", Args: []string{ "azurite-blob", "--blobHost", From f38a3e3a08397e64b27bfe65398f8fc2bfcd78bf Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 28 Jul 2026 19:27:14 +0200 Subject: [PATCH 096/134] chore(deps): update amazon/aws-cli docker tag to v2.36.9 (#1035) Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- test/e2e/internal/tests/walrestore/fixtures.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/e2e/internal/tests/walrestore/fixtures.go b/test/e2e/internal/tests/walrestore/fixtures.go index a34d0f5..e47c9d6 100644 --- a/test/e2e/internal/tests/walrestore/fixtures.go +++ b/test/e2e/internal/tests/walrestore/fixtures.go @@ -121,8 +121,8 @@ func newS3ClientDeployment(namespace string) *appsv1.Deployment { { Name: s3ClientName, // renovate: datasource=docker depName=amazon/aws-cli versioning=docker - // Version: 2.36.8 - Image: "docker.io/amazon/aws-cli@sha256:7e1b11a3c93bc5af81f496de0662f666b2352a4a6666e8ebae904fe102b131b6", + // Version: 2.36.9 + Image: "docker.io/amazon/aws-cli@sha256:00dee8ccaf669721f8163944ea9e6ac13183851b23d5b7a9868a608bc932cfdb", Command: []string{"sleep", "infinity"}, Env: []corev1.EnvVar{ { From bfa7fe024cdbfec2dbbbc316afdad583374e10b8 Mon Sep 17 00:00:00 2001 From: Marco Nenciarini Date: Wed, 29 Jul 2026 11:26:55 +0200 Subject: [PATCH 097/134] docs(release): documentation for release 0.14.0 (#1037) Signed-off-by: Marco Nenciarini --- .../version-0.14.0/compression.md | 45 ++ web/versioned_docs/version-0.14.0/concepts.md | 177 ++++++ web/versioned_docs/version-0.14.0/images.md | 37 ++ .../version-0.14.0/installation.mdx | 109 ++++ web/versioned_docs/version-0.14.0/intro.md | 86 +++ .../version-0.14.0/migration.md | 274 ++++++++ web/versioned_docs/version-0.14.0/misc.md | 126 ++++ .../version-0.14.0/object_stores.md | 497 +++++++++++++++ .../version-0.14.0/observability.md | 24 + .../version-0.14.0/parameters.md | 19 + .../version-0.14.0/plugin-barman-cloud.v1.md | 108 ++++ .../version-0.14.0/resource-name-migration.md | 219 +++++++ .../version-0.14.0/retention.md | 38 ++ .../version-0.14.0/troubleshooting.md | 591 ++++++++++++++++++ .../version-0.14.0/upgrades.mdx | 16 + web/versioned_docs/version-0.14.0/usage.md | 283 +++++++++ .../version-0.14.0-sidebars.json | 8 + web/versions.json | 1 + 18 files changed, 2658 insertions(+) create mode 100644 web/versioned_docs/version-0.14.0/compression.md create mode 100644 web/versioned_docs/version-0.14.0/concepts.md create mode 100644 web/versioned_docs/version-0.14.0/images.md create mode 100644 web/versioned_docs/version-0.14.0/installation.mdx create mode 100644 web/versioned_docs/version-0.14.0/intro.md create mode 100644 web/versioned_docs/version-0.14.0/migration.md create mode 100644 web/versioned_docs/version-0.14.0/misc.md create mode 100644 web/versioned_docs/version-0.14.0/object_stores.md create mode 100644 web/versioned_docs/version-0.14.0/observability.md create mode 100644 web/versioned_docs/version-0.14.0/parameters.md create mode 100644 web/versioned_docs/version-0.14.0/plugin-barman-cloud.v1.md create mode 100644 web/versioned_docs/version-0.14.0/resource-name-migration.md create mode 100644 web/versioned_docs/version-0.14.0/retention.md create mode 100644 web/versioned_docs/version-0.14.0/troubleshooting.md create mode 100644 web/versioned_docs/version-0.14.0/upgrades.mdx create mode 100644 web/versioned_docs/version-0.14.0/usage.md create mode 100644 web/versioned_sidebars/version-0.14.0-sidebars.json diff --git a/web/versioned_docs/version-0.14.0/compression.md b/web/versioned_docs/version-0.14.0/compression.md new file mode 100644 index 0000000..cfc6355 --- /dev/null +++ b/web/versioned_docs/version-0.14.0/compression.md @@ -0,0 +1,45 @@ +--- +sidebar_position: 80 +--- + +# Compression + + + +By default, backups and WAL files are archived **uncompressed**. However, the +Barman Cloud Plugin supports multiple compression algorithms via +`barman-cloud-backup` and `barman-cloud-wal-archive`, allowing you to optimize +for space, speed, or a balance of both. + +### Supported Compression Algorithms + +- `bzip2` +- `gzip` +- `lz4` +- `snappy` +- `xz` (WAL only) +- `zstd` (WAL only) + +Compression settings for base backups and WAL archives are configured +independently. For implementation details, refer to the corresponding API +definitions: + +- [`DataBackupConfiguration`](https://pkg.go.dev/github.com/cloudnative-pg/barman-cloud/pkg/api#DataBackupConfiguration) +- [`WALBackupConfiguration`](https://pkg.go.dev/github.com/cloudnative-pg/barman-cloud/pkg/api#WalBackupConfiguration) + +:::important +Compression impacts both performance and storage efficiency. Choose the right +algorithm based on your recovery time objectives (RTO), storage capacity, and +network throughput. +::: + +## Compression Benchmark (on MinIO) + +| Compression | Backup Time (ms) | Restore Time (ms) | Uncompressed Size (MB) | Compressed Size (MB) | Ratio | +| ----------- | ---------------- | ----------------- | ---------------------- | -------------------- | ----- | +| None | 10,927 | 7,553 | 395 | 395 | 1.0:1 | +| bzip2 | 25,404 | 13,886 | 395 | 67 | 5.9:1 | +| gzip | 116,281 | 3,077 | 395 | 91 | 4.3:1 | +| snappy | 8,134 | 8,341 | 395 | 166 | 2.4:1 | + +Numbers come from a 2021 Barman proof of concept ([EnterpriseDB/barman#344](https://github.com/EnterpriseDB/barman/issues/344#issuecomment-992547396)), which predates `lz4` support for base backups. `lz4` is not yet benchmarked. diff --git a/web/versioned_docs/version-0.14.0/concepts.md b/web/versioned_docs/version-0.14.0/concepts.md new file mode 100644 index 0000000..388714a --- /dev/null +++ b/web/versioned_docs/version-0.14.0/concepts.md @@ -0,0 +1,177 @@ +--- +sidebar_position: 10 +--- + +# Main Concepts + + + +:::important +Before proceeding, make sure to review the following sections of the +CloudNativePG documentation: + +- [**Backup**](https://cloudnative-pg.io/documentation/current/backup/) +- [**WAL Archiving**](https://cloudnative-pg.io/documentation/current/wal_archiving/) +- [**Recovery**](https://cloudnative-pg.io/documentation/current/recovery/) +::: + +The **Barman Cloud Plugin** enables **hot (online) backups** of PostgreSQL +clusters in CloudNativePG through [`barman-cloud`](https://pgbarman.org), +supporting continuous physical backups and WAL archiving to an **object +store**β€”without interrupting write operations. + +It also supports both **full recovery** and **Point-in-Time Recovery (PITR)** +of a PostgreSQL cluster. + +## The Object Store + +At the core is the [`ObjectStore` custom resource (CRD)](plugin-barman-cloud.v1.md#objectstorespec), +which acts as the interface between the PostgreSQL cluster and the target +object storage system. It allows you to configure: + +- **Authentication and bucket location** via the `.spec.configuration` section +- **WAL archiving** settingsβ€”such as compression type, parallelism, and + server-side encryptionβ€”under `.spec.configuration.wal` +- **Base backup options**β€”with similar settings for compression, concurrency, + and encryptionβ€”under `.spec.configuration.data` +- **Retention policies** to manage the life-cycle of archived WALs and backups + via `.spec.configuration.retentionPolicy` + +WAL files are archived in the `wals` directory, while base backups are stored +as **tarballs** in the `base` directory, following the +[Barman Cloud convention](https://docs.pgbarman.org/cloud/latest/usage/#object-store-layout). + +The plugin also offers advanced capabilities, including +[backup tagging](misc.md#backup-object-tagging) and +[extra options for backups and WAL archiving](misc.md#extra-options-for-backup-wal-archiving-and-restore). + +:::tip +For details, refer to the +[API reference for the `ObjectStore` resource](plugin-barman-cloud.v1.md#objectstorespec). +::: + +## Integration with a CloudNativePG Cluster + +CloudNativePG can delegate continuous backup and recovery responsibilities to +the **Barman Cloud Plugin** by configuring the `.spec.plugins` section of a +`Cluster` resource. This setup requires a corresponding `ObjectStore` resource +to be defined. + +:::important +While it is technically possible to reuse the same `ObjectStore` for multiple +`Cluster` resources within the same namespace, it is strongly recommended to +dedicate one object store per PostgreSQL cluster to ensure data isolation and +operational clarity. +::: + +The following example demonstrates how to configure a CloudNativePG cluster +named `cluster-example` to use a previously defined `ObjectStore` (also named +`cluster-example`) in the same namespace. Setting `isWALArchiver: true` enables +WAL archiving through the plugin: + +```yaml +apiVersion: postgresql.cnpg.io/v1 +kind: Cluster +metadata: + name: cluster-example +spec: + # Other cluster settings... + plugins: + - name: barman-cloud.cloudnative-pg.io + isWALArchiver: true + parameters: + barmanObjectName: cluster-example +``` + +## Backup of a Postgres Cluster + +Once the object store is defined and the `Cluster` is configured to use the +Barman Cloud Plugin, **WAL archiving is activated immediately** on the +PostgreSQL primary. + +Physical base backups are seamlessly managed by CloudNativePG using the +`Backup` and `ScheduledBackup` resources, respectively for +[on-demand](https://cloudnative-pg.io/documentation/current/backup/#on-demand-backups) +and +[scheduled](https://cloudnative-pg.io/documentation/current/backup/#scheduled-backups) +backups. + +To use the Barman Cloud Plugin, you must set the `method` to `plugin` and +configure the `pluginConfiguration` section as shown: + +```yaml +[...] +spec: + method: plugin + pluginConfiguration: + name: barman-cloud.cloudnative-pg.io + [...] +``` + +With this configuration, CloudNativePG supports: + +- Backups from both **primary** and **standby** instances +- Backups from **designated primaries** in a distributed topology using + [replica clusters](https://cloudnative-pg.io/documentation/current/replica_cluster/) + +:::tip +For details on how to back up from a standby, refer to the official documentation: +[Backup from a standby](https://cloudnative-pg.io/documentation/current/backup/#backup-from-a-standby). +::: + +:::important +Both backup and WAL archiving operations are executed by sidecar containers +running in the same pod as the PostgreSQL `Cluster` primary instanceβ€”except +when backups are taken from a standby, in which case the sidecar runs alongside +the standby pod. +The sidecar containers use a [dedicated container image](images.md) that +includes only the supported version of Barman Cloud. +::: + +## Recovery of a Postgres Cluster + +In PostgreSQL, *recovery* refers to the process of starting a database instance +from an existing backup. The Barman Cloud Plugin integrates with CloudNativePG +to support both **full recovery** and **Point-in-Time Recovery (PITR)** from an +object store. + +Recovery in this context is *not in-place*: it bootstraps a brand-new +PostgreSQL cluster from a backup and replays the necessary WAL files to reach +the desired recovery target. + +To perform a recovery, define an *external cluster* that references the +appropriate `ObjectStore`, and use it as the source in the `bootstrap` section +of the target cluster: + +```yaml +[...] +spec: + [...] + bootstrap: + recovery: + source: source + externalClusters: + - name: source + plugin: + name: barman-cloud.cloudnative-pg.io + parameters: + barmanObjectName: cluster-example + serverName: cluster-example + [...] +``` + +The critical element here is the `externalClusters` section of the `Cluster` +resource, where the `plugin` stanza instructs CloudNativePG to use the Barman +Cloud Plugin to access the object store for recovery. + +This same mechanism can be used for a variety of scenarios enabled by the +CloudNativePG API, including: + +* **Full cluster recovery** from the latest backup +* **Point-in-Time Recovery (PITR)** +* Bootstrapping **replica clusters** in a distributed topology + +:::tip +For complete instructions and advanced use cases, refer to the official +[Recovery documentation](https://cloudnative-pg.io/documentation/current/recovery/). +::: diff --git a/web/versioned_docs/version-0.14.0/images.md b/web/versioned_docs/version-0.14.0/images.md new file mode 100644 index 0000000..f6c32d3 --- /dev/null +++ b/web/versioned_docs/version-0.14.0/images.md @@ -0,0 +1,37 @@ +--- +sidebar_position: 99 +--- + +# Container Images + + + +The Barman Cloud Plugin is distributed using two container images: + +- One for deploying the plugin components +- One for the sidecar that runs alongside each PostgreSQL instance in a + CloudNativePG `Cluster` using the plugin + +## Plugin Container Image + +The plugin image contains the logic required to operate the Barman Cloud Plugin +within your Kubernetes environment with CloudNativePG. It is published on the +GitHub Container Registry at `ghcr.io/cloudnative-pg/plugin-barman-cloud`. + +This image is built from the +[`Dockerfile.plugin`](https://github.com/cloudnative-pg/plugin-barman-cloud/blob/main/containers/Dockerfile.plugin) +in the plugin repository. + +## Sidecar Container Image + +The sidecar image is used within each PostgreSQL pod in the cluster. It +includes the latest supported version of Barman Cloud and is responsible for +performing WAL archiving and backups on behalf of CloudNativePG. + +It is available at `ghcr.io/cloudnative-pg/plugin-barman-cloud-sidecar` and is +built from the +[`Dockerfile.sidecar`](https://github.com/cloudnative-pg/plugin-barman-cloud/blob/main/containers/Dockerfile.sidecar). + +These sidecar images are designed to work seamlessly with the +[`minimal` PostgreSQL container images](https://github.com/cloudnative-pg/postgres-containers?tab=readme-ov-file#minimal-images) +maintained by the CloudNativePG Community. diff --git a/web/versioned_docs/version-0.14.0/installation.mdx b/web/versioned_docs/version-0.14.0/installation.mdx new file mode 100644 index 0000000..027d1e8 --- /dev/null +++ b/web/versioned_docs/version-0.14.0/installation.mdx @@ -0,0 +1,109 @@ +--- +sidebar_position: 20 +--- + +# Installation + +:::important +1. The plugin **must** be installed in the same namespace as the CloudNativePG + operator (typically `cnpg-system`). + +2. Keep in mind that the operator's **listening namespaces** may differ from its + installation namespace. Double-check this to avoid configuration issues. +::: + +## Verifying the Requirements + +Before installing the plugin, make sure the [requirements](intro.md#requirements) are met. + +### CloudNativePG Version + +Ensure you're running a version of CloudNativePG that is compatible with the +plugin. If installed in the default `cnpg-system` namespace, you can verify the +version with: + +```sh +kubectl get deployment -n cnpg-system cnpg-controller-manager \ + -o jsonpath="{.spec.template.spec.containers[*].image}" +``` + +Example output: + +```output +ghcr.io/cloudnative-pg/cloudnative-pg:1.26.0 +``` + +The version **must be 1.26 or newer**. + +### cert-manager + +Use the [cmctl](https://cert-manager.io/docs/reference/cmctl/#installation) +tool to confirm that `cert-manager` is installed and available: + +```sh +cmctl check api +``` + +Example output: + +```output +The cert-manager API is ready +``` + +Both checks are required before proceeding with the installation. + +## Installing the Barman Cloud Plugin + +import { InstallationSnippet } from '@site/src/components/Installation'; + +Install the plugin using `kubectl` by applying the manifest for the latest +release: + + + +Example output: + +```output +customresourcedefinition.apiextensions.k8s.io/objectstores.barmancloud.cnpg.io created +serviceaccount/plugin-barman-cloud created +role.rbac.authorization.k8s.io/leader-election-role created +clusterrole.rbac.authorization.k8s.io/metrics-auth-role created +clusterrole.rbac.authorization.k8s.io/metrics-reader created +clusterrole.rbac.authorization.k8s.io/objectstore-editor-role created +clusterrole.rbac.authorization.k8s.io/objectstore-viewer-role created +clusterrole.rbac.authorization.k8s.io/plugin-barman-cloud created +rolebinding.rbac.authorization.k8s.io/leader-election-rolebinding created +clusterrolebinding.rbac.authorization.k8s.io/metrics-auth-rolebinding created +clusterrolebinding.rbac.authorization.k8s.io/plugin-barman-cloud-binding created +secret/plugin-barman-cloud-8tfddg42gf created +service/barman-cloud created +deployment.apps/barman-cloud configured +certificate.cert-manager.io/barman-cloud-client created +certificate.cert-manager.io/barman-cloud-server created +issuer.cert-manager.io/selfsigned-issuer created +``` + +Finally, check that the deployment is up and running: + +```sh +kubectl rollout status deployment \ + -n cnpg-system barman-cloud +``` + +Example output: + +```output +deployment "barman-cloud" successfully rolled out +``` + +This confirms that the plugin is deployed and ready to use. + +## Testing the latest development snapshot + +You can also test the latest development snapshot of the plugin with the +following command: + +```sh +kubectl apply -f \ + https://raw.githubusercontent.com/cloudnative-pg/plugin-barman-cloud/refs/heads/main/manifest.yaml +``` diff --git a/web/versioned_docs/version-0.14.0/intro.md b/web/versioned_docs/version-0.14.0/intro.md new file mode 100644 index 0000000..9781d0d --- /dev/null +++ b/web/versioned_docs/version-0.14.0/intro.md @@ -0,0 +1,86 @@ +--- +sidebar_position: 1 +sidebar_label: "Introduction" +--- + +# Barman Cloud Plugin + + + +The **Barman Cloud Plugin** for [CloudNativePG](https://cloudnative-pg.io/) +enables online continuous physical backups of PostgreSQL clusters to object storage +using the `barman-cloud` suite from the [Barman](https://docs.pgbarman.org/release/latest/) +project. + +:::important +If you plan to migrate your existing CloudNativePG cluster to the new +plugin-based approach using the Barman Cloud Plugin, see +["Migrating from Built-in CloudNativePG Backup"](migration.md) +for detailed instructions. +::: + +## Requirements + +Before using the Barman Cloud Plugin, ensure that the following components are +installed and properly configured: + +- [CloudNativePG](https://cloudnative-pg.io) version 1.26 or later + + - We strongly recommend version 1.27.0 or later, which includes improved + error handling and status reporting for the plugin. + - If you are running an earlier release, refer to the + [upgrade guide](https://cloudnative-pg.io/documentation/current/installation_upgrade). + +- [cert-manager](https://cert-manager.io/) + + - The recommended way to enable secure TLS communication between the plugin + and the operator. + - Alternatively, you can provide your own certificate bundles. See the + [CloudNativePG documentation on TLS configuration](https://cloudnative-pg.io/documentation/current/cnpg_i/#configuring-tls-certificates). + +- [`kubectl-cnpg`](https://cloudnative-pg.io/documentation/current/kubectl-plugin/) + plugin (optional but recommended) + + - Simplifies debugging and monitoring with additional status and inspection + commands. + - Multiple installation options are available in the + [installation guide](https://cloudnative-pg.io/documentation/current/kubectl-plugin/#install). + +## Key Features + +This plugin provides the following capabilities: + +- Physical online backup of the data directory +- Physical restore of the data directory +- Write-Ahead Log (WAL) archiving +- WAL restore +- Full cluster recovery +- Point-in-Time Recovery (PITR) +- Seamless integration with replica clusters for bootstrap and WAL restore from archive + +:::important +The Barman Cloud Plugin is designed to **replace the in-tree object storage support** +previously provided via the `.spec.backup.barmanObjectStore` section in the +`Cluster` resource. +Backups created using the in-tree approach are fully supported and compatible +with this plugin. +::: + +## Supported Object Storage Providers + +The plugin works with all storage backends supported by `barman-cloud`, including: + +- **Amazon S3** +- **Google Cloud Storage** +- **Microsoft Azure Blob Storage** + +In addition, the following S3-compatible and simulator solutions have been +tested and verified: + +- [MinIO](https://min.io/) – An S3-compatible storage solution +- [Azurite](https://github.com/Azure/Azurite) – A simulator for Azure Blob Storage +- [fake-gcs-server](https://github.com/fsouza/fake-gcs-server) – A simulator for Google Cloud Storage + +:::tip +For more details, refer to [Object Store Providers](object_stores.md). +::: diff --git a/web/versioned_docs/version-0.14.0/migration.md b/web/versioned_docs/version-0.14.0/migration.md new file mode 100644 index 0000000..2c99ada --- /dev/null +++ b/web/versioned_docs/version-0.14.0/migration.md @@ -0,0 +1,274 @@ +--- +sidebar_position: 40 +--- + +# Migrating from Built-in CloudNativePG Backup + + + +The in-tree support for Barman Cloud in CloudNativePG is **deprecated starting +from version 1.26** and will be removed in a future release. + +If you're currently relying on the built-in Barman Cloud integration, you can +migrate seamlessly to the new **plugin-based architecture** using the Barman +Cloud Plugin, without data loss. Follow these steps: + +- [Install the Barman Cloud Plugin](installation.mdx) +- Create an `ObjectStore` resource by translating the contents of the + `.spec.backup.barmanObjectStore` section from your existing `Cluster` + definition +- Modify the `Cluster` resource in a single atomic change to switch from + in-tree backup to the plugin +- Update any `ScheduledBackup` resources to use the plugin +- Update the `externalClusters` configuration, where applicable + +:::tip +For a working example, refer to [this commit](https://github.com/cloudnative-pg/cnpg-playground/commit/596f30e252896edf8f734991c3538df87630f6f7) +from the [CloudNativePG Playground project](https://github.com/cloudnative-pg/cnpg-playground), +which demonstrates a full migration. +::: + +--- + +## Step 1: Define the `ObjectStore` + +Begin by creating an `ObjectStore` resource in the same namespace as your +PostgreSQL `Cluster`. + +There is a **direct mapping** between the `.spec.backup.barmanObjectStore` +section in CloudNativePG and the `.spec.configuration` field in the +`ObjectStore` CR. The conversion is mostly mechanical, with one key difference: + +:::warning +In the plugin architecture, retention policies are defined as part of the `ObjectStore`. +In contrast, the in-tree implementation defined them at the `Cluster` level. +::: + +If your `Cluster` used `.spec.backup.retentionPolicy`, move that configuration +to `.spec.retentionPolicy` in the `ObjectStore`. + +--- + +### Example + +Here’s an excerpt from a traditional in-tree CloudNativePG backup configuration +taken from the CloudNativePG Playground project: + +```yaml +apiVersion: postgresql.cnpg.io/v1 +kind: Cluster +metadata: + name: pg-eu +spec: + # [...] + backup: + barmanObjectStore: + destinationPath: s3://backups/ + endpointURL: http://minio-eu:9000 + s3Credentials: + accessKeyId: + name: minio-eu + key: ACCESS_KEY_ID + secretAccessKey: + name: minio-eu + key: ACCESS_SECRET_KEY + wal: + compression: gzip +``` + +This configuration translates to the following `ObjectStore` resource for the +plugin: + +```yaml +apiVersion: barmancloud.cnpg.io/v1 +kind: ObjectStore +metadata: + name: minio-eu +spec: + configuration: + destinationPath: s3://backups/ + endpointURL: http://minio-eu:9000 + s3Credentials: + accessKeyId: + name: minio-eu + key: ACCESS_KEY_ID + secretAccessKey: + name: minio-eu + key: ACCESS_SECRET_KEY + wal: + compression: gzip +``` + +As you can see, the contents of `barmanObjectStore` have been copied directly +under the `configuration` field of the `ObjectStore` resource, using the same +secret references. + +## Step 2: Update the `Cluster` for plugin WAL archiving + +Once the `ObjectStore` resource is in place, update the `Cluster` resource as +follows in a single atomic change: + +- Remove the `.spec.backup.barmanObjectStore` section +- Remove `.spec.backup.retentionPolicy` if it was defined (as it is now in the + `ObjectStore`) +- Remove the entire `spec.backup` section if it is now empty +- Add `barman-cloud.cloudnative-pg.io` to the `plugins` list, as described in + [Configuring WAL archiving](usage.md#configuring-wal-archiving) + +This will trigger a rolling update of the `Cluster`, switching continuous +backup from the in-tree implementation to the plugin-based approach. + +### Example + +The updated `pg-eu` cluster will have this configuration instead of the +previous `backup` section: + +```yaml + plugins: + - name: barman-cloud.cloudnative-pg.io + isWALArchiver: true + parameters: + barmanObjectName: minio-eu +``` + +--- + +## Step 3: Update the `ScheduledBackup` + +After switching the `Cluster` to use the plugin, update your `ScheduledBackup` +resources to match. + +Set the backup `method` to `plugin` and reference the plugin name via +`pluginConfiguration`, as shown in ["Performing a base backup"](usage.md#performing-a-base-backup). + +### Example + +Original in-tree `ScheduledBackup`: + +```yaml +apiVersion: postgresql.cnpg.io/v1 +kind: ScheduledBackup +metadata: + name: pg-eu-backup +spec: + cluster: + name: pg-eu + schedule: '0 0 0 * * *' + backupOwnerReference: self +``` + +Updated version using the plugin: + +```yaml +apiVersion: postgresql.cnpg.io/v1 +kind: ScheduledBackup +metadata: + name: pg-eu-backup +spec: + cluster: + name: pg-eu + schedule: '0 0 0 * * *' + backupOwnerReference: self + method: plugin + pluginConfiguration: + name: barman-cloud.cloudnative-pg.io +``` + +--- + +## Step 4: Update the `externalClusters` configuration + +If your `Cluster` relies on one or more external clusters that use the in-tree +Barman Cloud integration, you need to update those configurations to use the +plugin-based architecture. + +When a replica cluster fetches WAL files or base backups from an external +source that used the built-in backup method, follow these steps: + +1. Create a corresponding `ObjectStore` resource for the external cluster, as + shown in [Step 1](#step-1-define-the-objectstore) +2. Update the `externalClusters` section of your replica cluster to use the + plugin instead of the in-tree `barmanObjectStore` field + +### Example + +Consider the original configuration using in-tree Barman Cloud: + +```yaml +apiVersion: postgresql.cnpg.io/v1 +kind: Cluster +metadata: + name: pg-us +spec: + # [...] + externalClusters: + - name: pg-eu + barmanObjectStore: + destinationPath: s3://backups/ + endpointURL: http://minio-eu:9000 + serverName: pg-eu + s3Credentials: + accessKeyId: + name: minio-eu + key: ACCESS_KEY_ID + secretAccessKey: + name: minio-eu + key: ACCESS_SECRET_KEY + wal: + compression: gzip +``` + +Create the `ObjectStore` resource for the external cluster: + +```yaml +apiVersion: barmancloud.cnpg.io/v1 +kind: ObjectStore +metadata: + name: minio-eu +spec: + configuration: + destinationPath: s3://backups/ + endpointURL: http://minio-eu:9000 + s3Credentials: + accessKeyId: + name: minio-eu + key: ACCESS_KEY_ID + secretAccessKey: + name: minio-eu + key: ACCESS_SECRET_KEY + wal: + compression: gzip +``` + +Update the external cluster configuration to use the plugin: + +```yaml +apiVersion: postgresql.cnpg.io/v1 +kind: Cluster +metadata: + name: pg-us +spec: + # [...] + externalClusters: + - name: pg-eu + plugin: + name: barman-cloud.cloudnative-pg.io + parameters: + barmanObjectName: minio-eu + serverName: pg-eu +``` + +## Step 5: Verify your metrics + +When migrating from the in-core solution to the plugin-based approach, you need +to monitor a different set of metrics, as described in the +["Observability"](observability.md) section. + +The table below summarizes the name changes between the old in-core metrics and +the new plugin-based ones: + +| Old metric name | New metric name | +| ------------------------------------------------ | ---------------------------------------------------------------- | +| `cnpg_collector_last_failed_backup_timestamp` | `barman_cloud_cloudnative_pg_io_last_failed_backup_timestamp` | +| `cnpg_collector_last_available_backup_timestamp` | `barman_cloud_cloudnative_pg_io_last_available_backup_timestamp` | +| `cnpg_collector_first_recoverability_point` | `barman_cloud_cloudnative_pg_io_first_recoverability_point` | diff --git a/web/versioned_docs/version-0.14.0/misc.md b/web/versioned_docs/version-0.14.0/misc.md new file mode 100644 index 0000000..e6594df --- /dev/null +++ b/web/versioned_docs/version-0.14.0/misc.md @@ -0,0 +1,126 @@ +--- +sidebar_position: 90 +--- + +# Miscellaneous + + + +## Backup Object Tagging + +You can attach key-value metadata tags to backup artifactsβ€”such as base +backups, WAL files, and history filesβ€”via the `.spec.configuration` section of +the `ObjectStore` resource. + +- `tags`: applied to base backups and WAL files +- `historyTags`: applied to history files only + +### Example + +```yaml +apiVersion: barmancloud.cnpg.io/v1 +kind: ObjectStore +metadata: + name: my-store +spec: + configuration: + [...] + tags: + backupRetentionPolicy: "expire" + historyTags: + backupRetentionPolicy: "keep" + [...] +``` + +## Extra Options for Backup, WAL Archiving, and Restore + +You can pass additional command-line arguments to the underlying +`barman-cloud-*` commands using the corresponding fields in the `ObjectStore` +configuration. + +- `.spec.configuration.data.additionalCommandArgs`: for `barman-cloud-backup` +- `.spec.configuration.data.restoreAdditionalCommandArgs`: for `barman-cloud-restore` +- `.spec.configuration.wal.archiveAdditionalCommandArgs`: for `barman-cloud-wal-archive` +- `.spec.configuration.wal.restoreAdditionalCommandArgs`: for `barman-cloud-wal-restore` + +Each field accepts a list of string arguments. If an argument conflicts with +one already set by the plugin, the user-provided value will be ignored. These +fields are intended to pass options the plugin does not configure automatically. + +### Example: Extra Backup Options + +```yaml +kind: ObjectStore +metadata: + name: my-store +spec: + configuration: + data: + additionalCommandArgs: + - "--min-chunk-size=5MB" + - "--read-timeout=60" +``` + +### Example: Extra Restore Options + +```yaml +kind: ObjectStore +metadata: + name: my-store +spec: + configuration: + data: + restoreAdditionalCommandArgs: + - "--read-timeout=900" +``` + +### Example: Extra WAL Archive Options + +```yaml +kind: ObjectStore +metadata: + name: my-store +spec: + configuration: + wal: + archiveAdditionalCommandArgs: + - "--max-concurrency=1" + - "--read-timeout=60" +``` + +### Example: Extra WAL Restore Options + +```yaml +kind: ObjectStore +metadata: + name: my-store +spec: + configuration: + wal: + restoreAdditionalCommandArgs: + - "--read-timeout=60" +``` + +For a complete list of supported options, refer to the +[official Barman Cloud documentation](https://docs.pgbarman.org/release/latest/). + +## Enable the pprof debug server for the sidecar + +You can enable the instance sidecar's pprof debug HTTP server by adding the `--pprof-server=
` flag to the container's +arguments via `.spec.instanceSidecarConfiguration.additionalContainerArgs`. + +Pass a bind address in the form `:` (for example, `0.0.0.0:6061`). +An empty value disables the server (disabled by default). + +### Example + +```yaml +apiVersion: barmancloud.cnpg.io/v1 +kind: ObjectStore +metadata: + name: my-store +spec: + instanceSidecarConfiguration: + additionalContainerArgs: + - "--pprof-server=0.0.0.0:6061" +``` diff --git a/web/versioned_docs/version-0.14.0/object_stores.md b/web/versioned_docs/version-0.14.0/object_stores.md new file mode 100644 index 0000000..11b1ff8 --- /dev/null +++ b/web/versioned_docs/version-0.14.0/object_stores.md @@ -0,0 +1,497 @@ +--- +sidebar_position: 50 +--- + +# Object Store Providers + + + +The Barman Cloud Plugin enables the storage of PostgreSQL cluster backup files +in any object storage service supported by the +[Barman Cloud infrastructure](https://docs.pgbarman.org/release/latest/). + +Currently, Barman Cloud supports the following providers: + +- [Amazon S3](#aws-s3) +- [Microsoft Azure Blob Storage](#azure-blob-storage) +- [Google Cloud Storage](#google-cloud-storage) + +You may also use any S3- or Azure-compatible implementation of the above +services. + +To configure object storage with Barman Cloud, you must define an +[`ObjectStore` object](plugin-barman-cloud.v1.md#objectstore), which +establishes the connection between your PostgreSQL cluster and the object +storage backend. + +Configuration details β€” particularly around authentication β€” will vary depending on +the specific object storage provider you are using. + +The following sections detail the setup for each. + +:::note Authentication Methods +The Barman Cloud Plugin does not independently test all authentication methods +supported by `barman-cloud`. The plugin's responsibility is limited to passing +the provided credentials to `barman-cloud`, which then handles authentication +according to its own implementation. Users should refer to the +[Barman Cloud documentation](https://docs.pgbarman.org/release/latest/) to +verify that their chosen authentication method is supported and properly +configured. +::: + +--- + +## AWS S3 + +[AWS Simple Storage Service (S3)](https://aws.amazon.com/s3/) is one of the +most widely adopted object storage solutions. + +The Barman Cloud plugin for CloudNativePG integrates with S3 through two +primary authentication mechanisms: + +- [IAM Roles for Service Accounts (IRSA)](https://docs.aws.amazon.com/eks/latest/userguide/iam-roles-for-service-accounts.html) β€” + recommended for clusters running on EKS +- Access keys β€” using `ACCESS_KEY_ID` and `ACCESS_SECRET_KEY` credentials + +### Access Keys + +To authenticate using access keys, you’ll need: + +- `ACCESS_KEY_ID`: the public key used to authenticate to S3 +- `ACCESS_SECRET_KEY`: the corresponding secret key +- `ACCESS_SESSION_TOKEN`: (optional) a temporary session token, if required + +These credentials must be stored securely in a Kubernetes secret: + +```sh +kubectl create secret generic aws-creds \ + --from-literal=ACCESS_KEY_ID= \ + --from-literal=ACCESS_SECRET_KEY= +# --from-literal=ACCESS_SESSION_TOKEN= # if required +``` + +The credentials will be encrypted at rest if your Kubernetes environment +supports it. + +You can then reference the secret in your `ObjectStore` definition: + +```yaml +apiVersion: barmancloud.cnpg.io/v1 +kind: ObjectStore +metadata: + name: aws-store +spec: + configuration: + destinationPath: "s3://BUCKET_NAME/path/to/folder" + s3Credentials: + accessKeyId: + name: aws-creds + key: ACCESS_KEY_ID + secretAccessKey: + name: aws-creds + key: ACCESS_SECRET_KEY + [...] +``` + +### IAM Role for Service Account (IRSA) + +To use IRSA with EKS, configure the service account of the PostgreSQL cluster +with the appropriate annotation: + +```yaml +apiVersion: postgresql.cnpg.io/v1 +kind: Cluster +metadata: + [...] +spec: + serviceAccountTemplate: + metadata: + annotations: + eks.amazonaws.com/role-arn: arn:[...] + [...] +``` + +### S3 Lifecycle Policy + +Barman Cloud uploads backup files to S3 but does not modify them afterward. +To enhance data durability and protect against accidental or malicious loss, +it's recommended to implement the following best practices: + +- Enable object versioning +- Enable object locking to prevent objects from being deleted or overwritten + for a defined period or indefinitely (this provides an additional layer of + protection against accidental deletion and ransomware attacks) +- Set lifecycle rules to expire current versions a few days after your Barman + retention window +- Expire non-current versions after a longer period + +These strategies help you safeguard backups without requiring broad delete +permissions, ensuring both security and compliance with minimal operational +overhead. + +### S3-Compatible Storage Providers + +You can use S3-compatible services like **MinIO**, **Linode (Akamai) Object Storage**, +or **DigitalOcean Spaces** by specifying a custom `endpointURL`. + +Example with Linode (Akamai) Object Storage (`us-east1`): + +```yaml +apiVersion: barmancloud.cnpg.io/v1 +kind: ObjectStore +metadata: + name: linode-store +spec: + configuration: + destinationPath: "s3://BUCKET_NAME/" + endpointURL: "https://us-east1.linodeobjects.com" + s3Credentials: + [...] + [...] +``` + +Recent changes to the [boto3 implementation](https://github.com/boto/boto3/issues/4392) +of [Amazon S3 Data Integrity Protections](https://docs.aws.amazon.com/sdkref/latest/guide/feature-dataintegrity.html) +may lead to the `x-amz-content-sha256` error when using the Barman Cloud +Plugin. + +If you encounter this issue (see [GitHub issue #393](https://github.com/cloudnative-pg/plugin-barman-cloud/issues/393)), +you can apply the following workaround by setting specific environment +variables in the `ObjectStore` resource: + +```yaml +apiVersion: barmancloud.cnpg.io/v1 +kind: ObjectStore +metadata: + name: linode-store +spec: + instanceSidecarConfiguration: + env: + - name: AWS_REQUEST_CHECKSUM_CALCULATION + value: when_required + - name: AWS_RESPONSE_CHECKSUM_VALIDATION + value: when_required + [...] +``` + +These settings ensure that checksum calculations and validations are only +applied when explicitly required, avoiding compatibility issues with certain +S3-compatible storage providers. + +Example with DigitalOcean Spaces (SFO3, path-style): + +```yaml +apiVersion: barmancloud.cnpg.io/v1 +kind: ObjectStore +metadata: + name: digitalocean-store +spec: + configuration: + destinationPath: "s3://BUCKET_NAME/path/to/folder" + endpointURL: "https://sfo3.digitaloceanspaces.com" + s3Credentials: + [...] + [...] +``` + +### Using Object Storage with a Private CA + +For object storage services (e.g., MinIO) that use HTTPS with certificates +signed by a private CA, set the `endpointCA` field in the `ObjectStore` +definition. Unless you already have it, create a Kubernetes `Secret` with the +CA bundle: + +```sh +kubectl create secret generic my-ca-secret --from-file=ca.crt +``` + +Then reference it: + +```yaml +apiVersion: barmancloud.cnpg.io/v1 +kind: ObjectStore +metadata: + name: minio-store +spec: + configuration: + endpointURL: + endpointCA: + name: my-ca-secret + key: ca.crt + [...] +``` + + +:::note +If you want `ConfigMaps` and `Secrets` to be **automatically** reloaded by +instances, you can add a label with the key `cnpg.io/reload` to the +`Secrets`/`ConfigMaps`. Otherwise, you will have to reload the instances using the +`kubectl cnpg reload` subcommand. +::: + +--- + +## Azure Blob Storage + +[Azure Blob Storage](https://azure.microsoft.com/en-us/services/storage/blobs/) +is Microsoft’s cloud-based object storage solution. + +Barman Cloud supports the following authentication methods: + +- [Connection String](https://learn.microsoft.com/en-us/azure/storage/common/storage-configure-connection-string) +- Storage Account Name + [Storage Account Access Key](https://learn.microsoft.com/en-us/azure/storage/common/storage-account-keys-manage) +- Storage Account Name + [Storage Account SAS Token](https://learn.microsoft.com/en-us/azure/storage/blobs/sas-service-create) +- [Azure AD Managed Identity](https://learn.microsoft.com/en-us/entra/identity/managed-identities-azure-resources/overview) +- [Default Azure Credentials](https://learn.microsoft.com/en-us/dotnet/api/azure.identity.defaultazurecredential?view=azure-dotnet) + +### Azure AD Managed Identity + +This method avoids storing credentials in Kubernetes by enabling the +usage of [Azure Managed Identities](https://learn.microsoft.com/en-us/entra/identity/managed-identities-azure-resources/overview) authentication mechanism. +This can be enabled by setting the `inheritFromAzureAD` option to `true`. +Managed Identity can be configured for the AKS Cluster by following +the [Azure documentation](https://learn.microsoft.com/en-us/azure/aks/use-managed-identity?pivots=system-assigned). + +```yaml +apiVersion: barmancloud.cnpg.io/v1 +kind: ObjectStore +metadata: + name: azure-store +spec: + configuration: + destinationPath: "" + azureCredentials: + inheritFromAzureAD: true + [...] +``` + +### Default Azure Credentials + +The `useDefaultAzureCredentials` option enables the default Azure credentials +flow, which uses [`DefaultAzureCredential`](https://learn.microsoft.com/en-us/python/api/azure-identity/azure.identity.defaultazurecredential) +to automatically discover and use available credentials in the following order: + +1. **Environment Variables** β€” `AZURE_CLIENT_ID`, `AZURE_CLIENT_SECRET`, and `AZURE_TENANT_ID` for Service Principal authentication +2. **Managed Identity** β€” Uses the managed identity assigned to the pod +3. **Azure CLI** β€” Uses credentials from the Azure CLI if available +4. **Azure PowerShell** β€” Uses credentials from Azure PowerShell if available + +This approach is particularly useful for getting started with development and testing; it allows +the SDK to attempt multiple authentication mechanisms seamlessly across different environments. +However, this is not recommended for production. Please refer to the +[official Azure guidance](https://learn.microsoft.com/en-us/dotnet/azure/sdk/authentication/credential-chains?tabs=dac#usage-guidance-for-defaultazurecredential) +for a comprehensive understanding of `DefaultAzureCredential`. + +```yaml +apiVersion: barmancloud.cnpg.io/v1 +kind: ObjectStore +metadata: + name: azure-store +spec: + configuration: + destinationPath: "" + azureCredentials: + useDefaultAzureCredentials: true + [...] +``` + +### Access Key, SAS Token, or Connection String + +Store credentials in a Kubernetes secret: + +```sh +kubectl create secret generic azure-creds \ + --from-literal=AZURE_STORAGE_ACCOUNT= \ + --from-literal=AZURE_STORAGE_KEY= \ + --from-literal=AZURE_STORAGE_SAS_TOKEN= \ + --from-literal=AZURE_STORAGE_CONNECTION_STRING= +``` + +Then reference the required keys in your `ObjectStore`: + +```yaml +apiVersion: barmancloud.cnpg.io/v1 +kind: ObjectStore +metadata: + name: azure-store +spec: + configuration: + destinationPath: "" + azureCredentials: + connectionString: + name: azure-creds + key: AZURE_CONNECTION_STRING + storageAccount: + name: azure-creds + key: AZURE_STORAGE_ACCOUNT + storageKey: + name: azure-creds + key: AZURE_STORAGE_KEY + storageSasToken: + name: azure-creds + key: AZURE_STORAGE_SAS_TOKEN + [...] +``` + +For Azure Blob, the destination path format is: + +``` +://..core.windows.net// +``` + +### Azure-Compatible Providers + +If you're using a different implementation (e.g., Azurite or emulator): + +``` +://:/// +``` + +--- + +## Google Cloud Storage + +[Google Cloud Storage](https://cloud.google.com/storage/) is supported with two +authentication modes: + +- **GKE Workload Identity** (recommended inside Google Kubernetes Engine) +- **Service Account JSON key** via the `GOOGLE_APPLICATION_CREDENTIALS` environment variable + +### GKE Workload Identity + +Use the [Workload Identity authentication](https://cloud.google.com/kubernetes-engine/docs/how-to/workload-identity) +when running in GKE: + +1. Set `googleCredentials.gkeEnvironment` to `true` in the `ObjectStore` + resource +2. Annotate the `serviceAccountTemplate` in the `Cluster` resource with the GCP + service account + +For example, in the `ObjectStore` resource: + +```yaml +apiVersion: barmancloud.cnpg.io/v1 +kind: ObjectStore +metadata: + name: google-store +spec: + configuration: + destinationPath: "gs:///" + googleCredentials: + gkeEnvironment: true +``` + +And in the `Cluster` resource: + +```yaml +apiVersion: postgresql.cnpg.io/v1 +kind: Cluster +spec: + serviceAccountTemplate: + metadata: + annotations: + iam.gke.io/gcp-service-account: [...].iam.gserviceaccount.com +``` + +### Service Account JSON Key + +Follow Google’s [authentication setup](https://cloud.google.com/docs/authentication/getting-started), +then: + +```sh +kubectl create secret generic backup-creds --from-file=gcsCredentials=gcs_credentials_file.json +``` + +```yaml +apiVersion: barmancloud.cnpg.io/v1 +kind: ObjectStore +metadata: + name: google-store +spec: + configuration: + destinationPath: "gs:///" + googleCredentials: + applicationCredentials: + name: backup-creds + key: gcsCredentials + [...] +``` + +:::important +This authentication method generates a JSON file within the container +with all the credentials required to access your Google Cloud Storage +bucket. As a result, if someone gains access to the `Pod`, they will also have +write permissions to the bucket. +::: + +--- + + +## MinIO Object Store + +In order to use the Tenant resource you first need to deploy the +[MinIO operator](https://docs.min.io/community/minio-object-store/operations/deployments/installation.html). +For the latest documentation of MinIO, please refer to the +[MinIO official documentation](https://docs.min.io/community/minio-object-store/). + +MinIO Object Store's API is compatible with S3, and the default configuration of the Tenant +will create these services: +- `-console` on port 9090 (with autocert) or 9443 (without autocert) +- `-hl` on port 9000 +Where `` is the `metadata.name` you assigned to your Tenant resource. + +:::note +The `-console` service will only be available if you have enabled the +[MinIO Console](https://docs.min.io/community/minio-object-store/administration/minio-console.html). + +For example, the following Tenant: +```yml +apiVersion: minio.min.io/v2 +kind: Tenant +metadata: + name: cnpg-backups +spec: + [...] +``` +would have services called `cnpg-backups-console` and `cnpg-backups-hl` respectively. + +The `console` service is for managing the tenant, while the `hl` service exposes the S3 +compatible API. If your tenant is configured with `requestAutoCert` you will communicate +to these services over HTTPS, if not you will use HTTP. + +For authentication you can use your username and password, or create an access key. +Whichever method you choose, it has to be stored as a secret. + +```sh +kubectl create secret generic minio-creds \ + --from-literal=MINIO_ACCESS_KEY= \ + --from-literal=MINIO_SECRET_KEY= +``` + +Finally, create the Barman ObjectStore: + +```yaml +apiVersion: barmancloud.cnpg.io/v1 +kind: ObjectStore +metadata: + name: minio-store +spec: + configuration: + destinationPath: s3://BUCKET_NAME/ + endpointURL: http://-hl:9000 + s3Credentials: + accessKeyId: + name: minio-creds + key: MINIO_ACCESS_KEY + secretAccessKey: + name: minio-creds + key: MINIO_SECRET_KEY + [...] +``` + +:::important +Verify on `s3://BUCKET_NAME/` the presence of archived WAL files before +proceeding with a backup. +::: + +--- diff --git a/web/versioned_docs/version-0.14.0/observability.md b/web/versioned_docs/version-0.14.0/observability.md new file mode 100644 index 0000000..274b973 --- /dev/null +++ b/web/versioned_docs/version-0.14.0/observability.md @@ -0,0 +1,24 @@ +--- +sidebar_position: 55 +--- + +# Observability + + + +The Barman Cloud Plugin exposes the following metrics through the native +Prometheus exporter of the instance manager: + +- `barman_cloud_cloudnative_pg_io_last_failed_backup_timestamp`: + the UNIX timestamp of the most recent failed backup. + +- `barman_cloud_cloudnative_pg_io_last_available_backup_timestamp`: + the UNIX timestamp of the most recent successfully available backup. + +- `barman_cloud_cloudnative_pg_io_first_recoverability_point`: + the UNIX timestamp representing the earliest point in time from which the + cluster can be recovered. + +These metrics supersede the previously available in-core metrics that used the +`cnpg_collector` prefix. The new metrics are exposed under the +`barman_cloud_cloudnative_pg_io` prefix instead. diff --git a/web/versioned_docs/version-0.14.0/parameters.md b/web/versioned_docs/version-0.14.0/parameters.md new file mode 100644 index 0000000..ca0cd2b --- /dev/null +++ b/web/versioned_docs/version-0.14.0/parameters.md @@ -0,0 +1,19 @@ +--- +sidebar_position: 100 +--- + +# Parameters + + + +The following parameters are available for the Barman Cloud Plugin: + +- `barmanObjectName`: references the `ObjectStore` resource to be used by the + plugin. +- `serverName`: Specifies the server name in the object store. + +:::important +The `serverName` parameter in the `ObjectStore` resource is retained solely for +API compatibility with the in-tree `barmanObjectStore` and must always be left empty. +When needed, use the `serverName` plugin parameter in the Cluster configuration instead. +::: diff --git a/web/versioned_docs/version-0.14.0/plugin-barman-cloud.v1.md b/web/versioned_docs/version-0.14.0/plugin-barman-cloud.v1.md new file mode 100644 index 0000000..7bd607c --- /dev/null +++ b/web/versioned_docs/version-0.14.0/plugin-barman-cloud.v1.md @@ -0,0 +1,108 @@ +# API Reference + +## Packages +- [barmancloud.cnpg.io/v1](#barmancloudcnpgiov1) + + +## barmancloud.cnpg.io/v1 + +Package v1 contains API Schema definitions for the barmancloud v1 API group + +### Resource Types +- [ObjectStore](#objectstore) + + + +#### InstanceSidecarConfiguration + + + +InstanceSidecarConfiguration defines the configuration for the sidecar that runs in the instance pods. + + + +_Appears in:_ +- [ObjectStoreSpec](#objectstorespec) + +| Field | Description | Required | Default | Validation | +| --- | --- | --- | --- | --- | +| `env` _[EnvVar](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#envvar-v1-core) array_ | The environment to be explicitly passed to the sidecar | | | | +| `retentionPolicyIntervalSeconds` _integer_ | The retentionCheckInterval defines the frequency at which the
system checks and enforces retention policies. | | 1800 | | +| `resources` _[ResourceRequirements](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcerequirements-v1-core)_ | Resources define cpu/memory requests and limits for the sidecar that runs in the instance pods. | | | | +| `additionalContainerArgs` _string array_ | AdditionalContainerArgs is an optional list of command-line arguments
to be passed to the sidecar container when it starts.
The provided arguments are appended to the container’s default arguments. | | | | +| `logLevel` _string_ | The log level for PostgreSQL instances. Valid values are: `error`, `warning`, `info` (default), `debug`, `trace` | | info | Enum: [error warning info debug trace]
| + + +#### ObjectStore + + + +ObjectStore is the Schema for the objectstores API. + + + + + +| Field | Description | Required | Default | Validation | +| --- | --- | --- | --- | --- | +| `apiVersion` _string_ | `barmancloud.cnpg.io/v1` | True | | | +| `kind` _string_ | `ObjectStore` | True | | | +| `metadata` _[ObjectMeta](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#objectmeta-v1-meta)_ | Refer to Kubernetes API documentation for fields of `metadata`. | True | | | +| `spec` _[ObjectStoreSpec](#objectstorespec)_ | Specification of the desired behavior of the ObjectStore.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status | True | | | +| `status` _[ObjectStoreStatus](#objectstorestatus)_ | Most recently observed status of the ObjectStore. This data may not be up to
date. Populated by the system. Read-only.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status | | | | + + +#### ObjectStoreSpec + + + +ObjectStoreSpec defines the desired state of ObjectStore. + + + +_Appears in:_ +- [ObjectStore](#objectstore) + +| Field | Description | Required | Default | Validation | +| --- | --- | --- | --- | --- | +| `configuration` _[BarmanObjectStoreConfiguration](https://pkg.go.dev/github.com/cloudnative-pg/barman-cloud/pkg/api#BarmanObjectStoreConfiguration)_ | The configuration for the barman-cloud tool suite | True | | | +| `retentionPolicy` _string_ | RetentionPolicy is the retention policy to be used for backups
and WALs (i.e. '60d'). The retention policy is expressed in the form
of `XXu` where `XX` is a positive integer and `u` is in `[dwm]` -
days, weeks, months. | | | Pattern: `^[1-9][0-9]*[dwm]$`
| +| `instanceSidecarConfiguration` _[InstanceSidecarConfiguration](#instancesidecarconfiguration)_ | The configuration for the sidecar that runs in the instance pods | | | | + + +#### ObjectStoreStatus + + + +ObjectStoreStatus defines the observed state of ObjectStore. + + + +_Appears in:_ +- [ObjectStore](#objectstore) + +| Field | Description | Required | Default | Validation | +| --- | --- | --- | --- | --- | +| `serverRecoveryWindow` _object (keys:string, values:[RecoveryWindow](#recoverywindow))_ | ServerRecoveryWindow maps each server to its recovery window | True | | | + + +#### RecoveryWindow + + + +RecoveryWindow represents the time span between the first +recoverability point and the last successful backup of a PostgreSQL +server, defining the period during which data can be restored. + + + +_Appears in:_ +- [ObjectStoreStatus](#objectstorestatus) + +| Field | Description | Required | Default | Validation | +| --- | --- | --- | --- | --- | +| `firstRecoverabilityPoint` _[Time](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#time-v1-meta)_ | The first recoverability point in a PostgreSQL server refers to
the earliest point in time to which the database can be
restored. | True | | | +| `lastSuccessfulBackupTime` _[Time](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#time-v1-meta)_ | The last successful backup time | True | | | +| `lastFailedBackupTime` _[Time](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#time-v1-meta)_ | The last failed backup time | True | | | + + diff --git a/web/versioned_docs/version-0.14.0/resource-name-migration.md b/web/versioned_docs/version-0.14.0/resource-name-migration.md new file mode 100644 index 0000000..f5c1cc3 --- /dev/null +++ b/web/versioned_docs/version-0.14.0/resource-name-migration.md @@ -0,0 +1,219 @@ +--- +sidebar_position: 90 +--- + +# Resource name migration guide + + + +:::warning +Before proceeding with the migration process, please: +1. **Read this guide in its entirety** to understand what changes will be made +2. **Test in a non-production environment** first if possible +3. **Ensure you have proper backups** of your cluster configuration + +This migration will delete old RBAC resources only after the +`plugin-barman-cloud` upgrade. While the operation is designed to be safe, you +should review and understand the changes before proceeding. The maintainers of +this project are not responsible for any issues that may arise during +migration. + +**Note:** This guide assumes you are using the default `cnpg-system` namespace. +::: + +## Overview + +Starting from version **0.8.0**, the `plugin-barman-cloud` deployment manifests +use more specific, prefixed resource names to avoid conflicts with other +components deployed in the same Kubernetes cluster. + +## What Changed + +The following resources have been renamed to use proper prefixes. + +### Cluster-scoped Resources + +| Old Name | New Name | +|----------------------------|------------------------------------------| +| `metrics-auth-role` | `barman-plugin-metrics-auth-role` | +| `metrics-auth-rolebinding` | `barman-plugin-metrics-auth-rolebinding` | +| `metrics-reader` | `barman-plugin-metrics-reader` | +| `objectstore-viewer-role` | `barman-plugin-objectstore-viewer-role` | +| `objectstore-editor-role` | `barman-plugin-objectstore-editor-role` | + +### Namespace-scoped Resources + +| Old Name | New Name | Namespace | +|-------------------------------|---------------------------------------------|---------------| +| `leader-election-role` | `barman-plugin-leader-election-role` | `cnpg-system` | +| `leader-election-rolebinding` | `barman-plugin-leader-election-rolebinding` | `cnpg-system` | + +## Why This Change? + +Using generic names for cluster-wide resources is discouraged as they may +conflict with other components deployed in the same cluster. The new names make +it clear that these resources belong to the Barman Cloud plugin and help avoid +naming collisions. + +## Migration Instructions + +This three steps migration process is straightforward and can be completed with +a few `kubectl` commands. + +### Step 1: Upgrade plugin-barman-cloud + +Please refer to the [Installation](installation.mdx) section to deploy the new +`plugin-barman-cloud` release. + +### Step 2: Delete Old Cluster-scoped Resources + +:::danger Verify Resources Before Deletion +**IMPORTANT**: The old resource names are generic and could potentially belong +to other components in your cluster. + +**Before deleting each resource, verify it belongs to the Barman Cloud plugin +by checking:** +- For `objectstore-*` roles: Look for `barmancloud.cnpg.io` in the API groups +- For `metrics-*` roles: Check if they reference the `plugin-barman-cloud` + ServiceAccount in `cnpg-system` namespace +- For other roles: Look for labels like `app.kubernetes.io/name: plugin-barman-cloud` + +If a resource doesn't have these indicators, **DO NOT DELETE IT** as it may +belong to another application. + +Carefully review the output of each verification command before proceeding with +the `delete`. +::: + +:::tip Dry Run First +You can add `--dry-run=client` to any `kubectl delete` command to preview what +would be deleted without actually removing anything. +::: + +**Only proceed if you've verified these resources belong to the Barman Cloud +plugin (see warning above).** + +For each resource below, first verify it belongs to Barman Cloud, then delete +it: + +```bash +# 1. Check metrics-auth-rolebinding FIRST (we'll check the role after) +# Look for references to plugin-barman-cloud ServiceAccount +kubectl describe clusterrolebinding metrics-auth-rolebinding +# If it references plugin-barman-cloud ServiceAccount in cnpg-system namespace, +# delete it: +kubectl delete clusterrolebinding metrics-auth-rolebinding + +# 2. Check metrics-auth-role +# Look for references to authentication.k8s.io and authorization.k8s.io +kubectl describe clusterrole metrics-auth-role +# Verify it's not being used by any other rolebindings: +kubectl get clusterrolebinding -o json \ + | jq -r '.items[] | select(.roleRef.name=="metrics-auth-role") \ + | .metadata.name' +# If the above returns nothing (role is not in use) and the role looks like the +# Barman Cloud one, delete it (see warnings section): +kubectl delete clusterrole metrics-auth-role + +# 3. Check objectstore-viewer-role +# Look for barmancloud.cnpg.io API group or +# for `app.kubernetes.io/name: plugin-barman-cloud` label +kubectl describe clusterrole objectstore-viewer-role +# If it shows barmancloud.cnpg.io in API groups, delete it: +kubectl delete clusterrole objectstore-viewer-role + +# 4. Check objectstore-editor-role +# Look for barmancloud.cnpg.io API group or +# for `app.kubernetes.io/name: plugin-barman-cloud` label +kubectl describe clusterrole objectstore-editor-role +# If it shows barmancloud.cnpg.io in API groups, delete it: +kubectl delete clusterrole objectstore-editor-role + +# 5. Check metrics-reader (MOST DANGEROUS - very generic name) +# First, check if it's being used by any rolebindings OTHER than barman's: +kubectl get clusterrolebinding -o json | jq -r '.items[] \ + | select(.roleRef.name=="metrics-reader") \ + | "\(.metadata.name) -> \(.subjects[0].name) in \(.subjects[0].namespace)"' +# If this shows ANY rolebindings, review them carefully. Only proceed if +# they're all Barman-related. Then check the role itself: +kubectl describe clusterrole metrics-reader +# If it ONLY has nonResourceURLs: /metrics and NO other rolebindings use it, +# delete it: +kubectl delete clusterrole metrics-reader +``` + +:::warning +The `metrics-reader` role is particularly dangerous to delete blindly. Many +monitoring systems use this exact name. Only delete it if: + +1. You've verified it ONLY grants access to `/metrics` +2. No other rolebindings reference it (checked with the jq command above) +3. You're certain it was created by the Barman Cloud plugin + +If you're unsure, it's safer to leave it and let the new +`barman-plugin-metrics-reader` role coexist with it. +::: + +If any resource is not found during the `describe` command, that's okay - it +means it was never created or already deleted. Simply skip the delete command +for that resource. + +### Step 3: Delete Old Namespace-scoped Resources + +Delete the old namespace-scoped resources in the `cnpg-system` namespace: + +```bash +# Delete the old leader-election resources +kubectl delete role leader-election-role -n cnpg-system +kubectl delete rolebinding leader-election-rolebinding -n cnpg-system +``` + +If any resource is not found, that's okay - it means it was never created or +already deleted. + +## Impact + +- **Permissions:** If you have custom RBAC rules or tools that reference the + old resource names, they will need to be updated. +- **External Users:** If end users have been granted the + `objectstore-viewer-role` or `objectstore-editor-role`, they will need to be + re-granted the new role names (`barman-plugin-objectstore-viewer-role` and + `barman-plugin-objectstore-editor-role`). + +## Verification + +After migration, verify that the new resources are created: + +```bash +# Check cluster-scoped resources +kubectl get clusterrole | grep barman +kubectl get clusterrolebinding | grep barman + +# Check namespace-scoped resources +kubectl get role,rolebinding -n cnpg-system | grep barman +``` + +You should see the new prefixed resource names. + +## Troubleshooting + +### Plugin Not Starting After Migration + +If the plugin fails to start after migration, check: + +1. **ServiceAccount permissions:** Ensure the `plugin-barman-cloud` ServiceAccount is bound to the new roles: + ```bash + kubectl get clusterrolebinding barman-plugin-metrics-auth-rolebinding -o yaml + kubectl get rolebinding barman-plugin-leader-election-rolebinding -n cnpg-system -o yaml + ``` + +2. **Role references:** Verify that the rolebindings reference the correct role names: + ```bash + kubectl describe rolebinding barman-plugin-leader-election-rolebinding -n cnpg-system + kubectl describe clusterrolebinding barman-plugin-metrics-auth-rolebinding + ``` + +## Support + +If you encounter issues during migration, please open an issue on the [GitHub +repository](https://github.com/cloudnative-pg/plugin-barman-cloud/issues). diff --git a/web/versioned_docs/version-0.14.0/retention.md b/web/versioned_docs/version-0.14.0/retention.md new file mode 100644 index 0000000..fefbd08 --- /dev/null +++ b/web/versioned_docs/version-0.14.0/retention.md @@ -0,0 +1,38 @@ +--- +sidebar_position: 60 +--- + +# Retention Policies + + + +The Barman Cloud Plugin supports **automated cleanup of obsolete backups** via +retention policies, configured in the `.spec.retentionPolicy` field of the +`ObjectStore` resource. + +:::note +This feature uses the `barman-cloud-backup-delete` command with the +`--retention-policy "RECOVERY WINDOW OF {{ value }} {{ unit }}"` syntax. +::: + +#### Example: 30-Day Retention Policy + +```yaml +apiVersion: barmancloud.cnpg.io/v1 +kind: ObjectStore +metadata: + name: my-store +spec: + [...] + retentionPolicy: "30d" +```` + +:::note +A **recovery window retention policy** ensures the cluster can be restored to +any point in time between the calculated *Point of Recoverability* (PoR) and +the latest WAL archive. The PoR is defined as `current time - recovery window`. +The **first valid backup** is the most recent backup completed before the PoR. +Backups older than that are marked as *obsolete* and deleted after the next +backup completes. +::: + diff --git a/web/versioned_docs/version-0.14.0/troubleshooting.md b/web/versioned_docs/version-0.14.0/troubleshooting.md new file mode 100644 index 0000000..fe57262 --- /dev/null +++ b/web/versioned_docs/version-0.14.0/troubleshooting.md @@ -0,0 +1,591 @@ +--- +sidebar_position: 90 +--- + +# Troubleshooting + + + +This guide helps you diagnose and resolve common issues with the Barman Cloud +plugin. + +:::important +We are continuously improving the integration between CloudNativePG and the +Barman Cloud plugin as it moves toward greater stability and maturity. For this +reason, we recommend using the latest available version of both components. +See the [*Requirements* section](intro.md#requirements) for details. +::: + +:::note +The following commands assume you installed the CloudNativePG operator in +the default `cnpg-system` namespace. If you installed it in a different +namespace, adjust the commands accordingly. +::: + +## Viewing Logs + +To troubleshoot effectively, you’ll often need to review logs from multiple +sources: + +```sh +# View operator logs (includes plugin interaction logs) +kubectl logs -n cnpg-system deployment/cnpg-controller-manager -f + +# View plugin manager logs +kubectl logs -n cnpg-system deployment/barman-cloud -f + +# View sidecar container logs (Barman Cloud operations) +kubectl logs -n -c plugin-barman-cloud -f + +# View all containers in a pod +kubectl logs -n --all-containers=true + +# View previous container logs (if container restarted) +kubectl logs -n -c plugin-barman-cloud --previous +``` + +## Common Issues + +### Plugin Installation Issues + +#### Plugin pods not starting + +**Symptoms:** + +- Plugin pods stuck in `CrashLoopBackOff` or `Error` +- Plugin deployment not ready + +**Possible causes and solutions:** + +1. **Certificate issues** + + ```sh + # Check if cert-manager is installed and running + kubectl get pods -n cert-manager + + # Check if the plugin certificate is created + kubectl get certificates -n cnpg-system + ``` + + If cert-manager is not installed, install it first: + + ```sh + # Note: other installation methods for cert-manager are available + kubectl apply -f \ + https://github.com/cert-manager/cert-manager/releases/latest/download/cert-manager.yaml + ``` + + If you are using your own certificates without cert-manager, you will need + to verify the entire certificate chain yourself. + + +2. **Image pull errors** + + ```sh + # Check pod events for image pull errors + kubectl describe pod -n cnpg-system -l app=barman-cloud + ``` + + Verify the image exists and you have proper credentials if using a private + registry. + + +3. **Resource constraints** + + ```sh + # Check node resources + kubectl top nodes + kubectl describe nodes + ``` + + Make sure your cluster has sufficient CPU and memory resources. + +### Backup Failures + +#### Quick Backup Troubleshooting Checklist + +When a backup fails, follow these steps in order: + +1. **Check backup status**: + + ```sh + kubectl get backups.postgresql.cnpg.io -n + ``` +2. **Get error details and target pod**: + + ```sh + kubectl describe backups.postgresql.cnpg.io \ + -n + + kubectl get backups.postgresql.cnpg.io \ + -n \ + -o jsonpath='{.status.instanceID.podName}' + ``` +3. **Check the target pod’s sidecar logs**: + + ```sh + TARGET_POD=$(kubectl get backups.postgresql.cnpg.io \ + -n \ + -o jsonpath='{.status.instanceID.podName}') + + kubectl logs \ + -n $TARGET_POD -c plugin-barman-cloud \ + --tail=100 | grep -E "ERROR|FATAL|panic" + ``` +4. **Check cluster events**: + + ```sh + kubectl get events -n \ + --field-selector involvedObject.name= \ + --sort-by='.lastTimestamp' + ``` +5. **Verify plugin is running**: + + ```sh + kubectl get pods \ + -n cnpg-system -l app=barman-cloud + ``` +6. **Check operator logs**: + + ```sh + kubectl logs \ + -n cnpg-system deployment/cnpg-controller-manager \ + --tail=100 | grep -i "backup\|plugin" + ``` +7. **Check plugin manager logs**: + + ```sh + kubectl logs \ + -n cnpg-system deployment/barman-cloud --tail=100 + ``` + +#### Backup job fails immediately + +**Symptoms:** + +- Backup pods terminate with error +- No backup files appear in object storage +- Backup shows `failed` phase with various error messages + +**Common failure modes and solutions:** + +1. **"requested plugin is not available" errors** + + ``` + requested plugin is not available: barman + requested plugin is not available: barman-cloud + requested plugin is not available: barman-cloud.cloudnative-pg.io + ``` + + **Cause:** The plugin name in the Cluster configuration doesn’t match the + deployed plugin, or the plugin isn’t registered. + + **Solution:** + + a. **Check plugin registration:** + + ```sh + # If you have the `cnpg` plugin installed (v1.27.0+) + kubectl cnpg status -n + ``` + + Look for the "Plugins status" section: + ``` + Plugins status + Name Version Status Reported Operator Capabilities + ---- ------- ------ ------------------------------ + barman-cloud.cloudnative-pg.io 0.6.0 N/A Reconciler Hooks, Lifecycle Service + ``` + + b. **Verify plugin name in `Cluster` spec**: + + ```yaml + apiVersion: postgresql.cnpg.io/v1 + kind: Cluster + spec: + plugins: + - name: barman-cloud.cloudnative-pg.io + parameters: + barmanObjectName: + ``` + + c. **Check plugin deployment is running**: + + ```sh + kubectl get deployment -n cnpg-system barman-cloud + ``` + +2. **"rpc error: code = Unknown desc = panic caught: assignment to entry in nil map" errors** + + **Cause:** Misconfiguration in the `ObjectStore` (e.g., typo or missing field). + + **Solution:** + + - Review sidecar logs for details + - Verify `ObjectStore` configuration and secrets + - Common issues include: + - Missing or incorrect secret references + - Typos in configuration parameters + - Missing required environment variables in secrets + +#### Backup performance issues + +**Symptoms:** + +- Backups take extremely long +- Backups timeout + +**Plugin-specific considerations:** + +1. **Check `ObjectStore` parallelism settings** + - Adjust `maxParallel` in `ObjectStore` configuration + - Monitor sidecar container resource usage during backups + +2. **Verify plugin resource allocation** + - Check if the sidecar container has sufficient CPU/memory + - Review plugin container logs for resource-related warnings + +:::tip +For Barman-specific features like compression, encryption, and performance +tuning, refer to the [Barman documentation](https://docs.pgbarman.org/latest/). +::: + +### WAL Archiving Issues + +#### WAL archiving stops + +**Symptoms:** + +- WAL files accumulate on the primary +- Cluster shows WAL archiving warnings +- Sidecar logs show WAL errors + +**Debugging steps:** + +1. **Check plugin sidecar logs for WAL archiving errors** + ```sh + # Check recent WAL archive operations in sidecar + kubectl logs -n -c plugin-barman-cloud \ + --tail=50 | grep -i wal + ``` + +2. **Check ObjectStore configuration for WAL settings** + - Ensure ObjectStore has proper WAL retention settings + - Verify credentials have permissions for WAL operations + +### Restore Issues + +#### Restore fails during recovery + +**Symptoms:** + +- New cluster stuck in recovery +- Plugin sidecar shows restore errors +- PostgreSQL won’t start + +**Debugging steps:** + +1. **Check plugin sidecar logs during restore** + + ```sh + # Check the sidecar logs on the recovering cluster pods + kubectl logs -n \ + -c plugin-barman-cloud --tail=100 + + # Look for restore-related errors + kubectl logs -n \ + -c plugin-barman-cloud | grep -E "restore|recovery|ERROR" + ``` + +2. **Verify plugin can access backups** + + ```sh + # Check if `ObjectStore` is properly configured for restore + kubectl get objectstores.barmancloud.cnpg.io \ + -n -o yaml + + # Check PostgreSQL recovery logs + kubectl logs -n \ + -c postgres | grep -i recovery + ``` + +:::tip +For detailed Barman restore operations and troubleshooting, refer to the +[Barman documentation](https://docs.pgbarman.org/latest/barman-cloud-restore.html). +::: + +#### Point-in-time recovery (PITR) configuration issues + +**Symptoms:** + +- PITR doesn’t reach target time +- WAL access errors +- Recovery halts early + +**Debugging steps:** + +1. **Verify PITR configuration in the `Cluster` spec** + + ```yaml + apiVersion: postgresql.cnpg.io/v1 + kind: Cluster + metadata: + name: + spec: + storage: + size: 1Gi + + bootstrap: + recovery: + source: origin + recoveryTarget: + targetTime: "2024-01-15T10:30:00Z" + + externalClusters: + - name: origin + plugin: + enabled: true + name: barman-cloud.cloudnative-pg.io + parameters: + barmanObjectName: + serverName: + ``` + +2. **Check sidecar logs for WAL-related errors** + + ```sh + kubectl logs -n \ + -c plugin-barman-cloud | grep -i wal + ``` + +:::note +Timestamps without an explicit timezone suffix +(e.g., `2024-01-15 10:30:00`) are interpreted as UTC. +::: + +:::warning +Always specify an explicit timezone in your timestamp to avoid ambiguity. +For example, use `2024-01-15T10:30:00Z` or `2024-01-15T10:30:00+02:00` +instead of `2024-01-15 10:30:00`. +::: + +:::note +For detailed PITR configuration and WAL management, see the +[Barman PITR documentation](https://docs.pgbarman.org/latest/). +::: + +### Plugin Configuration Issues + +#### Plugin cannot connect to object storage + +**Symptoms:** + +- Sidecar logs show connection errors +- Backups fail with authentication or network errors +- `ObjectStore` resource reports errors + +**Solution:** + +1. **Verify `ObjectStore` CRD configuration and secrets** + + ```sh + # Check ObjectStore resource status + kubectl get objectstores.barmancloud.cnpg.io \ + -n -o yaml + + # Verify the secret exists and has correct keys for your provider + kubectl get secret -n \ + -o jsonpath='{.data}' | jq 'keys' + ``` + +2. **Check sidecar logs for connectivity issues** + ```sh + kubectl logs -n \ + -c plugin-barman-cloud | grep -E "connect|timeout|SSL|cert" + ``` + +3. **Adjust provider-specific settings (endpoint, path style, etc.)** + - See [Object Store Configuration](object_stores.md) for provider-specific settings + - Ensure `endpointURL` is set correctly for your storage provider + - Verify network policies allow egress to your storage provider + +## Diagnostic Commands + +### Using the `cnpg` plugin for `kubectl` + +The `cnpg` plugin for `kubectl` provides extended debugging capabilities. +Keep it updated: + +```sh +# Install or update the `cnpg` plugin +kubectl krew install cnpg +# Or using an alternative method: https://cloudnative-pg.io/documentation/current/kubectl-plugin/#install + +# Check plugin status (requires CNPG 1.27.0+) +kubectl cnpg status -n + +# View cluster status in detail +kubectl cnpg status -n --verbose +``` + +## Getting Help + +If problems persist: + +1. **Check the documentation** + + - [Installation Guide](installation.mdx) + - [Object Store Configuration](object_stores.md) (for provider-specific settings) + - [Usage Examples](usage.md) + + +2. **Gather diagnostic information** + + ```sh + # Create a diagnostic bundle (⚠️ sanitize these before sharing!) + kubectl get objectstores.barmancloud.cnpg.io -A -o yaml > /tmp/objectstores.yaml + kubectl get clusters.postgresql.cnpg.io -A -o yaml > /tmp/clusters.yaml + kubectl logs -n cnpg-system deployment/barman-cloud --tail=1000 > /tmp/plugin.log + ``` + + +3. **Community support** + + - CloudNativePG Slack: [#cloudnativepg-users](https://cloud-native.slack.com/messages/cloudnativepg-users) + - GitHub Issues: [plugin-barman-cloud](https://github.com/cloudnative-pg/plugin-barman-cloud/issues) + + +4. **Include when reporting** + + - CloudNativePG version + - Plugin version + - Kubernetes version + - Cloud provider and region + - Relevant configuration (⚠️ sanitize/redact sensitive information) + - Error messages and logs + - Steps to reproduce + +## Known Issues and Limitations + +### Current Known Issues + +1. **Migration compatibility**: After migrating from in-tree backup to the + plugin, the `kubectl cnpg backup` command syntax has changed + ([#353](https://github.com/cloudnative-pg/plugin-barman-cloud/issues/353)): + + ```sh + # Old command (in-tree, no longer works after migration) + kubectl cnpg backup -n \ + --method=barmanObjectStore + + # New command (plugin-based) + kubectl cnpg backup -n \ + --method=plugin --plugin-name=barman-cloud.cloudnative-pg.io + ``` + +### Plugin Limitations + +1. **Installation method**: Currently only supports manifest and Kustomize + installation ([#351](https://github.com/cloudnative-pg/plugin-barman-cloud/issues/351) - + Helm chart requested) + +2. **Sidecar resource sharing**: The plugin sidecar container shares pod + resources with PostgreSQL + +3. **Plugin restart behavior**: Restarting the sidecar container requires + restarting the entire PostgreSQL pod + +## Recap of General Debugging Steps + +### Check Backup Status and Identify the Target Instance + +```sh +# List all backups and their status +kubectl get backups.postgresql.cnpg.io -n + +# Get detailed backup information including error messages and target instance +kubectl describe backups.postgresql.cnpg.io \ + -n + +# Extract the target pod name from a failed backup +kubectl get backups.postgresql.cnpg.io \ + -n \ + -o jsonpath='{.status.instanceID.podName}' + +# Get more details including the target pod, method, phase, and error +kubectl get backups.postgresql.cnpg.io \ + -n \ + -o jsonpath='Pod: {.status.instanceID.podName}{"\n"}Method: {.status.method}{"\n"}Phase: {.status.phase}{"\n"}Error: {.status.error}{"\n"}' + +# Check the cluster status for backup-related information +kubectl cnpg status -n --verbose +``` + +### Check Sidecar Logs on the Backup Target Pod + +```sh +# Identify which pod was the backup target (from the previous step) +TARGET_POD=$(kubectl get backups.postgresql.cnpg.io \ + -n \ + -o jsonpath='{.status.instanceID.podName}') +echo "Backup target pod: $TARGET_POD" + +# Check the sidecar logs on the specific target pod +kubectl logs -n $TARGET_POD \ + -c plugin-barman-cloud --tail=100 + +# Follow the logs in real time +kubectl logs -n $TARGET_POD \ + -c plugin-barman-cloud -f + +# Check for specific errors in the target pod around the backup time +kubectl logs -n $TARGET_POD \ + -c plugin-barman-cloud --since=10m | grep -E "ERROR|FATAL|panic|failed" + +# Alternative: List all cluster pods and their roles +kubectl get pods -n -l cnpg.io/cluster= \ + -o custom-columns=NAME:.metadata.name,ROLE:.metadata.labels.cnpg\\.io/instanceRole,INSTANCE:.metadata.labels.cnpg\\.io/instanceName + +# Check sidecar logs on ALL cluster pods (if the target is unclear) +for pod in $(kubectl get pods -n -l cnpg.io/cluster= -o name); do + echo "=== Checking $pod ===" + kubectl logs -n $pod -c plugin-barman-cloud \ + --tail=20 | grep -i error || echo "No errors found" +done +``` + +### Check Events for Backup-Related Issues + +```sh +# Check events for the cluster +kubectl get events -n \ + --field-selector involvedObject.name= + +# Check events for failed backups +kubectl get events -n \ + --field-selector involvedObject.kind=Backup + +# Get all recent events in the namespace +kubectl get events -n --sort-by='.lastTimestamp' | tail -20 +``` + +### Verify `ObjectStore` Configuration + +```sh +# Check the ObjectStore resource +kubectl get objectstores.barmancloud.cnpg.io \ + -n -o yaml + +# Verify the secret exists and has the correct keys +kubectl get secret -n -o yaml +# Alternatively +kubectl get secret -n -o jsonpath='{.data}' | jq 'keys' +``` + +### Common Error Messages and Solutions + +* **"AccessDenied" or "403 Forbidden"** β€” Check cloud credentials and bucket permissions. +* **"NoSuchBucket"** β€” Verify the bucket exists and the endpoint URL is correct. +* **"Connection timeout"** β€” Check network connectivity and firewall rules. +* **"SSL certificate problem"** β€” For self-signed certificates, verify the CA bundle configuration. + diff --git a/web/versioned_docs/version-0.14.0/upgrades.mdx b/web/versioned_docs/version-0.14.0/upgrades.mdx new file mode 100644 index 0000000..0ab9ddb --- /dev/null +++ b/web/versioned_docs/version-0.14.0/upgrades.mdx @@ -0,0 +1,16 @@ +--- +sidebar_position: 25 +--- + +# Upgrades + + + +You can upgrade the plugin simply by installing the new version. Unless +explicitly stated below or in the release notes, no special steps are required. + +## Upgrading to version 0.8.x from previous versions + +Version **0.8.0** introduces breaking changes to resource naming. +To complete the upgrade successfully, follow the instructions in the +["Resource name migration guide"](resource-name-migration.md). diff --git a/web/versioned_docs/version-0.14.0/usage.md b/web/versioned_docs/version-0.14.0/usage.md new file mode 100644 index 0000000..6406d38 --- /dev/null +++ b/web/versioned_docs/version-0.14.0/usage.md @@ -0,0 +1,283 @@ +--- +sidebar_position: 30 +--- + +# Using the Barman Cloud Plugin + + + +After [installing the plugin](installation.mdx) in the same namespace as the +CloudNativePG operator, enabling your PostgreSQL cluster to use the Barman +Cloud Plugin involves just a few steps: + +- Defining the object store containing your WAL archive and base backups, using + your preferred [provider](object_stores.md) +- Instructing the Postgres cluster to use the Barman Cloud Plugin + +From that moment, you’ll be able to issue on-demand backups or define a backup +schedule, as well as rely on the object store for recovery operations. + +The rest of this page details each step, using MinIO as object store provider. + +## Defining the `ObjectStore` + +An `ObjectStore` resource must be created for each object store used in your +PostgreSQL architecture. Here's an example configuration using MinIO: + +```yaml +apiVersion: barmancloud.cnpg.io/v1 +kind: ObjectStore +metadata: + name: minio-store +spec: + configuration: + destinationPath: s3://backups/ + endpointURL: http://minio:9000 + s3Credentials: + accessKeyId: + name: minio + key: ACCESS_KEY_ID + secretAccessKey: + name: minio + key: ACCESS_SECRET_KEY + wal: + compression: gzip +``` + +The `.spec.configuration` schema follows the same format as the +[in-tree barman-cloud support](https://pkg.go.dev/github.com/cloudnative-pg/barman-cloud/pkg/api#BarmanObjectStoreConfiguration). +Refer to [the CloudNativePG documentation](https://cloudnative-pg.io/documentation/current/appendixes/backup_barmanobjectstore/) +for additional details. + +:::important +The `serverName` parameter in the `ObjectStore` resource is retained solely for +API compatibility with the in-tree `barmanObjectStore` and must always be left empty. +When needed, use the `serverName` plugin parameter in the Cluster configuration instead. +::: + +## Configuring WAL Archiving + +Once the `ObjectStore` is defined, you can configure your PostgreSQL cluster +to archive WALs by referencing the store in the `.spec.plugins` section: + +```yaml +apiVersion: postgresql.cnpg.io/v1 +kind: Cluster +metadata: + name: cluster-example +spec: + instances: 3 + imagePullPolicy: Always + plugins: + - name: barman-cloud.cloudnative-pg.io + isWALArchiver: true + parameters: + barmanObjectName: minio-store + storage: + size: 1Gi +``` + +This configuration enables both WAL archiving and data directory backups. + +## Performing a Base Backup + +Once WAL archiving is enabled, the cluster is ready for backups. Backups can be +created either declaratively (with YAML manifests) or imperatively (with the +`cnpg` plugin). + +### Declarative approach (YAML manifest) + +Create a backup resource by applying a YAML manifest: + +```yaml +apiVersion: postgresql.cnpg.io/v1 +kind: Backup +metadata: + name: backup-example +spec: + cluster: + name: cluster-example + method: plugin + pluginConfiguration: + name: barman-cloud.cloudnative-pg.io +``` + +### Imperative approach (using the `cnpg` plugin) + +The quickest way to trigger an on-demand backup is with the `cnpg` plugin: + +```bash +kubectl cnpg backup -n \ + --method=plugin \ + --plugin-name=barman-cloud.cloudnative-pg.io +``` + +:::note Migration from in-tree backups +If you are migrating from the in-tree backup system, note the change in syntax: + +```bash +# Old command (in-tree backup) +kubectl cnpg backup -n --method=barmanObjectStore + +# New command (plugin-based backup) +kubectl cnpg backup -n \ + --method=plugin \ + --plugin-name=barman-cloud.cloudnative-pg.io +``` +::: + +## Restoring a Cluster + +To restore a cluster from an object store, create a new `Cluster` resource that +references the store containing the backup. Below is an example configuration: + +```yaml +apiVersion: postgresql.cnpg.io/v1 +kind: Cluster +metadata: + name: cluster-restore +spec: + instances: 3 + imagePullPolicy: IfNotPresent + bootstrap: + recovery: + source: source + externalClusters: + - name: source + plugin: + name: barman-cloud.cloudnative-pg.io + parameters: + barmanObjectName: minio-store + serverName: cluster-example + storage: + size: 1Gi +``` + +:::important +The above configuration does **not** enable WAL archiving for the restored cluster. +::: + +To enable WAL archiving for the restored cluster, include the `.spec.plugins` +section alongside the `externalClusters.plugin` section, as shown below: + +```yaml +apiVersion: postgresql.cnpg.io/v1 +kind: Cluster +metadata: + name: cluster-restore +spec: + instances: 3 + imagePullPolicy: IfNotPresent + bootstrap: + recovery: + source: source + plugins: + - name: barman-cloud.cloudnative-pg.io + isWALArchiver: true + parameters: + # Backup Object Store (push, read-write) + barmanObjectName: minio-store-bis + externalClusters: + - name: source + plugin: + name: barman-cloud.cloudnative-pg.io + parameters: + # Recovery Object Store (pull, read-only) + barmanObjectName: minio-store + serverName: cluster-example + storage: + size: 1Gi +``` + +The same object store may be used for both transaction log archiving and +restoring a cluster, or you can configure separate stores for these purposes. + +## Configuring Replica Clusters + +You can set up a distributed topology by combining the previously defined +configurations with the `.spec.replica` section. Below is an example of how to +define a replica cluster: + +```yaml +apiVersion: postgresql.cnpg.io/v1 +kind: Cluster +metadata: + name: cluster-dc-a +spec: + instances: 3 + primaryUpdateStrategy: unsupervised + + storage: + storageClass: csi-hostpath-sc + size: 1Gi + + plugins: + - name: barman-cloud.cloudnative-pg.io + isWALArchiver: true + parameters: + barmanObjectName: minio-store-a + + replica: + self: cluster-dc-a + primary: cluster-dc-a + source: cluster-dc-b + + externalClusters: + - name: cluster-dc-a + plugin: + name: barman-cloud.cloudnative-pg.io + parameters: + barmanObjectName: minio-store-a + + - name: cluster-dc-b + plugin: + name: barman-cloud.cloudnative-pg.io + parameters: + barmanObjectName: minio-store-b +``` + +## Configuring the plugin instance sidecar + +The Barman Cloud Plugin runs as a sidecar container next to each PostgreSQL +instance pod. It manages backup, WAL archiving, and restore processes. + +Configuration comes from multiple `ObjectStore` resources: + +1. The one referenced in the + `.spec.plugins` section of the `Cluster`. This is the + object store used for WAL archiving and base backups. +2. The one referenced in the external cluster + used in the `.spec.replica.source` section of the `Cluster`. This is + used by the log-shipping designated primary to get the WAL files. +3. The one referenced in the + `.spec.bootstrap.recovery.source` section of the `Cluster`. Used by + the initial recovery job to create the cluster from an existing backup. + +You can fine-tune sidecar behavior in the `.spec.instanceSidecarConfiguration` +of your ObjectStore. These settings apply to all PostgreSQL instances that use +this object store. Any updates take effect at the next `Cluster` reconciliation, +and could generate a rollout of the `Cluster`. + +```yaml +apiVersion: barmancloud.cnpg.io/v1 +kind: ObjectStore +metadata: + name: minio-store +spec: + configuration: + # [...] + instanceSidecarConfiguration: + retentionPolicyIntervalSeconds: 1800 + resources: + requests: + memory: "XXX" + cpu: "YYY" + limits: + memory: "XXX" + cpu: "YYY" +``` + +:::note +If more than one `ObjectStore` applies, the `instanceSidecarConfiguration` of +the one set in `.spec.plugins` has priority. +::: diff --git a/web/versioned_sidebars/version-0.14.0-sidebars.json b/web/versioned_sidebars/version-0.14.0-sidebars.json new file mode 100644 index 0000000..1fd014a --- /dev/null +++ b/web/versioned_sidebars/version-0.14.0-sidebars.json @@ -0,0 +1,8 @@ +{ + "docs": [ + { + "type": "autogenerated", + "dirName": "." + } + ] +} diff --git a/web/versions.json b/web/versions.json index dcc6cd5..ab820ae 100644 --- a/web/versions.json +++ b/web/versions.json @@ -1,4 +1,5 @@ [ + "0.14.0", "0.13.0", "0.12.0", "0.11.0", From 1e13020fe5f09fd8fc29ea03828f7b61375b3721 Mon Sep 17 00:00:00 2001 From: Peggie Date: Wed, 29 Jul 2026 12:00:23 +0200 Subject: [PATCH 098/134] chore(main): release 0.14.0 (#964) Signed-off-by: Peggie --- .release-please-manifest.json | 2 +- CHANGELOG.md | 31 ++++++++++++++++++++++++++++ internal/cnpgi/metadata/constants.go | 2 +- 3 files changed, 33 insertions(+), 2 deletions(-) diff --git a/.release-please-manifest.json b/.release-please-manifest.json index ed21d28..727e2be 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "0.13.0" + ".": "0.14.0" } diff --git a/CHANGELOG.md b/CHANGELOG.md index 646a771..1736d59 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,36 @@ # Changelog +## [0.14.0](https://github.com/cloudnative-pg/plugin-barman-cloud/compare/v0.13.0...v0.14.0) (2026-07-29) + + +### Features + +* Honor the operator's check_empty_wal_archive decision ([#1009](https://github.com/cloudnative-pg/plugin-barman-cloud/issues/1009)) ([7bcb74b](https://github.com/cloudnative-pg/plugin-barman-cloud/commit/7bcb74b987a3cca232c6f8021157eb711a1289b0)) + + +### Bug Fixes + +* **deps:** Update all non-major go dependencies ([#963](https://github.com/cloudnative-pg/plugin-barman-cloud/issues/963)) ([f949241](https://github.com/cloudnative-pg/plugin-barman-cloud/commit/f94924105b51b7b015338d4ec2c71904ef8d095c)) +* **deps:** Update all non-major go dependencies ([#979](https://github.com/cloudnative-pg/plugin-barman-cloud/issues/979)) ([bf52833](https://github.com/cloudnative-pg/plugin-barman-cloud/commit/bf5283359478071f116464c14a7a3d3d0a358eea)) +* **deps:** Update all non-major go dependencies ([#982](https://github.com/cloudnative-pg/plugin-barman-cloud/issues/982)) ([5f84ecc](https://github.com/cloudnative-pg/plugin-barman-cloud/commit/5f84ecce4a9433da27346d194f6a4b456d59f75f)) +* **deps:** Update all non-major go dependencies to 53ffbf0 ([#973](https://github.com/cloudnative-pg/plugin-barman-cloud/issues/973)) ([7190349](https://github.com/cloudnative-pg/plugin-barman-cloud/commit/719034947061f72ce8fcc919f5e209aa7fd7d874)) +* **deps:** Update all non-major go dependencies to 592f761 ([#972](https://github.com/cloudnative-pg/plugin-barman-cloud/issues/972)) ([2fa63c4](https://github.com/cloudnative-pg/plugin-barman-cloud/commit/2fa63c4bc28c03fbb79e3751a001868e991b8917)) +* **deps:** Update all non-major go dependencies to 8d9302e ([#975](https://github.com/cloudnative-pg/plugin-barman-cloud/issues/975)) ([0c687cb](https://github.com/cloudnative-pg/plugin-barman-cloud/commit/0c687cbbf13f4ce5ca1690d4dcf768d76cb4731a)) +* **deps:** Update all non-major go dependencies to v2.30.0 ([#957](https://github.com/cloudnative-pg/plugin-barman-cloud/issues/957)) ([61b82ce](https://github.com/cloudnative-pg/plugin-barman-cloud/commit/61b82ce250e95f04d49d0fb427e79364f2d900c0)) +* **deps:** Update documentation dependencies to v3.10.2 ([#1001](https://github.com/cloudnative-pg/plugin-barman-cloud/issues/1001)) ([88f2e29](https://github.com/cloudnative-pg/plugin-barman-cloud/commit/88f2e296746f495d3e7b27cd7297e772d53f61e9)) +* **deps:** Update github.com/cloudnative-pg/barman-cloud digest to 950b0f5 ([#1022](https://github.com/cloudnative-pg/plugin-barman-cloud/issues/1022)) ([98537c4](https://github.com/cloudnative-pg/plugin-barman-cloud/commit/98537c4d0e899e136e85237b29020a9bbbf9f5aa)) +* **deps:** Update k8s.io/utils digest to a95e086 ([#968](https://github.com/cloudnative-pg/plugin-barman-cloud/issues/968)) ([f7f0136](https://github.com/cloudnative-pg/plugin-barman-cloud/commit/f7f0136520b1032698b26e33e6eff1caa01173f5)) +* **deps:** Update k8s.io/utils digest to be93311 ([#986](https://github.com/cloudnative-pg/plugin-barman-cloud/issues/986)) ([2cc4e99](https://github.com/cloudnative-pg/plugin-barman-cloud/commit/2cc4e9905db6b1d1c5788dd6093a1a7d330d9064)) +* **deps:** Update kubernetes monorepo to v0.36.2 ([#958](https://github.com/cloudnative-pg/plugin-barman-cloud/issues/958)) ([030b28c](https://github.com/cloudnative-pg/plugin-barman-cloud/commit/030b28c4b9aee205f7a43f1fcc4da363b50839d9)) +* **deps:** Update kubernetes monorepo to v0.36.3 ([#1031](https://github.com/cloudnative-pg/plugin-barman-cloud/issues/1031)) ([ce81794](https://github.com/cloudnative-pg/plugin-barman-cloud/commit/ce8179442b49e0686ec05505b4ba79360b54ec8c)) +* **deps:** Update module github.com/cloudnative-pg/cnpg-i to v0.6.0 ([#1021](https://github.com/cloudnative-pg/plugin-barman-cloud/issues/1021)) ([13450a3](https://github.com/cloudnative-pg/plugin-barman-cloud/commit/13450a370d16fda87c128fc3a2f420f5b0cc442b)) +* **deps:** Update module google.golang.org/grpc to v1.82.1 ([#1008](https://github.com/cloudnative-pg/plugin-barman-cloud/issues/1008)) ([3c27364](https://github.com/cloudnative-pg/plugin-barman-cloud/commit/3c273641e3fb8027011be74ebb09d0ba91f71c7b)) +* **docs:** Fix broken anchor link in concepts.md ([#1013](https://github.com/cloudnative-pg/plugin-barman-cloud/issues/1013)) ([9c84d06](https://github.com/cloudnative-pg/plugin-barman-cloud/commit/9c84d069edc39c2848813aff5fd13c13c2ac8ff9)) +* Inject barman sidecar in replica clusters bootstrapped with pg_basebackup ([#965](https://github.com/cloudnative-pg/plugin-barman-cloud/issues/965)) ([eb5e860](https://github.com/cloudnative-pg/plugin-barman-cloud/commit/eb5e8607752d60bf36b4a9ddcaa5bb447f323012)) +* Reduce startupProbe periodSeconds without losing failure tolerance ([#992](https://github.com/cloudnative-pg/plugin-barman-cloud/issues/992)) ([bf95543](https://github.com/cloudnative-pg/plugin-barman-cloud/commit/bf955430cb58987bbbe3cd2925ea06700cf85609)), refs [#991](https://github.com/cloudnative-pg/plugin-barman-cloud/issues/991) +* Restore WAL from replica source during designated primary promotion ([#966](https://github.com/cloudnative-pg/plugin-barman-cloud/issues/966)) ([c34b232](https://github.com/cloudnative-pg/plugin-barman-cloud/commit/c34b2329ea39f9a1030d9d1225aa4d0a276255eb)) +* **walrestore:** Serve pg_rewind without prefetching and flag machinery ([#1007](https://github.com/cloudnative-pg/plugin-barman-cloud/issues/1007)) ([fb3f0f9](https://github.com/cloudnative-pg/plugin-barman-cloud/commit/fb3f0f9dabba85d87af85418d58b2f8224ed6305)) + ## [0.13.0](https://github.com/cloudnative-pg/plugin-barman-cloud/compare/v0.12.0...v0.13.0) (2026-06-10) diff --git a/internal/cnpgi/metadata/constants.go b/internal/cnpgi/metadata/constants.go index bd67daf..f725697 100644 --- a/internal/cnpgi/metadata/constants.go +++ b/internal/cnpgi/metadata/constants.go @@ -63,7 +63,7 @@ const ( // Data is the metadata of this plugin. var Data = identity.GetPluginMetadataResponse{ Name: PluginName, - Version: "0.13.0", // x-release-please-version + Version: "0.14.0", // x-release-please-version DisplayName: "BarmanCloudInstance", ProjectUrl: "https://github.com/cloudnative-pg/plugin-barman-cloud", RepositoryUrl: "https://github.com/cloudnative-pg/plugin-barman-cloud", From 9967e2caabf20362a5ac5812fc320b25e1f43a2d Mon Sep 17 00:00:00 2001 From: Gabriele Bartolini Date: Thu, 6 Aug 2026 19:30:12 +1000 Subject: [PATCH 099/134] chore: sync CODEOWNERS with cnpg-infra policy (#1047) Regenerates this repo's CODEOWNERS from cloudnative-pg/cnpg-infra's `componentowners-policy.yaml`, the org's tracked desired state for CODEOWNERS content. - Routes ownership through this repo's dedicated GitHub owners team instead of hardcoded usernames, so membership changes are picked up automatically. - Any path-scoped rule now also includes the repo's general owners, so a path rule adds reviewers rather than silently replacing the `*` rule's owners for that subtree (CODEOWNERS only honors the last matching pattern, it does not merge). See cloudnative-pg/cnpg-infra for the policy this is generated from. Assisted-by: Claude Signed-off-by: Gabriele Bartolini --- CODEOWNERS | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/CODEOWNERS b/CODEOWNERS index adf378c..89d75b7 100644 --- a/CODEOWNERS +++ b/CODEOWNERS @@ -1,5 +1,9 @@ -# The CODEOWNERS file is used to define individuals or teams that are -# responsible for code in a repository. For details, please refer to -# https://docs.github.com/en/free-pro-team@latest/github/creating-cloning-and-archiving-repositories/about-code-owners +# This file is generated from componentowners-policy.yaml in +# cloudnative-pg/cnpg-infra β€” do not hand-edit, propose changes there instead. +# +# Path-scoped rules below always include the repo's own general owners +# (the "*" line) in addition to their own specific teams/users, since +# CODEOWNERS only honors the LAST matching pattern for a given path β€” +# it does not merge an earlier, less-specific rule into a later one. -* @leonardoce @mnencia @gbartolini @fcanovai @armru @NiccoloFei +* @cloudnative-pg/plugin-barman-cloud-owners From 0e29da11492203b64cccc3506d314aa2ea0a96e3 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 14 Aug 2026 16:47:44 +0200 Subject: [PATCH 100/134] chore(deps): bump js-yaml from 4.3.0 to 4.3.1 in /web (#1058) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- web/yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/web/yarn.lock b/web/yarn.lock index 18e04d0..6179447 100644 --- a/web/yarn.lock +++ b/web/yarn.lock @@ -5876,9 +5876,9 @@ joi@^17.9.2: integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== js-yaml@^4.1.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.3.0.tgz#d1900572a7f7cf0b5f540c83673e60bad3436592" - integrity sha512-1td788aAnnZ5qs7V2QIRl1owjtYpbKt749Y3xauqQgwIIGF/xXWz1wMTEBx5O3LK3lXLVuqXPdPxj2BoFHaW9Q== + version "4.3.1" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.3.1.tgz#01216c001d67f48e2cd560d708c7af21090a3848" + integrity sha512-CY6crGq313MX8GkwvB7tzgp99vjQxY1++5y10/BKN/GUfHqWaOGQMNZkBvqSzsZKWk/ijwHlWzzkLulsGHhjWQ== dependencies: argparse "^2.0.1" From b825c1c36b6a3e65d952767935ae7dee742d708e Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 14 Aug 2026 17:05:08 +0200 Subject: [PATCH 101/134] chore(deps): lock file maintenance (#1064) Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- web/yarn.lock | 536 +++++++++++++++++++++++++------------------------- 1 file changed, 268 insertions(+), 268 deletions(-) diff --git a/web/yarn.lock b/web/yarn.lock index 6179447..67a300b 100644 --- a/web/yarn.lock +++ b/web/yarn.lock @@ -218,13 +218,13 @@ json5 "^2.2.3" semver "^6.3.1" -"@babel/generator@^7.25.9", "@babel/generator@^7.29.7": - version "7.29.7" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.29.7.tgz#cca0b8827e6bcf3ba176788e7f3b180ad6db2fa3" - integrity sha512-DkXD5OJQaAQIdZ1bt3UZdEnHAn9Imd3IVBdX03UFe+ony9Ojw5pzr9YVKGDY1jt+Gcn/FnGkNf8r+Vj5NOJWtQ== +"@babel/generator@^7.25.9", "@babel/generator@^7.29.7", "@babel/generator@^7.29.8": + version "7.29.8" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.29.8.tgz#4b0b887885422643339e09022148a4c4ebaa4979" + integrity sha512-gZbepsdh3WDtgZKWL+vTPh71LSBrm/Y4/QDZBVCcYfmeTEEuoOYwlSy+G1StfJg+/Zy550u/3TATbm7qDbbMtg== dependencies: - "@babel/parser" "^7.29.7" - "@babel/types" "^7.29.7" + "@babel/parser" "^7.29.8" + "@babel/types" "^7.29.8" "@jridgewell/gen-mapping" "^0.3.12" "@jridgewell/trace-mapping" "^0.3.28" jsesc "^3.0.2" @@ -380,12 +380,12 @@ "@babel/template" "^7.29.7" "@babel/types" "^7.29.7" -"@babel/parser@^7.29.7": - version "7.29.7" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.29.7.tgz#837b87387cbf5ec5530cb634b3c622f68edb9334" - integrity sha512-hnORnjP/1P/zFEndoeX+n+t1RwWRJiJpM/jO7FW32Kn9r5+sJB2JWOdYo4L6k78j15eCwY3Gm/7364B1EMwtNg== +"@babel/parser@^7.29.7", "@babel/parser@^7.29.8": + version "7.29.8" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.29.8.tgz#9653716a2f10c677b98fbc63d4bfb000c302cf17" + integrity sha512-E8lTAYNB1KW+FH+VGJuZM1ioAx2E6oVlvQFRrf5P8ZZmsiJXYAD9vTFV7yyEURNzgh1dFqMZuO6tUwcARbqFCA== dependencies: - "@babel/types" "^7.29.7" + "@babel/types" "^7.29.8" "@babel/plugin-bugfix-firefox-class-in-computed-class-key@^7.29.7": version "7.29.7" @@ -679,14 +679,14 @@ "@babel/helper-plugin-utils" "^7.29.7" "@babel/plugin-transform-modules-systemjs@^7.29.7": - version "7.29.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.29.7.tgz#e575dd2ab9882906de120ff7dc9dee9914d8b6f3" - integrity sha512-TM2ZcQLoG2/y4HODiStCo10DibYhWhGWAwVv+EQKmG/7GFl0N+AAmUiXOMKM+aiJ9XBJ9AHVZBvTzMnJ2sM3cQ== + version "7.29.8" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.29.8.tgz#e60a6a42ac63a3095f9cc7264f698a100c8fe05d" + integrity sha512-6iSnEK0zlkLKU4heofK/AdmRD4e2SHVpJMtrwnTCzhnaM98ria4rTrOXBBi45BTTYnJtO8txnPsX4fChYXkmeA== dependencies: "@babel/helper-module-transforms" "^7.29.7" "@babel/helper-plugin-utils" "^7.29.7" "@babel/helper-validator-identifier" "^7.29.7" - "@babel/traverse" "^7.29.7" + "@babel/traverse" "^7.29.8" "@babel/plugin-transform-modules-umd@^7.29.7": version "7.29.7" @@ -831,9 +831,9 @@ "@babel/helper-plugin-utils" "^7.29.7" "@babel/plugin-transform-regenerator@^7.29.7": - version "7.29.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.29.7.tgz#0f42626a7dbb0e7a7f52e036d3e43deebdc3ea4e" - integrity sha512-rNNFV0DBAJp988xW2DOntfDoYn1eR8GGF5AT5vYc+rjyfaQkM242c9tZUHHPe7KYaiJizXPWhQTzzdbXySyhBw== + version "7.29.8" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.29.8.tgz#3a4a4dd7214af9d524f0503bb97c99af5f4abf26" + integrity sha512-0UpIXPtdDtMXfnV2OJAVMLpj3H/92vmkA6lpSRakmycJvj3VUy6Xs1dM8tXRugupykr5WB+LpiVl0J8LMVg2mg== dependencies: "@babel/helper-plugin-utils" "^7.29.7" @@ -872,9 +872,9 @@ "@babel/helper-plugin-utils" "^7.29.7" "@babel/plugin-transform-spread@^7.29.7": - version "7.29.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.29.7.tgz#a128bcdd6b5e5e47054907b2e50bc19c3f856edd" - integrity sha512-/u5K1QWada7tbYNqTjMh96718g9NTwh9tfPJMsSmVsQwGT447FskV+KcfeXkXq2GWki4EM/MuTdmBec+hOuVTQ== + version "7.29.8" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.29.8.tgz#c894cff38556a5dafeb412e13fc012b6df4b95a2" + integrity sha512-4S9ksMGVWUshvgK0mKfvZky7leuG5/uoFVwMpAomJ8bMoDJiNHRVmc1EglwW/CmGVSqqWpEbXm9FmbRit22qoA== dependencies: "@babel/helper-plugin-utils" "^7.29.7" "@babel/helper-skip-transparent-expression-wrappers" "^7.29.7" @@ -1065,23 +1065,23 @@ "@babel/parser" "^7.29.7" "@babel/types" "^7.29.7" -"@babel/traverse@^7.25.9", "@babel/traverse@^7.29.7": - version "7.29.7" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.29.7.tgz#c47b07a41b95da0907d026b5dd894d98de7d2f2d" - integrity sha512-EhlfNQtZ+NK22w5BM61ciuiq1m58ed33Wr1Xan//ZRTy6hgjnwyCffRYwzsGXdASJSUJ1guZILsErh1eQcl+zw== +"@babel/traverse@^7.25.9", "@babel/traverse@^7.29.7", "@babel/traverse@^7.29.8": + version "7.29.8" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.29.8.tgz#4111014cdc71a0f95d9471907590baa0b8a6b28a" + integrity sha512-I5z7H3bf/41ktsNVLtpN0wAa336HkqIHQ5BuPLEhTkt1jVSyZpeNKIzTgEWmlxjdg81R0IgUCcaE+Ok3NvrfZg== dependencies: "@babel/code-frame" "^7.29.7" - "@babel/generator" "^7.29.7" + "@babel/generator" "^7.29.8" "@babel/helper-globals" "^7.29.7" - "@babel/parser" "^7.29.7" + "@babel/parser" "^7.29.8" "@babel/template" "^7.29.7" - "@babel/types" "^7.29.7" + "@babel/types" "^7.29.8" debug "^4.3.1" -"@babel/types@^7.21.3", "@babel/types@^7.29.7", "@babel/types@^7.4.4": - version "7.29.7" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.29.7.tgz#8005e31d82712ee7adaef6e23c63b71a62770a92" - integrity sha512-4zBIxpPzowiZpusoFkyGVwakdRJUyuH5PxQ/PrqghfdFWWasvnCdPfQXHrenDai+gyLARulZjZowCOj6fjT4pA== +"@babel/types@^7.21.3", "@babel/types@^7.29.7", "@babel/types@^7.29.8", "@babel/types@^7.4.4": + version "7.29.8" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.29.8.tgz#1229eef31d85156d70fa3f4cd859376d0eaf6863" + integrity sha512-Vj1jF3cPfxg7OAfoI7QnVKLoILlm2JF9pnVHrX8qx7AHMiYWT+NDAA7jChlNgRS4WTLc/fD1lXLmPixluj+3Gg== dependencies: "@babel/helper-string-parser" "^7.29.7" "@babel/helper-validator-identifier" "^7.29.7" @@ -1490,24 +1490,24 @@ resolved "https://registry.yarnpkg.com/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz#1d572bfbbe14b7704e0ba0f39b74815b84870d70" integrity sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw== -"@docsearch/core@4.6.3": - version "4.6.3" - resolved "https://registry.yarnpkg.com/@docsearch/core/-/core-4.6.3.tgz#9954c75c3ae28418e06f8e7537a920d6cd2bc22e" - integrity sha512-rUOujwIpxJRgD7+kicVsI3D5sqBvdiRTquzWBpTEXZs8ZXfGbfzpus5HqumaNYTppN2HvH8E2yNuRwYdHJeOlA== +"@docsearch/core@4.7.0": + version "4.7.0" + resolved "https://registry.yarnpkg.com/@docsearch/core/-/core-4.7.0.tgz#914962191f2718b9caa48f4cbe46c0720fdc055d" + integrity sha512-p/9xVKmPDj3FPvMfPf5naVO3Ej8SCbcUugGvx1+8GgkuBNbqxqN2Irx3WLBv8VY0jH7XpRwKWdlmjXLZsmTLsg== -"@docsearch/css@4.6.3": - version "4.6.3" - resolved "https://registry.yarnpkg.com/@docsearch/css/-/css-4.6.3.tgz#a94065af4a996dd927dc5dda383395e583dbd638" - integrity sha512-nlOwcXcsNAptQl4vlL4MA78qNJKO0Qlds5GuBjCoePgkebTXLSf8Qt1oyZ3YBshYupKXG9VRGEsk1zr23d+bzQ== +"@docsearch/css@4.7.0": + version "4.7.0" + resolved "https://registry.yarnpkg.com/@docsearch/css/-/css-4.7.0.tgz#d6d93c6ddf5e813a3ea09da719e150c222693a5c" + integrity sha512-Sk5xkdRFeE7PeWjG9l4AfTwdvMfr9wHiwNNCpHXT4v4SNyNMKdHGvEILc31BgaVFGDDNbv5u/a73tofRiwbEZw== "@docsearch/react@^3.9.0 || ^4.3.2": - version "4.6.3" - resolved "https://registry.yarnpkg.com/@docsearch/react/-/react-4.6.3.tgz#80df785f9c5e484c960b914a22ea2a3e4c7210ad" - integrity sha512-Bg2wdDsoQVlNCcEKuEJAU04tvHCqgx8rIu+uIoM4pRtcx3TBKJuXutJik3LTA8LRc9YEyHkrYUrmcC0D7BYf+g== + version "4.7.0" + resolved "https://registry.yarnpkg.com/@docsearch/react/-/react-4.7.0.tgz#8e7d77c34d19755f98d225a3413eddf605658d70" + integrity sha512-x6oedjJ8O8/pIDBsMo5Orca3/6cQCz616/CwthVe68l43mqnj2lrJ9kFQITBqy8hMsS3nWeBWFoVO5dJ1DCFKA== dependencies: "@algolia/autocomplete-core" "1.19.2" - "@docsearch/core" "4.6.3" - "@docsearch/css" "4.6.3" + "@docsearch/core" "4.7.0" + "@docsearch/css" "4.7.0" "@docusaurus/babel@3.10.2": version "3.10.2" @@ -1994,9 +1994,9 @@ immediate "^3.2.3" "@easyops-cn/docusaurus-search-local@^0.55.0": - version "0.55.2" - resolved "https://registry.yarnpkg.com/@easyops-cn/docusaurus-search-local/-/docusaurus-search-local-0.55.2.tgz#563ab1f8fd7bc18541d889f4d5001a3ef85c5a1e" - integrity sha512-dI/riu+MbDxkAjAHAdc0uahjXRaWKvbIPe9IAmA6AGcUfnVb9xd8s2I/6wEPTOXsAd6eFqn4Yis3WBWh3KUd3g== + version "0.55.3" + resolved "https://registry.yarnpkg.com/@easyops-cn/docusaurus-search-local/-/docusaurus-search-local-0.55.3.tgz#4beba8939a630a5fe4b37fd83bb41beca9923809" + integrity sha512-PlMKmxuonvZ1C+/zJS1hJaF1xaxD1TsUvOMzpP6DdQMtZqmTaYjcLGM12ePzl0m1rp3AgfTBeDbFNHQhwnH/dA== dependencies: "@docusaurus/plugin-content-docs" "^2 || ^3" "@docusaurus/theme-translations" "^2 || ^3" @@ -2141,75 +2141,75 @@ resolved "https://registry.yarnpkg.com/@jsonjoy.com/codegen/-/codegen-1.0.0.tgz#5c23f796c47675f166d23b948cdb889184b93207" integrity sha512-E8Oy+08cmCf0EK/NMxpaJZmOxPqM+6iSe2S4nlSBrPZOORoDJILxtbSUEDKQyTamm/BVAhIGllOBNU79/dwf0g== -"@jsonjoy.com/fs-core@4.64.0": - version "4.64.0" - resolved "https://registry.yarnpkg.com/@jsonjoy.com/fs-core/-/fs-core-4.64.0.tgz#82378ecedc5cbd8558fcc0a8e3c6b254db070fc8" - integrity sha512-zs2TAq7Six5jgMuoMNjpspAvOP3mhtgq/k1UyQodEzCtQi/N83y2/y+zcvnZSGp/Rxq96DBN+bValOBQAyn/ew== +"@jsonjoy.com/fs-core@4.68.1": + version "4.68.1" + resolved "https://registry.yarnpkg.com/@jsonjoy.com/fs-core/-/fs-core-4.68.1.tgz#15fed282af2a8efbd1a335a83ae1bd3507fa0237" + integrity sha512-V5oZ4Gt9WJKyQef0n9cAd0N9qjSkIBm3E4MYsgNIWBk5aINCDPKxMPo1i29rBxqiT4Ixf1epklqV9VJMKIxwlw== dependencies: - "@jsonjoy.com/fs-node-builtins" "4.64.0" - "@jsonjoy.com/fs-node-utils" "4.64.0" + "@jsonjoy.com/fs-node-builtins" "4.68.1" + "@jsonjoy.com/fs-node-utils" "4.68.1" thingies "^2.5.0" -"@jsonjoy.com/fs-fsa@4.64.0": - version "4.64.0" - resolved "https://registry.yarnpkg.com/@jsonjoy.com/fs-fsa/-/fs-fsa-4.64.0.tgz#3cb0af64a33f075300ef63be97af89bb7849e6bd" - integrity sha512-nMWOVbkLFyEgmXZih3wyvxA9XpgyyqyfrINMHvEFqhi7uqfRl7c9ERJt6yX7vgMPrB9Uo+OJO+Spa0cFzPD01w== +"@jsonjoy.com/fs-fsa@4.68.1": + version "4.68.1" + resolved "https://registry.yarnpkg.com/@jsonjoy.com/fs-fsa/-/fs-fsa-4.68.1.tgz#009ebc90396622d37df984691fbe8bad51fdedea" + integrity sha512-HCG72UioncuO7Gw09XNVG+S85e3cq2hrUC/mexBrsWsa3mI7eePkkqWie3uVYbtsb64OR9YGQs5SqaufDRYBcg== dependencies: - "@jsonjoy.com/fs-core" "4.64.0" - "@jsonjoy.com/fs-node-builtins" "4.64.0" - "@jsonjoy.com/fs-node-utils" "4.64.0" + "@jsonjoy.com/fs-core" "4.68.1" + "@jsonjoy.com/fs-node-builtins" "4.68.1" + "@jsonjoy.com/fs-node-utils" "4.68.1" thingies "^2.5.0" -"@jsonjoy.com/fs-node-builtins@4.64.0": - version "4.64.0" - resolved "https://registry.yarnpkg.com/@jsonjoy.com/fs-node-builtins/-/fs-node-builtins-4.64.0.tgz#84371474b2a06d209ae9f0b2b06fc570b00fb612" - integrity sha512-/o7WRFhUWaM/fOrslwLZGnzn4RmRILykn+lAL+mNObqqRNw+CQSiij6hpCeZ+C7buhdoVo7go/OYqzaSUfDYmA== +"@jsonjoy.com/fs-node-builtins@4.68.1": + version "4.68.1" + resolved "https://registry.yarnpkg.com/@jsonjoy.com/fs-node-builtins/-/fs-node-builtins-4.68.1.tgz#3c4ee9877e12d76eab8611663bea127d0e261fc5" + integrity sha512-HK1BTksysokNZxNspqDH0yPaqN9YgR/AYIlYiIaU2Ys4BOk5CdybI7r6BgiZuiiPiV8n4sK/kZdice7Znpy2Kw== -"@jsonjoy.com/fs-node-to-fsa@4.64.0": - version "4.64.0" - resolved "https://registry.yarnpkg.com/@jsonjoy.com/fs-node-to-fsa/-/fs-node-to-fsa-4.64.0.tgz#fbb3026befa07d690f1523c0c166f0d447fa555e" - integrity sha512-WDD9WVs0hb7UAEKTgZW2f66WDrbj7gIIWwpP3spbLyXa0rghtUaFTB8L4gdR3ZCWwiKIsj38/CNijpVmpnuPUw== +"@jsonjoy.com/fs-node-to-fsa@4.68.1": + version "4.68.1" + resolved "https://registry.yarnpkg.com/@jsonjoy.com/fs-node-to-fsa/-/fs-node-to-fsa-4.68.1.tgz#d0dab7f007f9e01dcd1e62d2e27ec0fdd0126554" + integrity sha512-lpKmU4X9e/oh8GIuAI7EXaS5QiLNM3KD15CkdhfS6PYmrGvoJqKQcyEfnLgnnaGslh/PFUMYSIZBCf2ejJGw8g== dependencies: - "@jsonjoy.com/fs-fsa" "4.64.0" - "@jsonjoy.com/fs-node-builtins" "4.64.0" - "@jsonjoy.com/fs-node-utils" "4.64.0" + "@jsonjoy.com/fs-fsa" "4.68.1" + "@jsonjoy.com/fs-node-builtins" "4.68.1" + "@jsonjoy.com/fs-node-utils" "4.68.1" -"@jsonjoy.com/fs-node-utils@4.64.0": - version "4.64.0" - resolved "https://registry.yarnpkg.com/@jsonjoy.com/fs-node-utils/-/fs-node-utils-4.64.0.tgz#5803eee4abd6871644a35ea35ad63a6b7f159892" - integrity sha512-k5Indsx9hWW9xSF7Y6oSKKwtCUNhzZxadub3owhIlitc+iMRVlPPdX2duTKQWBL3qNWpXya8jykgaaWpheeS4w== +"@jsonjoy.com/fs-node-utils@4.68.1": + version "4.68.1" + resolved "https://registry.yarnpkg.com/@jsonjoy.com/fs-node-utils/-/fs-node-utils-4.68.1.tgz#25fa70c1c11986eef75c1e6c52caea9fe2e69778" + integrity sha512-/GxfW1DWm9SCdkfbvqevLO/P5duobQfmKkHXxdMIDbcZMQeAgooAstIfZhkXpATzq9QbCQsnoWFM/dGHdZfndw== dependencies: - "@jsonjoy.com/fs-node-builtins" "4.64.0" + "@jsonjoy.com/fs-node-builtins" "4.68.1" glob-to-regex.js "^1.0.1" -"@jsonjoy.com/fs-node@4.64.0": - version "4.64.0" - resolved "https://registry.yarnpkg.com/@jsonjoy.com/fs-node/-/fs-node-4.64.0.tgz#e8c9c4346b38cc116ca0e9fb34b10419bcfc1916" - integrity sha512-dO+NNkODbUli4uV42bcNrrLvq5rE7SNpdZ5TNd0dtbLsAaNK3MDiIC9lUi+brboGoIjW6vd2fB1qao60nrk5xA== +"@jsonjoy.com/fs-node@4.68.1": + version "4.68.1" + resolved "https://registry.yarnpkg.com/@jsonjoy.com/fs-node/-/fs-node-4.68.1.tgz#0ca716e6c3ef5ed8887fbd4b4557094f99293d19" + integrity sha512-R5D9mWtqdURzcOWj1vdXr3APCwX0xchtFT+kmW7fXLNDifWdDrnh26jSID8pdnUfFBxTyfHtFtTL/NWKzIH7kQ== dependencies: - "@jsonjoy.com/fs-core" "4.64.0" - "@jsonjoy.com/fs-node-builtins" "4.64.0" - "@jsonjoy.com/fs-node-utils" "4.64.0" - "@jsonjoy.com/fs-print" "4.64.0" - "@jsonjoy.com/fs-snapshot" "4.64.0" + "@jsonjoy.com/fs-core" "4.68.1" + "@jsonjoy.com/fs-node-builtins" "4.68.1" + "@jsonjoy.com/fs-node-utils" "4.68.1" + "@jsonjoy.com/fs-print" "4.68.1" + "@jsonjoy.com/fs-snapshot" "4.68.1" glob-to-regex.js "^1.0.0" thingies "^2.5.0" -"@jsonjoy.com/fs-print@4.64.0": - version "4.64.0" - resolved "https://registry.yarnpkg.com/@jsonjoy.com/fs-print/-/fs-print-4.64.0.tgz#375085d90b50c85754667671f58d13a63da4330d" - integrity sha512-PHZFccchvkhWrwPWHjmVAhbC3vSHCtyZvlZfJJ3ho2bnzl450hXri6/8e6pbkWdH+SkmLXNml0sV8e5HDAfxKw== +"@jsonjoy.com/fs-print@4.68.1": + version "4.68.1" + resolved "https://registry.yarnpkg.com/@jsonjoy.com/fs-print/-/fs-print-4.68.1.tgz#bd830f90764155fb131320624248d33e720d6130" + integrity sha512-oGeZOGPYKK9v1CgeVeEDsLomH1lCnslSpqUN5GmPzrmAVGQlsmsdcXNA2O4lV8Y4xkuSuynx2ITBkUHJVaTbow== dependencies: - "@jsonjoy.com/fs-node-utils" "4.64.0" + "@jsonjoy.com/fs-node-utils" "4.68.1" tree-dump "^1.1.0" -"@jsonjoy.com/fs-snapshot@4.64.0": - version "4.64.0" - resolved "https://registry.yarnpkg.com/@jsonjoy.com/fs-snapshot/-/fs-snapshot-4.64.0.tgz#99a76af8664595875def5b20ed1cf159adc5f098" - integrity sha512-oM7UDeL83q6NBzzsfKAsYKXKVXlykKFqqOLh4xZZKAzzROTlInkPbc6LTDGThEOnPiFiUzA7tYziHG9xavd76Q== +"@jsonjoy.com/fs-snapshot@4.68.1": + version "4.68.1" + resolved "https://registry.yarnpkg.com/@jsonjoy.com/fs-snapshot/-/fs-snapshot-4.68.1.tgz#672d82cb65dad18c3a1fcf7d22254d037e6a794a" + integrity sha512-XZfP0FDZN32bbc4t2bZN2qRrYHg5AktJnzk22HRoKGK4BprrbNRH2k5ceSNS/kupKYcofCs+O841+xaAbjnxwQ== dependencies: "@jsonjoy.com/buffers" "^17.65.0" - "@jsonjoy.com/fs-node-utils" "4.64.0" + "@jsonjoy.com/fs-node-utils" "4.68.1" "@jsonjoy.com/json-pack" "^17.65.0" "@jsonjoy.com/util" "^17.65.0" @@ -2442,108 +2442,108 @@ "@nodelib/fs.scandir" "2.1.5" fastq "^1.6.0" -"@peculiar/asn1-cms@^2.6.0", "@peculiar/asn1-cms@^2.8.0": - version "2.8.0" - resolved "https://registry.yarnpkg.com/@peculiar/asn1-cms/-/asn1-cms-2.8.0.tgz#b48a8389319228f929e9acd8cee8da6c858738de" - integrity sha512-NgekZOrSJFSBFLFoLfwePguAWAx7z1+f2TEsWFUMyiqqfntZ4+S/S5hzqME3q4pCA0iOsFKdwiQ35dwY24eVqA== +"@peculiar/asn1-cms@^2.6.0", "@peculiar/asn1-cms@^2.9.0": + version "2.9.0" + resolved "https://registry.yarnpkg.com/@peculiar/asn1-cms/-/asn1-cms-2.9.0.tgz#3b7f6c02bc0d05bb742afe1c921b4cb62f87c9d0" + integrity sha512-VKQz6sJYgSxtGaK6UdnNBUx7hmSdg0K331qrEWh5qxpQsyZGWBjxbq05AJ2bTWWjd7d+nJIxFzwvsR5T7DWC/A== dependencies: - "@peculiar/asn1-schema" "^2.8.0" - "@peculiar/asn1-x509" "^2.8.0" - "@peculiar/asn1-x509-attr" "^2.8.0" + "@peculiar/asn1-schema" "^2.9.0" + "@peculiar/asn1-x509" "^2.9.0" + "@peculiar/asn1-x509-attr" "^2.9.0" asn1js "^3.0.10" tslib "^2.8.1" "@peculiar/asn1-csr@^2.6.0": - version "2.8.0" - resolved "https://registry.yarnpkg.com/@peculiar/asn1-csr/-/asn1-csr-2.8.0.tgz#c9bb5dec2eaff824a705e82a4a58d45e6d2c35d0" - integrity sha512-akbF8+uvleHs8sejNPQxwmVFuInAg6FMNHOwMILXfP518YfFJwdR3jr6oNUPOaEJfuEhn/vkNOCIT6ASUd4mbg== + version "2.9.0" + resolved "https://registry.yarnpkg.com/@peculiar/asn1-csr/-/asn1-csr-2.9.0.tgz#52d473be6d3e7a1ac18fda2605f1ca03aa1783c3" + integrity sha512-SbxRzHiWnRdiDuiiji/RLsJxu2au4hmSZSKK7GQOgNr2BVvheAlFQST9qqzRchUcZ6wvcyRuPXIfYXVzLoZ/5g== dependencies: - "@peculiar/asn1-schema" "^2.8.0" - "@peculiar/asn1-x509" "^2.8.0" + "@peculiar/asn1-schema" "^2.9.0" + "@peculiar/asn1-x509" "^2.9.0" asn1js "^3.0.10" tslib "^2.8.1" "@peculiar/asn1-ecc@^2.6.0": - version "2.8.0" - resolved "https://registry.yarnpkg.com/@peculiar/asn1-ecc/-/asn1-ecc-2.8.0.tgz#d51ab2b07eca98e0cf492d051e98bbd0a071305a" - integrity sha512-ohwlk+u9Rv2NOAY1c6MfHj45ATVF8R1DUN/WCgABiRtLi2ZftlZWZX7KvpAbU8v9xPcmoILfELeEABj/rn18AQ== + version "2.9.0" + resolved "https://registry.yarnpkg.com/@peculiar/asn1-ecc/-/asn1-ecc-2.9.0.tgz#ac52378f6bfb3df62cbca014ade41cc40e91bdd6" + integrity sha512-vNspHtTd9h6e8c2lMW+B/VHEUD+HRFV0fj/Gvz7SaJbwiecA8dxd96UTFPYI1PR8k7qwjjW9AFEyI+LuyVi4Kw== dependencies: - "@peculiar/asn1-schema" "^2.8.0" - "@peculiar/asn1-x509" "^2.8.0" + "@peculiar/asn1-schema" "^2.9.0" + "@peculiar/asn1-x509" "^2.9.0" asn1js "^3.0.10" tslib "^2.8.1" -"@peculiar/asn1-pfx@^2.8.0": - version "2.8.0" - resolved "https://registry.yarnpkg.com/@peculiar/asn1-pfx/-/asn1-pfx-2.8.0.tgz#8e189b6455e2bf9e5f921bb150ea86d7e7d1875d" - integrity sha512-5yof1ytoB++RQtaFbqSUJ8pxDJtZT6vbVqZ8XoJ61ph7UjNVvfFwAilnCodqkNsAodpy13gDhoxZXw00pghnyg== +"@peculiar/asn1-pfx@^2.9.0": + version "2.9.0" + resolved "https://registry.yarnpkg.com/@peculiar/asn1-pfx/-/asn1-pfx-2.9.0.tgz#c6faec5f52e76dd6263479a5a257d5d4ff4b57ad" + integrity sha512-A6bX+gZr69U38Pg1mWvPrM1eRba6L6kLR8iVG+bJtKj3qSv2rSNmlXLtej7ZOkEWt6xL6PiJD73uFEdQI3BXCg== dependencies: - "@peculiar/asn1-cms" "^2.8.0" - "@peculiar/asn1-pkcs8" "^2.8.0" - "@peculiar/asn1-rsa" "^2.8.0" - "@peculiar/asn1-schema" "^2.8.0" + "@peculiar/asn1-cms" "^2.9.0" + "@peculiar/asn1-pkcs8" "^2.9.0" + "@peculiar/asn1-rsa" "^2.9.0" + "@peculiar/asn1-schema" "^2.9.0" asn1js "^3.0.10" tslib "^2.8.1" -"@peculiar/asn1-pkcs8@^2.8.0": - version "2.8.0" - resolved "https://registry.yarnpkg.com/@peculiar/asn1-pkcs8/-/asn1-pkcs8-2.8.0.tgz#a46cf8857b9b063896afa41d2b8b2aa6a07a70a2" - integrity sha512-qAKXtLpBEw9LqhKpjw3ajZSXlBur+ipW+y2ivVBQAG6F6qRx94yO+1ZR4mvw+YaCfKSaOzLeYEzsPaBp4SJELA== +"@peculiar/asn1-pkcs8@^2.9.0": + version "2.9.0" + resolved "https://registry.yarnpkg.com/@peculiar/asn1-pkcs8/-/asn1-pkcs8-2.9.0.tgz#3a94024e6abd489a680e135e72324ab73ec82157" + integrity sha512-1JH4FliKQ3trkMD17X+bKGsph5TsiM+AiiqnVKr1wxA/GoUSDHiWG/zROzLAbDIA7eclBCjQsp8hrBEJk7LRUQ== dependencies: - "@peculiar/asn1-schema" "^2.8.0" - "@peculiar/asn1-x509" "^2.8.0" + "@peculiar/asn1-schema" "^2.9.0" + "@peculiar/asn1-x509" "^2.9.0" asn1js "^3.0.10" tslib "^2.8.1" "@peculiar/asn1-pkcs9@^2.6.0": - version "2.8.0" - resolved "https://registry.yarnpkg.com/@peculiar/asn1-pkcs9/-/asn1-pkcs9-2.8.0.tgz#6d62697af0bbd4f30fdf0d23b4018f3f09620de3" - integrity sha512-b5nDWCnkV60+cQ141D6sVVwK9nz64R5n3zSVnklGd+ECdkW2Ol3U1a6yYFlalpSOaD557yuJB64A+q42jG7lUQ== + version "2.9.0" + resolved "https://registry.yarnpkg.com/@peculiar/asn1-pkcs9/-/asn1-pkcs9-2.9.0.tgz#96b007ac7eb9c8efacc0c0e40cb047b52fd14e70" + integrity sha512-igArY6bpCI6tOPm2EU9QPrXuKq2s1iraLCTym4UlooYdzcRDIPCRUN9TAEcqZ5rZhA+HiPdFKTbDP9vneN/tsg== dependencies: - "@peculiar/asn1-cms" "^2.8.0" - "@peculiar/asn1-pfx" "^2.8.0" - "@peculiar/asn1-pkcs8" "^2.8.0" - "@peculiar/asn1-schema" "^2.8.0" - "@peculiar/asn1-x509" "^2.8.0" - "@peculiar/asn1-x509-attr" "^2.8.0" + "@peculiar/asn1-cms" "^2.9.0" + "@peculiar/asn1-pfx" "^2.9.0" + "@peculiar/asn1-pkcs8" "^2.9.0" + "@peculiar/asn1-schema" "^2.9.0" + "@peculiar/asn1-x509" "^2.9.0" + "@peculiar/asn1-x509-attr" "^2.9.0" asn1js "^3.0.10" tslib "^2.8.1" -"@peculiar/asn1-rsa@^2.6.0", "@peculiar/asn1-rsa@^2.8.0": - version "2.8.0" - resolved "https://registry.yarnpkg.com/@peculiar/asn1-rsa/-/asn1-rsa-2.8.0.tgz#9d98d0fc42fec50119d2881b8a9925d36daaea73" - integrity sha512-zHEUlCqB2mk7x2lxDwHHJy7hWZOPdGHVlsmITWKB5/PbQo61atbu9PJ/0r9dQNMwFzbKPXZ8uK8/91eUhRznSg== +"@peculiar/asn1-rsa@^2.6.0", "@peculiar/asn1-rsa@^2.9.0": + version "2.9.0" + resolved "https://registry.yarnpkg.com/@peculiar/asn1-rsa/-/asn1-rsa-2.9.0.tgz#dfa6f8b57ef18e0c4e5b66cff14bdfa49398957e" + integrity sha512-vOD7Q4UmQWhlMYuWJawS2sD+/JcPKJNtyQuFZx09r+KFhm5/HxfGak63y/m56cpBjmb5k6PeRlQf1fvLQAieUA== dependencies: - "@peculiar/asn1-schema" "^2.8.0" - "@peculiar/asn1-x509" "^2.8.0" + "@peculiar/asn1-schema" "^2.9.0" + "@peculiar/asn1-x509" "^2.9.0" asn1js "^3.0.10" tslib "^2.8.1" -"@peculiar/asn1-schema@^2.6.0", "@peculiar/asn1-schema@^2.8.0": - version "2.8.0" - resolved "https://registry.yarnpkg.com/@peculiar/asn1-schema/-/asn1-schema-2.8.0.tgz#69699f84259b2161607cabfc34e512a4023dbef9" - integrity sha512-7YT0U/ze0tF2QOBbE15gKZwy5tvgGyLRiRHLzhlbOpf7BT032oBSd0haZqXn5W6l26WLlu3dyxzjM+2638/z2Q== +"@peculiar/asn1-schema@^2.6.0", "@peculiar/asn1-schema@^2.9.0": + version "2.9.0" + resolved "https://registry.yarnpkg.com/@peculiar/asn1-schema/-/asn1-schema-2.9.0.tgz#a5dcc18fc0afbe35925a3c6de28d667d6f9c4ea3" + integrity sha512-AKvPMOM7LfK0uFe1m7o7+veOa8xQGPqsqOrKi3QKgCElzwjGp39mbhr2g7mt/v/mXQHiIvJmDj5cJS173x8Q9Q== dependencies: "@peculiar/utils" "^2.0.2" asn1js "^3.0.10" tslib "^2.8.1" -"@peculiar/asn1-x509-attr@^2.8.0": - version "2.8.0" - resolved "https://registry.yarnpkg.com/@peculiar/asn1-x509-attr/-/asn1-x509-attr-2.8.0.tgz#bd168e3f5e8bc23e56b1a97891f9f2fb7f730204" - integrity sha512-tHjkfS/qhMnmrlB2J9NhflQlQ7In3khO3CfmVrriOlpTeErY9ZIKOso1hQ5JQiyrJ7ShvqVPk7E5fQmbclkSKA== +"@peculiar/asn1-x509-attr@^2.9.0": + version "2.9.0" + resolved "https://registry.yarnpkg.com/@peculiar/asn1-x509-attr/-/asn1-x509-attr-2.9.0.tgz#1db76666d745e76e56517c974c50947bd5da50d6" + integrity sha512-f+u+EyGjfPvPzvr0+rlh/TFEO7LWt84mEwQynCUYr4F6urf/8s6+ESJ23qfSn1aamkZR6AuBNaC62iEsGvp0+w== dependencies: - "@peculiar/asn1-schema" "^2.8.0" - "@peculiar/asn1-x509" "^2.8.0" + "@peculiar/asn1-schema" "^2.9.0" + "@peculiar/asn1-x509" "^2.9.0" asn1js "^3.0.10" tslib "^2.8.1" -"@peculiar/asn1-x509@^2.6.0", "@peculiar/asn1-x509@^2.8.0": - version "2.8.0" - resolved "https://registry.yarnpkg.com/@peculiar/asn1-x509/-/asn1-x509-2.8.0.tgz#9958a9ef35dec8426aabad78ffe8798e318b06e2" - integrity sha512-N0CMuhWUzsWEVq6F1q9X6+VKUnWzSW+cSVg+aPaGGwDdbFoFWTYgin5MHwXgpWd6y9COMBxnfy/Qc+Xc7F0Zwg== +"@peculiar/asn1-x509@^2.6.0", "@peculiar/asn1-x509@^2.9.0": + version "2.9.0" + resolved "https://registry.yarnpkg.com/@peculiar/asn1-x509/-/asn1-x509-2.9.0.tgz#e7095d8f7db8a5e3a489fa46945b45cdffc555f8" + integrity sha512-b9Na83rhRFQBd5CuMmuEqokYhmyWUbG7mNZl/thGhBwLpCdiZ85TZ3WFhF7OVgOekC5uKhLk4C3HKtdiScCMdQ== dependencies: - "@peculiar/asn1-schema" "^2.8.0" + "@peculiar/asn1-schema" "^2.9.0" "@peculiar/utils" "^2.0.2" asn1js "^3.0.10" tslib "^2.8.1" @@ -2809,9 +2809,9 @@ integrity sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg== "@types/express-serve-static-core@*", "@types/express-serve-static-core@^5.0.0": - version "5.1.2" - resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-5.1.2.tgz#19afe821c79f18d05946892bbd5b924b96c8a4f6" - integrity sha512-d3KvEXBSo/lOAMc2u6fkyDHBvetBHeqD7wm/AcXfLpSOQwlmG9D/aQ0SFswVjv05p7ullQS7Mjohj6/VdbZuTg== + version "5.1.3" + resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-5.1.3.tgz#9d34c88c0c9ee62b9a6e4d9f8ab8d7e29688e6b4" + integrity sha512-dPfW8NFiOF4wOHc7+N/QSxlY9cfSsenewGbAz8C8U/MULPd/YZ27LvJUIlzaXie7e6Ove9YunJGgC9tbHD2cKw== dependencies: "@types/node" "*" "@types/qs" "*" @@ -2928,9 +2928,9 @@ integrity sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA== "@types/node@*": - version "26.1.1" - resolved "https://registry.yarnpkg.com/@types/node/-/node-26.1.1.tgz#bad758d601e97d6cf457d204ee76a35fce7bd119" - integrity sha512-nxAkRSVkN1Y0JC1W8ky/fTfkGsMmcrRsbx+3XoZE+rMOX71kLYTV7fLXpqud1GpbpP5TuffXFqfX7fH2GgZREw== + version "26.2.0" + resolved "https://registry.yarnpkg.com/@types/node/-/node-26.2.0.tgz#5a4875a862fda8fdc57de8faa579bb81ecba1685" + integrity sha512-5IviulTZeRNp2vAJ514cc/HUlY5nZ9fCbq9DMyC52BrhFZACo3nI0R7qBxhQmo/d27NFe96ur/b7Wwxklda+kg== dependencies: undici-types "~8.3.0" @@ -2981,9 +2981,9 @@ "@types/react" "*" "@types/react@*": - version "19.2.17" - resolved "https://registry.yarnpkg.com/@types/react/-/react-19.2.17.tgz#dccac365baa0f1734ec270ff4b51c89465e8dc7f" - integrity sha512-MXfmqaVPEVgkBT/aY0aGCkRWWtByiYQXo3xdQ8r5RzuFrPiRn8Gar2tQdXSUQ2GKV3bkXckek89V8wQBY2Q/Aw== + version "19.2.18" + resolved "https://registry.yarnpkg.com/@types/react/-/react-19.2.18.tgz#eb0b6a1fb635d1a9692d5f84a3495bd8ad153707" + integrity sha512-AnzbBERsrLKtk2XSfTbYRLjQPdy116Sty4q+T+Bp3IC4l6jNBvreVPAHmpq9qhXQM7CXZPjLVmGMw9sy+hxQ3w== dependencies: csstype "^3.2.2" @@ -3331,9 +3331,9 @@ acorn-walk@^8.0.0: acorn "^8.11.0" acorn@^8.0.0, acorn@^8.0.4, acorn@^8.11.0, acorn@^8.15.0, acorn@^8.16.0: - version "8.17.0" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.17.0.tgz#1785adb84faf8d8add10369b93826fc2bd08f1fe" - integrity sha512-xRQbDb9BnwDafYNn6Vwl839DYVjqXYb1XVGtWAZ1kcDc6iwAL4hg3B1dZlRiuENFeO2H53gFG3in621AdERVAg== + version "8.18.0" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.18.0.tgz#4faf01b2d6d326bfeed97aea1f52220b5f4c1940" + integrity sha512-lGq+9yr1/GuAWaVYIHRjvvySG5/4VfKIvC8EWxStPdcDh/Ka7FG3twP6v4d5BkravUilhIAsG4Qj83t02LWUPQ== address@^2.0.1: version "2.0.3" @@ -3388,9 +3388,9 @@ ajv@^8.0.0, ajv@^8.9.0: require-from-string "^2.0.2" algoliasearch-helper@^3.26.0: - version "3.29.2" - resolved "https://registry.yarnpkg.com/algoliasearch-helper/-/algoliasearch-helper-3.29.2.tgz#ceb699ae6ec9bb088f8a2b781b66868222e9c23a" - integrity sha512-SaV+rZM3drExb0punEYYjT+sNcH74YFwN8ocjya7IDOyQvKWeQpEaSMVG3+IGTVos+feuatj7ljQ4BXlXdUp3w== + version "3.29.3" + resolved "https://registry.yarnpkg.com/algoliasearch-helper/-/algoliasearch-helper-3.29.3.tgz#dc21f119320acbdd5890a21021846b5730d11e03" + integrity sha512-gVOMbbPVrCO3Xs+B+BLAIGFqIQow6qHMTYCEeBqLQB9m4ZmKUqMwkEumlal2iyyezHEd4Y0FvFTLbCRutCutIQ== dependencies: "@algolia/events" "^4.0.1" @@ -3432,9 +3432,9 @@ ansi-regex@^5.0.1: integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== ansi-regex@^6.2.2: - version "6.2.2" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-6.2.2.tgz#60216eea464d864597ce2832000738a0589650c1" - integrity sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg== + version "6.3.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-6.3.0.tgz#247c8e7b70a1a43b10ce14c0226fcbf58e8815d5" + integrity sha512-WpDfL7NO6j7tH88IDBNVdUJxDh9nmCteAVW9dsep846XdwF4naCBK+/tGLX3KJgcpgMRXCFlTM2hKGoK9FsdrQ== ansi-styles@^4.1.0: version "4.3.0" @@ -3563,10 +3563,10 @@ balanced-match@^1.0.0: resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== -baseline-browser-mapping@^2.10.44: - version "2.11.4" - resolved "https://registry.yarnpkg.com/baseline-browser-mapping/-/baseline-browser-mapping-2.11.4.tgz#3da1a877a8be2ec06495123ce994b43af58cc55e" - integrity sha512-s4+sLr9mZ/CyqeRritFeYV/Zx73OAtmaHn6kkBS1XRoJn1hrg3xIDUcpicAEX68tkcIN0iBCgti31C8zxtkhsQ== +baseline-browser-mapping@^2.11.12: + version "2.11.14" + resolved "https://registry.yarnpkg.com/baseline-browser-mapping/-/baseline-browser-mapping-2.11.14.tgz#d51bb92285608b0e6356841a2eea76842a771d52" + integrity sha512-JyJ954WzuIR8/FFzX0o5krdSTrBAkcCSRfWSleRsIHSWV+cZe2FI1PKggVkFke1hBldRs+LRxUczzE9iPmgZww== batch@0.6.1: version "0.6.1" @@ -3602,9 +3602,9 @@ body-parser@~1.20.5: unpipe "~1.0.0" bonjour-service@^1.2.1: - version "1.4.3" - resolved "https://registry.yarnpkg.com/bonjour-service/-/bonjour-service-1.4.3.tgz#5854e34a33ab5252a66cc31ffb46687e30c3a5f6" - integrity sha512-2Kd5UYlFUVgAKMTyuBLl6w49wqfOnbxHqmuH0oCl/n7TfAikR0zoowNOP5BU4dfXmm+Vr9JyEN370auSMx+CNg== + version "1.4.4" + resolved "https://registry.yarnpkg.com/bonjour-service/-/bonjour-service-1.4.4.tgz#8ff5b85fa0641e0996bf40bcf61fc0c6727b66d3" + integrity sha512-jCZcVv7eoc4QesRscwEZtSROBen+6LpKAmBIsQYQrsAeVHLyMXWX/t6eIV5KiRZYNUBl8eVqImEEMQ8L5+c/Kw== dependencies: fast-deep-equal "^3.1.3" multicast-dns "^7.2.5" @@ -3643,9 +3643,9 @@ boxen@^7.0.0: wrap-ansi "^8.1.0" brace-expansion@^1.1.7: - version "1.1.16" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.16.tgz#723d3a30c0558c225abc9fc479a73e14e26c3c2f" - integrity sha512-IDw48K2/2kRkg9LdJxurvq3lV3aBgq0REY89duEqFRthjlPdXHKMj7EnQOXVckxzgisinf3nHfrcE2FufFLXMw== + version "1.1.18" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.18.tgz#3ce74d89885136be1535341f8c3d4425c29a5cab" + integrity sha512-Edep/X9fGqVNmzKBVsDYIOtD+z1tuezV70LBjdCst9Tqu76lsnvRiZ6oTic1n+/BIwX6QDGAO94PN4N2SADvtw== dependencies: balanced-match "^1.0.0" concat-map "0.0.1" @@ -3657,16 +3657,16 @@ braces@^3.0.3, braces@~3.0.2: dependencies: fill-range "^7.1.1" -browserslist@^4.0.0, browserslist@^4.23.0, browserslist@^4.24.0, browserslist@^4.28.1, browserslist@^4.28.6: - version "4.28.7" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.28.7.tgz#409046517fccd2e51cdc20f077454b7141184028" - integrity sha512-JxV13hNrFxqjOc8alRbq9dK1MM79NEXYpma2B2J4wAtpWS5zIEIKqWPGCl7N4o7Uc7B7itylh7SuDujATRyyTw== +browserslist@^4.0.0, browserslist@^4.23.0, browserslist@^4.24.0, browserslist@^4.28.1, browserslist@^4.28.6, browserslist@^4.28.7: + version "4.28.8" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.28.8.tgz#a3c79ceb70028527e5da7dafc887f3200b5168c0" + integrity sha512-V2NpofLblG64mfOtSgDhOJESZEGogzDMBv/q+W6oc4LXWP/q75eOXoOaaOu1EOadB9U4Bwx/e0yzbvwKH8zalA== dependencies: - baseline-browser-mapping "^2.10.44" - caniuse-lite "^1.0.30001806" - electron-to-chromium "^1.5.393" - node-releases "^2.0.51" - update-browserslist-db "^1.2.3" + baseline-browser-mapping "^2.11.12" + caniuse-lite "^1.0.30001809" + electron-to-chromium "^1.5.402" + node-releases "^2.0.53" + update-browserslist-db "^1.3.0" buffer-from@^1.0.0: version "1.1.2" @@ -3772,10 +3772,10 @@ caniuse-api@^3.0.0: lodash.memoize "^4.1.2" lodash.uniq "^4.5.0" -caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001806: - version "1.0.30001806" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001806.tgz#1bc8e502b723fa393455dfbedd5ccec0c29bb74e" - integrity sha512-72Cuvd95zbSYPKq6Fhg8eDJRlzgWDf7/mtoZv6Qe/DYNCEBdNxoA3+rZAU2ZhGCpZlns3EssFavaZomckT5Uuw== +caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001806, caniuse-lite@^1.0.30001809: + version "1.0.30001809" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001809.tgz#e6cf71f14ddfe008f114dd2a846923be3c03a07b" + integrity sha512-xxWVywk6a6Arlk+hymeycyn/VgqEfLDxupvhH/xiY5SJ/18kmi9o6MiO320DCUzypORHLtvh0I4i04tUhCNHNQ== ccount@^2.0.0: version "2.0.1" @@ -4103,16 +4103,16 @@ copy-webpack-plugin@^11.0.0: serialize-javascript "^6.0.0" core-js-compat@^3.43.0, core-js-compat@^3.48.0: - version "3.49.0" - resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.49.0.tgz#06145447d92f4aaf258a0c44f24b47afaeaffef6" - integrity sha512-VQXt1jr9cBz03b331DFDCCP90b3fanciLkgiOoy8SBHy06gNf+vQ1A3WFLqG7I8TipYIKeYK9wxd0tUrvHcOZA== + version "3.50.0" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.50.0.tgz#d5922c2a692ab1cba6078c920e7c5567421ae08e" + integrity sha512-XGpFGbMLHwSt74YLTKho7Ib242qi6O8MSX+sRokV4oz7iKXvQWGYZthjIhjRGMxjzVkAubBO512dKGYcefmX3Q== dependencies: - browserslist "^4.28.1" + browserslist "^4.28.7" core-js@^3.31.1: - version "3.49.0" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.49.0.tgz#8b4d520ac034311fa21aa616f017ada0e0dbbddd" - integrity sha512-es1U2+YTtzpwkxVLwAFdSpaIMyQaq0PBgm3YD1W3Qpsn1NAmO3KSgZfu+oGSWVu6NvLHoHCV/aYcsE5wiB7ALg== + version "3.50.0" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.50.0.tgz#a18646fcb0097650189b4504c803e887bcae4c0a" + integrity sha512-BRWgOLKkFeCgRudR6zrs8p9XJZcE14grzKMMssoYrk6krtuEZ7MTKPIY5RzOnqsEKIR9kst7wNzphttraT+Yqw== core-util-is@~1.0.0: version "1.0.3" @@ -4567,10 +4567,10 @@ ee-first@1.1.1: resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== -electron-to-chromium@^1.5.393: - version "1.5.396" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.396.tgz#4aa96428486c8d1c9c8aeb205b2d6e04928ca046" - integrity sha512-yHiw2Y3C3H9U6TMbOfoWK/BPreiOPXRfTWPBwQBoZG6/8TB6eOPnsy5oaRYuatR7Fw2SJ4kKforgufeo7fq0EQ== +electron-to-chromium@^1.5.402: + version "1.5.406" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.406.tgz#c1d2ddac21d01e92f0ddd2951d37642501d4a7f1" + integrity sha512-hWH5ORBi3d0IipnMh7BN5GDTaAmrSSSWmznwt2zltdiRNEWoEQyTwF0FFSBxzHO7hLSRT6loQu3IQGV0wg/Tvg== emoji-regex@^8.0.0: version "8.0.0" @@ -4610,10 +4610,10 @@ encoding-sniffer@^0.2.1: iconv-lite "^0.6.3" whatwg-encoding "^3.1.1" -enhanced-resolve@^5.24.2: - version "5.24.3" - resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.24.3.tgz#406bbf1ec20971265a30254f08030fce6a8207fe" - integrity sha512-PwKooW9JUzh5chmYfHM3IQl5OkK2u2Nm011MgeZrss3JmFraUx/fqrf78kk8GUMYoibx/14MdwTl/1WKkG7TpQ== +enhanced-resolve@^5.24.4: + version "5.24.5" + resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.24.5.tgz#b4dad3255b7545f07ba5535189868e9f85f47573" + integrity sha512-L1l8TNvomm6UVW5B253AGxQagSQr+vGwhMlrrfRS2qmhx46AMpMVJKQYLvWYbysTMY8VoicOvzHzoHMbyzB+4A== dependencies: graceful-fs "^4.2.4" tapable "^2.3.3" @@ -4917,9 +4917,9 @@ fast-json-stable-stringify@^2.0.0: integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== fast-uri@^3.0.1: - version "3.1.4" - resolved "https://registry.yarnpkg.com/fast-uri/-/fast-uri-3.1.4.tgz#3b3daf9ce68f41f956df0b505132c0cfce9ec7af" - integrity sha512-8JnbkQ4juDyvYs4mgFGQqg4yCYtFDtUtmp2QIQq11ZZe5CFQ5wcqm1rqDgAh/QdMySuBnPzMUiJUNZG5N/AiQw== + version "3.1.5" + resolved "https://registry.yarnpkg.com/fast-uri/-/fast-uri-3.1.5.tgz#610f37419a030270430cecd68d74e3d4d96725d0" + integrity sha512-gHwA1O9LDIcKunMKhObS/HimwtehO1nPUECKAu5TpKgaO19fcWEl4bliWe1jWxVFvIXztJjjQ4L8XQ1EU9f7Jw== fastq@^1.6.0: version "1.20.1" @@ -5622,9 +5622,9 @@ ipaddr.js@1.9.1: integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== ipaddr.js@^2.1.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-2.4.0.tgz#038e9ceaf8219efc5bb76347b7eb787875d5095b" - integrity sha512-9VGk3HGanVE6JoZXHiCpnGy5X0jYDnN4EA4lntFPj+1vIWlFhIylq2CrrCOJH9EAhc5CYhq18F2Av2tgoAPsYQ== + version "2.5.0" + resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-2.5.0.tgz#7d4b6c39f9392fb61cf807de6e425e22c10e061f" + integrity sha512-aq+t5NAc+cS6rZQQVWC2x98CPqGtKKTMDd4Gaodv0wShnItdKg/51djkGJ1hqH+Oy0ivDftCbSLCQob8zso01w== is-alphabetical@^2.0.0: version "2.0.1" @@ -6043,9 +6043,9 @@ lru-cache@^5.1.1: yallist "^3.0.2" lunr-languages@^1.4.0: - version "1.20.0" - resolved "https://registry.yarnpkg.com/lunr-languages/-/lunr-languages-1.20.0.tgz#d145555fdeb546300b1394860d768487b8e0e182" - integrity sha512-3LVgE7ekWXt04NBci/hjm+NXJxXZeRXuyClL0kA0HONyBOjxhP3ZQkuWIM4Ok3pbeptUW/rj3XcJcJuJVPwPYA== + version "1.21.0" + resolved "https://registry.yarnpkg.com/lunr-languages/-/lunr-languages-1.21.0.tgz#37d0106e77fb1cccacf68185f75c3a514f099bdb" + integrity sha512-Hj0VwJP1FGwZzVMMZdDtWY2GB2VVKtvVElYtVajzCZCDr2RTucyLpPibrOPGgTlcq2ENQy2gYLtPnzyFu9jZCg== lunr@^2.3.9: version "2.3.9" @@ -6306,18 +6306,18 @@ media-typer@0.3.0: integrity sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ== memfs@^4.43.1: - version "4.64.0" - resolved "https://registry.yarnpkg.com/memfs/-/memfs-4.64.0.tgz#88bb85610804c154a8121424d2aeba7c5bdf4e38" - integrity sha512-Kw72fgY7Wn+sD8KmtNWSafl1dz0UvAsE/PHs3YVfLiaZuA3HxNm9sRLqAu0ATiBGJvME1PxZXbBZPv5GycDeAw== + version "4.68.1" + resolved "https://registry.yarnpkg.com/memfs/-/memfs-4.68.1.tgz#e42fa69c873305a9cd0b28a8d230b96efacd8b5d" + integrity sha512-OD+IDRUvIxu3QHL+nFm9gdyugInD27FDJ+sl4B5QgomPHXMlbw+GP918P8VNKu2FkNlVeqBkpzkwROpamVifRw== dependencies: - "@jsonjoy.com/fs-core" "4.64.0" - "@jsonjoy.com/fs-fsa" "4.64.0" - "@jsonjoy.com/fs-node" "4.64.0" - "@jsonjoy.com/fs-node-builtins" "4.64.0" - "@jsonjoy.com/fs-node-to-fsa" "4.64.0" - "@jsonjoy.com/fs-node-utils" "4.64.0" - "@jsonjoy.com/fs-print" "4.64.0" - "@jsonjoy.com/fs-snapshot" "4.64.0" + "@jsonjoy.com/fs-core" "4.68.1" + "@jsonjoy.com/fs-fsa" "4.68.1" + "@jsonjoy.com/fs-node" "4.68.1" + "@jsonjoy.com/fs-node-builtins" "4.68.1" + "@jsonjoy.com/fs-node-to-fsa" "4.68.1" + "@jsonjoy.com/fs-node-utils" "4.68.1" + "@jsonjoy.com/fs-print" "4.68.1" + "@jsonjoy.com/fs-snapshot" "4.68.1" "@jsonjoy.com/json-pack" "^1.11.0" "@jsonjoy.com/util" "^1.9.0" glob-to-regex.js "^1.0.1" @@ -6883,10 +6883,10 @@ multicast-dns@^7.2.5: dns-packet "^5.2.2" thunky "^1.0.2" -nanoid@^3.3.16: - version "3.3.16" - resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.16.tgz#a04d8ec4b1f10009d2d533947aefe4293737816c" - integrity sha512-bzlKTyNJ7+LdGIIwy8ijFpIqEQIvafahV7eYykJ8Cvh42EdJeODoJ6gUJXpQJvej1BddH8OqTXZNE/KfbWAu8Q== +nanoid@^3.3.17: + version "3.3.18" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.18.tgz#f66a2de1199ffde0fcf21c8a5f13106b1c081913" + integrity sha512-DTg4MJbGMWkfi6VZFdNt2/caMbQy4Ou+Op/hJQvGEWcnVfoA1QA+xzRKAzw9jD6+GVOOeYr/mIcuDSdug6F6+w== negotiator@0.6.3: version "0.6.3" @@ -6921,10 +6921,10 @@ node-emoji@^2.1.0: emojilib "^2.4.0" skin-tone "^2.0.0" -node-releases@^2.0.51: - version "2.0.51" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.51.tgz#cdc08433577f5b32ad01694481726e22eeb54aef" - integrity sha512-wRNIrw4DmVLKQlbgOMdkMx27Wrpzes2hh5Jtbi2bjPd+4wJstWIqP5A+lscnqbm0xxmT5Bpg8Lec5ItEBwx6BQ== +node-releases@^2.0.53: + version "2.0.53" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.53.tgz#0fe5ad8a7935e075172f574e56f0c20f07fa41af" + integrity sha512-D9UOmYG3UH1V+ENW56t5QXBwJw1YEY18ruVeus89Rw+SyIgjPkCO84bRzO3uNIYosJbNwiabWVn48o3uJLjxFQ== normalize-path@^3.0.0, normalize-path@~3.0.0: version "3.0.0" @@ -7768,9 +7768,9 @@ postcss-selector-parser@^6.0.11, postcss-selector-parser@^6.0.16: util-deprecate "^1.0.2" postcss-selector-parser@^7.0.0: - version "7.1.4" - resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-7.1.4.tgz#69dc7a526517572ff6b150e352b36a016017b485" - integrity sha512-HeP7D2wyhkR+XaK6v4W8oRF62Dsz4flyuczALJp61GckGm42u1saSSJ/0auvcBqxs3jMRFEcPK34At/0JBKdOg== + version "7.1.5" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-7.1.5.tgz#ee7b090724eb60739b530660e5b402200e694a97" + integrity sha512-KvvtD7SrlBP7dlgkBghEE3r84CABm5SmV2aNcG4oCA+qDnJ/tvKonFVvwWAyyWUEwxuNawdfEAZKP9zM3oZ2Uw== dependencies: cssesc "^3.0.0" util-deprecate "^1.0.2" @@ -7808,11 +7808,11 @@ postcss-zindex@^6.0.2: integrity sha512-5BxW9l1evPB/4ZIc+2GobEBoKC+h8gPGCMi+jxsYvd2x0mjq7wazk6DrP71pStqxE9Foxh5TVnonbWpFZzXaYg== postcss@^8.4.21, postcss@^8.4.24, postcss@^8.4.33, postcss@^8.5.4: - version "8.5.23" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.5.23.tgz#3493550116f478487298301d2c2e8dc5a56e6594" - integrity sha512-g50586zr4bZmwFiTlflMu8E0bDTb5I5gertgwAKmsdUlTQIhZtunzUlD1WSzwcVWPoAVpsrA6vlfCD7oXvRwgg== + version "8.5.26" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.5.26.tgz#6e75135780c7e10df3433bf2266c552d35c8c620" + integrity sha512-u82N74LFzG8ca+dD8puPnplTXoGH4fTPpVGuIbt36G3qvNlkvfD0lEAZSxaly3KX8TS/L1A1gsCEmvKmBcVbkQ== dependencies: - nanoid "^3.3.16" + nanoid "^3.3.17" picocolors "^1.1.1" source-map-js "^1.2.1" @@ -7902,9 +7902,9 @@ pvtsutils@^1.3.6: tslib "^2.8.1" pvutils@^1.1.3, pvutils@^1.1.5: - version "1.1.5" - resolved "https://registry.yarnpkg.com/pvutils/-/pvutils-1.1.5.tgz#84b0dea4a5d670249aa9800511804ee0b7c2809c" - integrity sha512-KTqnxsgGiQ6ZAzZCVlJH5eOjSnvlyEgx1m8bkRJfOhmGRqfo5KLvmAlACQkrjEtOQ4B7wF9TdSLIs9O90MX9xA== + version "1.2.0" + resolved "https://registry.yarnpkg.com/pvutils/-/pvutils-1.2.0.tgz#4b5487a9cccd52d275b0538775790a3ca982bc22" + integrity sha512-BbubeCEyTuQjVMakvJQ/Sxbc93F2pwmbsxONT/ZRrwU7Ua38d8unYTwXpTVLAKJ4BDuH9IGztCjQcd/N/39Dvg== qs@~6.15.1: version "6.15.3" @@ -8471,9 +8471,9 @@ send@~0.19.0, send@~0.19.1: statuses "~2.0.2" serialize-javascript@>=7.0.5, serialize-javascript@^6.0.0, serialize-javascript@^6.0.1: - version "7.0.7" - resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-7.0.7.tgz#06ec40576d4cea96d68010a534520bff1f948a72" - integrity sha512-YAy8Od6KV+uuwUuU50np8fGB/Aues6Y0nAhA9y/hId74PlKUcme4pXcBD46NWKr1Q4osN/iseZ17YqO1XfmI8g== + version "7.1.0" + resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-7.1.0.tgz#9e462c5c6dec5dbc8b55d90c52a4ad6aff985b9f" + integrity sha512-RNEqWOyhhUQYN9V1GfHwu9AR/g+NTciH6Z5u3/no6X3/w+04J2lVDL+svFQVXgXrEGBMG2puMVN3gq2SNGuTGw== serve-handler@^6.1.7: version "6.1.7" @@ -8894,9 +8894,9 @@ terser-webpack-plugin@^5.3.9: terser "^5.31.1" terser@^5.10.0, terser@^5.15.1, terser@^5.31.1: - version "5.49.0" - resolved "https://registry.yarnpkg.com/terser/-/terser-5.49.0.tgz#30b341fdf70cfc98486965125ae660fda8403670" - integrity sha512-SNiDnXyHSrxVcIOtVbULzcTmniUiwcV7Nwdyj1twVubeTmbjoa8p69KKDpfkdoOavuM4/GRm1+ykI8qqnavHoA== + version "5.50.0" + resolved "https://registry.yarnpkg.com/terser/-/terser-5.50.0.tgz#4e560a46704f9172f96ba31c3bd6dc108ad2cead" + integrity sha512-CN9BVxWhgS/hRxtUMjtC2uRWSTcSfQFHMDWma6sKKfIivCD91sM+FOPfvwoaRMqCSrUpe1nv3jDamd9eEQ4y+w== dependencies: "@jridgewell/source-map" "^0.3.3" acorn "^8.15.0" @@ -9141,10 +9141,10 @@ unpipe@~1.0.0: resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ== -update-browserslist-db@^1.2.3: - version "1.2.3" - resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.2.3.tgz#64d76db58713136acbeb4c49114366cc6cc2e80d" - integrity sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w== +update-browserslist-db@^1.3.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.3.1.tgz#a71c28dd22f505481dbc4689087b18d933e90afd" + integrity sha512-ZZ61DsRsOnakl74HAmp3oSN4aXUmEWXf+i/yv0h7tIBfICc3VdrFErQKUUKPgu3AMsTUMbcongALEN4l6GSUrQ== dependencies: escalade "^3.2.0" picocolors "^1.1.1" @@ -9351,9 +9351,9 @@ webpack-sources@^3.5.1: integrity sha512-jyuiGJdtvY434z5bUZrjz67v76/ePNvFZTp9Mdz29IlH4+GPsgyGjiv0fKI+M7BdkU6ADjulUcKAd3tUK3WlEw== webpack@^5.88.1, webpack@^5.95.0: - version "5.109.0" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.109.0.tgz#871d8eee5e2d5e6eaf5ec8d1a6db74ea65491030" - integrity sha512-vomrngskVVXEZF9sMZfYAd4pXZUnfaWdJGlF+BTNF+gJBCKYCQBnOeVPlrh39Ewl7nlCsirDplMy6o5g9xJHBg== + version "5.109.2" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.109.2.tgz#b58dc289561c3282db35c210a99379a836a4c28d" + integrity sha512-U9/cvLzxObKNEZ9+TtdqrHM5/9z3lgl2c+c4BzbqGxFQvQvBAq87yql5A8pQ+rrMbS496MZJeF5enVBndIy2hw== dependencies: "@types/estree" "^1.0.8" "@types/json-schema" "^7.0.15" @@ -9363,7 +9363,7 @@ webpack@^5.88.1, webpack@^5.95.0: acorn "^8.16.0" browserslist "^4.28.1" chrome-trace-event "^1.0.2" - enhanced-resolve "^5.24.2" + enhanced-resolve "^5.24.4" es-module-lexer "^2.1.0" eslint-scope "5.1.1" events "^3.2.0" @@ -9456,9 +9456,9 @@ ws@^7.3.1: integrity sha512-rsKI6xDBFVf4r/x8XyChGK04QR/XHroxs/jUcoWvtEZM8TPU/X/uIY9B1CsSzYws9ZJb/6bbBu7dPhFW00CAoA== ws@^8.18.0: - version "8.21.1" - resolved "https://registry.yarnpkg.com/ws/-/ws-8.21.1.tgz#045650cd4b1207809e7547146223c3814a9af586" - integrity sha512-+0NTnW77fFN/DjQi6k/Sq/Yvk4Sgajw7urW8V+asjXnRgDs9gyGkdb7EzgfhA4goXsRIZKE28fzIXBHEzhuiWw== + version "8.21.3" + resolved "https://registry.yarnpkg.com/ws/-/ws-8.21.3.tgz#660b4faddb6a3e575c86e078126919961f4de4fc" + integrity sha512-201TZ/kPWxoPr/OKWjquZR1SWKXcvxdH+e1xrx89b3YbmzLMFCLfnaG1HFIgWzJOEWZ7MvpK++odZufgYR50Rw== wsl-utils@^0.1.0: version "0.1.0" From 4f178c590ed3d0ec1ebc2e4f5bd38bb201818d7d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 14 Aug 2026 17:31:56 +0200 Subject: [PATCH 102/134] chore(deps): bump cryptography from 49.0.0 to 50.0.0 in /containers (#1052) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- containers/sidecar-requirements.txt | 94 ++++++++++++++--------------- 1 file changed, 47 insertions(+), 47 deletions(-) diff --git a/containers/sidecar-requirements.txt b/containers/sidecar-requirements.txt index e284cda..47ac62c 100644 --- a/containers/sidecar-requirements.txt +++ b/containers/sidecar-requirements.txt @@ -370,53 +370,53 @@ cramjam==2.11.0 \ # via # barman # python-snappy -cryptography==49.0.0 \ - --hash=sha256:026ac7423e6fa66872d3bf889be5974507da3944f866f704fa200eadacd00001 \ - --hash=sha256:07cab27cc7b7e0fd28e5e26bb9eeedde5c135c868b46de4a27845abe94af6122 \ - --hash=sha256:084ef1af862eb07ec46d25f68689f2102a9fc0e05ce7b80f14f5fe51e4eef0f6 \ - --hash=sha256:0b82e28ee398a386f0807bba7884d30f25218855690f45115831bcce5d90822c \ - --hash=sha256:0e959b578856a3924bc0cbb710fc12c387b9412a951389f3ca61704a9e25f325 \ - --hash=sha256:0f21641cf4b30fca7aee061ced0ec7ad7b073518088b7c9969a297c0ae796c69 \ - --hash=sha256:196ecd6a36e4e9aa10270393bb98d8df88fccee0bf1e5128b91ae4eb4375896d \ - --hash=sha256:2400ef9c9e2299a25614eb1dea3db54a69b1349efd043bfac9c67630d136df36 \ - --hash=sha256:28d8b15e6275f12c8a207dc309dfa957903c927d08d0cc937ee3f63f200693cc \ - --hash=sha256:2afe9051da7ae7bd5905da5a949280c7d2bb75682e188f650a9d0f2756b834c6 \ - --hash=sha256:2eda353d8a27bcbcaa4cbed18994a74ab4d19a2ca897db188ea269ab9b71419b \ - --hash=sha256:32703d93296f5c1f4b53349ad3a250c2cae0fdecd3a3dd5d47e616d8d616af27 \ - --hash=sha256:33cd0565932807baddb67b96dbee92f2c374b5c89dee09fd74079aeb8c8dba61 \ - --hash=sha256:35b151772baff2c74cba7fa290ceaff4c3b11c0c881eb93eb5dbc05a7cfbba18 \ - --hash=sha256:36d1709f992593689b45bda411498d62c6e365f2ca00b84657d4dadd24de16db \ - --hash=sha256:42b0684e0e40cf26122427802486f6d93aea593612603a94fbf260c7eb1e9c1b \ - --hash=sha256:4ae387c9cb68ea569ca17e490d66d8142b81c3cc814bf179974b7d146e490bbb \ - --hash=sha256:53ecee2e23f7169b6117e99fc8a944e5e50f79e69758a83b52a00cb98ab2b2d2 \ - --hash=sha256:66ec79c3904820572d7e987abdf304281f141d37ad9a489b8e97066e7b9b6459 \ - --hash=sha256:67e1d20ad9ef3a563c59ef22e7a8a0b8210bd26604369ea4a30a7c66aefe504e \ - --hash=sha256:6f2debedf9ca60cf1d5bd466475638af5130f89965605cd818484d19987d3a21 \ - --hash=sha256:6fc361c34fb6aac015ce19435876635e5c6d21db31998b0920f675f131e043b8 \ - --hash=sha256:73a205dce83953d131a4aa1e0fd917a2fd1c5b1eef251e9d7152efefcbf5caf7 \ - --hash=sha256:7abcee80084cda3f7691f3eb1ce480d8df49cec637b429aa35986c1de71738aa \ - --hash=sha256:8c25ceb16df5b9435f3f6a9829204985b0e0cbee3b48aacd432c7d2c850b44d9 \ - --hash=sha256:966fe0e9c67490071f14c0d2b1cb2dfb3023c5ce39457343931415f08382f2db \ - --hash=sha256:9e82dcc8e56052715fb18b2429e3bca4823b1629136a2084fc45a9a5cecb9b64 \ - --hash=sha256:b20133d204d2bb56ba047642199603876c872026ca53e79c35b83772ab2cc505 \ - --hash=sha256:b39efa323140595abd3ecca8529d321ae50f55f3aa3ba9cc81ea56a6011953d5 \ - --hash=sha256:b47db11c2c3525083296069b98ac5221907455e989ae0c2e3008bde851921615 \ - --hash=sha256:b87e65d263b3e5d3bb92a57e2a6638e2f31110fa7aa890c7b2dbba42248d0a3f \ - --hash=sha256:b970c6da94d5bb18629db453d14f2a1300f6bf59b61e9b82377931ef95504866 \ - --hash=sha256:be9fcb48a55f023493482827d4f459bd263cc20efde64f204b97c123201850c6 \ - --hash=sha256:c2bc30226390d60ea19d9f82b19db005fe0452154a23c1c410c12ea801e43561 \ - --hash=sha256:c83782480a4a9da4d0feb51950131ba32e12e70813848b3343f6e18c28a66838 \ - --hash=sha256:cbc77da8c523d5abd028635ba850a6966fcee2c82e2bf65a41d1d8afe0f98be9 \ - --hash=sha256:ccac2bfebc306b862133e3bb71f3f6ee8bb525240089b2d952e4144b3a6d5da7 \ - --hash=sha256:d0527ce944105f257f605a827d6ebead966c752038b6e8656abb9c5edee6fc68 \ - --hash=sha256:d8ecde755e2e91bf773fc94e8c9d730cd7f2007004cb492263a794ec3899a1c8 \ - --hash=sha256:e3fb64c420688e5319ae25113a354015abbd8dffbfbc41781a1ea66fc7622ac3 \ - --hash=sha256:e5dfc1e64de5677cec922ffa8da89c546d0415bf6efdf081842e5d44c84e1f0e \ - --hash=sha256:ec5e529fb80935c94fe7b729f9972b50e351a0e6b50aa294fd5cabb109fcc29a \ - --hash=sha256:f37d847238971164fdbc68ade6f6574aecc9c0af714190e2083429ff68f4ce9d \ - --hash=sha256:f78ff2c9ed8dc2d036b0f4d640e22522213d047c1b14e61205a7e55c80a494d4 \ - --hash=sha256:f89660a348f4f78a92366240a61404e337586ef7f5909a2fef59ca88ef505493 \ - --hash=sha256:fc1e275c2f1d97b1a6450b8b0ea3ebfa6e087a611c2b26cb2404d48588abab7b +cryptography==50.0.0 \ + --hash=sha256:031e2d5dd4bb9caa3ca9c82e5a197fd8ae680232cee62603d1a813f3f07e3d03 \ + --hash=sha256:06a32a980526a6ab9a4b9bf8f7385800791e2bb960903cb6b530e4817509a3b7 \ + --hash=sha256:07479a1cb08219ab719147e742e76090c9c773321959bb94946fffdd397a6437 \ + --hash=sha256:07949c449a1abcf60d1ee6e88956d89404c7df3c8258f46589e912988e551987 \ + --hash=sha256:105110f43a471dbd0060b9c9516cb8a6a79233631a04cc2ba16f28323ac6e025 \ + --hash=sha256:11b74db56cdbe3cdee6e3f6982ecb70334fa10dce99ed58bf7894aaaa3b2a037 \ + --hash=sha256:12b9c6996425c76ea6c457ace4f3073e715b8c545add07cd1a8f3a4f90691269 \ + --hash=sha256:1489e263a8048bb8b6a8bac662eb2d402ea5d2b7b4699b72f385f1e2772db105 \ + --hash=sha256:19736989797678c6af1e55cd49055cdbcb55d8f6b5583ac5335f933aba9101dc \ + --hash=sha256:1b4a266766514614f8aa60416e71f2fc6e575d36e7bdc90f644fadb2f4b75b95 \ + --hash=sha256:2a8183b489dc1f7f80f135780fadc1108f14b31b8a40411c7a5b17425f65f28b \ + --hash=sha256:37fdb0d0111f1e2ff07139dfb79f1b49531f8e213c46f1163dd7642979b58c47 \ + --hash=sha256:3f5735ffe4996d28b809371756219f5354864902a3b9e7c0b9ee87041209fc9c \ + --hash=sha256:49e7d93abdbd2990caced757e5fade25302f719c3c8fb6e6fff2dde98999fc41 \ + --hash=sha256:5e34edd123674534acd70147f0ca331eaa2c74e6325fb2028c886aa26ba0b68c \ + --hash=sha256:62598a8a57f815db4c6259a4e97d857dab56697e7de8e8ab02352ab74da1995d \ + --hash=sha256:65c2c3add92b45fd0709db8594536aea39c2a67af0e27ffcf049c498501140b7 \ + --hash=sha256:6ba6a53445bd3cfa809ef3ef5f1589aa6ba08784a1d962bf47d0940e871dab1c \ + --hash=sha256:6e7d61120573a7f2cd94cc095f9e81f6967c61ccdf194285aa143ecec8e0b708 \ + --hash=sha256:7cec5b856506da6defb290f30c9ee687d5f5e8cb0bd3f6459dde43b0b4fa40ef \ + --hash=sha256:80b63928fa35083b33966ce1efb70e5b9607181e49dcd1c22c8c005e319f667f \ + --hash=sha256:82148ec5bddac30b51a5b3c1945075f896fa022cb93f8e4a01e9f6ee95292c5f \ + --hash=sha256:828743d939e9629bc267b8e2d08d8bb67cd4319c771a33d4b18b22dd8fb7440a \ + --hash=sha256:8d89f3976b10b4ce31118de72329025f70d2c6ead14a8217c5514dd2c6d5a78f \ + --hash=sha256:8eb5e1172eb569ea8a872796576e6a67c276351728b6455d5beb01242b027c6a \ + --hash=sha256:900131fafd8aead39ac7dd3a7e833be754c17a95cfd91221636949fe4eb0aa8a \ + --hash=sha256:910d11e1a385c654bf738bf3e6b8e6ed5de0f5610fcae2be9e5b398d8081d20e \ + --hash=sha256:910e1d2668e7de9648f2bcee30e180db2a6b15c30f887d7c4c93ddf96e3992e3 \ + --hash=sha256:9aa87839c383bdbab6ef865787a1fb877af8dd03464c4400322726feaaadfc6d \ + --hash=sha256:a1b30560f2acc95aa8b2e06e716a13dbfc97314747b80d9707e307f77b40d6b3 \ + --hash=sha256:a91296cb61e8df6f86d0c19cc4068228da256bf59bf86049fbd821084565327f \ + --hash=sha256:b42a28c1844fd9de8f3f7d540e36b66f3a9c83fceac7170ebc7a6a19edd9dcae \ + --hash=sha256:bd1c592e4d5974f0d08d4888e432157adba757c66da0246918e43677fafa2d30 \ + --hash=sha256:c87f62a3d3b9888ed0fdde100ec06aa61ca9cd44bad9057d1dff9a516b5f5bb9 \ + --hash=sha256:c99c003e088647b8a5b7c145d6f78c335f6348332b62e142d411c4b63d1460b9 \ + --hash=sha256:ccdc4a71a4dabae05de219404f9f4abc38e3b58422177ff93d0da05967dafa07 \ + --hash=sha256:d24fead1d4d076e1bfb006dcec392074a3cd8d7b4fc8a595aa64073b2b7a96ba \ + --hash=sha256:d58c3db7cd6eed54e6c06744db55456b65ebd7492ddeae9c1e93cfca7aa857d3 \ + --hash=sha256:d764dcf130c428ef66786f866dd750f53182bc608813489915e9fc106bb0c82f \ + --hash=sha256:df2a58a472f332225671c35b0a830208b86d004f82baa8530fa3782c85646533 \ + --hash=sha256:e722f16708d854fe924790e051061f6704a472c3bac347b6fd88033ea8dd0dc5 \ + --hash=sha256:ecfed7367f965a0328cfbdd70da860f15441f002f613185668c6e6ebf5a0ac11 \ + --hash=sha256:eeac2acb5a20ed25e0ad6d1df9891a520b78b404266b6d11778f25d5d691a6c9 \ + --hash=sha256:f59e38625469987d7ef6d495323c55e7db6c212eaf6112267e0d3b565a2e9c9f \ + --hash=sha256:f89831ef99dd7dd169ab06d63a831adb9e20a87aac6d380266bbda5823349169 \ + --hash=sha256:fd9192b7b70c573d7f214eb1ae35e00d359f6f5e4b27c7e21e30de1fc6204645 # via # azure-identity # azure-storage-blob From d356d7b4dfecdfd3cbb96f867c275a1c18e7bb5e Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 15 Aug 2026 11:20:22 +0200 Subject: [PATCH 103/134] chore(deps): update dependency dagger/dagger to v0.21.8 (#1043) Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/ci.yml | 4 ++-- .github/workflows/release-please.yml | 2 +- .github/workflows/release-publish.yml | 2 +- Taskfile.yml | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index e3a143e..576628a 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -47,7 +47,7 @@ jobs: - name: Install Dagger env: # renovate: datasource=github-tags depName=dagger/dagger versioning=semver - DAGGER_VERSION: 0.21.7 + DAGGER_VERSION: 0.21.8 run: | curl -L https://dl.dagger.io/dagger/install.sh | BIN_DIR=$HOME/.local/bin sh - name: Run CI task @@ -71,7 +71,7 @@ jobs: - name: Install Dagger env: # renovate: datasource=github-tags depName=dagger/dagger versioning=semver - DAGGER_VERSION: 0.21.7 + DAGGER_VERSION: 0.21.8 run: | curl -L https://dl.dagger.io/dagger/install.sh | BIN_DIR=$HOME/.local/bin sh - name: Write manifest diff --git a/.github/workflows/release-please.yml b/.github/workflows/release-please.yml index a7aad70..24f62d3 100644 --- a/.github/workflows/release-please.yml +++ b/.github/workflows/release-please.yml @@ -31,7 +31,7 @@ jobs: - name: Install Dagger env: # renovate: datasource=github-tags depName=dagger/dagger versioning=semver - DAGGER_VERSION: 0.21.7 + DAGGER_VERSION: 0.21.8 run: | curl -L https://dl.dagger.io/dagger/install.sh | BIN_DIR=$HOME/.local/bin sh - name: Create image and manifest diff --git a/.github/workflows/release-publish.yml b/.github/workflows/release-publish.yml index fa7212d..ddae857 100644 --- a/.github/workflows/release-publish.yml +++ b/.github/workflows/release-publish.yml @@ -21,7 +21,7 @@ jobs: - name: Install Dagger env: # renovate: datasource=github-tags depName=dagger/dagger versioning=semver - DAGGER_VERSION: 0.21.7 + DAGGER_VERSION: 0.21.8 run: | curl -L https://dl.dagger.io/dagger/install.sh | BIN_DIR=$HOME/.local/bin sh - name: Create image and manifest diff --git a/Taskfile.yml b/Taskfile.yml index 3ded397..9213e0f 100644 --- a/Taskfile.yml +++ b/Taskfile.yml @@ -206,7 +206,7 @@ tasks: - start-build-network vars: # renovate: datasource=github-tags depName=dagger/dagger versioning=semver - DAGGER_VERSION: 0.21.7 + DAGGER_VERSION: 0.21.8 DAGGER_ENGINE_IMAGE: registry.dagger.io/engine:v{{ .DAGGER_VERSION }} cmds: - > From 9a3cc0d35492697a31ddc13b87f269cca3e83ea5 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 15 Aug 2026 11:37:46 +0200 Subject: [PATCH 104/134] fix(deps): update all non-major go dependencies (#1041) Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- go.mod | 31 +++++++++++++------------ go.sum | 71 ++++++++++++++++++++++++++-------------------------------- 2 files changed, 47 insertions(+), 55 deletions(-) diff --git a/go.mod b/go.mod index 22bb35a..d08948c 100644 --- a/go.mod +++ b/go.mod @@ -3,18 +3,18 @@ module github.com/cloudnative-pg/plugin-barman-cloud go 1.26.4 require ( - github.com/cert-manager/cert-manager v1.21.0 + github.com/cert-manager/cert-manager v1.21.1 github.com/cloudnative-pg/api v1.30.0 - github.com/cloudnative-pg/barman-cloud v0.5.2-0.20260720143032-950b0f57e122 + github.com/cloudnative-pg/barman-cloud v0.5.2-0.20260806065336-5aa56cd49543 github.com/cloudnative-pg/cloudnative-pg v1.30.0 github.com/cloudnative-pg/cnpg-i v0.6.0 github.com/cloudnative-pg/cnpg-i-machinery v0.4.2 github.com/cloudnative-pg/machinery v0.5.0 - github.com/onsi/ginkgo/v2 v2.32.0 + github.com/onsi/ginkgo/v2 v2.32.1 github.com/onsi/gomega v1.42.1 github.com/spf13/cobra v1.10.2 github.com/spf13/viper v1.21.0 - google.golang.org/grpc v1.82.1 + google.golang.org/grpc v1.83.0 gopkg.in/yaml.v3 v3.0.1 k8s.io/api v0.36.3 k8s.io/apiextensions-apiserver v0.36.3 @@ -27,7 +27,7 @@ require ( ) require ( - cel.dev/expr v0.25.1 // indirect + cel.dev/expr v0.25.2 // indirect github.com/Masterminds/semver/v3 v3.5.0 // indirect github.com/antlr4-go/antlr/v4 v4.13.1 // indirect github.com/avast/retry-go/v5 v5.0.0 // indirect @@ -61,7 +61,7 @@ require ( github.com/go-openapi/swag/yamlutils v0.26.0 // indirect github.com/go-task/slim-sprig/v3 v3.0.0 // indirect github.com/go-viper/mapstructure/v2 v2.4.0 // indirect - github.com/google/cel-go v0.26.0 // indirect + github.com/google/cel-go v0.29.0 // indirect github.com/google/gnostic-models v0.7.1 // indirect github.com/google/go-cmp v0.7.0 // indirect github.com/google/pprof v0.0.0-20260402051712-545e8a4df936 // indirect @@ -91,36 +91,35 @@ require ( github.com/spf13/afero v1.15.0 // indirect github.com/spf13/cast v1.10.0 // indirect github.com/spf13/pflag v1.0.10 // indirect - github.com/stoewer/go-strcase v1.3.1 // indirect github.com/subosito/gotenv v1.6.0 // indirect github.com/thoas/go-funk v0.9.3 // indirect github.com/x448/float16 v0.8.4 // indirect github.com/xlab/treeprint v1.2.0 // indirect go.opentelemetry.io/auto/sdk v1.2.1 // indirect go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.67.0 // indirect - go.opentelemetry.io/otel v1.43.0 // indirect + go.opentelemetry.io/otel v1.44.0 // indirect go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.40.0 // indirect go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.40.0 // indirect - go.opentelemetry.io/otel/metric v1.43.0 // indirect - go.opentelemetry.io/otel/sdk v1.43.0 // indirect - go.opentelemetry.io/otel/trace v1.43.0 // indirect + go.opentelemetry.io/otel/metric v1.44.0 // indirect + go.opentelemetry.io/otel/sdk v1.44.0 // indirect + go.opentelemetry.io/otel/trace v1.44.0 // indirect go.opentelemetry.io/proto/otlp v1.9.0 // indirect go.uber.org/multierr v1.11.0 // indirect go.uber.org/zap v1.28.0 // indirect go.yaml.in/yaml/v2 v2.4.4 // indirect go.yaml.in/yaml/v3 v3.0.4 // indirect golang.org/x/exp v0.0.0-20251219203646-944ab1f22d93 // indirect - golang.org/x/mod v0.36.0 // indirect + golang.org/x/mod v0.37.0 // indirect golang.org/x/net v0.56.0 // indirect golang.org/x/oauth2 v0.36.0 // indirect - golang.org/x/sync v0.21.0 // indirect + golang.org/x/sync v0.22.0 // indirect golang.org/x/sys v0.47.0 // indirect golang.org/x/term v0.44.0 // indirect - golang.org/x/text v0.38.0 // indirect + golang.org/x/text v0.40.0 // indirect golang.org/x/time v0.15.0 // indirect - golang.org/x/tools v0.45.0 // indirect + golang.org/x/tools v0.47.0 // indirect gomodules.xyz/jsonpatch/v2 v2.5.0 // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20260414002931-afd174a4e478 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20260526163538-3dc84a4a5aaa // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20260610212136-7ab31c22f7ad // indirect google.golang.org/protobuf v1.36.12-0.20260120151049-f2248ac996af // indirect gopkg.in/evanphx/json-patch.v4 v4.13.0 // indirect diff --git a/go.sum b/go.sum index d1d85f8..66b317f 100644 --- a/go.sum +++ b/go.sum @@ -1,5 +1,5 @@ -cel.dev/expr v0.25.1 h1:1KrZg61W6TWSxuNZ37Xy49ps13NUovb66QLprthtwi4= -cel.dev/expr v0.25.1/go.mod h1:hrXvqGP6G6gyx8UAHSHJ5RGk//1Oj5nXQ2NI02Nrsg4= +cel.dev/expr v0.25.2 h1:K6j46C81hXtZQfuX60cVWQFBJahKSE2gfRbNuvr5bFs= +cel.dev/expr v0.25.2/go.mod h1:hrXvqGP6G6gyx8UAHSHJ5RGk//1Oj5nXQ2NI02Nrsg4= github.com/Masterminds/semver/v3 v3.5.0 h1:kQceYJfbupGfZOKZQg0kou0DgAKhzDg2NZPAwZ/2OOE= github.com/Masterminds/semver/v3 v3.5.0/go.mod h1:4V+yj/TJE1HU9XfppCwVMZq3I84lprf4nC11bSS5beM= github.com/antlr4-go/antlr/v4 v4.13.1 h1:SqQKkuVZ+zWkMMNkjy5FZe5mr5WURWnlpmOuzYWrPrQ= @@ -14,14 +14,14 @@ github.com/blang/semver/v4 v4.0.0 h1:1PFHFE6yCCTv8C1TeyNNarDzntLi7wMI5i/pzqYIsAM github.com/blang/semver/v4 v4.0.0/go.mod h1:IbckMUScFkM3pff0VJDNKRiT6TG/YpiHIM2yvyW5YoQ= github.com/cenkalti/backoff/v5 v5.0.3 h1:ZN+IMa753KfX5hd8vVaMixjnqRZ3y8CuJKRKj1xcsSM= github.com/cenkalti/backoff/v5 v5.0.3/go.mod h1:rkhZdG3JZukswDf7f0cwqPNk4K0sa+F97BxZthm/crw= -github.com/cert-manager/cert-manager v1.21.0 h1:BCoB2BxA1lbqPusZCqPLPn8Q9MhraL7RbZGHbBcm3W8= -github.com/cert-manager/cert-manager v1.21.0/go.mod h1:V8iALETs2W428CjBZ4Ez3DftDeyu0f8PZnHDTcliS4I= +github.com/cert-manager/cert-manager v1.21.1 h1:0LttV37Q5c2CBNoHkjuI8sLKTXWZDC2SwQkxrBMKV9w= +github.com/cert-manager/cert-manager v1.21.1/go.mod h1:sVwmLBWoiB1BRd0rJElBGQuiu94z4k7p3Kd0FRQyfgw= github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs= github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/cloudnative-pg/api v1.30.0 h1:L8hnvV/tPEQA1xYEi41FUBFA7FUNVGju8+SlgFlDDjI= github.com/cloudnative-pg/api v1.30.0/go.mod h1:XrKBbOWObL33si0FNuwX4uHNf5JShiZyOUqd6LxbJQo= -github.com/cloudnative-pg/barman-cloud v0.5.2-0.20260720143032-950b0f57e122 h1:NuOztBdp+bUr/xYtaAw8o/x880hvWDRhJGl+R1YsZNw= -github.com/cloudnative-pg/barman-cloud v0.5.2-0.20260720143032-950b0f57e122/go.mod h1:ZQLkdpk44FW5/BGWzABTOEcV9qPbwC+rbdscg2I8mBI= +github.com/cloudnative-pg/barman-cloud v0.5.2-0.20260806065336-5aa56cd49543 h1:QNddaYyvyw14Ky/oxeI3cBiMMg7h6J0LI8VLCaxTUCY= +github.com/cloudnative-pg/barman-cloud v0.5.2-0.20260806065336-5aa56cd49543/go.mod h1:ZQLkdpk44FW5/BGWzABTOEcV9qPbwC+rbdscg2I8mBI= github.com/cloudnative-pg/cloudnative-pg v1.30.0 h1:fnhVq44xXx97MNiuvJsPrX1vSjYbgdyBK5MSGfdHdp0= github.com/cloudnative-pg/cloudnative-pg v1.30.0/go.mod h1:QkolwBOWZ+GvAiJt6KpDSymwkpf0K19/p4Q6MQlTM8U= github.com/cloudnative-pg/cnpg-i v0.6.0 h1:LA//DLkFOLIjU0ASOpFkydZhGir9IAIDfgSsTTX9IpU= @@ -108,8 +108,8 @@ github.com/goccy/go-yaml v1.18.0 h1:8W7wMFS12Pcas7KU+VVkaiCng+kG8QiFeFwzFb+rwuw= github.com/goccy/go-yaml v1.18.0/go.mod h1:XBurs7gK8ATbW4ZPGKgcbrY1Br56PdM69F7LkFRi1kA= github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= -github.com/google/cel-go v0.26.0 h1:DPGjXackMpJWH680oGY4lZhYjIameYmR+/6RBdDGmaI= -github.com/google/cel-go v0.26.0/go.mod h1:A9O8OU9rdvrK5MQyrqfIxo1a0u4g3sF8KB6PUIaryMM= +github.com/google/cel-go v0.29.0 h1:fEG+Ja3YRwNOqnQxTyJwoByAUAvTuxUGiro/jhrm4F4= +github.com/google/cel-go v0.29.0/go.mod h1:X0bD6iVNR8pkROSOoHVdgTkzmRcosof7WQqCD6wcMc8= github.com/google/gnostic-models v0.7.1 h1:SisTfuFKJSKM5CPZkffwi6coztzzeYUhc3v4yxLWH8c= github.com/google/gnostic-models v0.7.1/go.mod h1:whL5G0m6dmc5cPxKc5bdKdEN3UjI7OUGxBlw57miDrQ= github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= @@ -161,8 +161,8 @@ github.com/monochromegane/go-gitignore v0.0.0-20200626010858-205db1a8cc00 h1:n6/ github.com/monochromegane/go-gitignore v0.0.0-20200626010858-205db1a8cc00/go.mod h1:Pm3mSP3c5uWn86xMLZ5Sa7JB9GsEZySvHYXCTK4E9q4= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= -github.com/onsi/ginkgo/v2 v2.32.0 h1:Hw7s2pVrQo/8Yz5N77qdnpHaoc+c6cC9WIV1Jce+J6E= -github.com/onsi/ginkgo/v2 v2.32.0/go.mod h1:+aXOY+vzZ5mu2iI2HpTZUPmM//oQfsNFX6gU9kNcA44= +github.com/onsi/ginkgo/v2 v2.32.1 h1:6tlvcDm/3sE8lGJbZ4+d4mO3RLy24/tQWOFzVSQNIfw= +github.com/onsi/ginkgo/v2 v2.32.1/go.mod h1:+aXOY+vzZ5mu2iI2HpTZUPmM//oQfsNFX6gU9kNcA44= github.com/onsi/gomega v1.42.1 h1:iN1rCUX+44NZ1Dc97MPoeFYbFR0vh8zxoxMFwKdyZ6I= github.com/onsi/gomega v1.42.1/go.mod h1:REff/hsDsodHoKlWsP2mAPhu1+5/6hVYNf9rIEBpeSg= github.com/pelletier/go-toml/v2 v2.2.4 h1:mye9XuhQ6gvn5h28+VilKrrPoQVanw5PMw/TB0t5Ec4= @@ -204,19 +204,12 @@ github.com/spf13/pflag v1.0.10 h1:4EBh2KAYBwaONj6b2Ye1GiHfwjqyROoF4RwYO+vPwFk= github.com/spf13/pflag v1.0.10/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/spf13/viper v1.21.0 h1:x5S+0EU27Lbphp4UKm1C+1oQO+rKx36vfCoaVebLFSU= github.com/spf13/viper v1.21.0/go.mod h1:P0lhsswPGWD/1lZJ9ny3fYnVqxiegrlNrEmgLjbTCAY= -github.com/stoewer/go-strcase v1.3.1 h1:iS0MdW+kVTxgMoE1LAZyMiYJFKlOzLooE4MxjirtkAs= -github.com/stoewer/go-strcase v1.3.1/go.mod h1:fAH5hQ5pehh+j3nZfvwdk2RgEgQjAoM8wodgtPmh1xo= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= -github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= github.com/stretchr/objx v0.5.2 h1:xuMeJ0Sdp5ZMRXx/aWO6RZxdr3beISkG5/G/aIRr3pY= github.com/stretchr/objx v0.5.2/go.mod h1:FRsXN1f5AsAjCGJKqEizvkpNtU+EGNCLh3NxZ/8L+MA= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= -github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U= github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U= github.com/subosito/gotenv v1.6.0 h1:9NlTDc1FTs4qu0DDq7AEtTPNw6SVm7uBMsUCUjABIf8= @@ -239,20 +232,20 @@ go.opentelemetry.io/auto/sdk v1.2.1 h1:jXsnJ4Lmnqd11kwkBV2LgLoFMZKizbCi5fNZ/ipaZ go.opentelemetry.io/auto/sdk v1.2.1/go.mod h1:KRTj+aOaElaLi+wW1kO/DZRXwkF4C5xPbEe3ZiIhN7Y= go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.67.0 h1:OyrsyzuttWTSur2qN/Lm0m2a8yqyIjUVBZcxFPuXq2o= go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.67.0/go.mod h1:C2NGBr+kAB4bk3xtMXfZ94gqFDtg/GkI7e9zqGh5Beg= -go.opentelemetry.io/otel v1.43.0 h1:mYIM03dnh5zfN7HautFE4ieIig9amkNANT+xcVxAj9I= -go.opentelemetry.io/otel v1.43.0/go.mod h1:JuG+u74mvjvcm8vj8pI5XiHy1zDeoCS2LB1spIq7Ay0= +go.opentelemetry.io/otel v1.44.0 h1:JjwHmHpA4iZ3wBxluu2fbbE7j4kqlE8jXyAyPXH7HqU= +go.opentelemetry.io/otel v1.44.0/go.mod h1:BMgjTHL9WPRlRjL2oZCBTL4whCGtXch2H4BhOPIAyYc= go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.40.0 h1:QKdN8ly8zEMrByybbQgv8cWBcdAarwmIPZ6FThrWXJs= go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.40.0/go.mod h1:bTdK1nhqF76qiPoCCdyFIV+N/sRHYXYCTQc+3VCi3MI= go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.40.0 h1:DvJDOPmSWQHWywQS6lKL+pb8s3gBLOZUtw4N+mavW1I= go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.40.0/go.mod h1:EtekO9DEJb4/jRyN4v4Qjc2yA7AtfCBuz2FynRUWTXs= -go.opentelemetry.io/otel/metric v1.43.0 h1:d7638QeInOnuwOONPp4JAOGfbCEpYb+K6DVWvdxGzgM= -go.opentelemetry.io/otel/metric v1.43.0/go.mod h1:RDnPtIxvqlgO8GRW18W6Z/4P462ldprJtfxHxyKd2PY= -go.opentelemetry.io/otel/sdk v1.43.0 h1:pi5mE86i5rTeLXqoF/hhiBtUNcrAGHLKQdhg4h4V9Dg= -go.opentelemetry.io/otel/sdk v1.43.0/go.mod h1:P+IkVU3iWukmiit/Yf9AWvpyRDlUeBaRg6Y+C58QHzg= -go.opentelemetry.io/otel/sdk/metric v1.43.0 h1:S88dyqXjJkuBNLeMcVPRFXpRw2fuwdvfCGLEo89fDkw= -go.opentelemetry.io/otel/sdk/metric v1.43.0/go.mod h1:C/RJtwSEJ5hzTiUz5pXF1kILHStzb9zFlIEe85bhj6A= -go.opentelemetry.io/otel/trace v1.43.0 h1:BkNrHpup+4k4w+ZZ86CZoHHEkohws8AY+WTX09nk+3A= -go.opentelemetry.io/otel/trace v1.43.0/go.mod h1:/QJhyVBUUswCphDVxq+8mld+AvhXZLhe+8WVFxiFff0= +go.opentelemetry.io/otel/metric v1.44.0 h1:1w0gILTcHdr3YI+ixLyjemwrVnsMURbTZFrSYCdDdmc= +go.opentelemetry.io/otel/metric v1.44.0/go.mod h1:8O7hanEPBNgEMmybD3s2VBKcgWOCsA6tzHBPODAiquo= +go.opentelemetry.io/otel/sdk v1.44.0 h1:nHYwb9lK+fJPU/dnT6s7W7Z8itMWyqrnVfbheVYrZ58= +go.opentelemetry.io/otel/sdk v1.44.0/go.mod h1:Osuydd3Se74nqjAKxid74N5eC+jfEqfTegHRnq58oK0= +go.opentelemetry.io/otel/sdk/metric v1.44.0 h1:3LlKgI+VjbVsjNRFZJZAJ30WjXC5VkNRks6si09iEfI= +go.opentelemetry.io/otel/sdk/metric v1.44.0/go.mod h1:5B5pMARnXxKhltooO4xUuCBorl65a4EpnTalObqOigA= +go.opentelemetry.io/otel/trace v1.44.0 h1:jxF5CsGYCe74MCRx2X4g7WsY/VBKRqqpNvXlX/6gtIk= +go.opentelemetry.io/otel/trace v1.44.0/go.mod h1:oLl1jrMQAVo6v3GAggN+1VH9VIz9iUSvW53sW1Q8PIE= go.opentelemetry.io/proto/otlp v1.9.0 h1:l706jCMITVouPOqEnii2fIAuO3IVGBRPV5ICjceRb/A= go.opentelemetry.io/proto/otlp v1.9.0/go.mod h1:xE+Cx5E/eEHw+ISFkwPLwCZefwVjY+pqKg1qcK03+/4= go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= @@ -267,34 +260,34 @@ go.yaml.in/yaml/v3 v3.0.4 h1:tfq32ie2Jv2UxXFdLJdh3jXuOzWiL1fo0bu/FbuKpbc= go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg= golang.org/x/exp v0.0.0-20251219203646-944ab1f22d93 h1:fQsdNF2N+/YewlRZiricy4P1iimyPKZ/xwniHj8Q2a0= golang.org/x/exp v0.0.0-20251219203646-944ab1f22d93/go.mod h1:EPRbTFwzwjXj9NpYyyrvenVh9Y+GFeEvMNh7Xuz7xgU= -golang.org/x/mod v0.36.0 h1:JJjpVx6myfUsUdAzZuOSTTmRE0PfZeNWzzvKrP7amb4= -golang.org/x/mod v0.36.0/go.mod h1:moc6ELqsWcOw5Ef3xVprK5ul/MvtVvkIXLziUOICjUQ= +golang.org/x/mod v0.37.0 h1:vF1DjpVEshcIqoEaauuHebaLk1O1forxjxBaVn884JQ= +golang.org/x/mod v0.37.0/go.mod h1:m8S8VeM9r4dzDwjrKO0a1sZP3YjeMamRRlD+fmR2Q/0= golang.org/x/net v0.56.0 h1:Rw8j/hFzGvJUZwNBXnAtf5sVDVt+65SK2C7IxCxZt5o= golang.org/x/net v0.56.0/go.mod h1:D3Ku6r+V6JROoZK144D2XfMHFcMq/0zSfLelVTCFKec= golang.org/x/oauth2 v0.36.0 h1:peZ/1z27fi9hUOFCAZaHyrpWG5lwe0RJEEEeH0ThlIs= golang.org/x/oauth2 v0.36.0/go.mod h1:YDBUJMTkDnJS+A4BP4eZBjCqtokkg1hODuPjwiGPO7Q= -golang.org/x/sync v0.21.0 h1:HLII4xRRTtCRkxYp4HNFF0Js/Og6q2i++KXbg0gHCwM= -golang.org/x/sync v0.21.0/go.mod h1:9xrNwdLfx4jkKbNva9FpL6vEN7evnE43NNNJQ2LF3+0= +golang.org/x/sync v0.22.0 h1:SZjpbeLmrCk4xhRSZFNZW5gFUeCeFgjekvI/+gfScek= +golang.org/x/sync v0.22.0/go.mod h1:9xrNwdLfx4jkKbNva9FpL6vEN7evnE43NNNJQ2LF3+0= golang.org/x/sys v0.47.0 h1:o7XGOvZQCADBQQ4Y7VNq2dRWQR7JmOUW8Kxx4ZsNgWs= golang.org/x/sys v0.47.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= golang.org/x/term v0.44.0 h1:0rLvDRCtNj0gZkyIXhCyOb2OAzEhLVqc4B+hrsBhrmc= golang.org/x/term v0.44.0/go.mod h1:7ze4MdzUzLXpSAoFP1H0bOI9aXDqveSvatT5vKcFh2Y= -golang.org/x/text v0.38.0 h1:sXmwo9DwP3OK9EZ7PqAdaooSGozfl/3a6/xJcbzPRhE= -golang.org/x/text v0.38.0/go.mod h1:YXZt3QhHUKYT53r2lLKFIVi6Ao1jdzrTR/KQ09qyxF4= +golang.org/x/text v0.40.0 h1:Ub2Z6/xjgF1WrYQz2nuITOEegKFtiIy+rieRJ5lHZKs= +golang.org/x/text v0.40.0/go.mod h1:hpnzDAfGV753zIKo+wk3u1bVKCGPbrnF7+7LBF/UHVY= golang.org/x/time v0.15.0 h1:bbrp8t3bGUeFOx08pvsMYRTCVSMk89u4tKbNOZbp88U= golang.org/x/time v0.15.0/go.mod h1:Y4YMaQmXwGQZoFaVFk4YpCt4FLQMYKZe9oeV/f4MSno= -golang.org/x/tools v0.45.0 h1:18qN3FAooORvApf5XjCXgsuayZOEtXf6JK18I3+ONa8= -golang.org/x/tools v0.45.0/go.mod h1:LuUGqqaXcXMEFEruIVJVm5mgDD8vww/z/SR1gQ4uE/0= +golang.org/x/tools v0.47.0 h1:7Kn5x/d1svx/PzryTsqeoZN4TZwqeH5pGWjefhLi/1Q= +golang.org/x/tools v0.47.0/go.mod h1:dFHnyTvFWY212G+h7ZY4Vsp/K3U4/7W9TyVaAul8uCA= gomodules.xyz/jsonpatch/v2 v2.5.0 h1:JELs8RLM12qJGXU4u/TO3V25KW8GreMKl9pdkk14RM0= gomodules.xyz/jsonpatch/v2 v2.5.0/go.mod h1:AH3dM2RI6uoBZxn3LVrfvJ3E0/9dG4cSrbuBJT4moAY= gonum.org/v1/gonum v0.17.0 h1:VbpOemQlsSMrYmn7T2OUvQ4dqxQXU+ouZFQsZOx50z4= gonum.org/v1/gonum v0.17.0/go.mod h1:El3tOrEuMpv2UdMrbNlKEh9vd86bmQ6vqIcDwxEOc1E= -google.golang.org/genproto/googleapis/api v0.0.0-20260414002931-afd174a4e478 h1:yQugLulqltosq0B/f8l4w9VryjV+N/5gcW0jQ3N8Qec= -google.golang.org/genproto/googleapis/api v0.0.0-20260414002931-afd174a4e478/go.mod h1:C6ADNqOxbgdUUeRTU+LCHDPB9ttAMCTff6auwCVa4uc= +google.golang.org/genproto/googleapis/api v0.0.0-20260526163538-3dc84a4a5aaa h1:Kjn0N0tCrDgiAFW+lGO4JZ3ck44CehvJQMAwj9QF0G8= +google.golang.org/genproto/googleapis/api v0.0.0-20260526163538-3dc84a4a5aaa/go.mod h1:q4lMZS6kskjT5HvCPrnnypcDPVJqT/f4nfxmkE7gryY= google.golang.org/genproto/googleapis/rpc v0.0.0-20260610212136-7ab31c22f7ad h1:45WmJvIV6C2+O/jjLkPUH+F3aOj/1miDoU2DD0+NWbg= google.golang.org/genproto/googleapis/rpc v0.0.0-20260610212136-7ab31c22f7ad/go.mod h1:4Hqkh8ycfw05ld/3BWL7rJOSfebL2Q+DVDeRgYgxUU8= -google.golang.org/grpc v1.82.1 h1:NnAxzGRA0677vCa4BUkOAnO5+FfQqVl9iUXeD0IqcGE= -google.golang.org/grpc v1.82.1/go.mod h1:yzTZ1TB1Z3SG+LIYaI+WiE8D5+PZ3ArnrSp8zF3+/ZA= +google.golang.org/grpc v1.83.0 h1:JeNZEKJFbQxArAMl+hiytHauacDNqJUllNfmIMmpqnQ= +google.golang.org/grpc v1.83.0/go.mod h1:kDyl6SKsiHKt0uylY5gtn5cEjkrIOhQOGDgIc4JGwzQ= google.golang.org/protobuf v1.36.12-0.20260120151049-f2248ac996af h1:+5/Sw3GsDNlEmu7TfklWKPdQ0Ykja5VEmq2i817+jbI= google.golang.org/protobuf v1.36.12-0.20260120151049-f2248ac996af/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= From d75ebb56873cda53a039ccc29a3a52f1e6bf4c16 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 15 Aug 2026 12:05:35 +0200 Subject: [PATCH 105/134] chore(deps): update dependency cert-manager/cert-manager to v1.21.1 (#1042) Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- test/e2e/internal/certmanager/certmanager.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/e2e/internal/certmanager/certmanager.go b/test/e2e/internal/certmanager/certmanager.go index b528d8a..ba95db3 100644 --- a/test/e2e/internal/certmanager/certmanager.go +++ b/test/e2e/internal/certmanager/certmanager.go @@ -58,7 +58,7 @@ func WithIgnoreExistingResources(ignore bool) InstallOption { // DefaultVersion is the default version of cert-manager to install. // // renovate: datasource=github-releases depName=cert-manager/cert-manager -const DefaultVersion = "v1.21.0" +const DefaultVersion = "v1.21.1" // Install installs cert-manager using kubectl. func Install(ctx context.Context, cl client.Client, opts ...InstallOption) error { From e8b4f74c53ff06ffc7608981d15c6ed49d91a2d8 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 15 Aug 2026 14:36:24 +0200 Subject: [PATCH 106/134] chore(deps): update amazon/aws-cli docker tag to v2.36.24 (#1038) Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- test/e2e/internal/tests/walrestore/fixtures.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/e2e/internal/tests/walrestore/fixtures.go b/test/e2e/internal/tests/walrestore/fixtures.go index e47c9d6..4380601 100644 --- a/test/e2e/internal/tests/walrestore/fixtures.go +++ b/test/e2e/internal/tests/walrestore/fixtures.go @@ -121,8 +121,8 @@ func newS3ClientDeployment(namespace string) *appsv1.Deployment { { Name: s3ClientName, // renovate: datasource=docker depName=amazon/aws-cli versioning=docker - // Version: 2.36.9 - Image: "docker.io/amazon/aws-cli@sha256:00dee8ccaf669721f8163944ea9e6ac13183851b23d5b7a9868a608bc932cfdb", + // Version: 2.36.24 + Image: "docker.io/amazon/aws-cli@sha256:cd11f6e909d42f066a03e15f072853fcc19f033e343cb83b2d553e2082cbb5a7", Command: []string{"sleep", "infinity"}, Env: []corev1.EnvVar{ { From 5c07b3e8099fbcd58d645f926e1854ef7d516c30 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 15 Aug 2026 14:55:06 +0200 Subject: [PATCH 107/134] chore(deps): update all cloudnative-pg daggerverse dependencies to 7174b66 (#1065) Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Taskfile.yml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/Taskfile.yml b/Taskfile.yml index 9213e0f..cb18246 100644 --- a/Taskfile.yml +++ b/Taskfile.yml @@ -46,7 +46,7 @@ tasks: - wordlist-ordered env: # renovate: datasource=git-refs depName=spellcheck lookupName=https://github.com/cloudnative-pg/daggerverse currentValue=main - DAGGER_SPELLCHECK_SHA: f7187c307f2ba79290efbfff5ce436b956162c53 + DAGGER_SPELLCHECK_SHA: 7174b66d283da487638a98b431b7707b311a9a32 cmds: - > GITHUB_REF= dagger -s call -m github.com/cloudnative-pg/daggerverse/spellcheck@${DAGGER_SPELLCHECK_SHA} @@ -60,7 +60,7 @@ tasks: desc: Check for conventional commits env: # renovate: datasource=git-refs depName=commitlint lookupName=https://github.com/cloudnative-pg/daggerverse currentValue=main - DAGGER_COMMITLINT_SHA: f7187c307f2ba79290efbfff5ce436b956162c53 + DAGGER_COMMITLINT_SHA: 7174b66d283da487638a98b431b7707b311a9a32 cmds: - > GITHUB_REF= dagger -s call -m github.com/cloudnative-pg/daggerverse/commitlint@${DAGGER_COMMITLINT_SHA} @@ -74,7 +74,7 @@ tasks: - wordlist-ordered env: # renovate: datasource=git-refs depName=uncommitted lookupName=https://github.com/cloudnative-pg/daggerverse currentValue=main - DAGGER_UNCOMMITTED_SHA: f7187c307f2ba79290efbfff5ce436b956162c53 + DAGGER_UNCOMMITTED_SHA: 7174b66d283da487638a98b431b7707b311a9a32 cmds: - GITHUB_REF= dagger -s call -m github.com/cloudnative-pg/daggerverse/uncommitted@${DAGGER_UNCOMMITTED_SHA} check-uncommitted --source . stdout sources: @@ -86,7 +86,7 @@ tasks: - controller-gen env: # renovate: datasource=git-refs depName=crd-gen-refs lookupName=https://github.com/cloudnative-pg/daggerverse currentValue=main - DAGGER_CRDGENREF_SHA: f7187c307f2ba79290efbfff5ce436b956162c53 + DAGGER_CRDGENREF_SHA: 7174b66d283da487638a98b431b7707b311a9a32 # renovate: datasource=go depName=github.com/elastic/crd-ref-docs CRDREFDOCS_VERSION: v0.3.0 cmds: @@ -383,7 +383,7 @@ tasks: run: once env: # renovate: datasource=git-refs depName=controller-gen lookupName=https://github.com/cloudnative-pg/daggerverse currentValue=main - DAGGER_CONTROLLER_GEN_SHA: f7187c307f2ba79290efbfff5ce436b956162c53 + DAGGER_CONTROLLER_GEN_SHA: 7174b66d283da487638a98b431b7707b311a9a32 cmds: - > GITHUB_REF= dagger -s call -m github.com/cloudnative-pg/daggerverse/controller-gen@${DAGGER_CONTROLLER_GEN_SHA} From 561289e434de36948cbbad7f790894e79f41e036 Mon Sep 17 00:00:00 2001 From: Marco Nenciarini Date: Mon, 17 Aug 2026 11:52:05 +0200 Subject: [PATCH 108/134] chore(deps): bump dagger module deps (#1067) Bump dagger engine version to v0.21.8 and module google.golang.org/grpc to v1.82.1 Signed-off-by: Marco Nenciarini --- dagger/check-doc-version/dagger.json | 2 +- dagger/check-doc-version/go.mod | 2 +- dagger/check-doc-version/go.sum | 4 ++-- dagger/e2e/dagger.json | 2 +- dagger/e2e/go.mod | 2 +- dagger/e2e/go.sum | 4 ++-- dagger/gotest/dagger.json | 2 +- dagger/gotest/go.mod | 2 +- dagger/gotest/go.sum | 4 ++-- 9 files changed, 12 insertions(+), 12 deletions(-) diff --git a/dagger/check-doc-version/dagger.json b/dagger/check-doc-version/dagger.json index 309bdef..1e0c38c 100644 --- a/dagger/check-doc-version/dagger.json +++ b/dagger/check-doc-version/dagger.json @@ -1,6 +1,6 @@ { "name": "check-doc-version", - "engineVersion": "v0.21.7", + "engineVersion": "v0.21.8", "sdk": { "source": "go" }, diff --git a/dagger/check-doc-version/go.mod b/dagger/check-doc-version/go.mod index b4ec1e5..412050d 100644 --- a/dagger/check-doc-version/go.mod +++ b/dagger/check-doc-version/go.mod @@ -26,7 +26,7 @@ require ( go.opentelemetry.io/otel/sdk/metric v1.43.0 // indirect go.opentelemetry.io/proto/otlp v1.10.0 // indirect golang.org/x/sync v0.20.0 // indirect - google.golang.org/grpc v1.80.0 // indirect + google.golang.org/grpc v1.82.1 // indirect ) require ( diff --git a/dagger/check-doc-version/go.sum b/dagger/check-doc-version/go.sum index 8dd6701..cc9ed5f 100644 --- a/dagger/check-doc-version/go.sum +++ b/dagger/check-doc-version/go.sum @@ -89,8 +89,8 @@ google.golang.org/genproto/googleapis/api v0.0.0-20260414002931-afd174a4e478 h1: google.golang.org/genproto/googleapis/api v0.0.0-20260414002931-afd174a4e478/go.mod h1:C6ADNqOxbgdUUeRTU+LCHDPB9ttAMCTff6auwCVa4uc= google.golang.org/genproto/googleapis/rpc v0.0.0-20260414002931-afd174a4e478 h1:RmoJA1ujG+/lRGNfUnOMfhCy5EipVMyvUE+KNbPbTlw= google.golang.org/genproto/googleapis/rpc v0.0.0-20260414002931-afd174a4e478/go.mod h1:4Hqkh8ycfw05ld/3BWL7rJOSfebL2Q+DVDeRgYgxUU8= -google.golang.org/grpc v1.80.0 h1:Xr6m2WmWZLETvUNvIUmeD5OAagMw3FiKmMlTdViWsHM= -google.golang.org/grpc v1.80.0/go.mod h1:ho/dLnxwi3EDJA4Zghp7k2Ec1+c2jqup0bFkw07bwF4= +google.golang.org/grpc v1.82.1 h1:NnAxzGRA0677vCa4BUkOAnO5+FfQqVl9iUXeD0IqcGE= +google.golang.org/grpc v1.82.1/go.mod h1:yzTZ1TB1Z3SG+LIYaI+WiE8D5+PZ3ArnrSp8zF3+/ZA= google.golang.org/protobuf v1.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE= google.golang.org/protobuf v1.36.11/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= diff --git a/dagger/e2e/dagger.json b/dagger/e2e/dagger.json index c7d7f89..86e6475 100644 --- a/dagger/e2e/dagger.json +++ b/dagger/e2e/dagger.json @@ -1,6 +1,6 @@ { "name": "e2e", - "engineVersion": "v0.21.7", + "engineVersion": "v0.21.8", "sdk": { "source": "go" }, diff --git a/dagger/e2e/go.mod b/dagger/e2e/go.mod index e4486d6..513bb5d 100644 --- a/dagger/e2e/go.mod +++ b/dagger/e2e/go.mod @@ -22,7 +22,7 @@ require ( go.opentelemetry.io/otel/trace v1.43.0 go.opentelemetry.io/proto/otlp v1.10.0 golang.org/x/sync v0.20.0 - google.golang.org/grpc v1.80.0 + google.golang.org/grpc v1.82.1 ) require github.com/cenkalti/backoff/v5 v5.0.3 // indirect diff --git a/dagger/e2e/go.sum b/dagger/e2e/go.sum index 8dd6701..cc9ed5f 100644 --- a/dagger/e2e/go.sum +++ b/dagger/e2e/go.sum @@ -89,8 +89,8 @@ google.golang.org/genproto/googleapis/api v0.0.0-20260414002931-afd174a4e478 h1: google.golang.org/genproto/googleapis/api v0.0.0-20260414002931-afd174a4e478/go.mod h1:C6ADNqOxbgdUUeRTU+LCHDPB9ttAMCTff6auwCVa4uc= google.golang.org/genproto/googleapis/rpc v0.0.0-20260414002931-afd174a4e478 h1:RmoJA1ujG+/lRGNfUnOMfhCy5EipVMyvUE+KNbPbTlw= google.golang.org/genproto/googleapis/rpc v0.0.0-20260414002931-afd174a4e478/go.mod h1:4Hqkh8ycfw05ld/3BWL7rJOSfebL2Q+DVDeRgYgxUU8= -google.golang.org/grpc v1.80.0 h1:Xr6m2WmWZLETvUNvIUmeD5OAagMw3FiKmMlTdViWsHM= -google.golang.org/grpc v1.80.0/go.mod h1:ho/dLnxwi3EDJA4Zghp7k2Ec1+c2jqup0bFkw07bwF4= +google.golang.org/grpc v1.82.1 h1:NnAxzGRA0677vCa4BUkOAnO5+FfQqVl9iUXeD0IqcGE= +google.golang.org/grpc v1.82.1/go.mod h1:yzTZ1TB1Z3SG+LIYaI+WiE8D5+PZ3ArnrSp8zF3+/ZA= google.golang.org/protobuf v1.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE= google.golang.org/protobuf v1.36.11/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= diff --git a/dagger/gotest/dagger.json b/dagger/gotest/dagger.json index 6acdd90..71d583d 100644 --- a/dagger/gotest/dagger.json +++ b/dagger/gotest/dagger.json @@ -1,6 +1,6 @@ { "name": "gotest", - "engineVersion": "v0.21.7", + "engineVersion": "v0.21.8", "sdk": { "source": "go" }, diff --git a/dagger/gotest/go.mod b/dagger/gotest/go.mod index 674f930..ea24f64 100644 --- a/dagger/gotest/go.mod +++ b/dagger/gotest/go.mod @@ -22,7 +22,7 @@ require ( go.opentelemetry.io/otel/sdk/log v0.19.0 // indirect go.opentelemetry.io/proto/otlp v1.10.0 // indirect golang.org/x/sync v0.20.0 // indirect - google.golang.org/grpc v1.80.0 // indirect + google.golang.org/grpc v1.82.1 // indirect ) require ( diff --git a/dagger/gotest/go.sum b/dagger/gotest/go.sum index 8dd6701..cc9ed5f 100644 --- a/dagger/gotest/go.sum +++ b/dagger/gotest/go.sum @@ -89,8 +89,8 @@ google.golang.org/genproto/googleapis/api v0.0.0-20260414002931-afd174a4e478 h1: google.golang.org/genproto/googleapis/api v0.0.0-20260414002931-afd174a4e478/go.mod h1:C6ADNqOxbgdUUeRTU+LCHDPB9ttAMCTff6auwCVa4uc= google.golang.org/genproto/googleapis/rpc v0.0.0-20260414002931-afd174a4e478 h1:RmoJA1ujG+/lRGNfUnOMfhCy5EipVMyvUE+KNbPbTlw= google.golang.org/genproto/googleapis/rpc v0.0.0-20260414002931-afd174a4e478/go.mod h1:4Hqkh8ycfw05ld/3BWL7rJOSfebL2Q+DVDeRgYgxUU8= -google.golang.org/grpc v1.80.0 h1:Xr6m2WmWZLETvUNvIUmeD5OAagMw3FiKmMlTdViWsHM= -google.golang.org/grpc v1.80.0/go.mod h1:ho/dLnxwi3EDJA4Zghp7k2Ec1+c2jqup0bFkw07bwF4= +google.golang.org/grpc v1.82.1 h1:NnAxzGRA0677vCa4BUkOAnO5+FfQqVl9iUXeD0IqcGE= +google.golang.org/grpc v1.82.1/go.mod h1:yzTZ1TB1Z3SG+LIYaI+WiE8D5+PZ3ArnrSp8zF3+/ZA= google.golang.org/protobuf v1.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE= google.golang.org/protobuf v1.36.11/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= From 697c2faafb18f38452189f2fa0145a6138994244 Mon Sep 17 00:00:00 2001 From: Danish Date: Tue, 18 Aug 2026 16:05:34 +0530 Subject: [PATCH 109/134] docs: remove old unmaintained docs from web (#1063) Closes #1062 Related to #351 Signed-off-by: danishedb --- .../version-0.10.0/compression.md | 43 -- web/versioned_docs/version-0.10.0/concepts.md | 177 ------ web/versioned_docs/version-0.10.0/images.md | 37 -- .../version-0.10.0/installation.mdx | 109 ---- web/versioned_docs/version-0.10.0/intro.md | 86 --- .../version-0.10.0/migration.md | 274 -------- web/versioned_docs/version-0.10.0/misc.md | 97 --- .../version-0.10.0/object_stores.md | 454 -------------- .../version-0.10.0/observability.md | 24 - .../version-0.10.0/parameters.md | 19 - .../version-0.10.0/plugin-barman-cloud.v1.md | 108 ---- .../version-0.10.0/resource-name-migration.md | 219 ------- .../version-0.10.0/retention.md | 38 -- .../version-0.10.0/troubleshooting.md | 591 ------------------ .../version-0.10.0/upgrades.mdx | 16 - web/versioned_docs/version-0.10.0/usage.md | 283 --------- .../version-0.11.0/compression.md | 43 -- web/versioned_docs/version-0.11.0/concepts.md | 177 ------ web/versioned_docs/version-0.11.0/images.md | 37 -- .../version-0.11.0/installation.mdx | 109 ---- web/versioned_docs/version-0.11.0/intro.md | 86 --- .../version-0.11.0/migration.md | 274 -------- web/versioned_docs/version-0.11.0/misc.md | 97 --- .../version-0.11.0/object_stores.md | 498 --------------- .../version-0.11.0/observability.md | 24 - .../version-0.11.0/parameters.md | 19 - .../version-0.11.0/plugin-barman-cloud.v1.md | 108 ---- .../version-0.11.0/resource-name-migration.md | 219 ------- .../version-0.11.0/retention.md | 38 -- .../version-0.11.0/troubleshooting.md | 591 ------------------ .../version-0.11.0/upgrades.mdx | 16 - web/versioned_docs/version-0.11.0/usage.md | 283 --------- .../version-0.12.0/compression.md | 43 -- web/versioned_docs/version-0.12.0/concepts.md | 177 ------ web/versioned_docs/version-0.12.0/images.md | 37 -- .../version-0.12.0/installation.mdx | 109 ---- web/versioned_docs/version-0.12.0/intro.md | 86 --- .../version-0.12.0/migration.md | 274 -------- web/versioned_docs/version-0.12.0/misc.md | 97 --- .../version-0.12.0/object_stores.md | 497 --------------- .../version-0.12.0/observability.md | 24 - .../version-0.12.0/parameters.md | 19 - .../version-0.12.0/plugin-barman-cloud.v1.md | 108 ---- .../version-0.12.0/resource-name-migration.md | 219 ------- .../version-0.12.0/retention.md | 38 -- .../version-0.12.0/troubleshooting.md | 591 ------------------ .../version-0.12.0/upgrades.mdx | 16 - web/versioned_docs/version-0.12.0/usage.md | 283 --------- web/versioned_docs/version-0.3.0/welcome.md | 15 - .../version-0.4.0/compression.md | 43 -- web/versioned_docs/version-0.4.0/concepts.md | 177 ------ web/versioned_docs/version-0.4.0/images.md | 37 -- .../version-0.4.0/installation.md | 117 ---- web/versioned_docs/version-0.4.0/intro.md | 67 -- web/versioned_docs/version-0.4.0/migration.md | 259 -------- web/versioned_docs/version-0.4.0/misc.md | 76 --- .../version-0.4.0/object_stores.md | 465 -------------- .../version-0.4.0/parameters.md | 19 - .../version-0.4.0/plugin-barman-cloud.v1.md | 105 ---- web/versioned_docs/version-0.4.0/retention.md | 38 -- web/versioned_docs/version-0.4.0/usage.md | 258 -------- .../version-0.4.1/compression.md | 43 -- web/versioned_docs/version-0.4.1/concepts.md | 177 ------ web/versioned_docs/version-0.4.1/images.md | 37 -- .../version-0.4.1/installation.mdx | 109 ---- web/versioned_docs/version-0.4.1/intro.md | 67 -- web/versioned_docs/version-0.4.1/migration.md | 259 -------- web/versioned_docs/version-0.4.1/misc.md | 76 --- .../version-0.4.1/object_stores.md | 465 -------------- .../version-0.4.1/parameters.md | 19 - .../version-0.4.1/plugin-barman-cloud.v1.md | 105 ---- web/versioned_docs/version-0.4.1/retention.md | 38 -- web/versioned_docs/version-0.4.1/usage.md | 258 -------- .../version-0.5.0/compression.md | 43 -- web/versioned_docs/version-0.5.0/concepts.md | 177 ------ web/versioned_docs/version-0.5.0/images.md | 37 -- .../version-0.5.0/installation.mdx | 109 ---- web/versioned_docs/version-0.5.0/intro.md | 67 -- web/versioned_docs/version-0.5.0/migration.md | 259 -------- web/versioned_docs/version-0.5.0/misc.md | 76 --- .../version-0.5.0/object_stores.md | 465 -------------- .../version-0.5.0/parameters.md | 19 - .../version-0.5.0/plugin-barman-cloud.v1.md | 105 ---- web/versioned_docs/version-0.5.0/retention.md | 38 -- web/versioned_docs/version-0.5.0/usage.md | 258 -------- .../version-0.6.0/compression.md | 43 -- web/versioned_docs/version-0.6.0/concepts.md | 177 ------ web/versioned_docs/version-0.6.0/images.md | 37 -- .../version-0.6.0/installation.mdx | 109 ---- web/versioned_docs/version-0.6.0/intro.md | 67 -- web/versioned_docs/version-0.6.0/migration.md | 259 -------- web/versioned_docs/version-0.6.0/misc.md | 76 --- .../version-0.6.0/object_stores.md | 493 --------------- .../version-0.6.0/parameters.md | 19 - .../version-0.6.0/plugin-barman-cloud.v1.md | 105 ---- web/versioned_docs/version-0.6.0/retention.md | 38 -- web/versioned_docs/version-0.6.0/usage.md | 258 -------- .../version-0.7.0/compression.md | 43 -- web/versioned_docs/version-0.7.0/concepts.md | 177 ------ web/versioned_docs/version-0.7.0/images.md | 37 -- .../version-0.7.0/installation.mdx | 109 ---- web/versioned_docs/version-0.7.0/intro.md | 86 --- web/versioned_docs/version-0.7.0/migration.md | 259 -------- web/versioned_docs/version-0.7.0/misc.md | 76 --- .../version-0.7.0/object_stores.md | 454 -------------- .../version-0.7.0/parameters.md | 19 - .../version-0.7.0/plugin-barman-cloud.v1.md | 108 ---- web/versioned_docs/version-0.7.0/retention.md | 38 -- .../version-0.7.0/troubleshooting.md | 580 ----------------- web/versioned_docs/version-0.7.0/usage.md | 283 --------- .../version-0.8.0/compression.md | 43 -- web/versioned_docs/version-0.8.0/concepts.md | 177 ------ web/versioned_docs/version-0.8.0/images.md | 37 -- .../version-0.8.0/installation.mdx | 109 ---- web/versioned_docs/version-0.8.0/intro.md | 86 --- web/versioned_docs/version-0.8.0/migration.md | 274 -------- web/versioned_docs/version-0.8.0/misc.md | 76 --- .../version-0.8.0/object_stores.md | 454 -------------- .../version-0.8.0/observability.md | 24 - .../version-0.8.0/parameters.md | 19 - .../version-0.8.0/plugin-barman-cloud.v1.md | 108 ---- .../version-0.8.0/resource-name-migration.md | 219 ------- web/versioned_docs/version-0.8.0/retention.md | 38 -- .../version-0.8.0/troubleshooting.md | 580 ----------------- web/versioned_docs/version-0.8.0/upgrades.mdx | 16 - web/versioned_docs/version-0.8.0/usage.md | 283 --------- .../version-0.9.0/compression.md | 43 -- web/versioned_docs/version-0.9.0/concepts.md | 177 ------ web/versioned_docs/version-0.9.0/images.md | 37 -- .../version-0.9.0/installation.mdx | 109 ---- web/versioned_docs/version-0.9.0/intro.md | 86 --- web/versioned_docs/version-0.9.0/migration.md | 274 -------- web/versioned_docs/version-0.9.0/misc.md | 76 --- .../version-0.9.0/object_stores.md | 454 -------------- .../version-0.9.0/observability.md | 24 - .../version-0.9.0/parameters.md | 19 - .../version-0.9.0/plugin-barman-cloud.v1.md | 108 ---- .../version-0.9.0/resource-name-migration.md | 219 ------- web/versioned_docs/version-0.9.0/retention.md | 38 -- .../version-0.9.0/troubleshooting.md | 580 ----------------- web/versioned_docs/version-0.9.0/upgrades.mdx | 16 - web/versioned_docs/version-0.9.0/usage.md | 283 --------- .../version-0.10.0-sidebars.json | 8 - .../version-0.11.0-sidebars.json | 8 - .../version-0.12.0-sidebars.json | 8 - .../version-0.3.0-sidebars.json | 8 - .../version-0.4.0-sidebars.json | 8 - .../version-0.4.1-sidebars.json | 8 - .../version-0.5.0-sidebars.json | 8 - .../version-0.6.0-sidebars.json | 8 - .../version-0.7.0-sidebars.json | 8 - .../version-0.8.0-sidebars.json | 8 - .../version-0.9.0-sidebars.json | 8 - web/versions.json | 13 +- 154 files changed, 1 insertion(+), 21930 deletions(-) delete mode 100644 web/versioned_docs/version-0.10.0/compression.md delete mode 100644 web/versioned_docs/version-0.10.0/concepts.md delete mode 100644 web/versioned_docs/version-0.10.0/images.md delete mode 100644 web/versioned_docs/version-0.10.0/installation.mdx delete mode 100644 web/versioned_docs/version-0.10.0/intro.md delete mode 100644 web/versioned_docs/version-0.10.0/migration.md delete mode 100644 web/versioned_docs/version-0.10.0/misc.md delete mode 100644 web/versioned_docs/version-0.10.0/object_stores.md delete mode 100644 web/versioned_docs/version-0.10.0/observability.md delete mode 100644 web/versioned_docs/version-0.10.0/parameters.md delete mode 100644 web/versioned_docs/version-0.10.0/plugin-barman-cloud.v1.md delete mode 100644 web/versioned_docs/version-0.10.0/resource-name-migration.md delete mode 100644 web/versioned_docs/version-0.10.0/retention.md delete mode 100644 web/versioned_docs/version-0.10.0/troubleshooting.md delete mode 100644 web/versioned_docs/version-0.10.0/upgrades.mdx delete mode 100644 web/versioned_docs/version-0.10.0/usage.md delete mode 100644 web/versioned_docs/version-0.11.0/compression.md delete mode 100644 web/versioned_docs/version-0.11.0/concepts.md delete mode 100644 web/versioned_docs/version-0.11.0/images.md delete mode 100644 web/versioned_docs/version-0.11.0/installation.mdx delete mode 100644 web/versioned_docs/version-0.11.0/intro.md delete mode 100644 web/versioned_docs/version-0.11.0/migration.md delete mode 100644 web/versioned_docs/version-0.11.0/misc.md delete mode 100644 web/versioned_docs/version-0.11.0/object_stores.md delete mode 100644 web/versioned_docs/version-0.11.0/observability.md delete mode 100644 web/versioned_docs/version-0.11.0/parameters.md delete mode 100644 web/versioned_docs/version-0.11.0/plugin-barman-cloud.v1.md delete mode 100644 web/versioned_docs/version-0.11.0/resource-name-migration.md delete mode 100644 web/versioned_docs/version-0.11.0/retention.md delete mode 100644 web/versioned_docs/version-0.11.0/troubleshooting.md delete mode 100644 web/versioned_docs/version-0.11.0/upgrades.mdx delete mode 100644 web/versioned_docs/version-0.11.0/usage.md delete mode 100644 web/versioned_docs/version-0.12.0/compression.md delete mode 100644 web/versioned_docs/version-0.12.0/concepts.md delete mode 100644 web/versioned_docs/version-0.12.0/images.md delete mode 100644 web/versioned_docs/version-0.12.0/installation.mdx delete mode 100644 web/versioned_docs/version-0.12.0/intro.md delete mode 100644 web/versioned_docs/version-0.12.0/migration.md delete mode 100644 web/versioned_docs/version-0.12.0/misc.md delete mode 100644 web/versioned_docs/version-0.12.0/object_stores.md delete mode 100644 web/versioned_docs/version-0.12.0/observability.md delete mode 100644 web/versioned_docs/version-0.12.0/parameters.md delete mode 100644 web/versioned_docs/version-0.12.0/plugin-barman-cloud.v1.md delete mode 100644 web/versioned_docs/version-0.12.0/resource-name-migration.md delete mode 100644 web/versioned_docs/version-0.12.0/retention.md delete mode 100644 web/versioned_docs/version-0.12.0/troubleshooting.md delete mode 100644 web/versioned_docs/version-0.12.0/upgrades.mdx delete mode 100644 web/versioned_docs/version-0.12.0/usage.md delete mode 100644 web/versioned_docs/version-0.3.0/welcome.md delete mode 100644 web/versioned_docs/version-0.4.0/compression.md delete mode 100644 web/versioned_docs/version-0.4.0/concepts.md delete mode 100644 web/versioned_docs/version-0.4.0/images.md delete mode 100644 web/versioned_docs/version-0.4.0/installation.md delete mode 100644 web/versioned_docs/version-0.4.0/intro.md delete mode 100644 web/versioned_docs/version-0.4.0/migration.md delete mode 100644 web/versioned_docs/version-0.4.0/misc.md delete mode 100644 web/versioned_docs/version-0.4.0/object_stores.md delete mode 100644 web/versioned_docs/version-0.4.0/parameters.md delete mode 100644 web/versioned_docs/version-0.4.0/plugin-barman-cloud.v1.md delete mode 100644 web/versioned_docs/version-0.4.0/retention.md delete mode 100644 web/versioned_docs/version-0.4.0/usage.md delete mode 100644 web/versioned_docs/version-0.4.1/compression.md delete mode 100644 web/versioned_docs/version-0.4.1/concepts.md delete mode 100644 web/versioned_docs/version-0.4.1/images.md delete mode 100644 web/versioned_docs/version-0.4.1/installation.mdx delete mode 100644 web/versioned_docs/version-0.4.1/intro.md delete mode 100644 web/versioned_docs/version-0.4.1/migration.md delete mode 100644 web/versioned_docs/version-0.4.1/misc.md delete mode 100644 web/versioned_docs/version-0.4.1/object_stores.md delete mode 100644 web/versioned_docs/version-0.4.1/parameters.md delete mode 100644 web/versioned_docs/version-0.4.1/plugin-barman-cloud.v1.md delete mode 100644 web/versioned_docs/version-0.4.1/retention.md delete mode 100644 web/versioned_docs/version-0.4.1/usage.md delete mode 100644 web/versioned_docs/version-0.5.0/compression.md delete mode 100644 web/versioned_docs/version-0.5.0/concepts.md delete mode 100644 web/versioned_docs/version-0.5.0/images.md delete mode 100644 web/versioned_docs/version-0.5.0/installation.mdx delete mode 100644 web/versioned_docs/version-0.5.0/intro.md delete mode 100644 web/versioned_docs/version-0.5.0/migration.md delete mode 100644 web/versioned_docs/version-0.5.0/misc.md delete mode 100644 web/versioned_docs/version-0.5.0/object_stores.md delete mode 100644 web/versioned_docs/version-0.5.0/parameters.md delete mode 100644 web/versioned_docs/version-0.5.0/plugin-barman-cloud.v1.md delete mode 100644 web/versioned_docs/version-0.5.0/retention.md delete mode 100644 web/versioned_docs/version-0.5.0/usage.md delete mode 100644 web/versioned_docs/version-0.6.0/compression.md delete mode 100644 web/versioned_docs/version-0.6.0/concepts.md delete mode 100644 web/versioned_docs/version-0.6.0/images.md delete mode 100644 web/versioned_docs/version-0.6.0/installation.mdx delete mode 100644 web/versioned_docs/version-0.6.0/intro.md delete mode 100644 web/versioned_docs/version-0.6.0/migration.md delete mode 100644 web/versioned_docs/version-0.6.0/misc.md delete mode 100644 web/versioned_docs/version-0.6.0/object_stores.md delete mode 100644 web/versioned_docs/version-0.6.0/parameters.md delete mode 100644 web/versioned_docs/version-0.6.0/plugin-barman-cloud.v1.md delete mode 100644 web/versioned_docs/version-0.6.0/retention.md delete mode 100644 web/versioned_docs/version-0.6.0/usage.md delete mode 100644 web/versioned_docs/version-0.7.0/compression.md delete mode 100644 web/versioned_docs/version-0.7.0/concepts.md delete mode 100644 web/versioned_docs/version-0.7.0/images.md delete mode 100644 web/versioned_docs/version-0.7.0/installation.mdx delete mode 100644 web/versioned_docs/version-0.7.0/intro.md delete mode 100644 web/versioned_docs/version-0.7.0/migration.md delete mode 100644 web/versioned_docs/version-0.7.0/misc.md delete mode 100644 web/versioned_docs/version-0.7.0/object_stores.md delete mode 100644 web/versioned_docs/version-0.7.0/parameters.md delete mode 100644 web/versioned_docs/version-0.7.0/plugin-barman-cloud.v1.md delete mode 100644 web/versioned_docs/version-0.7.0/retention.md delete mode 100644 web/versioned_docs/version-0.7.0/troubleshooting.md delete mode 100644 web/versioned_docs/version-0.7.0/usage.md delete mode 100644 web/versioned_docs/version-0.8.0/compression.md delete mode 100644 web/versioned_docs/version-0.8.0/concepts.md delete mode 100644 web/versioned_docs/version-0.8.0/images.md delete mode 100644 web/versioned_docs/version-0.8.0/installation.mdx delete mode 100644 web/versioned_docs/version-0.8.0/intro.md delete mode 100644 web/versioned_docs/version-0.8.0/migration.md delete mode 100644 web/versioned_docs/version-0.8.0/misc.md delete mode 100644 web/versioned_docs/version-0.8.0/object_stores.md delete mode 100644 web/versioned_docs/version-0.8.0/observability.md delete mode 100644 web/versioned_docs/version-0.8.0/parameters.md delete mode 100644 web/versioned_docs/version-0.8.0/plugin-barman-cloud.v1.md delete mode 100644 web/versioned_docs/version-0.8.0/resource-name-migration.md delete mode 100644 web/versioned_docs/version-0.8.0/retention.md delete mode 100644 web/versioned_docs/version-0.8.0/troubleshooting.md delete mode 100644 web/versioned_docs/version-0.8.0/upgrades.mdx delete mode 100644 web/versioned_docs/version-0.8.0/usage.md delete mode 100644 web/versioned_docs/version-0.9.0/compression.md delete mode 100644 web/versioned_docs/version-0.9.0/concepts.md delete mode 100644 web/versioned_docs/version-0.9.0/images.md delete mode 100644 web/versioned_docs/version-0.9.0/installation.mdx delete mode 100644 web/versioned_docs/version-0.9.0/intro.md delete mode 100644 web/versioned_docs/version-0.9.0/migration.md delete mode 100644 web/versioned_docs/version-0.9.0/misc.md delete mode 100644 web/versioned_docs/version-0.9.0/object_stores.md delete mode 100644 web/versioned_docs/version-0.9.0/observability.md delete mode 100644 web/versioned_docs/version-0.9.0/parameters.md delete mode 100644 web/versioned_docs/version-0.9.0/plugin-barman-cloud.v1.md delete mode 100644 web/versioned_docs/version-0.9.0/resource-name-migration.md delete mode 100644 web/versioned_docs/version-0.9.0/retention.md delete mode 100644 web/versioned_docs/version-0.9.0/troubleshooting.md delete mode 100644 web/versioned_docs/version-0.9.0/upgrades.mdx delete mode 100644 web/versioned_docs/version-0.9.0/usage.md delete mode 100644 web/versioned_sidebars/version-0.10.0-sidebars.json delete mode 100644 web/versioned_sidebars/version-0.11.0-sidebars.json delete mode 100644 web/versioned_sidebars/version-0.12.0-sidebars.json delete mode 100644 web/versioned_sidebars/version-0.3.0-sidebars.json delete mode 100644 web/versioned_sidebars/version-0.4.0-sidebars.json delete mode 100644 web/versioned_sidebars/version-0.4.1-sidebars.json delete mode 100644 web/versioned_sidebars/version-0.5.0-sidebars.json delete mode 100644 web/versioned_sidebars/version-0.6.0-sidebars.json delete mode 100644 web/versioned_sidebars/version-0.7.0-sidebars.json delete mode 100644 web/versioned_sidebars/version-0.8.0-sidebars.json delete mode 100644 web/versioned_sidebars/version-0.9.0-sidebars.json diff --git a/web/versioned_docs/version-0.10.0/compression.md b/web/versioned_docs/version-0.10.0/compression.md deleted file mode 100644 index 2abbede..0000000 --- a/web/versioned_docs/version-0.10.0/compression.md +++ /dev/null @@ -1,43 +0,0 @@ ---- -sidebar_position: 80 ---- - -# Compression - - - -By default, backups and WAL files are archived **uncompressed**. However, the -Barman Cloud Plugin supports multiple compression algorithms via -`barman-cloud-backup` and `barman-cloud-wal-archive`, allowing you to optimize -for space, speed, or a balance of both. - -### Supported Compression Algorithms - -- `bzip2` -- `gzip` -- `lz4` (WAL only) -- `snappy` -- `xz` (WAL only) -- `zstd` (WAL only) - -Compression settings for base backups and WAL archives are configured -independently. For implementation details, refer to the corresponding API -definitions: - -- [`DataBackupConfiguration`](https://pkg.go.dev/github.com/cloudnative-pg/barman-cloud/pkg/api#DataBackupConfiguration) -- [`WALBackupConfiguration`](https://pkg.go.dev/github.com/cloudnative-pg/barman-cloud/pkg/api#WalBackupConfiguration) - -:::important -Compression impacts both performance and storage efficiency. Choose the right -algorithm based on your recovery time objectives (RTO), storage capacity, and -network throughput. -::: - -## Compression Benchmark (on MinIO) - -| Compression | Backup Time (ms) | Restore Time (ms) | Uncompressed Size (MB) | Compressed Size (MB) | Ratio | -| ----------- | ---------------- | ----------------- | ---------------------- | -------------------- | ----- | -| None | 10,927 | 7,553 | 395 | 395 | 1.0:1 | -| bzip2 | 25,404 | 13,886 | 395 | 67 | 5.9:1 | -| gzip | 116,281 | 3,077 | 395 | 91 | 4.3:1 | -| snappy | 8,134 | 8,341 | 395 | 166 | 2.4:1 | diff --git a/web/versioned_docs/version-0.10.0/concepts.md b/web/versioned_docs/version-0.10.0/concepts.md deleted file mode 100644 index 3832df3..0000000 --- a/web/versioned_docs/version-0.10.0/concepts.md +++ /dev/null @@ -1,177 +0,0 @@ ---- -sidebar_position: 10 ---- - -# Main Concepts - - - -:::important -Before proceeding, make sure to review the following sections of the -CloudNativePG documentation: - -- [**Backup**](https://cloudnative-pg.io/documentation/current/backup/) -- [**WAL Archiving**](https://cloudnative-pg.io/documentation/current/wal_archiving/) -- [**Recovery**](https://cloudnative-pg.io/documentation/current/recovery/) -::: - -The **Barman Cloud Plugin** enables **hot (online) backups** of PostgreSQL -clusters in CloudNativePG through [`barman-cloud`](https://pgbarman.org), -supporting continuous physical backups and WAL archiving to an **object -store**β€”without interrupting write operations. - -It also supports both **full recovery** and **Point-in-Time Recovery (PITR)** -of a PostgreSQL cluster. - -## The Object Store - -At the core is the [`ObjectStore` custom resource (CRD)](plugin-barman-cloud.v1.md#objectstorespec), -which acts as the interface between the PostgreSQL cluster and the target -object storage system. It allows you to configure: - -- **Authentication and bucket location** via the `.spec.configuration` section -- **WAL archiving** settingsβ€”such as compression type, parallelism, and - server-side encryptionβ€”under `.spec.configuration.wal` -- **Base backup options**β€”with similar settings for compression, concurrency, - and encryptionβ€”under `.spec.configuration.data` -- **Retention policies** to manage the life-cycle of archived WALs and backups - via `.spec.configuration.retentionPolicy` - -WAL files are archived in the `wals` directory, while base backups are stored -as **tarballs** in the `base` directory, following the -[Barman Cloud convention](https://docs.pgbarman.org/cloud/latest/usage/#object-store-layout). - -The plugin also offers advanced capabilities, including -[backup tagging](misc.md#backup-object-tagging) and -[extra options for backups and WAL archiving](misc.md#extra-options-for-backup-and-wal-archiving). - -:::tip -For details, refer to the -[API reference for the `ObjectStore` resource](plugin-barman-cloud.v1.md#objectstorespec). -::: - -## Integration with a CloudNativePG Cluster - -CloudNativePG can delegate continuous backup and recovery responsibilities to -the **Barman Cloud Plugin** by configuring the `.spec.plugins` section of a -`Cluster` resource. This setup requires a corresponding `ObjectStore` resource -to be defined. - -:::important -While it is technically possible to reuse the same `ObjectStore` for multiple -`Cluster` resources within the same namespace, it is strongly recommended to -dedicate one object store per PostgreSQL cluster to ensure data isolation and -operational clarity. -::: - -The following example demonstrates how to configure a CloudNativePG cluster -named `cluster-example` to use a previously defined `ObjectStore` (also named -`cluster-example`) in the same namespace. Setting `isWALArchiver: true` enables -WAL archiving through the plugin: - -```yaml -apiVersion: postgresql.cnpg.io/v1 -kind: Cluster -metadata: - name: cluster-example -spec: - # Other cluster settings... - plugins: - - name: barman-cloud.cloudnative-pg.io - isWALArchiver: true - parameters: - barmanObjectName: cluster-example -``` - -## Backup of a Postgres Cluster - -Once the object store is defined and the `Cluster` is configured to use the -Barman Cloud Plugin, **WAL archiving is activated immediately** on the -PostgreSQL primary. - -Physical base backups are seamlessly managed by CloudNativePG using the -`Backup` and `ScheduledBackup` resources, respectively for -[on-demand](https://cloudnative-pg.io/documentation/current/backup/#on-demand-backups) -and -[scheduled](https://cloudnative-pg.io/documentation/current/backup/#scheduled-backups) -backups. - -To use the Barman Cloud Plugin, you must set the `method` to `plugin` and -configure the `pluginConfiguration` section as shown: - -```yaml -[...] -spec: - method: plugin - pluginConfiguration: - name: barman-cloud.cloudnative-pg.io - [...] -``` - -With this configuration, CloudNativePG supports: - -- Backups from both **primary** and **standby** instances -- Backups from **designated primaries** in a distributed topology using - [replica clusters](https://cloudnative-pg.io/documentation/current/replica_cluster/) - -:::tip -For details on how to back up from a standby, refer to the official documentation: -[Backup from a standby](https://cloudnative-pg.io/documentation/current/backup/#backup-from-a-standby). -::: - -:::important -Both backup and WAL archiving operations are executed by sidecar containers -running in the same pod as the PostgreSQL `Cluster` primary instanceβ€”except -when backups are taken from a standby, in which case the sidecar runs alongside -the standby pod. -The sidecar containers use a [dedicated container image](images.md) that -includes only the supported version of Barman Cloud. -::: - -## Recovery of a Postgres Cluster - -In PostgreSQL, *recovery* refers to the process of starting a database instance -from an existing backup. The Barman Cloud Plugin integrates with CloudNativePG -to support both **full recovery** and **Point-in-Time Recovery (PITR)** from an -object store. - -Recovery in this context is *not in-place*: it bootstraps a brand-new -PostgreSQL cluster from a backup and replays the necessary WAL files to reach -the desired recovery target. - -To perform a recovery, define an *external cluster* that references the -appropriate `ObjectStore`, and use it as the source in the `bootstrap` section -of the target cluster: - -```yaml -[...] -spec: - [...] - bootstrap: - recovery: - source: source - externalClusters: - - name: source - plugin: - name: barman-cloud.cloudnative-pg.io - parameters: - barmanObjectName: cluster-example - serverName: cluster-example - [...] -``` - -The critical element here is the `externalClusters` section of the `Cluster` -resource, where the `plugin` stanza instructs CloudNativePG to use the Barman -Cloud Plugin to access the object store for recovery. - -This same mechanism can be used for a variety of scenarios enabled by the -CloudNativePG API, including: - -* **Full cluster recovery** from the latest backup -* **Point-in-Time Recovery (PITR)** -* Bootstrapping **replica clusters** in a distributed topology - -:::tip -For complete instructions and advanced use cases, refer to the official -[Recovery documentation](https://cloudnative-pg.io/documentation/current/recovery/). -::: diff --git a/web/versioned_docs/version-0.10.0/images.md b/web/versioned_docs/version-0.10.0/images.md deleted file mode 100644 index f6c32d3..0000000 --- a/web/versioned_docs/version-0.10.0/images.md +++ /dev/null @@ -1,37 +0,0 @@ ---- -sidebar_position: 99 ---- - -# Container Images - - - -The Barman Cloud Plugin is distributed using two container images: - -- One for deploying the plugin components -- One for the sidecar that runs alongside each PostgreSQL instance in a - CloudNativePG `Cluster` using the plugin - -## Plugin Container Image - -The plugin image contains the logic required to operate the Barman Cloud Plugin -within your Kubernetes environment with CloudNativePG. It is published on the -GitHub Container Registry at `ghcr.io/cloudnative-pg/plugin-barman-cloud`. - -This image is built from the -[`Dockerfile.plugin`](https://github.com/cloudnative-pg/plugin-barman-cloud/blob/main/containers/Dockerfile.plugin) -in the plugin repository. - -## Sidecar Container Image - -The sidecar image is used within each PostgreSQL pod in the cluster. It -includes the latest supported version of Barman Cloud and is responsible for -performing WAL archiving and backups on behalf of CloudNativePG. - -It is available at `ghcr.io/cloudnative-pg/plugin-barman-cloud-sidecar` and is -built from the -[`Dockerfile.sidecar`](https://github.com/cloudnative-pg/plugin-barman-cloud/blob/main/containers/Dockerfile.sidecar). - -These sidecar images are designed to work seamlessly with the -[`minimal` PostgreSQL container images](https://github.com/cloudnative-pg/postgres-containers?tab=readme-ov-file#minimal-images) -maintained by the CloudNativePG Community. diff --git a/web/versioned_docs/version-0.10.0/installation.mdx b/web/versioned_docs/version-0.10.0/installation.mdx deleted file mode 100644 index 027d1e8..0000000 --- a/web/versioned_docs/version-0.10.0/installation.mdx +++ /dev/null @@ -1,109 +0,0 @@ ---- -sidebar_position: 20 ---- - -# Installation - -:::important -1. The plugin **must** be installed in the same namespace as the CloudNativePG - operator (typically `cnpg-system`). - -2. Keep in mind that the operator's **listening namespaces** may differ from its - installation namespace. Double-check this to avoid configuration issues. -::: - -## Verifying the Requirements - -Before installing the plugin, make sure the [requirements](intro.md#requirements) are met. - -### CloudNativePG Version - -Ensure you're running a version of CloudNativePG that is compatible with the -plugin. If installed in the default `cnpg-system` namespace, you can verify the -version with: - -```sh -kubectl get deployment -n cnpg-system cnpg-controller-manager \ - -o jsonpath="{.spec.template.spec.containers[*].image}" -``` - -Example output: - -```output -ghcr.io/cloudnative-pg/cloudnative-pg:1.26.0 -``` - -The version **must be 1.26 or newer**. - -### cert-manager - -Use the [cmctl](https://cert-manager.io/docs/reference/cmctl/#installation) -tool to confirm that `cert-manager` is installed and available: - -```sh -cmctl check api -``` - -Example output: - -```output -The cert-manager API is ready -``` - -Both checks are required before proceeding with the installation. - -## Installing the Barman Cloud Plugin - -import { InstallationSnippet } from '@site/src/components/Installation'; - -Install the plugin using `kubectl` by applying the manifest for the latest -release: - - - -Example output: - -```output -customresourcedefinition.apiextensions.k8s.io/objectstores.barmancloud.cnpg.io created -serviceaccount/plugin-barman-cloud created -role.rbac.authorization.k8s.io/leader-election-role created -clusterrole.rbac.authorization.k8s.io/metrics-auth-role created -clusterrole.rbac.authorization.k8s.io/metrics-reader created -clusterrole.rbac.authorization.k8s.io/objectstore-editor-role created -clusterrole.rbac.authorization.k8s.io/objectstore-viewer-role created -clusterrole.rbac.authorization.k8s.io/plugin-barman-cloud created -rolebinding.rbac.authorization.k8s.io/leader-election-rolebinding created -clusterrolebinding.rbac.authorization.k8s.io/metrics-auth-rolebinding created -clusterrolebinding.rbac.authorization.k8s.io/plugin-barman-cloud-binding created -secret/plugin-barman-cloud-8tfddg42gf created -service/barman-cloud created -deployment.apps/barman-cloud configured -certificate.cert-manager.io/barman-cloud-client created -certificate.cert-manager.io/barman-cloud-server created -issuer.cert-manager.io/selfsigned-issuer created -``` - -Finally, check that the deployment is up and running: - -```sh -kubectl rollout status deployment \ - -n cnpg-system barman-cloud -``` - -Example output: - -```output -deployment "barman-cloud" successfully rolled out -``` - -This confirms that the plugin is deployed and ready to use. - -## Testing the latest development snapshot - -You can also test the latest development snapshot of the plugin with the -following command: - -```sh -kubectl apply -f \ - https://raw.githubusercontent.com/cloudnative-pg/plugin-barman-cloud/refs/heads/main/manifest.yaml -``` diff --git a/web/versioned_docs/version-0.10.0/intro.md b/web/versioned_docs/version-0.10.0/intro.md deleted file mode 100644 index 9781d0d..0000000 --- a/web/versioned_docs/version-0.10.0/intro.md +++ /dev/null @@ -1,86 +0,0 @@ ---- -sidebar_position: 1 -sidebar_label: "Introduction" ---- - -# Barman Cloud Plugin - - - -The **Barman Cloud Plugin** for [CloudNativePG](https://cloudnative-pg.io/) -enables online continuous physical backups of PostgreSQL clusters to object storage -using the `barman-cloud` suite from the [Barman](https://docs.pgbarman.org/release/latest/) -project. - -:::important -If you plan to migrate your existing CloudNativePG cluster to the new -plugin-based approach using the Barman Cloud Plugin, see -["Migrating from Built-in CloudNativePG Backup"](migration.md) -for detailed instructions. -::: - -## Requirements - -Before using the Barman Cloud Plugin, ensure that the following components are -installed and properly configured: - -- [CloudNativePG](https://cloudnative-pg.io) version 1.26 or later - - - We strongly recommend version 1.27.0 or later, which includes improved - error handling and status reporting for the plugin. - - If you are running an earlier release, refer to the - [upgrade guide](https://cloudnative-pg.io/documentation/current/installation_upgrade). - -- [cert-manager](https://cert-manager.io/) - - - The recommended way to enable secure TLS communication between the plugin - and the operator. - - Alternatively, you can provide your own certificate bundles. See the - [CloudNativePG documentation on TLS configuration](https://cloudnative-pg.io/documentation/current/cnpg_i/#configuring-tls-certificates). - -- [`kubectl-cnpg`](https://cloudnative-pg.io/documentation/current/kubectl-plugin/) - plugin (optional but recommended) - - - Simplifies debugging and monitoring with additional status and inspection - commands. - - Multiple installation options are available in the - [installation guide](https://cloudnative-pg.io/documentation/current/kubectl-plugin/#install). - -## Key Features - -This plugin provides the following capabilities: - -- Physical online backup of the data directory -- Physical restore of the data directory -- Write-Ahead Log (WAL) archiving -- WAL restore -- Full cluster recovery -- Point-in-Time Recovery (PITR) -- Seamless integration with replica clusters for bootstrap and WAL restore from archive - -:::important -The Barman Cloud Plugin is designed to **replace the in-tree object storage support** -previously provided via the `.spec.backup.barmanObjectStore` section in the -`Cluster` resource. -Backups created using the in-tree approach are fully supported and compatible -with this plugin. -::: - -## Supported Object Storage Providers - -The plugin works with all storage backends supported by `barman-cloud`, including: - -- **Amazon S3** -- **Google Cloud Storage** -- **Microsoft Azure Blob Storage** - -In addition, the following S3-compatible and simulator solutions have been -tested and verified: - -- [MinIO](https://min.io/) – An S3-compatible storage solution -- [Azurite](https://github.com/Azure/Azurite) – A simulator for Azure Blob Storage -- [fake-gcs-server](https://github.com/fsouza/fake-gcs-server) – A simulator for Google Cloud Storage - -:::tip -For more details, refer to [Object Store Providers](object_stores.md). -::: diff --git a/web/versioned_docs/version-0.10.0/migration.md b/web/versioned_docs/version-0.10.0/migration.md deleted file mode 100644 index 2c99ada..0000000 --- a/web/versioned_docs/version-0.10.0/migration.md +++ /dev/null @@ -1,274 +0,0 @@ ---- -sidebar_position: 40 ---- - -# Migrating from Built-in CloudNativePG Backup - - - -The in-tree support for Barman Cloud in CloudNativePG is **deprecated starting -from version 1.26** and will be removed in a future release. - -If you're currently relying on the built-in Barman Cloud integration, you can -migrate seamlessly to the new **plugin-based architecture** using the Barman -Cloud Plugin, without data loss. Follow these steps: - -- [Install the Barman Cloud Plugin](installation.mdx) -- Create an `ObjectStore` resource by translating the contents of the - `.spec.backup.barmanObjectStore` section from your existing `Cluster` - definition -- Modify the `Cluster` resource in a single atomic change to switch from - in-tree backup to the plugin -- Update any `ScheduledBackup` resources to use the plugin -- Update the `externalClusters` configuration, where applicable - -:::tip -For a working example, refer to [this commit](https://github.com/cloudnative-pg/cnpg-playground/commit/596f30e252896edf8f734991c3538df87630f6f7) -from the [CloudNativePG Playground project](https://github.com/cloudnative-pg/cnpg-playground), -which demonstrates a full migration. -::: - ---- - -## Step 1: Define the `ObjectStore` - -Begin by creating an `ObjectStore` resource in the same namespace as your -PostgreSQL `Cluster`. - -There is a **direct mapping** between the `.spec.backup.barmanObjectStore` -section in CloudNativePG and the `.spec.configuration` field in the -`ObjectStore` CR. The conversion is mostly mechanical, with one key difference: - -:::warning -In the plugin architecture, retention policies are defined as part of the `ObjectStore`. -In contrast, the in-tree implementation defined them at the `Cluster` level. -::: - -If your `Cluster` used `.spec.backup.retentionPolicy`, move that configuration -to `.spec.retentionPolicy` in the `ObjectStore`. - ---- - -### Example - -Here’s an excerpt from a traditional in-tree CloudNativePG backup configuration -taken from the CloudNativePG Playground project: - -```yaml -apiVersion: postgresql.cnpg.io/v1 -kind: Cluster -metadata: - name: pg-eu -spec: - # [...] - backup: - barmanObjectStore: - destinationPath: s3://backups/ - endpointURL: http://minio-eu:9000 - s3Credentials: - accessKeyId: - name: minio-eu - key: ACCESS_KEY_ID - secretAccessKey: - name: minio-eu - key: ACCESS_SECRET_KEY - wal: - compression: gzip -``` - -This configuration translates to the following `ObjectStore` resource for the -plugin: - -```yaml -apiVersion: barmancloud.cnpg.io/v1 -kind: ObjectStore -metadata: - name: minio-eu -spec: - configuration: - destinationPath: s3://backups/ - endpointURL: http://minio-eu:9000 - s3Credentials: - accessKeyId: - name: minio-eu - key: ACCESS_KEY_ID - secretAccessKey: - name: minio-eu - key: ACCESS_SECRET_KEY - wal: - compression: gzip -``` - -As you can see, the contents of `barmanObjectStore` have been copied directly -under the `configuration` field of the `ObjectStore` resource, using the same -secret references. - -## Step 2: Update the `Cluster` for plugin WAL archiving - -Once the `ObjectStore` resource is in place, update the `Cluster` resource as -follows in a single atomic change: - -- Remove the `.spec.backup.barmanObjectStore` section -- Remove `.spec.backup.retentionPolicy` if it was defined (as it is now in the - `ObjectStore`) -- Remove the entire `spec.backup` section if it is now empty -- Add `barman-cloud.cloudnative-pg.io` to the `plugins` list, as described in - [Configuring WAL archiving](usage.md#configuring-wal-archiving) - -This will trigger a rolling update of the `Cluster`, switching continuous -backup from the in-tree implementation to the plugin-based approach. - -### Example - -The updated `pg-eu` cluster will have this configuration instead of the -previous `backup` section: - -```yaml - plugins: - - name: barman-cloud.cloudnative-pg.io - isWALArchiver: true - parameters: - barmanObjectName: minio-eu -``` - ---- - -## Step 3: Update the `ScheduledBackup` - -After switching the `Cluster` to use the plugin, update your `ScheduledBackup` -resources to match. - -Set the backup `method` to `plugin` and reference the plugin name via -`pluginConfiguration`, as shown in ["Performing a base backup"](usage.md#performing-a-base-backup). - -### Example - -Original in-tree `ScheduledBackup`: - -```yaml -apiVersion: postgresql.cnpg.io/v1 -kind: ScheduledBackup -metadata: - name: pg-eu-backup -spec: - cluster: - name: pg-eu - schedule: '0 0 0 * * *' - backupOwnerReference: self -``` - -Updated version using the plugin: - -```yaml -apiVersion: postgresql.cnpg.io/v1 -kind: ScheduledBackup -metadata: - name: pg-eu-backup -spec: - cluster: - name: pg-eu - schedule: '0 0 0 * * *' - backupOwnerReference: self - method: plugin - pluginConfiguration: - name: barman-cloud.cloudnative-pg.io -``` - ---- - -## Step 4: Update the `externalClusters` configuration - -If your `Cluster` relies on one or more external clusters that use the in-tree -Barman Cloud integration, you need to update those configurations to use the -plugin-based architecture. - -When a replica cluster fetches WAL files or base backups from an external -source that used the built-in backup method, follow these steps: - -1. Create a corresponding `ObjectStore` resource for the external cluster, as - shown in [Step 1](#step-1-define-the-objectstore) -2. Update the `externalClusters` section of your replica cluster to use the - plugin instead of the in-tree `barmanObjectStore` field - -### Example - -Consider the original configuration using in-tree Barman Cloud: - -```yaml -apiVersion: postgresql.cnpg.io/v1 -kind: Cluster -metadata: - name: pg-us -spec: - # [...] - externalClusters: - - name: pg-eu - barmanObjectStore: - destinationPath: s3://backups/ - endpointURL: http://minio-eu:9000 - serverName: pg-eu - s3Credentials: - accessKeyId: - name: minio-eu - key: ACCESS_KEY_ID - secretAccessKey: - name: minio-eu - key: ACCESS_SECRET_KEY - wal: - compression: gzip -``` - -Create the `ObjectStore` resource for the external cluster: - -```yaml -apiVersion: barmancloud.cnpg.io/v1 -kind: ObjectStore -metadata: - name: minio-eu -spec: - configuration: - destinationPath: s3://backups/ - endpointURL: http://minio-eu:9000 - s3Credentials: - accessKeyId: - name: minio-eu - key: ACCESS_KEY_ID - secretAccessKey: - name: minio-eu - key: ACCESS_SECRET_KEY - wal: - compression: gzip -``` - -Update the external cluster configuration to use the plugin: - -```yaml -apiVersion: postgresql.cnpg.io/v1 -kind: Cluster -metadata: - name: pg-us -spec: - # [...] - externalClusters: - - name: pg-eu - plugin: - name: barman-cloud.cloudnative-pg.io - parameters: - barmanObjectName: minio-eu - serverName: pg-eu -``` - -## Step 5: Verify your metrics - -When migrating from the in-core solution to the plugin-based approach, you need -to monitor a different set of metrics, as described in the -["Observability"](observability.md) section. - -The table below summarizes the name changes between the old in-core metrics and -the new plugin-based ones: - -| Old metric name | New metric name | -| ------------------------------------------------ | ---------------------------------------------------------------- | -| `cnpg_collector_last_failed_backup_timestamp` | `barman_cloud_cloudnative_pg_io_last_failed_backup_timestamp` | -| `cnpg_collector_last_available_backup_timestamp` | `barman_cloud_cloudnative_pg_io_last_available_backup_timestamp` | -| `cnpg_collector_first_recoverability_point` | `barman_cloud_cloudnative_pg_io_first_recoverability_point` | diff --git a/web/versioned_docs/version-0.10.0/misc.md b/web/versioned_docs/version-0.10.0/misc.md deleted file mode 100644 index 0f03b28..0000000 --- a/web/versioned_docs/version-0.10.0/misc.md +++ /dev/null @@ -1,97 +0,0 @@ ---- -sidebar_position: 90 ---- - -# Miscellaneous - - - -## Backup Object Tagging - -You can attach key-value metadata tags to backup artifactsβ€”such as base -backups, WAL files, and history filesβ€”via the `.spec.configuration` section of -the `ObjectStore` resource. - -- `tags`: applied to base backups and WAL files -- `historyTags`: applied to history files only - -### Example - -```yaml -apiVersion: barmancloud.cnpg.io/v1 -kind: ObjectStore -metadata: - name: my-store -spec: - configuration: - [...] - tags: - backupRetentionPolicy: "expire" - historyTags: - backupRetentionPolicy: "keep" - [...] -``` - -## Extra Options for Backup and WAL Archiving - -You can pass additional command-line arguments to `barman-cloud-backup` and -`barman-cloud-wal-archive` using the `additionalCommandArgs` field in the -`ObjectStore` configuration. - -- `.spec.configuration.data.additionalCommandArgs`: for `barman-cloud-backup` -- `.spec.configuration.wal.archiveAdditionalCommandArgs`: for `barman-cloud-wal-archive` - -Each field accepts a list of string arguments. If an argument is already -configured elsewhere in the plugin, the duplicate will be ignored. - -### Example: Extra Backup Options - -```yaml -kind: ObjectStore -metadata: - name: my-store -spec: - configuration: - data: - additionalCommandArgs: - - "--min-chunk-size=5MB" - - "--read-timeout=60" -``` - -### Example: Extra WAL Archive Options - -```yaml -kind: ObjectStore -metadata: - name: my-store -spec: - configuration: - wal: - archiveAdditionalCommandArgs: - - "--max-concurrency=1" - - "--read-timeout=60" -``` - -For a complete list of supported options, refer to the -[official Barman Cloud documentation](https://docs.pgbarman.org/release/latest/). - -## Enable the pprof debug server for the sidecar - -You can enable the instance sidecar's pprof debug HTTP server by adding the `--pprof-server=
` flag to the container's -arguments via `.spec.instanceSidecarConfiguration.additionalContainerArgs`. - -Pass a bind address in the form `:` (for example, `0.0.0.0:6061`). -An empty value disables the server (disabled by default). - -### Example - -```yaml -apiVersion: barmancloud.cnpg.io/v1 -kind: ObjectStore -metadata: - name: my-store -spec: - instanceSidecarConfiguration: - additionalContainerArgs: - - "--pprof-server=0.0.0.0:6061" -``` diff --git a/web/versioned_docs/version-0.10.0/object_stores.md b/web/versioned_docs/version-0.10.0/object_stores.md deleted file mode 100644 index 74e0473..0000000 --- a/web/versioned_docs/version-0.10.0/object_stores.md +++ /dev/null @@ -1,454 +0,0 @@ ---- -sidebar_position: 50 ---- - -# Object Store Providers - - - -The Barman Cloud Plugin enables the storage of PostgreSQL cluster backup files -in any object storage service supported by the -[Barman Cloud infrastructure](https://docs.pgbarman.org/release/latest/). - -Currently, Barman Cloud supports the following providers: - -- [Amazon S3](#aws-s3) -- [Microsoft Azure Blob Storage](#azure-blob-storage) -- [Google Cloud Storage](#google-cloud-storage) - -You may also use any S3- or Azure-compatible implementation of the above -services. - -To configure object storage with Barman Cloud, you must define an -[`ObjectStore` object](plugin-barman-cloud.v1.md#objectstore), which -establishes the connection between your PostgreSQL cluster and the object -storage backend. - -Configuration details β€” particularly around authentication β€” will vary depending on -the specific object storage provider you are using. - -The following sections detail the setup for each. - ---- - -## AWS S3 - -[AWS Simple Storage Service (S3)](https://aws.amazon.com/s3/) is one of the -most widely adopted object storage solutions. - -The Barman Cloud plugin for CloudNativePG integrates with S3 through two -primary authentication mechanisms: - -- [IAM Roles for Service Accounts (IRSA)](https://docs.aws.amazon.com/eks/latest/userguide/iam-roles-for-service-accounts.html) β€” - recommended for clusters running on EKS -- Access keys β€” using `ACCESS_KEY_ID` and `ACCESS_SECRET_KEY` credentials - -### Access Keys - -To authenticate using access keys, you’ll need: - -- `ACCESS_KEY_ID`: the public key used to authenticate to S3 -- `ACCESS_SECRET_KEY`: the corresponding secret key -- `ACCESS_SESSION_TOKEN`: (optional) a temporary session token, if required - -These credentials must be stored securely in a Kubernetes secret: - -```sh -kubectl create secret generic aws-creds \ - --from-literal=ACCESS_KEY_ID= \ - --from-literal=ACCESS_SECRET_KEY= -# --from-literal=ACCESS_SESSION_TOKEN= # if required -``` - -The credentials will be encrypted at rest if your Kubernetes environment -supports it. - -You can then reference the secret in your `ObjectStore` definition: - -```yaml -apiVersion: barmancloud.cnpg.io/v1 -kind: ObjectStore -metadata: - name: aws-store -spec: - configuration: - destinationPath: "s3://BUCKET_NAME/path/to/folder" - s3Credentials: - accessKeyId: - name: aws-creds - key: ACCESS_KEY_ID - secretAccessKey: - name: aws-creds - key: ACCESS_SECRET_KEY - [...] -``` - -### IAM Role for Service Account (IRSA) - -To use IRSA with EKS, configure the service account of the PostgreSQL cluster -with the appropriate annotation: - -```yaml -apiVersion: postgresql.cnpg.io/v1 -kind: Cluster -metadata: - [...] -spec: - serviceAccountTemplate: - metadata: - annotations: - eks.amazonaws.com/role-arn: arn:[...] - [...] -``` - -### S3 Lifecycle Policy - -Barman Cloud uploads backup files to S3 but does not modify them afterward. -To enhance data durability and protect against accidental or malicious loss, -it's recommended to implement the following best practices: - -- Enable object versioning -- Enable object locking to prevent objects from being deleted or overwritten - for a defined period or indefinitely (this provides an additional layer of - protection against accidental deletion and ransomware attacks) -- Set lifecycle rules to expire current versions a few days after your Barman - retention window -- Expire non-current versions after a longer period - -These strategies help you safeguard backups without requiring broad delete -permissions, ensuring both security and compliance with minimal operational -overhead. - - -### S3-Compatible Storage Providers - -You can use S3-compatible services like **MinIO**, **Linode (Akamai) Object Storage**, -or **DigitalOcean Spaces** by specifying a custom `endpointURL`. - -Example with Linode (Akamai) Object Storage (`us-east1`): - -```yaml -apiVersion: barmancloud.cnpg.io/v1 -kind: ObjectStore -metadata: - name: linode-store -spec: - configuration: - destinationPath: "s3://BUCKET_NAME/" - endpointURL: "https://us-east1.linodeobjects.com" - s3Credentials: - [...] - [...] -``` - -Recent changes to the [boto3 implementation](https://github.com/boto/boto3/issues/4392) -of [Amazon S3 Data Integrity Protections](https://docs.aws.amazon.com/sdkref/latest/guide/feature-dataintegrity.html) -may lead to the `x-amz-content-sha256` error when using the Barman Cloud -Plugin. - -If you encounter this issue (see [GitHub issue #393](https://github.com/cloudnative-pg/plugin-barman-cloud/issues/393)), -you can apply the following workaround by setting specific environment -variables in the `ObjectStore` resource: - -```yaml -apiVersion: barmancloud.cnpg.io/v1 -kind: ObjectStore -metadata: - name: linode-store -spec: - instanceSidecarConfiguration: - env: - - name: AWS_REQUEST_CHECKSUM_CALCULATION - value: when_required - - name: AWS_RESPONSE_CHECKSUM_VALIDATION - value: when_required - [...] -``` - -These settings ensure that checksum calculations and validations are only -applied when explicitly required, avoiding compatibility issues with certain -S3-compatible storage providers. - -Example with DigitalOcean Spaces (SFO3, path-style): - -```yaml -apiVersion: barmancloud.cnpg.io/v1 -kind: ObjectStore -metadata: - name: digitalocean-store -spec: - configuration: - destinationPath: "s3://BUCKET_NAME/path/to/folder" - endpointURL: "https://sfo3.digitaloceanspaces.com" - s3Credentials: - [...] - [...] -``` - -### Using Object Storage with a Private CA - -For object storage services (e.g., MinIO) that use HTTPS with certificates -signed by a private CA, set the `endpointCA` field in the `ObjectStore` -definition. Unless you already have it, create a Kubernetes `Secret` with the -CA bundle: - -```sh -kubectl create secret generic my-ca-secret --from-file=ca.crt -``` - -Then reference it: - -```yaml -apiVersion: barmancloud.cnpg.io/v1 -kind: ObjectStore -metadata: - name: minio-store -spec: - configuration: - endpointURL: - endpointCA: - name: my-ca-secret - key: ca.crt - [...] -``` - - -:::note -If you want `ConfigMaps` and `Secrets` to be **automatically** reloaded by -instances, you can add a label with the key `cnpg.io/reload` to the -`Secrets`/`ConfigMaps`. Otherwise, you will have to reload the instances using the -`kubectl cnpg reload` subcommand. -::: - ---- - -## Azure Blob Storage - -[Azure Blob Storage](https://azure.microsoft.com/en-us/services/storage/blobs/) -is Microsoft’s cloud-based object storage solution. - -Barman Cloud supports the following authentication methods: - -- [Connection String](https://learn.microsoft.com/en-us/azure/storage/common/storage-configure-connection-string) -- Storage Account Name + [Access Key](https://learn.microsoft.com/en-us/azure/storage/common/storage-account-keys-manage) -- Storage Account Name + [SAS Token](https://learn.microsoft.com/en-us/azure/storage/blobs/sas-service-create) -- [Azure AD Workload Identity](https://azure.github.io/azure-workload-identity/docs/introduction.html) - -### Azure AD Workload Identity - -This method avoids storing credentials in Kubernetes via the -`.spec.configuration.inheritFromAzureAD` option: - -```yaml -apiVersion: barmancloud.cnpg.io/v1 -kind: ObjectStore -metadata: - name: azure-store -spec: - configuration: - destinationPath: "" - azureCredentials: - inheritFromAzureAD: true - [...] -``` - -### Access Key, SAS Token, or Connection String - -Store credentials in a Kubernetes secret: - -```sh -kubectl create secret generic azure-creds \ - --from-literal=AZURE_STORAGE_ACCOUNT= \ - --from-literal=AZURE_STORAGE_KEY= \ - --from-literal=AZURE_STORAGE_SAS_TOKEN= \ - --from-literal=AZURE_STORAGE_CONNECTION_STRING= -``` - -Then reference the required keys in your `ObjectStore`: - -```yaml -apiVersion: barmancloud.cnpg.io/v1 -kind: ObjectStore -metadata: - name: azure-store -spec: - configuration: - destinationPath: "" - azureCredentials: - connectionString: - name: azure-creds - key: AZURE_CONNECTION_STRING - storageAccount: - name: azure-creds - key: AZURE_STORAGE_ACCOUNT - storageKey: - name: azure-creds - key: AZURE_STORAGE_KEY - storageSasToken: - name: azure-creds - key: AZURE_STORAGE_SAS_TOKEN - [...] -``` - -For Azure Blob, the destination path format is: - -``` -://..core.windows.net// -``` - -### Azure-Compatible Providers - -If you're using a different implementation (e.g., Azurite or emulator): - -``` -://:/// -``` - ---- - -## Google Cloud Storage - -[Google Cloud Storage](https://cloud.google.com/storage/) is supported with two -authentication modes: - -- **GKE Workload Identity** (recommended inside Google Kubernetes Engine) -- **Service Account JSON key** via the `GOOGLE_APPLICATION_CREDENTIALS` environment variable - -### GKE Workload Identity - -Use the [Workload Identity authentication](https://cloud.google.com/kubernetes-engine/docs/how-to/workload-identity) -when running in GKE: - -1. Set `googleCredentials.gkeEnvironment` to `true` in the `ObjectStore` - resource -2. Annotate the `serviceAccountTemplate` in the `Cluster` resource with the GCP - service account - -For example, in the `ObjectStore` resource: - -```yaml -apiVersion: barmancloud.cnpg.io/v1 -kind: ObjectStore -metadata: - name: google-store -spec: - configuration: - destinationPath: "gs:///" - googleCredentials: - gkeEnvironment: true -``` - -And in the `Cluster` resource: - -```yaml -apiVersion: postgresql.cnpg.io/v1 -kind: Cluster -spec: - serviceAccountTemplate: - metadata: - annotations: - iam.gke.io/gcp-service-account: [...].iam.gserviceaccount.com -``` - -### Service Account JSON Key - -Follow Google’s [authentication setup](https://cloud.google.com/docs/authentication/getting-started), -then: - -```sh -kubectl create secret generic backup-creds --from-file=gcsCredentials=gcs_credentials_file.json -``` - -```yaml -apiVersion: barmancloud.cnpg.io/v1 -kind: ObjectStore -metadata: - name: google-store -spec: - configuration: - destinationPath: "gs:///" - googleCredentials: - applicationCredentials: - name: backup-creds - key: gcsCredentials - [...] -``` - -:::important -This authentication method generates a JSON file within the container -with all the credentials required to access your Google Cloud Storage -bucket. As a result, if someone gains access to the `Pod`, they will also have -write permissions to the bucket. -::: - ---- - - -## MinIO Object Store - -In order to use the Tenant resource you first need to deploy the -[MinIO operator](https://docs.min.io/community/minio-object-store/operations/deployments/installation.html). -For the latest documentation of MinIO, please refer to the -[MinIO official documentation](https://docs.min.io/community/minio-object-store/). - -MinIO Object Store's API is compatible with S3, and the default configuration of the Tenant -will create these services: -- `-console` on port 9090 (with autocert) or 9443 (without autocert) -- `-hl` on port 9000 -Where `` is the `metadata.name` you assigned to your Tenant resource. - -:::note -The `-console` service will only be available if you have enabled the -[MinIO Console](https://docs.min.io/community/minio-object-store/administration/minio-console.html). - -For example, the following Tenant: -```yml -apiVersion: minio.min.io/v2 -kind: Tenant -metadata: - name: cnpg-backups -spec: - [...] -``` -would have services called `cnpg-backups-console` and `cnpg-backups-hl` respectively. - -The `console` service is for managing the tenant, while the `hl` service exposes the S3 -compatible API. If your tenant is configured with `requestAutoCert` you will communicate -to these services over HTTPS, if not you will use HTTP. - -For authentication you can use your username and password, or create an access key. -Whichever method you choose, it has to be stored as a secret. - -```sh -kubectl create secret generic minio-creds \ - --from-literal=MINIO_ACCESS_KEY= \ - --from-literal=MINIO_SECRET_KEY= -``` - -Finally, create the Barman ObjectStore: - -```yaml -apiVersion: barmancloud.cnpg.io/v1 -kind: ObjectStore -metadata: - name: minio-store -spec: - configuration: - destinationPath: s3://BUCKET_NAME/ - endpointURL: http://-hl:9000 - s3Credentials: - accessKeyId: - name: minio-creds - key: MINIO_ACCESS_KEY - secretAccessKey: - name: minio-creds - key: MINIO_SECRET_KEY - [...] -``` - -:::important -Verify on `s3://BUCKET_NAME/` the presence of archived WAL files before -proceeding with a backup. -::: - ---- diff --git a/web/versioned_docs/version-0.10.0/observability.md b/web/versioned_docs/version-0.10.0/observability.md deleted file mode 100644 index 274b973..0000000 --- a/web/versioned_docs/version-0.10.0/observability.md +++ /dev/null @@ -1,24 +0,0 @@ ---- -sidebar_position: 55 ---- - -# Observability - - - -The Barman Cloud Plugin exposes the following metrics through the native -Prometheus exporter of the instance manager: - -- `barman_cloud_cloudnative_pg_io_last_failed_backup_timestamp`: - the UNIX timestamp of the most recent failed backup. - -- `barman_cloud_cloudnative_pg_io_last_available_backup_timestamp`: - the UNIX timestamp of the most recent successfully available backup. - -- `barman_cloud_cloudnative_pg_io_first_recoverability_point`: - the UNIX timestamp representing the earliest point in time from which the - cluster can be recovered. - -These metrics supersede the previously available in-core metrics that used the -`cnpg_collector` prefix. The new metrics are exposed under the -`barman_cloud_cloudnative_pg_io` prefix instead. diff --git a/web/versioned_docs/version-0.10.0/parameters.md b/web/versioned_docs/version-0.10.0/parameters.md deleted file mode 100644 index ca0cd2b..0000000 --- a/web/versioned_docs/version-0.10.0/parameters.md +++ /dev/null @@ -1,19 +0,0 @@ ---- -sidebar_position: 100 ---- - -# Parameters - - - -The following parameters are available for the Barman Cloud Plugin: - -- `barmanObjectName`: references the `ObjectStore` resource to be used by the - plugin. -- `serverName`: Specifies the server name in the object store. - -:::important -The `serverName` parameter in the `ObjectStore` resource is retained solely for -API compatibility with the in-tree `barmanObjectStore` and must always be left empty. -When needed, use the `serverName` plugin parameter in the Cluster configuration instead. -::: diff --git a/web/versioned_docs/version-0.10.0/plugin-barman-cloud.v1.md b/web/versioned_docs/version-0.10.0/plugin-barman-cloud.v1.md deleted file mode 100644 index 7bd607c..0000000 --- a/web/versioned_docs/version-0.10.0/plugin-barman-cloud.v1.md +++ /dev/null @@ -1,108 +0,0 @@ -# API Reference - -## Packages -- [barmancloud.cnpg.io/v1](#barmancloudcnpgiov1) - - -## barmancloud.cnpg.io/v1 - -Package v1 contains API Schema definitions for the barmancloud v1 API group - -### Resource Types -- [ObjectStore](#objectstore) - - - -#### InstanceSidecarConfiguration - - - -InstanceSidecarConfiguration defines the configuration for the sidecar that runs in the instance pods. - - - -_Appears in:_ -- [ObjectStoreSpec](#objectstorespec) - -| Field | Description | Required | Default | Validation | -| --- | --- | --- | --- | --- | -| `env` _[EnvVar](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#envvar-v1-core) array_ | The environment to be explicitly passed to the sidecar | | | | -| `retentionPolicyIntervalSeconds` _integer_ | The retentionCheckInterval defines the frequency at which the
system checks and enforces retention policies. | | 1800 | | -| `resources` _[ResourceRequirements](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcerequirements-v1-core)_ | Resources define cpu/memory requests and limits for the sidecar that runs in the instance pods. | | | | -| `additionalContainerArgs` _string array_ | AdditionalContainerArgs is an optional list of command-line arguments
to be passed to the sidecar container when it starts.
The provided arguments are appended to the container’s default arguments. | | | | -| `logLevel` _string_ | The log level for PostgreSQL instances. Valid values are: `error`, `warning`, `info` (default), `debug`, `trace` | | info | Enum: [error warning info debug trace]
| - - -#### ObjectStore - - - -ObjectStore is the Schema for the objectstores API. - - - - - -| Field | Description | Required | Default | Validation | -| --- | --- | --- | --- | --- | -| `apiVersion` _string_ | `barmancloud.cnpg.io/v1` | True | | | -| `kind` _string_ | `ObjectStore` | True | | | -| `metadata` _[ObjectMeta](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#objectmeta-v1-meta)_ | Refer to Kubernetes API documentation for fields of `metadata`. | True | | | -| `spec` _[ObjectStoreSpec](#objectstorespec)_ | Specification of the desired behavior of the ObjectStore.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status | True | | | -| `status` _[ObjectStoreStatus](#objectstorestatus)_ | Most recently observed status of the ObjectStore. This data may not be up to
date. Populated by the system. Read-only.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status | | | | - - -#### ObjectStoreSpec - - - -ObjectStoreSpec defines the desired state of ObjectStore. - - - -_Appears in:_ -- [ObjectStore](#objectstore) - -| Field | Description | Required | Default | Validation | -| --- | --- | --- | --- | --- | -| `configuration` _[BarmanObjectStoreConfiguration](https://pkg.go.dev/github.com/cloudnative-pg/barman-cloud/pkg/api#BarmanObjectStoreConfiguration)_ | The configuration for the barman-cloud tool suite | True | | | -| `retentionPolicy` _string_ | RetentionPolicy is the retention policy to be used for backups
and WALs (i.e. '60d'). The retention policy is expressed in the form
of `XXu` where `XX` is a positive integer and `u` is in `[dwm]` -
days, weeks, months. | | | Pattern: `^[1-9][0-9]*[dwm]$`
| -| `instanceSidecarConfiguration` _[InstanceSidecarConfiguration](#instancesidecarconfiguration)_ | The configuration for the sidecar that runs in the instance pods | | | | - - -#### ObjectStoreStatus - - - -ObjectStoreStatus defines the observed state of ObjectStore. - - - -_Appears in:_ -- [ObjectStore](#objectstore) - -| Field | Description | Required | Default | Validation | -| --- | --- | --- | --- | --- | -| `serverRecoveryWindow` _object (keys:string, values:[RecoveryWindow](#recoverywindow))_ | ServerRecoveryWindow maps each server to its recovery window | True | | | - - -#### RecoveryWindow - - - -RecoveryWindow represents the time span between the first -recoverability point and the last successful backup of a PostgreSQL -server, defining the period during which data can be restored. - - - -_Appears in:_ -- [ObjectStoreStatus](#objectstorestatus) - -| Field | Description | Required | Default | Validation | -| --- | --- | --- | --- | --- | -| `firstRecoverabilityPoint` _[Time](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#time-v1-meta)_ | The first recoverability point in a PostgreSQL server refers to
the earliest point in time to which the database can be
restored. | True | | | -| `lastSuccessfulBackupTime` _[Time](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#time-v1-meta)_ | The last successful backup time | True | | | -| `lastFailedBackupTime` _[Time](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#time-v1-meta)_ | The last failed backup time | True | | | - - diff --git a/web/versioned_docs/version-0.10.0/resource-name-migration.md b/web/versioned_docs/version-0.10.0/resource-name-migration.md deleted file mode 100644 index f5c1cc3..0000000 --- a/web/versioned_docs/version-0.10.0/resource-name-migration.md +++ /dev/null @@ -1,219 +0,0 @@ ---- -sidebar_position: 90 ---- - -# Resource name migration guide - - - -:::warning -Before proceeding with the migration process, please: -1. **Read this guide in its entirety** to understand what changes will be made -2. **Test in a non-production environment** first if possible -3. **Ensure you have proper backups** of your cluster configuration - -This migration will delete old RBAC resources only after the -`plugin-barman-cloud` upgrade. While the operation is designed to be safe, you -should review and understand the changes before proceeding. The maintainers of -this project are not responsible for any issues that may arise during -migration. - -**Note:** This guide assumes you are using the default `cnpg-system` namespace. -::: - -## Overview - -Starting from version **0.8.0**, the `plugin-barman-cloud` deployment manifests -use more specific, prefixed resource names to avoid conflicts with other -components deployed in the same Kubernetes cluster. - -## What Changed - -The following resources have been renamed to use proper prefixes. - -### Cluster-scoped Resources - -| Old Name | New Name | -|----------------------------|------------------------------------------| -| `metrics-auth-role` | `barman-plugin-metrics-auth-role` | -| `metrics-auth-rolebinding` | `barman-plugin-metrics-auth-rolebinding` | -| `metrics-reader` | `barman-plugin-metrics-reader` | -| `objectstore-viewer-role` | `barman-plugin-objectstore-viewer-role` | -| `objectstore-editor-role` | `barman-plugin-objectstore-editor-role` | - -### Namespace-scoped Resources - -| Old Name | New Name | Namespace | -|-------------------------------|---------------------------------------------|---------------| -| `leader-election-role` | `barman-plugin-leader-election-role` | `cnpg-system` | -| `leader-election-rolebinding` | `barman-plugin-leader-election-rolebinding` | `cnpg-system` | - -## Why This Change? - -Using generic names for cluster-wide resources is discouraged as they may -conflict with other components deployed in the same cluster. The new names make -it clear that these resources belong to the Barman Cloud plugin and help avoid -naming collisions. - -## Migration Instructions - -This three steps migration process is straightforward and can be completed with -a few `kubectl` commands. - -### Step 1: Upgrade plugin-barman-cloud - -Please refer to the [Installation](installation.mdx) section to deploy the new -`plugin-barman-cloud` release. - -### Step 2: Delete Old Cluster-scoped Resources - -:::danger Verify Resources Before Deletion -**IMPORTANT**: The old resource names are generic and could potentially belong -to other components in your cluster. - -**Before deleting each resource, verify it belongs to the Barman Cloud plugin -by checking:** -- For `objectstore-*` roles: Look for `barmancloud.cnpg.io` in the API groups -- For `metrics-*` roles: Check if they reference the `plugin-barman-cloud` - ServiceAccount in `cnpg-system` namespace -- For other roles: Look for labels like `app.kubernetes.io/name: plugin-barman-cloud` - -If a resource doesn't have these indicators, **DO NOT DELETE IT** as it may -belong to another application. - -Carefully review the output of each verification command before proceeding with -the `delete`. -::: - -:::tip Dry Run First -You can add `--dry-run=client` to any `kubectl delete` command to preview what -would be deleted without actually removing anything. -::: - -**Only proceed if you've verified these resources belong to the Barman Cloud -plugin (see warning above).** - -For each resource below, first verify it belongs to Barman Cloud, then delete -it: - -```bash -# 1. Check metrics-auth-rolebinding FIRST (we'll check the role after) -# Look for references to plugin-barman-cloud ServiceAccount -kubectl describe clusterrolebinding metrics-auth-rolebinding -# If it references plugin-barman-cloud ServiceAccount in cnpg-system namespace, -# delete it: -kubectl delete clusterrolebinding metrics-auth-rolebinding - -# 2. Check metrics-auth-role -# Look for references to authentication.k8s.io and authorization.k8s.io -kubectl describe clusterrole metrics-auth-role -# Verify it's not being used by any other rolebindings: -kubectl get clusterrolebinding -o json \ - | jq -r '.items[] | select(.roleRef.name=="metrics-auth-role") \ - | .metadata.name' -# If the above returns nothing (role is not in use) and the role looks like the -# Barman Cloud one, delete it (see warnings section): -kubectl delete clusterrole metrics-auth-role - -# 3. Check objectstore-viewer-role -# Look for barmancloud.cnpg.io API group or -# for `app.kubernetes.io/name: plugin-barman-cloud` label -kubectl describe clusterrole objectstore-viewer-role -# If it shows barmancloud.cnpg.io in API groups, delete it: -kubectl delete clusterrole objectstore-viewer-role - -# 4. Check objectstore-editor-role -# Look for barmancloud.cnpg.io API group or -# for `app.kubernetes.io/name: plugin-barman-cloud` label -kubectl describe clusterrole objectstore-editor-role -# If it shows barmancloud.cnpg.io in API groups, delete it: -kubectl delete clusterrole objectstore-editor-role - -# 5. Check metrics-reader (MOST DANGEROUS - very generic name) -# First, check if it's being used by any rolebindings OTHER than barman's: -kubectl get clusterrolebinding -o json | jq -r '.items[] \ - | select(.roleRef.name=="metrics-reader") \ - | "\(.metadata.name) -> \(.subjects[0].name) in \(.subjects[0].namespace)"' -# If this shows ANY rolebindings, review them carefully. Only proceed if -# they're all Barman-related. Then check the role itself: -kubectl describe clusterrole metrics-reader -# If it ONLY has nonResourceURLs: /metrics and NO other rolebindings use it, -# delete it: -kubectl delete clusterrole metrics-reader -``` - -:::warning -The `metrics-reader` role is particularly dangerous to delete blindly. Many -monitoring systems use this exact name. Only delete it if: - -1. You've verified it ONLY grants access to `/metrics` -2. No other rolebindings reference it (checked with the jq command above) -3. You're certain it was created by the Barman Cloud plugin - -If you're unsure, it's safer to leave it and let the new -`barman-plugin-metrics-reader` role coexist with it. -::: - -If any resource is not found during the `describe` command, that's okay - it -means it was never created or already deleted. Simply skip the delete command -for that resource. - -### Step 3: Delete Old Namespace-scoped Resources - -Delete the old namespace-scoped resources in the `cnpg-system` namespace: - -```bash -# Delete the old leader-election resources -kubectl delete role leader-election-role -n cnpg-system -kubectl delete rolebinding leader-election-rolebinding -n cnpg-system -``` - -If any resource is not found, that's okay - it means it was never created or -already deleted. - -## Impact - -- **Permissions:** If you have custom RBAC rules or tools that reference the - old resource names, they will need to be updated. -- **External Users:** If end users have been granted the - `objectstore-viewer-role` or `objectstore-editor-role`, they will need to be - re-granted the new role names (`barman-plugin-objectstore-viewer-role` and - `barman-plugin-objectstore-editor-role`). - -## Verification - -After migration, verify that the new resources are created: - -```bash -# Check cluster-scoped resources -kubectl get clusterrole | grep barman -kubectl get clusterrolebinding | grep barman - -# Check namespace-scoped resources -kubectl get role,rolebinding -n cnpg-system | grep barman -``` - -You should see the new prefixed resource names. - -## Troubleshooting - -### Plugin Not Starting After Migration - -If the plugin fails to start after migration, check: - -1. **ServiceAccount permissions:** Ensure the `plugin-barman-cloud` ServiceAccount is bound to the new roles: - ```bash - kubectl get clusterrolebinding barman-plugin-metrics-auth-rolebinding -o yaml - kubectl get rolebinding barman-plugin-leader-election-rolebinding -n cnpg-system -o yaml - ``` - -2. **Role references:** Verify that the rolebindings reference the correct role names: - ```bash - kubectl describe rolebinding barman-plugin-leader-election-rolebinding -n cnpg-system - kubectl describe clusterrolebinding barman-plugin-metrics-auth-rolebinding - ``` - -## Support - -If you encounter issues during migration, please open an issue on the [GitHub -repository](https://github.com/cloudnative-pg/plugin-barman-cloud/issues). diff --git a/web/versioned_docs/version-0.10.0/retention.md b/web/versioned_docs/version-0.10.0/retention.md deleted file mode 100644 index fefbd08..0000000 --- a/web/versioned_docs/version-0.10.0/retention.md +++ /dev/null @@ -1,38 +0,0 @@ ---- -sidebar_position: 60 ---- - -# Retention Policies - - - -The Barman Cloud Plugin supports **automated cleanup of obsolete backups** via -retention policies, configured in the `.spec.retentionPolicy` field of the -`ObjectStore` resource. - -:::note -This feature uses the `barman-cloud-backup-delete` command with the -`--retention-policy "RECOVERY WINDOW OF {{ value }} {{ unit }}"` syntax. -::: - -#### Example: 30-Day Retention Policy - -```yaml -apiVersion: barmancloud.cnpg.io/v1 -kind: ObjectStore -metadata: - name: my-store -spec: - [...] - retentionPolicy: "30d" -```` - -:::note -A **recovery window retention policy** ensures the cluster can be restored to -any point in time between the calculated *Point of Recoverability* (PoR) and -the latest WAL archive. The PoR is defined as `current time - recovery window`. -The **first valid backup** is the most recent backup completed before the PoR. -Backups older than that are marked as *obsolete* and deleted after the next -backup completes. -::: - diff --git a/web/versioned_docs/version-0.10.0/troubleshooting.md b/web/versioned_docs/version-0.10.0/troubleshooting.md deleted file mode 100644 index 2e3cb4d..0000000 --- a/web/versioned_docs/version-0.10.0/troubleshooting.md +++ /dev/null @@ -1,591 +0,0 @@ ---- -sidebar_position: 90 ---- - -# Troubleshooting - - - -This guide helps you diagnose and resolve common issues with the Barman Cloud -plugin. - -:::important -We are continuously improving the integration between CloudNativePG and the -Barman Cloud plugin as it moves toward greater stability and maturity. For this -reason, we recommend using the latest available version of both components. -See the [*Requirements* section](intro.md#requirements) for details. -::: - -:::note -The following commands assume you installed the CloudNativePG operator in -the default `cnpg-system` namespace. If you installed it in a different -namespace, adjust the commands accordingly. -::: - -## Viewing Logs - -To troubleshoot effectively, you’ll often need to review logs from multiple -sources: - -```sh -# View operator logs (includes plugin interaction logs) -kubectl logs -n cnpg-system deployment/cnpg-controller-manager -f - -# View plugin manager logs -kubectl logs -n cnpg-system deployment/barman-cloud -f - -# View sidecar container logs (Barman Cloud operations) -kubectl logs -n -c plugin-barman-cloud -f - -# View all containers in a pod -kubectl logs -n --all-containers=true - -# View previous container logs (if container restarted) -kubectl logs -n -c plugin-barman-cloud --previous -``` - -## Common Issues - -### Plugin Installation Issues - -#### Plugin pods not starting - -**Symptoms:** - -- Plugin pods stuck in `CrashLoopBackOff` or `Error` -- Plugin deployment not ready - -**Possible causes and solutions:** - -1. **Certificate issues** - - ```sh - # Check if cert-manager is installed and running - kubectl get pods -n cert-manager - - # Check if the plugin certificate is created - kubectl get certificates -n cnpg-system - ``` - - If cert-manager is not installed, install it first: - - ```sh - # Note: other installation methods for cert-manager are available - kubectl apply -f \ - https://github.com/cert-manager/cert-manager/releases/latest/download/cert-manager.yaml - ``` - - If you are using your own certificates without cert-manager, you will need - to verify the entire certificate chain yourself. - - -2. **Image pull errors** - - ```sh - # Check pod events for image pull errors - kubectl describe pod -n cnpg-system -l app=barman-cloud - ``` - - Verify the image exists and you have proper credentials if using a private - registry. - - -3. **Resource constraints** - - ```sh - # Check node resources - kubectl top nodes - kubectl describe nodes - ``` - - Make sure your cluster has sufficient CPU and memory resources. - -### Backup Failures - -#### Quick Backup Troubleshooting Checklist - -When a backup fails, follow these steps in order: - -1. **Check backup status**: - - ```sh - kubectl get backups.postgresql.cnpg.io -n - ``` -2. **Get error details and target pod**: - - ```sh - kubectl describe backups.postgresql.cnpg.io \ - -n - - kubectl get backups.postgresql.cnpg.io \ - -n \ - -o jsonpath='{.status.instanceID.podName}' - ``` -3. **Check the target pod’s sidecar logs**: - - ```sh - TARGET_POD=$(kubectl get backups.postgresql.cnpg.io \ - -n \ - -o jsonpath='{.status.instanceID.podName}') - - kubectl logs \ - -n $TARGET_POD -c plugin-barman-cloud \ - --tail=100 | grep -E "ERROR|FATAL|panic" - ``` -4. **Check cluster events**: - - ```sh - kubectl get events -n \ - --field-selector involvedObject.name= \ - --sort-by='.lastTimestamp' - ``` -5. **Verify plugin is running**: - - ```sh - kubectl get pods \ - -n cnpg-system -l app=barman-cloud - ``` -6. **Check operator logs**: - - ```sh - kubectl logs \ - -n cnpg-system deployment/cnpg-controller-manager \ - --tail=100 | grep -i "backup\|plugin" - ``` -7. **Check plugin manager logs**: - - ```sh - kubectl logs \ - -n cnpg-system deployment/barman-cloud --tail=100 - ``` - -#### Backup job fails immediately - -**Symptoms:** - -- Backup pods terminate with error -- No backup files appear in object storage -- Backup shows `failed` phase with various error messages - -**Common failure modes and solutions:** - -1. **"requested plugin is not available" errors** - - ``` - requested plugin is not available: barman - requested plugin is not available: barman-cloud - requested plugin is not available: barman-cloud.cloudnative-pg.io - ``` - - **Cause:** The plugin name in the Cluster configuration doesn’t match the - deployed plugin, or the plugin isn’t registered. - - **Solution:** - - a. **Check plugin registration:** - - ```sh - # If you have the `cnpg` plugin installed (v1.27.0+) - kubectl cnpg status -n - ``` - - Look for the "Plugins status" section: - ``` - Plugins status - Name Version Status Reported Operator Capabilities - ---- ------- ------ ------------------------------ - barman-cloud.cloudnative-pg.io 0.6.0 N/A Reconciler Hooks, Lifecycle Service - ``` - - b. **Verify plugin name in `Cluster` spec**: - - ```yaml - apiVersion: postgresql.cnpg.io/v1 - kind: Cluster - spec: - plugins: - - name: barman-cloud.cloudnative-pg.io - parameters: - barmanObjectName: - ``` - - c. **Check plugin deployment is running**: - - ```sh - kubectl get deployment -n cnpg-system barman-cloud - ``` - -2. **"rpc error: code = Unknown desc = panic caught: assignment to entry in nil map" errors** - - **Cause:** Misconfiguration in the `ObjectStore` (e.g., typo or missing field). - - **Solution:** - - - Review sidecar logs for details - - Verify `ObjectStore` configuration and secrets - - Common issues include: - - Missing or incorrect secret references - - Typos in configuration parameters - - Missing required environment variables in secrets - -#### Backup performance issues - -**Symptoms:** - -- Backups take extremely long -- Backups timeout - -**Plugin-specific considerations:** - -1. **Check `ObjectStore` parallelism settings** - - Adjust `maxParallel` in `ObjectStore` configuration - - Monitor sidecar container resource usage during backups - -2. **Verify plugin resource allocation** - - Check if the sidecar container has sufficient CPU/memory - - Review plugin container logs for resource-related warnings - -:::tip -For Barman-specific features like compression, encryption, and performance -tuning, refer to the [Barman documentation](https://docs.pgbarman.org/latest/). -::: - -### WAL Archiving Issues - -#### WAL archiving stops - -**Symptoms:** - -- WAL files accumulate on the primary -- Cluster shows WAL archiving warnings -- Sidecar logs show WAL errors - -**Debugging steps:** - -1. **Check plugin sidecar logs for WAL archiving errors** - ```sh - # Check recent WAL archive operations in sidecar - kubectl logs -n -c plugin-barman-cloud \ - --tail=50 | grep -i wal - ``` - -2. **Check ObjectStore configuration for WAL settings** - - Ensure ObjectStore has proper WAL retention settings - - Verify credentials have permissions for WAL operations - -### Restore Issues - -#### Restore fails during recovery - -**Symptoms:** - -- New cluster stuck in recovery -- Plugin sidecar shows restore errors -- PostgreSQL won’t start - -**Debugging steps:** - -1. **Check plugin sidecar logs during restore** - - ```sh - # Check the sidecar logs on the recovering cluster pods - kubectl logs -n \ - -c plugin-barman-cloud --tail=100 - - # Look for restore-related errors - kubectl logs -n \ - -c plugin-barman-cloud | grep -E "restore|recovery|ERROR" - ``` - -2. **Verify plugin can access backups** - - ```sh - # Check if `ObjectStore` is properly configured for restore - kubectl get objectstores.barmancloud.cnpg.io \ - -n -o yaml - - # Check PostgreSQL recovery logs - kubectl logs -n \ - -c postgres | grep -i recovery - ``` - -:::tip -For detailed Barman restore operations and troubleshooting, refer to the -[Barman documentation](https://docs.pgbarman.org/latest/barman-cloud-restore.html). -::: - -#### Point-in-time recovery (PITR) configuration issues - -**Symptoms:** - -- PITR doesn’t reach target time -- WAL access errors -- Recovery halts early - -**Debugging steps:** - -1. **Verify PITR configuration in the `Cluster` spec** - - ```yaml - apiVersion: postgresql.cnpg.io/v1 - kind: Cluster - metadata: - name: - spec: - storage: - size: 1Gi - - bootstrap: - recovery: - source: origin - recoveryTarget: - targetTime: "2024-01-15T10:30:00Z" - - externalClusters: - - name: origin - plugin: - enabled: true - name: barman-cloud.cloudnative-pg.io - parameters: - barmanObjectName: - serverName: - ``` - -2. **Check sidecar logs for WAL-related errors** - - ```sh - kubectl logs -n \ - -c plugin-barman-cloud | grep -i wal - ``` - -:::note -Timestamps without an explicit timezone suffix -(e.g., `2024-01-15 10:30:00`) are interpreted as UTC. -::: - -:::warning -Always specify an explicit timezone in your timestamp to avoid ambiguity. -For example, use `2024-01-15T10:30:00Z` or `2024-01-15T10:30:00+02:00` -instead of `2024-01-15 10:30:00`. -::: - -:::note -For detailed PITR configuration and WAL management, see the -[Barman PITR documentation](https://docs.pgbarman.org/latest/). -::: - -### Plugin Configuration Issues - -#### Plugin cannot connect to object storage - -**Symptoms:** - -- Sidecar logs show connection errors -- Backups fail with authentication or network errors -- `ObjectStore` resource reports errors - -**Solution:** - -1. **Verify `ObjectStore` CRD configuration and secrets** - - ```sh - # Check ObjectStore resource status - kubectl get objectstores.barmancloud.cnpg.io \ - -n -o yaml - - # Verify the secret exists and has correct keys for your provider - kubectl get secret -n \ - -o jsonpath='{.data}' | jq 'keys' - ``` - -2. **Check sidecar logs for connectivity issues** - ```sh - kubectl logs -n \ - -c plugin-barman-cloud | grep -E "connect|timeout|SSL|cert" - ``` - -3. **Adjust provider-specific settings (endpoint, path style, etc.)** - - See [Object Store Configuration](object_stores.md) for provider-specific settings - - Ensure `endpointURL` match your storage type - - Verify network policies allow egress to your storage provider - -## Diagnostic Commands - -### Using the `cnpg` plugin for `kubectl` - -The `cnpg` plugin for `kubectl` provides extended debugging capabilities. -Keep it updated: - -```sh -# Install or update the `cnpg` plugin -kubectl krew install cnpg -# Or using an alternative method: https://cloudnative-pg.io/documentation/current/kubectl-plugin/#install - -# Check plugin status (requires CNPG 1.27.0+) -kubectl cnpg status -n - -# View cluster status in detail -kubectl cnpg status -n --verbose -``` - -## Getting Help - -If problems persist: - -1. **Check the documentation** - - - [Installation Guide](installation.mdx) - - [Object Store Configuration](object_stores.md) (for provider-specific settings) - - [Usage Examples](usage.md) - - -2. **Gather diagnostic information** - - ```sh - # Create a diagnostic bundle (⚠️ sanitize these before sharing!) - kubectl get objectstores.barmancloud.cnpg.io -A -o yaml > /tmp/objectstores.yaml - kubectl get clusters.postgresql.cnpg.io -A -o yaml > /tmp/clusters.yaml - kubectl logs -n cnpg-system deployment/barman-cloud --tail=1000 > /tmp/plugin.log - ``` - - -3. **Community support** - - - CloudNativePG Slack: [#cloudnativepg-users](https://cloud-native.slack.com/messages/cloudnativepg-users) - - GitHub Issues: [plugin-barman-cloud](https://github.com/cloudnative-pg/plugin-barman-cloud/issues) - - -4. **Include when reporting** - - - CloudNativePG version - - Plugin version - - Kubernetes version - - Cloud provider and region - - Relevant configuration (⚠️ sanitize/redact sensitive information) - - Error messages and logs - - Steps to reproduce - -## Known Issues and Limitations - -### Current Known Issues - -1. **Migration compatibility**: After migrating from in-tree backup to the - plugin, the `kubectl cnpg backup` command syntax has changed - ([#353](https://github.com/cloudnative-pg/plugin-barman-cloud/issues/353)): - - ```sh - # Old command (in-tree, no longer works after migration) - kubectl cnpg backup -n \ - --method=barmanObjectStore - - # New command (plugin-based) - kubectl cnpg backup -n \ - --method=plugin --plugin-name=barman-cloud.cloudnative-pg.io - ``` - -### Plugin Limitations - -1. **Installation method**: Currently only supports manifest and Kustomize - installation ([#351](https://github.com/cloudnative-pg/plugin-barman-cloud/issues/351) - - Helm chart requested) - -2. **Sidecar resource sharing**: The plugin sidecar container shares pod - resources with PostgreSQL - -3. **Plugin restart behavior**: Restarting the sidecar container requires - restarting the entire PostgreSQL pod - -## Recap of General Debugging Steps - -### Check Backup Status and Identify the Target Instance - -```sh -# List all backups and their status -kubectl get backups.postgresql.cnpg.io -n - -# Get detailed backup information including error messages and target instance -kubectl describe backups.postgresql.cnpg.io \ - -n - -# Extract the target pod name from a failed backup -kubectl get backups.postgresql.cnpg.io \ - -n \ - -o jsonpath='{.status.instanceID.podName}' - -# Get more details including the target pod, method, phase, and error -kubectl get backups.postgresql.cnpg.io \ - -n \ - -o jsonpath='Pod: {.status.instanceID.podName}{"\n"}Method: {.status.method}{"\n"}Phase: {.status.phase}{"\n"}Error: {.status.error}{"\n"}' - -# Check the cluster status for backup-related information -kubectl cnpg status -n --verbose -``` - -### Check Sidecar Logs on the Backup Target Pod - -```sh -# Identify which pod was the backup target (from the previous step) -TARGET_POD=$(kubectl get backups.postgresql.cnpg.io \ - -n \ - -o jsonpath='{.status.instanceID.podName}') -echo "Backup target pod: $TARGET_POD" - -# Check the sidecar logs on the specific target pod -kubectl logs -n $TARGET_POD \ - -c plugin-barman-cloud --tail=100 - -# Follow the logs in real time -kubectl logs -n $TARGET_POD \ - -c plugin-barman-cloud -f - -# Check for specific errors in the target pod around the backup time -kubectl logs -n $TARGET_POD \ - -c plugin-barman-cloud --since=10m | grep -E "ERROR|FATAL|panic|failed" - -# Alternative: List all cluster pods and their roles -kubectl get pods -n -l cnpg.io/cluster= \ - -o custom-columns=NAME:.metadata.name,ROLE:.metadata.labels.cnpg\\.io/instanceRole,INSTANCE:.metadata.labels.cnpg\\.io/instanceName - -# Check sidecar logs on ALL cluster pods (if the target is unclear) -for pod in $(kubectl get pods -n -l cnpg.io/cluster= -o name); do - echo "=== Checking $pod ===" - kubectl logs -n $pod -c plugin-barman-cloud \ - --tail=20 | grep -i error || echo "No errors found" -done -``` - -### Check Events for Backup-Related Issues - -```sh -# Check events for the cluster -kubectl get events -n \ - --field-selector involvedObject.name= - -# Check events for failed backups -kubectl get events -n \ - --field-selector involvedObject.kind=Backup - -# Get all recent events in the namespace -kubectl get events -n --sort-by='.lastTimestamp' | tail -20 -``` - -### Verify `ObjectStore` Configuration - -```sh -# Check the ObjectStore resource -kubectl get objectstores.barmancloud.cnpg.io \ - -n -o yaml - -# Verify the secret exists and has the correct keys -kubectl get secret -n -o yaml -# Alternatively -kubectl get secret -n -o jsonpath='{.data}' | jq 'keys' -``` - -### Common Error Messages and Solutions - -* **"AccessDenied" or "403 Forbidden"** β€” Check cloud credentials and bucket permissions. -* **"NoSuchBucket"** β€” Verify the bucket exists and the endpoint URL is correct. -* **"Connection timeout"** β€” Check network connectivity and firewall rules. -* **"SSL certificate problem"** β€” For self-signed certificates, verify the CA bundle configuration. - diff --git a/web/versioned_docs/version-0.10.0/upgrades.mdx b/web/versioned_docs/version-0.10.0/upgrades.mdx deleted file mode 100644 index 0ab9ddb..0000000 --- a/web/versioned_docs/version-0.10.0/upgrades.mdx +++ /dev/null @@ -1,16 +0,0 @@ ---- -sidebar_position: 25 ---- - -# Upgrades - - - -You can upgrade the plugin simply by installing the new version. Unless -explicitly stated below or in the release notes, no special steps are required. - -## Upgrading to version 0.8.x from previous versions - -Version **0.8.0** introduces breaking changes to resource naming. -To complete the upgrade successfully, follow the instructions in the -["Resource name migration guide"](resource-name-migration.md). diff --git a/web/versioned_docs/version-0.10.0/usage.md b/web/versioned_docs/version-0.10.0/usage.md deleted file mode 100644 index 6406d38..0000000 --- a/web/versioned_docs/version-0.10.0/usage.md +++ /dev/null @@ -1,283 +0,0 @@ ---- -sidebar_position: 30 ---- - -# Using the Barman Cloud Plugin - - - -After [installing the plugin](installation.mdx) in the same namespace as the -CloudNativePG operator, enabling your PostgreSQL cluster to use the Barman -Cloud Plugin involves just a few steps: - -- Defining the object store containing your WAL archive and base backups, using - your preferred [provider](object_stores.md) -- Instructing the Postgres cluster to use the Barman Cloud Plugin - -From that moment, you’ll be able to issue on-demand backups or define a backup -schedule, as well as rely on the object store for recovery operations. - -The rest of this page details each step, using MinIO as object store provider. - -## Defining the `ObjectStore` - -An `ObjectStore` resource must be created for each object store used in your -PostgreSQL architecture. Here's an example configuration using MinIO: - -```yaml -apiVersion: barmancloud.cnpg.io/v1 -kind: ObjectStore -metadata: - name: minio-store -spec: - configuration: - destinationPath: s3://backups/ - endpointURL: http://minio:9000 - s3Credentials: - accessKeyId: - name: minio - key: ACCESS_KEY_ID - secretAccessKey: - name: minio - key: ACCESS_SECRET_KEY - wal: - compression: gzip -``` - -The `.spec.configuration` schema follows the same format as the -[in-tree barman-cloud support](https://pkg.go.dev/github.com/cloudnative-pg/barman-cloud/pkg/api#BarmanObjectStoreConfiguration). -Refer to [the CloudNativePG documentation](https://cloudnative-pg.io/documentation/current/appendixes/backup_barmanobjectstore/) -for additional details. - -:::important -The `serverName` parameter in the `ObjectStore` resource is retained solely for -API compatibility with the in-tree `barmanObjectStore` and must always be left empty. -When needed, use the `serverName` plugin parameter in the Cluster configuration instead. -::: - -## Configuring WAL Archiving - -Once the `ObjectStore` is defined, you can configure your PostgreSQL cluster -to archive WALs by referencing the store in the `.spec.plugins` section: - -```yaml -apiVersion: postgresql.cnpg.io/v1 -kind: Cluster -metadata: - name: cluster-example -spec: - instances: 3 - imagePullPolicy: Always - plugins: - - name: barman-cloud.cloudnative-pg.io - isWALArchiver: true - parameters: - barmanObjectName: minio-store - storage: - size: 1Gi -``` - -This configuration enables both WAL archiving and data directory backups. - -## Performing a Base Backup - -Once WAL archiving is enabled, the cluster is ready for backups. Backups can be -created either declaratively (with YAML manifests) or imperatively (with the -`cnpg` plugin). - -### Declarative approach (YAML manifest) - -Create a backup resource by applying a YAML manifest: - -```yaml -apiVersion: postgresql.cnpg.io/v1 -kind: Backup -metadata: - name: backup-example -spec: - cluster: - name: cluster-example - method: plugin - pluginConfiguration: - name: barman-cloud.cloudnative-pg.io -``` - -### Imperative approach (using the `cnpg` plugin) - -The quickest way to trigger an on-demand backup is with the `cnpg` plugin: - -```bash -kubectl cnpg backup -n \ - --method=plugin \ - --plugin-name=barman-cloud.cloudnative-pg.io -``` - -:::note Migration from in-tree backups -If you are migrating from the in-tree backup system, note the change in syntax: - -```bash -# Old command (in-tree backup) -kubectl cnpg backup -n --method=barmanObjectStore - -# New command (plugin-based backup) -kubectl cnpg backup -n \ - --method=plugin \ - --plugin-name=barman-cloud.cloudnative-pg.io -``` -::: - -## Restoring a Cluster - -To restore a cluster from an object store, create a new `Cluster` resource that -references the store containing the backup. Below is an example configuration: - -```yaml -apiVersion: postgresql.cnpg.io/v1 -kind: Cluster -metadata: - name: cluster-restore -spec: - instances: 3 - imagePullPolicy: IfNotPresent - bootstrap: - recovery: - source: source - externalClusters: - - name: source - plugin: - name: barman-cloud.cloudnative-pg.io - parameters: - barmanObjectName: minio-store - serverName: cluster-example - storage: - size: 1Gi -``` - -:::important -The above configuration does **not** enable WAL archiving for the restored cluster. -::: - -To enable WAL archiving for the restored cluster, include the `.spec.plugins` -section alongside the `externalClusters.plugin` section, as shown below: - -```yaml -apiVersion: postgresql.cnpg.io/v1 -kind: Cluster -metadata: - name: cluster-restore -spec: - instances: 3 - imagePullPolicy: IfNotPresent - bootstrap: - recovery: - source: source - plugins: - - name: barman-cloud.cloudnative-pg.io - isWALArchiver: true - parameters: - # Backup Object Store (push, read-write) - barmanObjectName: minio-store-bis - externalClusters: - - name: source - plugin: - name: barman-cloud.cloudnative-pg.io - parameters: - # Recovery Object Store (pull, read-only) - barmanObjectName: minio-store - serverName: cluster-example - storage: - size: 1Gi -``` - -The same object store may be used for both transaction log archiving and -restoring a cluster, or you can configure separate stores for these purposes. - -## Configuring Replica Clusters - -You can set up a distributed topology by combining the previously defined -configurations with the `.spec.replica` section. Below is an example of how to -define a replica cluster: - -```yaml -apiVersion: postgresql.cnpg.io/v1 -kind: Cluster -metadata: - name: cluster-dc-a -spec: - instances: 3 - primaryUpdateStrategy: unsupervised - - storage: - storageClass: csi-hostpath-sc - size: 1Gi - - plugins: - - name: barman-cloud.cloudnative-pg.io - isWALArchiver: true - parameters: - barmanObjectName: minio-store-a - - replica: - self: cluster-dc-a - primary: cluster-dc-a - source: cluster-dc-b - - externalClusters: - - name: cluster-dc-a - plugin: - name: barman-cloud.cloudnative-pg.io - parameters: - barmanObjectName: minio-store-a - - - name: cluster-dc-b - plugin: - name: barman-cloud.cloudnative-pg.io - parameters: - barmanObjectName: minio-store-b -``` - -## Configuring the plugin instance sidecar - -The Barman Cloud Plugin runs as a sidecar container next to each PostgreSQL -instance pod. It manages backup, WAL archiving, and restore processes. - -Configuration comes from multiple `ObjectStore` resources: - -1. The one referenced in the - `.spec.plugins` section of the `Cluster`. This is the - object store used for WAL archiving and base backups. -2. The one referenced in the external cluster - used in the `.spec.replica.source` section of the `Cluster`. This is - used by the log-shipping designated primary to get the WAL files. -3. The one referenced in the - `.spec.bootstrap.recovery.source` section of the `Cluster`. Used by - the initial recovery job to create the cluster from an existing backup. - -You can fine-tune sidecar behavior in the `.spec.instanceSidecarConfiguration` -of your ObjectStore. These settings apply to all PostgreSQL instances that use -this object store. Any updates take effect at the next `Cluster` reconciliation, -and could generate a rollout of the `Cluster`. - -```yaml -apiVersion: barmancloud.cnpg.io/v1 -kind: ObjectStore -metadata: - name: minio-store -spec: - configuration: - # [...] - instanceSidecarConfiguration: - retentionPolicyIntervalSeconds: 1800 - resources: - requests: - memory: "XXX" - cpu: "YYY" - limits: - memory: "XXX" - cpu: "YYY" -``` - -:::note -If more than one `ObjectStore` applies, the `instanceSidecarConfiguration` of -the one set in `.spec.plugins` has priority. -::: diff --git a/web/versioned_docs/version-0.11.0/compression.md b/web/versioned_docs/version-0.11.0/compression.md deleted file mode 100644 index 2abbede..0000000 --- a/web/versioned_docs/version-0.11.0/compression.md +++ /dev/null @@ -1,43 +0,0 @@ ---- -sidebar_position: 80 ---- - -# Compression - - - -By default, backups and WAL files are archived **uncompressed**. However, the -Barman Cloud Plugin supports multiple compression algorithms via -`barman-cloud-backup` and `barman-cloud-wal-archive`, allowing you to optimize -for space, speed, or a balance of both. - -### Supported Compression Algorithms - -- `bzip2` -- `gzip` -- `lz4` (WAL only) -- `snappy` -- `xz` (WAL only) -- `zstd` (WAL only) - -Compression settings for base backups and WAL archives are configured -independently. For implementation details, refer to the corresponding API -definitions: - -- [`DataBackupConfiguration`](https://pkg.go.dev/github.com/cloudnative-pg/barman-cloud/pkg/api#DataBackupConfiguration) -- [`WALBackupConfiguration`](https://pkg.go.dev/github.com/cloudnative-pg/barman-cloud/pkg/api#WalBackupConfiguration) - -:::important -Compression impacts both performance and storage efficiency. Choose the right -algorithm based on your recovery time objectives (RTO), storage capacity, and -network throughput. -::: - -## Compression Benchmark (on MinIO) - -| Compression | Backup Time (ms) | Restore Time (ms) | Uncompressed Size (MB) | Compressed Size (MB) | Ratio | -| ----------- | ---------------- | ----------------- | ---------------------- | -------------------- | ----- | -| None | 10,927 | 7,553 | 395 | 395 | 1.0:1 | -| bzip2 | 25,404 | 13,886 | 395 | 67 | 5.9:1 | -| gzip | 116,281 | 3,077 | 395 | 91 | 4.3:1 | -| snappy | 8,134 | 8,341 | 395 | 166 | 2.4:1 | diff --git a/web/versioned_docs/version-0.11.0/concepts.md b/web/versioned_docs/version-0.11.0/concepts.md deleted file mode 100644 index 3832df3..0000000 --- a/web/versioned_docs/version-0.11.0/concepts.md +++ /dev/null @@ -1,177 +0,0 @@ ---- -sidebar_position: 10 ---- - -# Main Concepts - - - -:::important -Before proceeding, make sure to review the following sections of the -CloudNativePG documentation: - -- [**Backup**](https://cloudnative-pg.io/documentation/current/backup/) -- [**WAL Archiving**](https://cloudnative-pg.io/documentation/current/wal_archiving/) -- [**Recovery**](https://cloudnative-pg.io/documentation/current/recovery/) -::: - -The **Barman Cloud Plugin** enables **hot (online) backups** of PostgreSQL -clusters in CloudNativePG through [`barman-cloud`](https://pgbarman.org), -supporting continuous physical backups and WAL archiving to an **object -store**β€”without interrupting write operations. - -It also supports both **full recovery** and **Point-in-Time Recovery (PITR)** -of a PostgreSQL cluster. - -## The Object Store - -At the core is the [`ObjectStore` custom resource (CRD)](plugin-barman-cloud.v1.md#objectstorespec), -which acts as the interface between the PostgreSQL cluster and the target -object storage system. It allows you to configure: - -- **Authentication and bucket location** via the `.spec.configuration` section -- **WAL archiving** settingsβ€”such as compression type, parallelism, and - server-side encryptionβ€”under `.spec.configuration.wal` -- **Base backup options**β€”with similar settings for compression, concurrency, - and encryptionβ€”under `.spec.configuration.data` -- **Retention policies** to manage the life-cycle of archived WALs and backups - via `.spec.configuration.retentionPolicy` - -WAL files are archived in the `wals` directory, while base backups are stored -as **tarballs** in the `base` directory, following the -[Barman Cloud convention](https://docs.pgbarman.org/cloud/latest/usage/#object-store-layout). - -The plugin also offers advanced capabilities, including -[backup tagging](misc.md#backup-object-tagging) and -[extra options for backups and WAL archiving](misc.md#extra-options-for-backup-and-wal-archiving). - -:::tip -For details, refer to the -[API reference for the `ObjectStore` resource](plugin-barman-cloud.v1.md#objectstorespec). -::: - -## Integration with a CloudNativePG Cluster - -CloudNativePG can delegate continuous backup and recovery responsibilities to -the **Barman Cloud Plugin** by configuring the `.spec.plugins` section of a -`Cluster` resource. This setup requires a corresponding `ObjectStore` resource -to be defined. - -:::important -While it is technically possible to reuse the same `ObjectStore` for multiple -`Cluster` resources within the same namespace, it is strongly recommended to -dedicate one object store per PostgreSQL cluster to ensure data isolation and -operational clarity. -::: - -The following example demonstrates how to configure a CloudNativePG cluster -named `cluster-example` to use a previously defined `ObjectStore` (also named -`cluster-example`) in the same namespace. Setting `isWALArchiver: true` enables -WAL archiving through the plugin: - -```yaml -apiVersion: postgresql.cnpg.io/v1 -kind: Cluster -metadata: - name: cluster-example -spec: - # Other cluster settings... - plugins: - - name: barman-cloud.cloudnative-pg.io - isWALArchiver: true - parameters: - barmanObjectName: cluster-example -``` - -## Backup of a Postgres Cluster - -Once the object store is defined and the `Cluster` is configured to use the -Barman Cloud Plugin, **WAL archiving is activated immediately** on the -PostgreSQL primary. - -Physical base backups are seamlessly managed by CloudNativePG using the -`Backup` and `ScheduledBackup` resources, respectively for -[on-demand](https://cloudnative-pg.io/documentation/current/backup/#on-demand-backups) -and -[scheduled](https://cloudnative-pg.io/documentation/current/backup/#scheduled-backups) -backups. - -To use the Barman Cloud Plugin, you must set the `method` to `plugin` and -configure the `pluginConfiguration` section as shown: - -```yaml -[...] -spec: - method: plugin - pluginConfiguration: - name: barman-cloud.cloudnative-pg.io - [...] -``` - -With this configuration, CloudNativePG supports: - -- Backups from both **primary** and **standby** instances -- Backups from **designated primaries** in a distributed topology using - [replica clusters](https://cloudnative-pg.io/documentation/current/replica_cluster/) - -:::tip -For details on how to back up from a standby, refer to the official documentation: -[Backup from a standby](https://cloudnative-pg.io/documentation/current/backup/#backup-from-a-standby). -::: - -:::important -Both backup and WAL archiving operations are executed by sidecar containers -running in the same pod as the PostgreSQL `Cluster` primary instanceβ€”except -when backups are taken from a standby, in which case the sidecar runs alongside -the standby pod. -The sidecar containers use a [dedicated container image](images.md) that -includes only the supported version of Barman Cloud. -::: - -## Recovery of a Postgres Cluster - -In PostgreSQL, *recovery* refers to the process of starting a database instance -from an existing backup. The Barman Cloud Plugin integrates with CloudNativePG -to support both **full recovery** and **Point-in-Time Recovery (PITR)** from an -object store. - -Recovery in this context is *not in-place*: it bootstraps a brand-new -PostgreSQL cluster from a backup and replays the necessary WAL files to reach -the desired recovery target. - -To perform a recovery, define an *external cluster* that references the -appropriate `ObjectStore`, and use it as the source in the `bootstrap` section -of the target cluster: - -```yaml -[...] -spec: - [...] - bootstrap: - recovery: - source: source - externalClusters: - - name: source - plugin: - name: barman-cloud.cloudnative-pg.io - parameters: - barmanObjectName: cluster-example - serverName: cluster-example - [...] -``` - -The critical element here is the `externalClusters` section of the `Cluster` -resource, where the `plugin` stanza instructs CloudNativePG to use the Barman -Cloud Plugin to access the object store for recovery. - -This same mechanism can be used for a variety of scenarios enabled by the -CloudNativePG API, including: - -* **Full cluster recovery** from the latest backup -* **Point-in-Time Recovery (PITR)** -* Bootstrapping **replica clusters** in a distributed topology - -:::tip -For complete instructions and advanced use cases, refer to the official -[Recovery documentation](https://cloudnative-pg.io/documentation/current/recovery/). -::: diff --git a/web/versioned_docs/version-0.11.0/images.md b/web/versioned_docs/version-0.11.0/images.md deleted file mode 100644 index f6c32d3..0000000 --- a/web/versioned_docs/version-0.11.0/images.md +++ /dev/null @@ -1,37 +0,0 @@ ---- -sidebar_position: 99 ---- - -# Container Images - - - -The Barman Cloud Plugin is distributed using two container images: - -- One for deploying the plugin components -- One for the sidecar that runs alongside each PostgreSQL instance in a - CloudNativePG `Cluster` using the plugin - -## Plugin Container Image - -The plugin image contains the logic required to operate the Barman Cloud Plugin -within your Kubernetes environment with CloudNativePG. It is published on the -GitHub Container Registry at `ghcr.io/cloudnative-pg/plugin-barman-cloud`. - -This image is built from the -[`Dockerfile.plugin`](https://github.com/cloudnative-pg/plugin-barman-cloud/blob/main/containers/Dockerfile.plugin) -in the plugin repository. - -## Sidecar Container Image - -The sidecar image is used within each PostgreSQL pod in the cluster. It -includes the latest supported version of Barman Cloud and is responsible for -performing WAL archiving and backups on behalf of CloudNativePG. - -It is available at `ghcr.io/cloudnative-pg/plugin-barman-cloud-sidecar` and is -built from the -[`Dockerfile.sidecar`](https://github.com/cloudnative-pg/plugin-barman-cloud/blob/main/containers/Dockerfile.sidecar). - -These sidecar images are designed to work seamlessly with the -[`minimal` PostgreSQL container images](https://github.com/cloudnative-pg/postgres-containers?tab=readme-ov-file#minimal-images) -maintained by the CloudNativePG Community. diff --git a/web/versioned_docs/version-0.11.0/installation.mdx b/web/versioned_docs/version-0.11.0/installation.mdx deleted file mode 100644 index 027d1e8..0000000 --- a/web/versioned_docs/version-0.11.0/installation.mdx +++ /dev/null @@ -1,109 +0,0 @@ ---- -sidebar_position: 20 ---- - -# Installation - -:::important -1. The plugin **must** be installed in the same namespace as the CloudNativePG - operator (typically `cnpg-system`). - -2. Keep in mind that the operator's **listening namespaces** may differ from its - installation namespace. Double-check this to avoid configuration issues. -::: - -## Verifying the Requirements - -Before installing the plugin, make sure the [requirements](intro.md#requirements) are met. - -### CloudNativePG Version - -Ensure you're running a version of CloudNativePG that is compatible with the -plugin. If installed in the default `cnpg-system` namespace, you can verify the -version with: - -```sh -kubectl get deployment -n cnpg-system cnpg-controller-manager \ - -o jsonpath="{.spec.template.spec.containers[*].image}" -``` - -Example output: - -```output -ghcr.io/cloudnative-pg/cloudnative-pg:1.26.0 -``` - -The version **must be 1.26 or newer**. - -### cert-manager - -Use the [cmctl](https://cert-manager.io/docs/reference/cmctl/#installation) -tool to confirm that `cert-manager` is installed and available: - -```sh -cmctl check api -``` - -Example output: - -```output -The cert-manager API is ready -``` - -Both checks are required before proceeding with the installation. - -## Installing the Barman Cloud Plugin - -import { InstallationSnippet } from '@site/src/components/Installation'; - -Install the plugin using `kubectl` by applying the manifest for the latest -release: - - - -Example output: - -```output -customresourcedefinition.apiextensions.k8s.io/objectstores.barmancloud.cnpg.io created -serviceaccount/plugin-barman-cloud created -role.rbac.authorization.k8s.io/leader-election-role created -clusterrole.rbac.authorization.k8s.io/metrics-auth-role created -clusterrole.rbac.authorization.k8s.io/metrics-reader created -clusterrole.rbac.authorization.k8s.io/objectstore-editor-role created -clusterrole.rbac.authorization.k8s.io/objectstore-viewer-role created -clusterrole.rbac.authorization.k8s.io/plugin-barman-cloud created -rolebinding.rbac.authorization.k8s.io/leader-election-rolebinding created -clusterrolebinding.rbac.authorization.k8s.io/metrics-auth-rolebinding created -clusterrolebinding.rbac.authorization.k8s.io/plugin-barman-cloud-binding created -secret/plugin-barman-cloud-8tfddg42gf created -service/barman-cloud created -deployment.apps/barman-cloud configured -certificate.cert-manager.io/barman-cloud-client created -certificate.cert-manager.io/barman-cloud-server created -issuer.cert-manager.io/selfsigned-issuer created -``` - -Finally, check that the deployment is up and running: - -```sh -kubectl rollout status deployment \ - -n cnpg-system barman-cloud -``` - -Example output: - -```output -deployment "barman-cloud" successfully rolled out -``` - -This confirms that the plugin is deployed and ready to use. - -## Testing the latest development snapshot - -You can also test the latest development snapshot of the plugin with the -following command: - -```sh -kubectl apply -f \ - https://raw.githubusercontent.com/cloudnative-pg/plugin-barman-cloud/refs/heads/main/manifest.yaml -``` diff --git a/web/versioned_docs/version-0.11.0/intro.md b/web/versioned_docs/version-0.11.0/intro.md deleted file mode 100644 index 9781d0d..0000000 --- a/web/versioned_docs/version-0.11.0/intro.md +++ /dev/null @@ -1,86 +0,0 @@ ---- -sidebar_position: 1 -sidebar_label: "Introduction" ---- - -# Barman Cloud Plugin - - - -The **Barman Cloud Plugin** for [CloudNativePG](https://cloudnative-pg.io/) -enables online continuous physical backups of PostgreSQL clusters to object storage -using the `barman-cloud` suite from the [Barman](https://docs.pgbarman.org/release/latest/) -project. - -:::important -If you plan to migrate your existing CloudNativePG cluster to the new -plugin-based approach using the Barman Cloud Plugin, see -["Migrating from Built-in CloudNativePG Backup"](migration.md) -for detailed instructions. -::: - -## Requirements - -Before using the Barman Cloud Plugin, ensure that the following components are -installed and properly configured: - -- [CloudNativePG](https://cloudnative-pg.io) version 1.26 or later - - - We strongly recommend version 1.27.0 or later, which includes improved - error handling and status reporting for the plugin. - - If you are running an earlier release, refer to the - [upgrade guide](https://cloudnative-pg.io/documentation/current/installation_upgrade). - -- [cert-manager](https://cert-manager.io/) - - - The recommended way to enable secure TLS communication between the plugin - and the operator. - - Alternatively, you can provide your own certificate bundles. See the - [CloudNativePG documentation on TLS configuration](https://cloudnative-pg.io/documentation/current/cnpg_i/#configuring-tls-certificates). - -- [`kubectl-cnpg`](https://cloudnative-pg.io/documentation/current/kubectl-plugin/) - plugin (optional but recommended) - - - Simplifies debugging and monitoring with additional status and inspection - commands. - - Multiple installation options are available in the - [installation guide](https://cloudnative-pg.io/documentation/current/kubectl-plugin/#install). - -## Key Features - -This plugin provides the following capabilities: - -- Physical online backup of the data directory -- Physical restore of the data directory -- Write-Ahead Log (WAL) archiving -- WAL restore -- Full cluster recovery -- Point-in-Time Recovery (PITR) -- Seamless integration with replica clusters for bootstrap and WAL restore from archive - -:::important -The Barman Cloud Plugin is designed to **replace the in-tree object storage support** -previously provided via the `.spec.backup.barmanObjectStore` section in the -`Cluster` resource. -Backups created using the in-tree approach are fully supported and compatible -with this plugin. -::: - -## Supported Object Storage Providers - -The plugin works with all storage backends supported by `barman-cloud`, including: - -- **Amazon S3** -- **Google Cloud Storage** -- **Microsoft Azure Blob Storage** - -In addition, the following S3-compatible and simulator solutions have been -tested and verified: - -- [MinIO](https://min.io/) – An S3-compatible storage solution -- [Azurite](https://github.com/Azure/Azurite) – A simulator for Azure Blob Storage -- [fake-gcs-server](https://github.com/fsouza/fake-gcs-server) – A simulator for Google Cloud Storage - -:::tip -For more details, refer to [Object Store Providers](object_stores.md). -::: diff --git a/web/versioned_docs/version-0.11.0/migration.md b/web/versioned_docs/version-0.11.0/migration.md deleted file mode 100644 index 2c99ada..0000000 --- a/web/versioned_docs/version-0.11.0/migration.md +++ /dev/null @@ -1,274 +0,0 @@ ---- -sidebar_position: 40 ---- - -# Migrating from Built-in CloudNativePG Backup - - - -The in-tree support for Barman Cloud in CloudNativePG is **deprecated starting -from version 1.26** and will be removed in a future release. - -If you're currently relying on the built-in Barman Cloud integration, you can -migrate seamlessly to the new **plugin-based architecture** using the Barman -Cloud Plugin, without data loss. Follow these steps: - -- [Install the Barman Cloud Plugin](installation.mdx) -- Create an `ObjectStore` resource by translating the contents of the - `.spec.backup.barmanObjectStore` section from your existing `Cluster` - definition -- Modify the `Cluster` resource in a single atomic change to switch from - in-tree backup to the plugin -- Update any `ScheduledBackup` resources to use the plugin -- Update the `externalClusters` configuration, where applicable - -:::tip -For a working example, refer to [this commit](https://github.com/cloudnative-pg/cnpg-playground/commit/596f30e252896edf8f734991c3538df87630f6f7) -from the [CloudNativePG Playground project](https://github.com/cloudnative-pg/cnpg-playground), -which demonstrates a full migration. -::: - ---- - -## Step 1: Define the `ObjectStore` - -Begin by creating an `ObjectStore` resource in the same namespace as your -PostgreSQL `Cluster`. - -There is a **direct mapping** between the `.spec.backup.barmanObjectStore` -section in CloudNativePG and the `.spec.configuration` field in the -`ObjectStore` CR. The conversion is mostly mechanical, with one key difference: - -:::warning -In the plugin architecture, retention policies are defined as part of the `ObjectStore`. -In contrast, the in-tree implementation defined them at the `Cluster` level. -::: - -If your `Cluster` used `.spec.backup.retentionPolicy`, move that configuration -to `.spec.retentionPolicy` in the `ObjectStore`. - ---- - -### Example - -Here’s an excerpt from a traditional in-tree CloudNativePG backup configuration -taken from the CloudNativePG Playground project: - -```yaml -apiVersion: postgresql.cnpg.io/v1 -kind: Cluster -metadata: - name: pg-eu -spec: - # [...] - backup: - barmanObjectStore: - destinationPath: s3://backups/ - endpointURL: http://minio-eu:9000 - s3Credentials: - accessKeyId: - name: minio-eu - key: ACCESS_KEY_ID - secretAccessKey: - name: minio-eu - key: ACCESS_SECRET_KEY - wal: - compression: gzip -``` - -This configuration translates to the following `ObjectStore` resource for the -plugin: - -```yaml -apiVersion: barmancloud.cnpg.io/v1 -kind: ObjectStore -metadata: - name: minio-eu -spec: - configuration: - destinationPath: s3://backups/ - endpointURL: http://minio-eu:9000 - s3Credentials: - accessKeyId: - name: minio-eu - key: ACCESS_KEY_ID - secretAccessKey: - name: minio-eu - key: ACCESS_SECRET_KEY - wal: - compression: gzip -``` - -As you can see, the contents of `barmanObjectStore` have been copied directly -under the `configuration` field of the `ObjectStore` resource, using the same -secret references. - -## Step 2: Update the `Cluster` for plugin WAL archiving - -Once the `ObjectStore` resource is in place, update the `Cluster` resource as -follows in a single atomic change: - -- Remove the `.spec.backup.barmanObjectStore` section -- Remove `.spec.backup.retentionPolicy` if it was defined (as it is now in the - `ObjectStore`) -- Remove the entire `spec.backup` section if it is now empty -- Add `barman-cloud.cloudnative-pg.io` to the `plugins` list, as described in - [Configuring WAL archiving](usage.md#configuring-wal-archiving) - -This will trigger a rolling update of the `Cluster`, switching continuous -backup from the in-tree implementation to the plugin-based approach. - -### Example - -The updated `pg-eu` cluster will have this configuration instead of the -previous `backup` section: - -```yaml - plugins: - - name: barman-cloud.cloudnative-pg.io - isWALArchiver: true - parameters: - barmanObjectName: minio-eu -``` - ---- - -## Step 3: Update the `ScheduledBackup` - -After switching the `Cluster` to use the plugin, update your `ScheduledBackup` -resources to match. - -Set the backup `method` to `plugin` and reference the plugin name via -`pluginConfiguration`, as shown in ["Performing a base backup"](usage.md#performing-a-base-backup). - -### Example - -Original in-tree `ScheduledBackup`: - -```yaml -apiVersion: postgresql.cnpg.io/v1 -kind: ScheduledBackup -metadata: - name: pg-eu-backup -spec: - cluster: - name: pg-eu - schedule: '0 0 0 * * *' - backupOwnerReference: self -``` - -Updated version using the plugin: - -```yaml -apiVersion: postgresql.cnpg.io/v1 -kind: ScheduledBackup -metadata: - name: pg-eu-backup -spec: - cluster: - name: pg-eu - schedule: '0 0 0 * * *' - backupOwnerReference: self - method: plugin - pluginConfiguration: - name: barman-cloud.cloudnative-pg.io -``` - ---- - -## Step 4: Update the `externalClusters` configuration - -If your `Cluster` relies on one or more external clusters that use the in-tree -Barman Cloud integration, you need to update those configurations to use the -plugin-based architecture. - -When a replica cluster fetches WAL files or base backups from an external -source that used the built-in backup method, follow these steps: - -1. Create a corresponding `ObjectStore` resource for the external cluster, as - shown in [Step 1](#step-1-define-the-objectstore) -2. Update the `externalClusters` section of your replica cluster to use the - plugin instead of the in-tree `barmanObjectStore` field - -### Example - -Consider the original configuration using in-tree Barman Cloud: - -```yaml -apiVersion: postgresql.cnpg.io/v1 -kind: Cluster -metadata: - name: pg-us -spec: - # [...] - externalClusters: - - name: pg-eu - barmanObjectStore: - destinationPath: s3://backups/ - endpointURL: http://minio-eu:9000 - serverName: pg-eu - s3Credentials: - accessKeyId: - name: minio-eu - key: ACCESS_KEY_ID - secretAccessKey: - name: minio-eu - key: ACCESS_SECRET_KEY - wal: - compression: gzip -``` - -Create the `ObjectStore` resource for the external cluster: - -```yaml -apiVersion: barmancloud.cnpg.io/v1 -kind: ObjectStore -metadata: - name: minio-eu -spec: - configuration: - destinationPath: s3://backups/ - endpointURL: http://minio-eu:9000 - s3Credentials: - accessKeyId: - name: minio-eu - key: ACCESS_KEY_ID - secretAccessKey: - name: minio-eu - key: ACCESS_SECRET_KEY - wal: - compression: gzip -``` - -Update the external cluster configuration to use the plugin: - -```yaml -apiVersion: postgresql.cnpg.io/v1 -kind: Cluster -metadata: - name: pg-us -spec: - # [...] - externalClusters: - - name: pg-eu - plugin: - name: barman-cloud.cloudnative-pg.io - parameters: - barmanObjectName: minio-eu - serverName: pg-eu -``` - -## Step 5: Verify your metrics - -When migrating from the in-core solution to the plugin-based approach, you need -to monitor a different set of metrics, as described in the -["Observability"](observability.md) section. - -The table below summarizes the name changes between the old in-core metrics and -the new plugin-based ones: - -| Old metric name | New metric name | -| ------------------------------------------------ | ---------------------------------------------------------------- | -| `cnpg_collector_last_failed_backup_timestamp` | `barman_cloud_cloudnative_pg_io_last_failed_backup_timestamp` | -| `cnpg_collector_last_available_backup_timestamp` | `barman_cloud_cloudnative_pg_io_last_available_backup_timestamp` | -| `cnpg_collector_first_recoverability_point` | `barman_cloud_cloudnative_pg_io_first_recoverability_point` | diff --git a/web/versioned_docs/version-0.11.0/misc.md b/web/versioned_docs/version-0.11.0/misc.md deleted file mode 100644 index 0f03b28..0000000 --- a/web/versioned_docs/version-0.11.0/misc.md +++ /dev/null @@ -1,97 +0,0 @@ ---- -sidebar_position: 90 ---- - -# Miscellaneous - - - -## Backup Object Tagging - -You can attach key-value metadata tags to backup artifactsβ€”such as base -backups, WAL files, and history filesβ€”via the `.spec.configuration` section of -the `ObjectStore` resource. - -- `tags`: applied to base backups and WAL files -- `historyTags`: applied to history files only - -### Example - -```yaml -apiVersion: barmancloud.cnpg.io/v1 -kind: ObjectStore -metadata: - name: my-store -spec: - configuration: - [...] - tags: - backupRetentionPolicy: "expire" - historyTags: - backupRetentionPolicy: "keep" - [...] -``` - -## Extra Options for Backup and WAL Archiving - -You can pass additional command-line arguments to `barman-cloud-backup` and -`barman-cloud-wal-archive` using the `additionalCommandArgs` field in the -`ObjectStore` configuration. - -- `.spec.configuration.data.additionalCommandArgs`: for `barman-cloud-backup` -- `.spec.configuration.wal.archiveAdditionalCommandArgs`: for `barman-cloud-wal-archive` - -Each field accepts a list of string arguments. If an argument is already -configured elsewhere in the plugin, the duplicate will be ignored. - -### Example: Extra Backup Options - -```yaml -kind: ObjectStore -metadata: - name: my-store -spec: - configuration: - data: - additionalCommandArgs: - - "--min-chunk-size=5MB" - - "--read-timeout=60" -``` - -### Example: Extra WAL Archive Options - -```yaml -kind: ObjectStore -metadata: - name: my-store -spec: - configuration: - wal: - archiveAdditionalCommandArgs: - - "--max-concurrency=1" - - "--read-timeout=60" -``` - -For a complete list of supported options, refer to the -[official Barman Cloud documentation](https://docs.pgbarman.org/release/latest/). - -## Enable the pprof debug server for the sidecar - -You can enable the instance sidecar's pprof debug HTTP server by adding the `--pprof-server=
` flag to the container's -arguments via `.spec.instanceSidecarConfiguration.additionalContainerArgs`. - -Pass a bind address in the form `:` (for example, `0.0.0.0:6061`). -An empty value disables the server (disabled by default). - -### Example - -```yaml -apiVersion: barmancloud.cnpg.io/v1 -kind: ObjectStore -metadata: - name: my-store -spec: - instanceSidecarConfiguration: - additionalContainerArgs: - - "--pprof-server=0.0.0.0:6061" -``` diff --git a/web/versioned_docs/version-0.11.0/object_stores.md b/web/versioned_docs/version-0.11.0/object_stores.md deleted file mode 100644 index 69a83f6..0000000 --- a/web/versioned_docs/version-0.11.0/object_stores.md +++ /dev/null @@ -1,498 +0,0 @@ ---- -sidebar_position: 50 ---- - -# Object Store Providers - - - -The Barman Cloud Plugin enables the storage of PostgreSQL cluster backup files -in any object storage service supported by the -[Barman Cloud infrastructure](https://docs.pgbarman.org/release/latest/). - -Currently, Barman Cloud supports the following providers: - -- [Amazon S3](#aws-s3) -- [Microsoft Azure Blob Storage](#azure-blob-storage) -- [Google Cloud Storage](#google-cloud-storage) - -You may also use any S3- or Azure-compatible implementation of the above -services. - -To configure object storage with Barman Cloud, you must define an -[`ObjectStore` object](plugin-barman-cloud.v1.md#objectstore), which -establishes the connection between your PostgreSQL cluster and the object -storage backend. - -Configuration details β€” particularly around authentication β€” will vary depending on -the specific object storage provider you are using. - -The following sections detail the setup for each. - -:::note Authentication Methods -The Barman Cloud Plugin does not independently test all authentication methods -supported by `barman-cloud`. The plugin's responsibility is limited to passing -the provided credentials to `barman-cloud`, which then handles authentication -according to its own implementation. Users should refer to the -[Barman Cloud documentation](https://docs.pgbarman.org/release/latest/) to -verify that their chosen authentication method is supported and properly -configured. -::: - ---- - -## AWS S3 - -[AWS Simple Storage Service (S3)](https://aws.amazon.com/s3/) is one of the -most widely adopted object storage solutions. - -The Barman Cloud plugin for CloudNativePG integrates with S3 through two -primary authentication mechanisms: - -- [IAM Roles for Service Accounts (IRSA)](https://docs.aws.amazon.com/eks/latest/userguide/iam-roles-for-service-accounts.html) β€” - recommended for clusters running on EKS -- Access keys β€” using `ACCESS_KEY_ID` and `ACCESS_SECRET_KEY` credentials - -### Access Keys - -To authenticate using access keys, you’ll need: - -- `ACCESS_KEY_ID`: the public key used to authenticate to S3 -- `ACCESS_SECRET_KEY`: the corresponding secret key -- `ACCESS_SESSION_TOKEN`: (optional) a temporary session token, if required - -These credentials must be stored securely in a Kubernetes secret: - -```sh -kubectl create secret generic aws-creds \ - --from-literal=ACCESS_KEY_ID= \ - --from-literal=ACCESS_SECRET_KEY= -# --from-literal=ACCESS_SESSION_TOKEN= # if required -``` - -The credentials will be encrypted at rest if your Kubernetes environment -supports it. - -You can then reference the secret in your `ObjectStore` definition: - -```yaml -apiVersion: barmancloud.cnpg.io/v1 -kind: ObjectStore -metadata: - name: aws-store -spec: - configuration: - destinationPath: "s3://BUCKET_NAME/path/to/folder" - s3Credentials: - accessKeyId: - name: aws-creds - key: ACCESS_KEY_ID - secretAccessKey: - name: aws-creds - key: ACCESS_SECRET_KEY - [...] -``` - -### IAM Role for Service Account (IRSA) - -To use IRSA with EKS, configure the service account of the PostgreSQL cluster -with the appropriate annotation: - -```yaml -apiVersion: postgresql.cnpg.io/v1 -kind: Cluster -metadata: - [...] -spec: - serviceAccountTemplate: - metadata: - annotations: - eks.amazonaws.com/role-arn: arn:[...] - [...] -``` - -### S3 Lifecycle Policy - -Barman Cloud uploads backup files to S3 but does not modify them afterward. -To enhance data durability and protect against accidental or malicious loss, -it's recommended to implement the following best practices: - -- Enable object versioning -- Enable object locking to prevent objects from being deleted or overwritten - for a defined period or indefinitely (this provides an additional layer of - protection against accidental deletion and ransomware attacks) -- Set lifecycle rules to expire current versions a few days after your Barman - retention window -- Expire non-current versions after a longer period - -These strategies help you safeguard backups without requiring broad delete -permissions, ensuring both security and compliance with minimal operational -overhead. - - -### S3-Compatible Storage Providers - -You can use S3-compatible services like **MinIO**, **Linode (Akamai) Object Storage**, -or **DigitalOcean Spaces** by specifying a custom `endpointURL`. - -Example with Linode (Akamai) Object Storage (`us-east1`): - -```yaml -apiVersion: barmancloud.cnpg.io/v1 -kind: ObjectStore -metadata: - name: linode-store -spec: - configuration: - destinationPath: "s3://BUCKET_NAME/" - endpointURL: "https://us-east1.linodeobjects.com" - s3Credentials: - [...] - [...] -``` - -Recent changes to the [boto3 implementation](https://github.com/boto/boto3/issues/4392) -of [Amazon S3 Data Integrity Protections](https://docs.aws.amazon.com/sdkref/latest/guide/feature-dataintegrity.html) -may lead to the `x-amz-content-sha256` error when using the Barman Cloud -Plugin. - -If you encounter this issue (see [GitHub issue #393](https://github.com/cloudnative-pg/plugin-barman-cloud/issues/393)), -you can apply the following workaround by setting specific environment -variables in the `ObjectStore` resource: - -```yaml -apiVersion: barmancloud.cnpg.io/v1 -kind: ObjectStore -metadata: - name: linode-store -spec: - instanceSidecarConfiguration: - env: - - name: AWS_REQUEST_CHECKSUM_CALCULATION - value: when_required - - name: AWS_RESPONSE_CHECKSUM_VALIDATION - value: when_required - [...] -``` - -These settings ensure that checksum calculations and validations are only -applied when explicitly required, avoiding compatibility issues with certain -S3-compatible storage providers. - -Example with DigitalOcean Spaces (SFO3, path-style): - -```yaml -apiVersion: barmancloud.cnpg.io/v1 -kind: ObjectStore -metadata: - name: digitalocean-store -spec: - configuration: - destinationPath: "s3://BUCKET_NAME/path/to/folder" - endpointURL: "https://sfo3.digitaloceanspaces.com" - s3Credentials: - [...] - [...] -``` - -### Using Object Storage with a Private CA - -For object storage services (e.g., MinIO) that use HTTPS with certificates -signed by a private CA, set the `endpointCA` field in the `ObjectStore` -definition. Unless you already have it, create a Kubernetes `Secret` with the -CA bundle: - -```sh -kubectl create secret generic my-ca-secret --from-file=ca.crt -``` - -Then reference it: - -```yaml -apiVersion: barmancloud.cnpg.io/v1 -kind: ObjectStore -metadata: - name: minio-store -spec: - configuration: - endpointURL: - endpointCA: - name: my-ca-secret - key: ca.crt - [...] -``` - - -:::note -If you want `ConfigMaps` and `Secrets` to be **automatically** reloaded by -instances, you can add a label with the key `cnpg.io/reload` to the -`Secrets`/`ConfigMaps`. Otherwise, you will have to reload the instances using the -`kubectl cnpg reload` subcommand. -::: - ---- - -## Azure Blob Storage - -[Azure Blob Storage](https://azure.microsoft.com/en-us/services/storage/blobs/) -is Microsoft’s cloud-based object storage solution. - -Barman Cloud supports the following authentication methods: - -- [Connection String](https://learn.microsoft.com/en-us/azure/storage/common/storage-configure-connection-string) -- Storage Account Name + [Storage Account Access Key](https://learn.microsoft.com/en-us/azure/storage/common/storage-account-keys-manage) -- Storage Account Name + [Storage Account SAS Token](https://learn.microsoft.com/en-us/azure/storage/blobs/sas-service-create) -- [Azure AD Managed Identity](https://learn.microsoft.com/en-us/entra/identity/managed-identities-azure-resources/overview) -- [Default Azure Credentials](https://learn.microsoft.com/en-us/dotnet/api/azure.identity.defaultazurecredential?view=azure-dotnet) - -### Azure AD Managed Identity - -This method avoids storing credentials in Kubernetes by enabling the -usage of [Azure Managed Identities](https://learn.microsoft.com/en-us/entra/identity/managed-identities-azure-resources/overview) authentication mechanism. -This can be enabled by setting the `inheritFromAzureAD` option to `true`. -Managed Identity can be configured for the AKS Cluster by following -the [Azure documentation](https://learn.microsoft.com/en-us/azure/aks/use-managed-identity?pivots=system-assigned). - -```yaml -apiVersion: barmancloud.cnpg.io/v1 -kind: ObjectStore -metadata: - name: azure-store -spec: - configuration: - destinationPath: "" - azureCredentials: - inheritFromAzureAD: true - [...] -``` - -### Default Azure Credentials - -The `useDefaultAzureCredentials` option enables the default Azure credentials -flow, which uses [`DefaultAzureCredential`](https://learn.microsoft.com/en-us/python/api/azure-identity/azure.identity.defaultazurecredential) -to automatically discover and use available credentials in the following order: - -1. **Environment Variables** β€” `AZURE_CLIENT_ID`, `AZURE_CLIENT_SECRET`, and `AZURE_TENANT_ID` for Service Principal authentication -2. **Managed Identity** β€” Uses the managed identity assigned to the pod -3. **Azure CLI** β€” Uses credentials from the Azure CLI if available -4. **Azure PowerShell** β€” Uses credentials from Azure PowerShell if available - -This approach is particularly useful for getting started with development and testing; it allows -the SDK to attempt multiple authentication mechanisms seamlessly across different environments. -However, this is not recommended for production. Please refer to the -[official Azure guidance](https://learn.microsoft.com/en-us/dotnet/azure/sdk/authentication/credential-chains?tabs=dac#usage-guidance-for-defaultazurecredential) -for a comprehensive understanding of `DefaultAzureCredential`. - -```yaml -apiVersion: barmancloud.cnpg.io/v1 -kind: ObjectStore -metadata: - name: azure-store -spec: - configuration: - destinationPath: "" - azureCredentials: - useDefaultAzureCredentials: true - [...] -``` - -### Access Key, SAS Token, or Connection String - -Store credentials in a Kubernetes secret: - -```sh -kubectl create secret generic azure-creds \ - --from-literal=AZURE_STORAGE_ACCOUNT= \ - --from-literal=AZURE_STORAGE_KEY= \ - --from-literal=AZURE_STORAGE_SAS_TOKEN= \ - --from-literal=AZURE_STORAGE_CONNECTION_STRING= -``` - -Then reference the required keys in your `ObjectStore`: - -```yaml -apiVersion: barmancloud.cnpg.io/v1 -kind: ObjectStore -metadata: - name: azure-store -spec: - configuration: - destinationPath: "" - azureCredentials: - connectionString: - name: azure-creds - key: AZURE_CONNECTION_STRING - storageAccount: - name: azure-creds - key: AZURE_STORAGE_ACCOUNT - storageKey: - name: azure-creds - key: AZURE_STORAGE_KEY - storageSasToken: - name: azure-creds - key: AZURE_STORAGE_SAS_TOKEN - [...] -``` - -For Azure Blob, the destination path format is: - -``` -://..core.windows.net// -``` - -### Azure-Compatible Providers - -If you're using a different implementation (e.g., Azurite or emulator): - -``` -://:/// -``` - ---- - -## Google Cloud Storage - -[Google Cloud Storage](https://cloud.google.com/storage/) is supported with two -authentication modes: - -- **GKE Workload Identity** (recommended inside Google Kubernetes Engine) -- **Service Account JSON key** via the `GOOGLE_APPLICATION_CREDENTIALS` environment variable - -### GKE Workload Identity - -Use the [Workload Identity authentication](https://cloud.google.com/kubernetes-engine/docs/how-to/workload-identity) -when running in GKE: - -1. Set `googleCredentials.gkeEnvironment` to `true` in the `ObjectStore` - resource -2. Annotate the `serviceAccountTemplate` in the `Cluster` resource with the GCP - service account - -For example, in the `ObjectStore` resource: - -```yaml -apiVersion: barmancloud.cnpg.io/v1 -kind: ObjectStore -metadata: - name: google-store -spec: - configuration: - destinationPath: "gs:///" - googleCredentials: - gkeEnvironment: true -``` - -And in the `Cluster` resource: - -```yaml -apiVersion: postgresql.cnpg.io/v1 -kind: Cluster -spec: - serviceAccountTemplate: - metadata: - annotations: - iam.gke.io/gcp-service-account: [...].iam.gserviceaccount.com -``` - -### Service Account JSON Key - -Follow Google’s [authentication setup](https://cloud.google.com/docs/authentication/getting-started), -then: - -```sh -kubectl create secret generic backup-creds --from-file=gcsCredentials=gcs_credentials_file.json -``` - -```yaml -apiVersion: barmancloud.cnpg.io/v1 -kind: ObjectStore -metadata: - name: google-store -spec: - configuration: - destinationPath: "gs:///" - googleCredentials: - applicationCredentials: - name: backup-creds - key: gcsCredentials - [...] -``` - -:::important -This authentication method generates a JSON file within the container -with all the credentials required to access your Google Cloud Storage -bucket. As a result, if someone gains access to the `Pod`, they will also have -write permissions to the bucket. -::: - ---- - - -## MinIO Object Store - -In order to use the Tenant resource you first need to deploy the -[MinIO operator](https://docs.min.io/community/minio-object-store/operations/deployments/installation.html). -For the latest documentation of MinIO, please refer to the -[MinIO official documentation](https://docs.min.io/community/minio-object-store/). - -MinIO Object Store's API is compatible with S3, and the default configuration of the Tenant -will create these services: -- `-console` on port 9090 (with autocert) or 9443 (without autocert) -- `-hl` on port 9000 -Where `` is the `metadata.name` you assigned to your Tenant resource. - -:::note -The `-console` service will only be available if you have enabled the -[MinIO Console](https://docs.min.io/community/minio-object-store/administration/minio-console.html). - -For example, the following Tenant: -```yml -apiVersion: minio.min.io/v2 -kind: Tenant -metadata: - name: cnpg-backups -spec: - [...] -``` -would have services called `cnpg-backups-console` and `cnpg-backups-hl` respectively. - -The `console` service is for managing the tenant, while the `hl` service exposes the S3 -compatible API. If your tenant is configured with `requestAutoCert` you will communicate -to these services over HTTPS, if not you will use HTTP. - -For authentication you can use your username and password, or create an access key. -Whichever method you choose, it has to be stored as a secret. - -```sh -kubectl create secret generic minio-creds \ - --from-literal=MINIO_ACCESS_KEY= \ - --from-literal=MINIO_SECRET_KEY= -``` - -Finally, create the Barman ObjectStore: - -```yaml -apiVersion: barmancloud.cnpg.io/v1 -kind: ObjectStore -metadata: - name: minio-store -spec: - configuration: - destinationPath: s3://BUCKET_NAME/ - endpointURL: http://-hl:9000 - s3Credentials: - accessKeyId: - name: minio-creds - key: MINIO_ACCESS_KEY - secretAccessKey: - name: minio-creds - key: MINIO_SECRET_KEY - [...] -``` - -:::important -Verify on `s3://BUCKET_NAME/` the presence of archived WAL files before -proceeding with a backup. -::: - ---- diff --git a/web/versioned_docs/version-0.11.0/observability.md b/web/versioned_docs/version-0.11.0/observability.md deleted file mode 100644 index 274b973..0000000 --- a/web/versioned_docs/version-0.11.0/observability.md +++ /dev/null @@ -1,24 +0,0 @@ ---- -sidebar_position: 55 ---- - -# Observability - - - -The Barman Cloud Plugin exposes the following metrics through the native -Prometheus exporter of the instance manager: - -- `barman_cloud_cloudnative_pg_io_last_failed_backup_timestamp`: - the UNIX timestamp of the most recent failed backup. - -- `barman_cloud_cloudnative_pg_io_last_available_backup_timestamp`: - the UNIX timestamp of the most recent successfully available backup. - -- `barman_cloud_cloudnative_pg_io_first_recoverability_point`: - the UNIX timestamp representing the earliest point in time from which the - cluster can be recovered. - -These metrics supersede the previously available in-core metrics that used the -`cnpg_collector` prefix. The new metrics are exposed under the -`barman_cloud_cloudnative_pg_io` prefix instead. diff --git a/web/versioned_docs/version-0.11.0/parameters.md b/web/versioned_docs/version-0.11.0/parameters.md deleted file mode 100644 index ca0cd2b..0000000 --- a/web/versioned_docs/version-0.11.0/parameters.md +++ /dev/null @@ -1,19 +0,0 @@ ---- -sidebar_position: 100 ---- - -# Parameters - - - -The following parameters are available for the Barman Cloud Plugin: - -- `barmanObjectName`: references the `ObjectStore` resource to be used by the - plugin. -- `serverName`: Specifies the server name in the object store. - -:::important -The `serverName` parameter in the `ObjectStore` resource is retained solely for -API compatibility with the in-tree `barmanObjectStore` and must always be left empty. -When needed, use the `serverName` plugin parameter in the Cluster configuration instead. -::: diff --git a/web/versioned_docs/version-0.11.0/plugin-barman-cloud.v1.md b/web/versioned_docs/version-0.11.0/plugin-barman-cloud.v1.md deleted file mode 100644 index 7bd607c..0000000 --- a/web/versioned_docs/version-0.11.0/plugin-barman-cloud.v1.md +++ /dev/null @@ -1,108 +0,0 @@ -# API Reference - -## Packages -- [barmancloud.cnpg.io/v1](#barmancloudcnpgiov1) - - -## barmancloud.cnpg.io/v1 - -Package v1 contains API Schema definitions for the barmancloud v1 API group - -### Resource Types -- [ObjectStore](#objectstore) - - - -#### InstanceSidecarConfiguration - - - -InstanceSidecarConfiguration defines the configuration for the sidecar that runs in the instance pods. - - - -_Appears in:_ -- [ObjectStoreSpec](#objectstorespec) - -| Field | Description | Required | Default | Validation | -| --- | --- | --- | --- | --- | -| `env` _[EnvVar](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#envvar-v1-core) array_ | The environment to be explicitly passed to the sidecar | | | | -| `retentionPolicyIntervalSeconds` _integer_ | The retentionCheckInterval defines the frequency at which the
system checks and enforces retention policies. | | 1800 | | -| `resources` _[ResourceRequirements](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcerequirements-v1-core)_ | Resources define cpu/memory requests and limits for the sidecar that runs in the instance pods. | | | | -| `additionalContainerArgs` _string array_ | AdditionalContainerArgs is an optional list of command-line arguments
to be passed to the sidecar container when it starts.
The provided arguments are appended to the container’s default arguments. | | | | -| `logLevel` _string_ | The log level for PostgreSQL instances. Valid values are: `error`, `warning`, `info` (default), `debug`, `trace` | | info | Enum: [error warning info debug trace]
| - - -#### ObjectStore - - - -ObjectStore is the Schema for the objectstores API. - - - - - -| Field | Description | Required | Default | Validation | -| --- | --- | --- | --- | --- | -| `apiVersion` _string_ | `barmancloud.cnpg.io/v1` | True | | | -| `kind` _string_ | `ObjectStore` | True | | | -| `metadata` _[ObjectMeta](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#objectmeta-v1-meta)_ | Refer to Kubernetes API documentation for fields of `metadata`. | True | | | -| `spec` _[ObjectStoreSpec](#objectstorespec)_ | Specification of the desired behavior of the ObjectStore.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status | True | | | -| `status` _[ObjectStoreStatus](#objectstorestatus)_ | Most recently observed status of the ObjectStore. This data may not be up to
date. Populated by the system. Read-only.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status | | | | - - -#### ObjectStoreSpec - - - -ObjectStoreSpec defines the desired state of ObjectStore. - - - -_Appears in:_ -- [ObjectStore](#objectstore) - -| Field | Description | Required | Default | Validation | -| --- | --- | --- | --- | --- | -| `configuration` _[BarmanObjectStoreConfiguration](https://pkg.go.dev/github.com/cloudnative-pg/barman-cloud/pkg/api#BarmanObjectStoreConfiguration)_ | The configuration for the barman-cloud tool suite | True | | | -| `retentionPolicy` _string_ | RetentionPolicy is the retention policy to be used for backups
and WALs (i.e. '60d'). The retention policy is expressed in the form
of `XXu` where `XX` is a positive integer and `u` is in `[dwm]` -
days, weeks, months. | | | Pattern: `^[1-9][0-9]*[dwm]$`
| -| `instanceSidecarConfiguration` _[InstanceSidecarConfiguration](#instancesidecarconfiguration)_ | The configuration for the sidecar that runs in the instance pods | | | | - - -#### ObjectStoreStatus - - - -ObjectStoreStatus defines the observed state of ObjectStore. - - - -_Appears in:_ -- [ObjectStore](#objectstore) - -| Field | Description | Required | Default | Validation | -| --- | --- | --- | --- | --- | -| `serverRecoveryWindow` _object (keys:string, values:[RecoveryWindow](#recoverywindow))_ | ServerRecoveryWindow maps each server to its recovery window | True | | | - - -#### RecoveryWindow - - - -RecoveryWindow represents the time span between the first -recoverability point and the last successful backup of a PostgreSQL -server, defining the period during which data can be restored. - - - -_Appears in:_ -- [ObjectStoreStatus](#objectstorestatus) - -| Field | Description | Required | Default | Validation | -| --- | --- | --- | --- | --- | -| `firstRecoverabilityPoint` _[Time](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#time-v1-meta)_ | The first recoverability point in a PostgreSQL server refers to
the earliest point in time to which the database can be
restored. | True | | | -| `lastSuccessfulBackupTime` _[Time](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#time-v1-meta)_ | The last successful backup time | True | | | -| `lastFailedBackupTime` _[Time](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#time-v1-meta)_ | The last failed backup time | True | | | - - diff --git a/web/versioned_docs/version-0.11.0/resource-name-migration.md b/web/versioned_docs/version-0.11.0/resource-name-migration.md deleted file mode 100644 index f5c1cc3..0000000 --- a/web/versioned_docs/version-0.11.0/resource-name-migration.md +++ /dev/null @@ -1,219 +0,0 @@ ---- -sidebar_position: 90 ---- - -# Resource name migration guide - - - -:::warning -Before proceeding with the migration process, please: -1. **Read this guide in its entirety** to understand what changes will be made -2. **Test in a non-production environment** first if possible -3. **Ensure you have proper backups** of your cluster configuration - -This migration will delete old RBAC resources only after the -`plugin-barman-cloud` upgrade. While the operation is designed to be safe, you -should review and understand the changes before proceeding. The maintainers of -this project are not responsible for any issues that may arise during -migration. - -**Note:** This guide assumes you are using the default `cnpg-system` namespace. -::: - -## Overview - -Starting from version **0.8.0**, the `plugin-barman-cloud` deployment manifests -use more specific, prefixed resource names to avoid conflicts with other -components deployed in the same Kubernetes cluster. - -## What Changed - -The following resources have been renamed to use proper prefixes. - -### Cluster-scoped Resources - -| Old Name | New Name | -|----------------------------|------------------------------------------| -| `metrics-auth-role` | `barman-plugin-metrics-auth-role` | -| `metrics-auth-rolebinding` | `barman-plugin-metrics-auth-rolebinding` | -| `metrics-reader` | `barman-plugin-metrics-reader` | -| `objectstore-viewer-role` | `barman-plugin-objectstore-viewer-role` | -| `objectstore-editor-role` | `barman-plugin-objectstore-editor-role` | - -### Namespace-scoped Resources - -| Old Name | New Name | Namespace | -|-------------------------------|---------------------------------------------|---------------| -| `leader-election-role` | `barman-plugin-leader-election-role` | `cnpg-system` | -| `leader-election-rolebinding` | `barman-plugin-leader-election-rolebinding` | `cnpg-system` | - -## Why This Change? - -Using generic names for cluster-wide resources is discouraged as they may -conflict with other components deployed in the same cluster. The new names make -it clear that these resources belong to the Barman Cloud plugin and help avoid -naming collisions. - -## Migration Instructions - -This three steps migration process is straightforward and can be completed with -a few `kubectl` commands. - -### Step 1: Upgrade plugin-barman-cloud - -Please refer to the [Installation](installation.mdx) section to deploy the new -`plugin-barman-cloud` release. - -### Step 2: Delete Old Cluster-scoped Resources - -:::danger Verify Resources Before Deletion -**IMPORTANT**: The old resource names are generic and could potentially belong -to other components in your cluster. - -**Before deleting each resource, verify it belongs to the Barman Cloud plugin -by checking:** -- For `objectstore-*` roles: Look for `barmancloud.cnpg.io` in the API groups -- For `metrics-*` roles: Check if they reference the `plugin-barman-cloud` - ServiceAccount in `cnpg-system` namespace -- For other roles: Look for labels like `app.kubernetes.io/name: plugin-barman-cloud` - -If a resource doesn't have these indicators, **DO NOT DELETE IT** as it may -belong to another application. - -Carefully review the output of each verification command before proceeding with -the `delete`. -::: - -:::tip Dry Run First -You can add `--dry-run=client` to any `kubectl delete` command to preview what -would be deleted without actually removing anything. -::: - -**Only proceed if you've verified these resources belong to the Barman Cloud -plugin (see warning above).** - -For each resource below, first verify it belongs to Barman Cloud, then delete -it: - -```bash -# 1. Check metrics-auth-rolebinding FIRST (we'll check the role after) -# Look for references to plugin-barman-cloud ServiceAccount -kubectl describe clusterrolebinding metrics-auth-rolebinding -# If it references plugin-barman-cloud ServiceAccount in cnpg-system namespace, -# delete it: -kubectl delete clusterrolebinding metrics-auth-rolebinding - -# 2. Check metrics-auth-role -# Look for references to authentication.k8s.io and authorization.k8s.io -kubectl describe clusterrole metrics-auth-role -# Verify it's not being used by any other rolebindings: -kubectl get clusterrolebinding -o json \ - | jq -r '.items[] | select(.roleRef.name=="metrics-auth-role") \ - | .metadata.name' -# If the above returns nothing (role is not in use) and the role looks like the -# Barman Cloud one, delete it (see warnings section): -kubectl delete clusterrole metrics-auth-role - -# 3. Check objectstore-viewer-role -# Look for barmancloud.cnpg.io API group or -# for `app.kubernetes.io/name: plugin-barman-cloud` label -kubectl describe clusterrole objectstore-viewer-role -# If it shows barmancloud.cnpg.io in API groups, delete it: -kubectl delete clusterrole objectstore-viewer-role - -# 4. Check objectstore-editor-role -# Look for barmancloud.cnpg.io API group or -# for `app.kubernetes.io/name: plugin-barman-cloud` label -kubectl describe clusterrole objectstore-editor-role -# If it shows barmancloud.cnpg.io in API groups, delete it: -kubectl delete clusterrole objectstore-editor-role - -# 5. Check metrics-reader (MOST DANGEROUS - very generic name) -# First, check if it's being used by any rolebindings OTHER than barman's: -kubectl get clusterrolebinding -o json | jq -r '.items[] \ - | select(.roleRef.name=="metrics-reader") \ - | "\(.metadata.name) -> \(.subjects[0].name) in \(.subjects[0].namespace)"' -# If this shows ANY rolebindings, review them carefully. Only proceed if -# they're all Barman-related. Then check the role itself: -kubectl describe clusterrole metrics-reader -# If it ONLY has nonResourceURLs: /metrics and NO other rolebindings use it, -# delete it: -kubectl delete clusterrole metrics-reader -``` - -:::warning -The `metrics-reader` role is particularly dangerous to delete blindly. Many -monitoring systems use this exact name. Only delete it if: - -1. You've verified it ONLY grants access to `/metrics` -2. No other rolebindings reference it (checked with the jq command above) -3. You're certain it was created by the Barman Cloud plugin - -If you're unsure, it's safer to leave it and let the new -`barman-plugin-metrics-reader` role coexist with it. -::: - -If any resource is not found during the `describe` command, that's okay - it -means it was never created or already deleted. Simply skip the delete command -for that resource. - -### Step 3: Delete Old Namespace-scoped Resources - -Delete the old namespace-scoped resources in the `cnpg-system` namespace: - -```bash -# Delete the old leader-election resources -kubectl delete role leader-election-role -n cnpg-system -kubectl delete rolebinding leader-election-rolebinding -n cnpg-system -``` - -If any resource is not found, that's okay - it means it was never created or -already deleted. - -## Impact - -- **Permissions:** If you have custom RBAC rules or tools that reference the - old resource names, they will need to be updated. -- **External Users:** If end users have been granted the - `objectstore-viewer-role` or `objectstore-editor-role`, they will need to be - re-granted the new role names (`barman-plugin-objectstore-viewer-role` and - `barman-plugin-objectstore-editor-role`). - -## Verification - -After migration, verify that the new resources are created: - -```bash -# Check cluster-scoped resources -kubectl get clusterrole | grep barman -kubectl get clusterrolebinding | grep barman - -# Check namespace-scoped resources -kubectl get role,rolebinding -n cnpg-system | grep barman -``` - -You should see the new prefixed resource names. - -## Troubleshooting - -### Plugin Not Starting After Migration - -If the plugin fails to start after migration, check: - -1. **ServiceAccount permissions:** Ensure the `plugin-barman-cloud` ServiceAccount is bound to the new roles: - ```bash - kubectl get clusterrolebinding barman-plugin-metrics-auth-rolebinding -o yaml - kubectl get rolebinding barman-plugin-leader-election-rolebinding -n cnpg-system -o yaml - ``` - -2. **Role references:** Verify that the rolebindings reference the correct role names: - ```bash - kubectl describe rolebinding barman-plugin-leader-election-rolebinding -n cnpg-system - kubectl describe clusterrolebinding barman-plugin-metrics-auth-rolebinding - ``` - -## Support - -If you encounter issues during migration, please open an issue on the [GitHub -repository](https://github.com/cloudnative-pg/plugin-barman-cloud/issues). diff --git a/web/versioned_docs/version-0.11.0/retention.md b/web/versioned_docs/version-0.11.0/retention.md deleted file mode 100644 index fefbd08..0000000 --- a/web/versioned_docs/version-0.11.0/retention.md +++ /dev/null @@ -1,38 +0,0 @@ ---- -sidebar_position: 60 ---- - -# Retention Policies - - - -The Barman Cloud Plugin supports **automated cleanup of obsolete backups** via -retention policies, configured in the `.spec.retentionPolicy` field of the -`ObjectStore` resource. - -:::note -This feature uses the `barman-cloud-backup-delete` command with the -`--retention-policy "RECOVERY WINDOW OF {{ value }} {{ unit }}"` syntax. -::: - -#### Example: 30-Day Retention Policy - -```yaml -apiVersion: barmancloud.cnpg.io/v1 -kind: ObjectStore -metadata: - name: my-store -spec: - [...] - retentionPolicy: "30d" -```` - -:::note -A **recovery window retention policy** ensures the cluster can be restored to -any point in time between the calculated *Point of Recoverability* (PoR) and -the latest WAL archive. The PoR is defined as `current time - recovery window`. -The **first valid backup** is the most recent backup completed before the PoR. -Backups older than that are marked as *obsolete* and deleted after the next -backup completes. -::: - diff --git a/web/versioned_docs/version-0.11.0/troubleshooting.md b/web/versioned_docs/version-0.11.0/troubleshooting.md deleted file mode 100644 index fe57262..0000000 --- a/web/versioned_docs/version-0.11.0/troubleshooting.md +++ /dev/null @@ -1,591 +0,0 @@ ---- -sidebar_position: 90 ---- - -# Troubleshooting - - - -This guide helps you diagnose and resolve common issues with the Barman Cloud -plugin. - -:::important -We are continuously improving the integration between CloudNativePG and the -Barman Cloud plugin as it moves toward greater stability and maturity. For this -reason, we recommend using the latest available version of both components. -See the [*Requirements* section](intro.md#requirements) for details. -::: - -:::note -The following commands assume you installed the CloudNativePG operator in -the default `cnpg-system` namespace. If you installed it in a different -namespace, adjust the commands accordingly. -::: - -## Viewing Logs - -To troubleshoot effectively, you’ll often need to review logs from multiple -sources: - -```sh -# View operator logs (includes plugin interaction logs) -kubectl logs -n cnpg-system deployment/cnpg-controller-manager -f - -# View plugin manager logs -kubectl logs -n cnpg-system deployment/barman-cloud -f - -# View sidecar container logs (Barman Cloud operations) -kubectl logs -n -c plugin-barman-cloud -f - -# View all containers in a pod -kubectl logs -n --all-containers=true - -# View previous container logs (if container restarted) -kubectl logs -n -c plugin-barman-cloud --previous -``` - -## Common Issues - -### Plugin Installation Issues - -#### Plugin pods not starting - -**Symptoms:** - -- Plugin pods stuck in `CrashLoopBackOff` or `Error` -- Plugin deployment not ready - -**Possible causes and solutions:** - -1. **Certificate issues** - - ```sh - # Check if cert-manager is installed and running - kubectl get pods -n cert-manager - - # Check if the plugin certificate is created - kubectl get certificates -n cnpg-system - ``` - - If cert-manager is not installed, install it first: - - ```sh - # Note: other installation methods for cert-manager are available - kubectl apply -f \ - https://github.com/cert-manager/cert-manager/releases/latest/download/cert-manager.yaml - ``` - - If you are using your own certificates without cert-manager, you will need - to verify the entire certificate chain yourself. - - -2. **Image pull errors** - - ```sh - # Check pod events for image pull errors - kubectl describe pod -n cnpg-system -l app=barman-cloud - ``` - - Verify the image exists and you have proper credentials if using a private - registry. - - -3. **Resource constraints** - - ```sh - # Check node resources - kubectl top nodes - kubectl describe nodes - ``` - - Make sure your cluster has sufficient CPU and memory resources. - -### Backup Failures - -#### Quick Backup Troubleshooting Checklist - -When a backup fails, follow these steps in order: - -1. **Check backup status**: - - ```sh - kubectl get backups.postgresql.cnpg.io -n - ``` -2. **Get error details and target pod**: - - ```sh - kubectl describe backups.postgresql.cnpg.io \ - -n - - kubectl get backups.postgresql.cnpg.io \ - -n \ - -o jsonpath='{.status.instanceID.podName}' - ``` -3. **Check the target pod’s sidecar logs**: - - ```sh - TARGET_POD=$(kubectl get backups.postgresql.cnpg.io \ - -n \ - -o jsonpath='{.status.instanceID.podName}') - - kubectl logs \ - -n $TARGET_POD -c plugin-barman-cloud \ - --tail=100 | grep -E "ERROR|FATAL|panic" - ``` -4. **Check cluster events**: - - ```sh - kubectl get events -n \ - --field-selector involvedObject.name= \ - --sort-by='.lastTimestamp' - ``` -5. **Verify plugin is running**: - - ```sh - kubectl get pods \ - -n cnpg-system -l app=barman-cloud - ``` -6. **Check operator logs**: - - ```sh - kubectl logs \ - -n cnpg-system deployment/cnpg-controller-manager \ - --tail=100 | grep -i "backup\|plugin" - ``` -7. **Check plugin manager logs**: - - ```sh - kubectl logs \ - -n cnpg-system deployment/barman-cloud --tail=100 - ``` - -#### Backup job fails immediately - -**Symptoms:** - -- Backup pods terminate with error -- No backup files appear in object storage -- Backup shows `failed` phase with various error messages - -**Common failure modes and solutions:** - -1. **"requested plugin is not available" errors** - - ``` - requested plugin is not available: barman - requested plugin is not available: barman-cloud - requested plugin is not available: barman-cloud.cloudnative-pg.io - ``` - - **Cause:** The plugin name in the Cluster configuration doesn’t match the - deployed plugin, or the plugin isn’t registered. - - **Solution:** - - a. **Check plugin registration:** - - ```sh - # If you have the `cnpg` plugin installed (v1.27.0+) - kubectl cnpg status -n - ``` - - Look for the "Plugins status" section: - ``` - Plugins status - Name Version Status Reported Operator Capabilities - ---- ------- ------ ------------------------------ - barman-cloud.cloudnative-pg.io 0.6.0 N/A Reconciler Hooks, Lifecycle Service - ``` - - b. **Verify plugin name in `Cluster` spec**: - - ```yaml - apiVersion: postgresql.cnpg.io/v1 - kind: Cluster - spec: - plugins: - - name: barman-cloud.cloudnative-pg.io - parameters: - barmanObjectName: - ``` - - c. **Check plugin deployment is running**: - - ```sh - kubectl get deployment -n cnpg-system barman-cloud - ``` - -2. **"rpc error: code = Unknown desc = panic caught: assignment to entry in nil map" errors** - - **Cause:** Misconfiguration in the `ObjectStore` (e.g., typo or missing field). - - **Solution:** - - - Review sidecar logs for details - - Verify `ObjectStore` configuration and secrets - - Common issues include: - - Missing or incorrect secret references - - Typos in configuration parameters - - Missing required environment variables in secrets - -#### Backup performance issues - -**Symptoms:** - -- Backups take extremely long -- Backups timeout - -**Plugin-specific considerations:** - -1. **Check `ObjectStore` parallelism settings** - - Adjust `maxParallel` in `ObjectStore` configuration - - Monitor sidecar container resource usage during backups - -2. **Verify plugin resource allocation** - - Check if the sidecar container has sufficient CPU/memory - - Review plugin container logs for resource-related warnings - -:::tip -For Barman-specific features like compression, encryption, and performance -tuning, refer to the [Barman documentation](https://docs.pgbarman.org/latest/). -::: - -### WAL Archiving Issues - -#### WAL archiving stops - -**Symptoms:** - -- WAL files accumulate on the primary -- Cluster shows WAL archiving warnings -- Sidecar logs show WAL errors - -**Debugging steps:** - -1. **Check plugin sidecar logs for WAL archiving errors** - ```sh - # Check recent WAL archive operations in sidecar - kubectl logs -n -c plugin-barman-cloud \ - --tail=50 | grep -i wal - ``` - -2. **Check ObjectStore configuration for WAL settings** - - Ensure ObjectStore has proper WAL retention settings - - Verify credentials have permissions for WAL operations - -### Restore Issues - -#### Restore fails during recovery - -**Symptoms:** - -- New cluster stuck in recovery -- Plugin sidecar shows restore errors -- PostgreSQL won’t start - -**Debugging steps:** - -1. **Check plugin sidecar logs during restore** - - ```sh - # Check the sidecar logs on the recovering cluster pods - kubectl logs -n \ - -c plugin-barman-cloud --tail=100 - - # Look for restore-related errors - kubectl logs -n \ - -c plugin-barman-cloud | grep -E "restore|recovery|ERROR" - ``` - -2. **Verify plugin can access backups** - - ```sh - # Check if `ObjectStore` is properly configured for restore - kubectl get objectstores.barmancloud.cnpg.io \ - -n -o yaml - - # Check PostgreSQL recovery logs - kubectl logs -n \ - -c postgres | grep -i recovery - ``` - -:::tip -For detailed Barman restore operations and troubleshooting, refer to the -[Barman documentation](https://docs.pgbarman.org/latest/barman-cloud-restore.html). -::: - -#### Point-in-time recovery (PITR) configuration issues - -**Symptoms:** - -- PITR doesn’t reach target time -- WAL access errors -- Recovery halts early - -**Debugging steps:** - -1. **Verify PITR configuration in the `Cluster` spec** - - ```yaml - apiVersion: postgresql.cnpg.io/v1 - kind: Cluster - metadata: - name: - spec: - storage: - size: 1Gi - - bootstrap: - recovery: - source: origin - recoveryTarget: - targetTime: "2024-01-15T10:30:00Z" - - externalClusters: - - name: origin - plugin: - enabled: true - name: barman-cloud.cloudnative-pg.io - parameters: - barmanObjectName: - serverName: - ``` - -2. **Check sidecar logs for WAL-related errors** - - ```sh - kubectl logs -n \ - -c plugin-barman-cloud | grep -i wal - ``` - -:::note -Timestamps without an explicit timezone suffix -(e.g., `2024-01-15 10:30:00`) are interpreted as UTC. -::: - -:::warning -Always specify an explicit timezone in your timestamp to avoid ambiguity. -For example, use `2024-01-15T10:30:00Z` or `2024-01-15T10:30:00+02:00` -instead of `2024-01-15 10:30:00`. -::: - -:::note -For detailed PITR configuration and WAL management, see the -[Barman PITR documentation](https://docs.pgbarman.org/latest/). -::: - -### Plugin Configuration Issues - -#### Plugin cannot connect to object storage - -**Symptoms:** - -- Sidecar logs show connection errors -- Backups fail with authentication or network errors -- `ObjectStore` resource reports errors - -**Solution:** - -1. **Verify `ObjectStore` CRD configuration and secrets** - - ```sh - # Check ObjectStore resource status - kubectl get objectstores.barmancloud.cnpg.io \ - -n -o yaml - - # Verify the secret exists and has correct keys for your provider - kubectl get secret -n \ - -o jsonpath='{.data}' | jq 'keys' - ``` - -2. **Check sidecar logs for connectivity issues** - ```sh - kubectl logs -n \ - -c plugin-barman-cloud | grep -E "connect|timeout|SSL|cert" - ``` - -3. **Adjust provider-specific settings (endpoint, path style, etc.)** - - See [Object Store Configuration](object_stores.md) for provider-specific settings - - Ensure `endpointURL` is set correctly for your storage provider - - Verify network policies allow egress to your storage provider - -## Diagnostic Commands - -### Using the `cnpg` plugin for `kubectl` - -The `cnpg` plugin for `kubectl` provides extended debugging capabilities. -Keep it updated: - -```sh -# Install or update the `cnpg` plugin -kubectl krew install cnpg -# Or using an alternative method: https://cloudnative-pg.io/documentation/current/kubectl-plugin/#install - -# Check plugin status (requires CNPG 1.27.0+) -kubectl cnpg status -n - -# View cluster status in detail -kubectl cnpg status -n --verbose -``` - -## Getting Help - -If problems persist: - -1. **Check the documentation** - - - [Installation Guide](installation.mdx) - - [Object Store Configuration](object_stores.md) (for provider-specific settings) - - [Usage Examples](usage.md) - - -2. **Gather diagnostic information** - - ```sh - # Create a diagnostic bundle (⚠️ sanitize these before sharing!) - kubectl get objectstores.barmancloud.cnpg.io -A -o yaml > /tmp/objectstores.yaml - kubectl get clusters.postgresql.cnpg.io -A -o yaml > /tmp/clusters.yaml - kubectl logs -n cnpg-system deployment/barman-cloud --tail=1000 > /tmp/plugin.log - ``` - - -3. **Community support** - - - CloudNativePG Slack: [#cloudnativepg-users](https://cloud-native.slack.com/messages/cloudnativepg-users) - - GitHub Issues: [plugin-barman-cloud](https://github.com/cloudnative-pg/plugin-barman-cloud/issues) - - -4. **Include when reporting** - - - CloudNativePG version - - Plugin version - - Kubernetes version - - Cloud provider and region - - Relevant configuration (⚠️ sanitize/redact sensitive information) - - Error messages and logs - - Steps to reproduce - -## Known Issues and Limitations - -### Current Known Issues - -1. **Migration compatibility**: After migrating from in-tree backup to the - plugin, the `kubectl cnpg backup` command syntax has changed - ([#353](https://github.com/cloudnative-pg/plugin-barman-cloud/issues/353)): - - ```sh - # Old command (in-tree, no longer works after migration) - kubectl cnpg backup -n \ - --method=barmanObjectStore - - # New command (plugin-based) - kubectl cnpg backup -n \ - --method=plugin --plugin-name=barman-cloud.cloudnative-pg.io - ``` - -### Plugin Limitations - -1. **Installation method**: Currently only supports manifest and Kustomize - installation ([#351](https://github.com/cloudnative-pg/plugin-barman-cloud/issues/351) - - Helm chart requested) - -2. **Sidecar resource sharing**: The plugin sidecar container shares pod - resources with PostgreSQL - -3. **Plugin restart behavior**: Restarting the sidecar container requires - restarting the entire PostgreSQL pod - -## Recap of General Debugging Steps - -### Check Backup Status and Identify the Target Instance - -```sh -# List all backups and their status -kubectl get backups.postgresql.cnpg.io -n - -# Get detailed backup information including error messages and target instance -kubectl describe backups.postgresql.cnpg.io \ - -n - -# Extract the target pod name from a failed backup -kubectl get backups.postgresql.cnpg.io \ - -n \ - -o jsonpath='{.status.instanceID.podName}' - -# Get more details including the target pod, method, phase, and error -kubectl get backups.postgresql.cnpg.io \ - -n \ - -o jsonpath='Pod: {.status.instanceID.podName}{"\n"}Method: {.status.method}{"\n"}Phase: {.status.phase}{"\n"}Error: {.status.error}{"\n"}' - -# Check the cluster status for backup-related information -kubectl cnpg status -n --verbose -``` - -### Check Sidecar Logs on the Backup Target Pod - -```sh -# Identify which pod was the backup target (from the previous step) -TARGET_POD=$(kubectl get backups.postgresql.cnpg.io \ - -n \ - -o jsonpath='{.status.instanceID.podName}') -echo "Backup target pod: $TARGET_POD" - -# Check the sidecar logs on the specific target pod -kubectl logs -n $TARGET_POD \ - -c plugin-barman-cloud --tail=100 - -# Follow the logs in real time -kubectl logs -n $TARGET_POD \ - -c plugin-barman-cloud -f - -# Check for specific errors in the target pod around the backup time -kubectl logs -n $TARGET_POD \ - -c plugin-barman-cloud --since=10m | grep -E "ERROR|FATAL|panic|failed" - -# Alternative: List all cluster pods and their roles -kubectl get pods -n -l cnpg.io/cluster= \ - -o custom-columns=NAME:.metadata.name,ROLE:.metadata.labels.cnpg\\.io/instanceRole,INSTANCE:.metadata.labels.cnpg\\.io/instanceName - -# Check sidecar logs on ALL cluster pods (if the target is unclear) -for pod in $(kubectl get pods -n -l cnpg.io/cluster= -o name); do - echo "=== Checking $pod ===" - kubectl logs -n $pod -c plugin-barman-cloud \ - --tail=20 | grep -i error || echo "No errors found" -done -``` - -### Check Events for Backup-Related Issues - -```sh -# Check events for the cluster -kubectl get events -n \ - --field-selector involvedObject.name= - -# Check events for failed backups -kubectl get events -n \ - --field-selector involvedObject.kind=Backup - -# Get all recent events in the namespace -kubectl get events -n --sort-by='.lastTimestamp' | tail -20 -``` - -### Verify `ObjectStore` Configuration - -```sh -# Check the ObjectStore resource -kubectl get objectstores.barmancloud.cnpg.io \ - -n -o yaml - -# Verify the secret exists and has the correct keys -kubectl get secret -n -o yaml -# Alternatively -kubectl get secret -n -o jsonpath='{.data}' | jq 'keys' -``` - -### Common Error Messages and Solutions - -* **"AccessDenied" or "403 Forbidden"** β€” Check cloud credentials and bucket permissions. -* **"NoSuchBucket"** β€” Verify the bucket exists and the endpoint URL is correct. -* **"Connection timeout"** β€” Check network connectivity and firewall rules. -* **"SSL certificate problem"** β€” For self-signed certificates, verify the CA bundle configuration. - diff --git a/web/versioned_docs/version-0.11.0/upgrades.mdx b/web/versioned_docs/version-0.11.0/upgrades.mdx deleted file mode 100644 index 0ab9ddb..0000000 --- a/web/versioned_docs/version-0.11.0/upgrades.mdx +++ /dev/null @@ -1,16 +0,0 @@ ---- -sidebar_position: 25 ---- - -# Upgrades - - - -You can upgrade the plugin simply by installing the new version. Unless -explicitly stated below or in the release notes, no special steps are required. - -## Upgrading to version 0.8.x from previous versions - -Version **0.8.0** introduces breaking changes to resource naming. -To complete the upgrade successfully, follow the instructions in the -["Resource name migration guide"](resource-name-migration.md). diff --git a/web/versioned_docs/version-0.11.0/usage.md b/web/versioned_docs/version-0.11.0/usage.md deleted file mode 100644 index 6406d38..0000000 --- a/web/versioned_docs/version-0.11.0/usage.md +++ /dev/null @@ -1,283 +0,0 @@ ---- -sidebar_position: 30 ---- - -# Using the Barman Cloud Plugin - - - -After [installing the plugin](installation.mdx) in the same namespace as the -CloudNativePG operator, enabling your PostgreSQL cluster to use the Barman -Cloud Plugin involves just a few steps: - -- Defining the object store containing your WAL archive and base backups, using - your preferred [provider](object_stores.md) -- Instructing the Postgres cluster to use the Barman Cloud Plugin - -From that moment, you’ll be able to issue on-demand backups or define a backup -schedule, as well as rely on the object store for recovery operations. - -The rest of this page details each step, using MinIO as object store provider. - -## Defining the `ObjectStore` - -An `ObjectStore` resource must be created for each object store used in your -PostgreSQL architecture. Here's an example configuration using MinIO: - -```yaml -apiVersion: barmancloud.cnpg.io/v1 -kind: ObjectStore -metadata: - name: minio-store -spec: - configuration: - destinationPath: s3://backups/ - endpointURL: http://minio:9000 - s3Credentials: - accessKeyId: - name: minio - key: ACCESS_KEY_ID - secretAccessKey: - name: minio - key: ACCESS_SECRET_KEY - wal: - compression: gzip -``` - -The `.spec.configuration` schema follows the same format as the -[in-tree barman-cloud support](https://pkg.go.dev/github.com/cloudnative-pg/barman-cloud/pkg/api#BarmanObjectStoreConfiguration). -Refer to [the CloudNativePG documentation](https://cloudnative-pg.io/documentation/current/appendixes/backup_barmanobjectstore/) -for additional details. - -:::important -The `serverName` parameter in the `ObjectStore` resource is retained solely for -API compatibility with the in-tree `barmanObjectStore` and must always be left empty. -When needed, use the `serverName` plugin parameter in the Cluster configuration instead. -::: - -## Configuring WAL Archiving - -Once the `ObjectStore` is defined, you can configure your PostgreSQL cluster -to archive WALs by referencing the store in the `.spec.plugins` section: - -```yaml -apiVersion: postgresql.cnpg.io/v1 -kind: Cluster -metadata: - name: cluster-example -spec: - instances: 3 - imagePullPolicy: Always - plugins: - - name: barman-cloud.cloudnative-pg.io - isWALArchiver: true - parameters: - barmanObjectName: minio-store - storage: - size: 1Gi -``` - -This configuration enables both WAL archiving and data directory backups. - -## Performing a Base Backup - -Once WAL archiving is enabled, the cluster is ready for backups. Backups can be -created either declaratively (with YAML manifests) or imperatively (with the -`cnpg` plugin). - -### Declarative approach (YAML manifest) - -Create a backup resource by applying a YAML manifest: - -```yaml -apiVersion: postgresql.cnpg.io/v1 -kind: Backup -metadata: - name: backup-example -spec: - cluster: - name: cluster-example - method: plugin - pluginConfiguration: - name: barman-cloud.cloudnative-pg.io -``` - -### Imperative approach (using the `cnpg` plugin) - -The quickest way to trigger an on-demand backup is with the `cnpg` plugin: - -```bash -kubectl cnpg backup -n \ - --method=plugin \ - --plugin-name=barman-cloud.cloudnative-pg.io -``` - -:::note Migration from in-tree backups -If you are migrating from the in-tree backup system, note the change in syntax: - -```bash -# Old command (in-tree backup) -kubectl cnpg backup -n --method=barmanObjectStore - -# New command (plugin-based backup) -kubectl cnpg backup -n \ - --method=plugin \ - --plugin-name=barman-cloud.cloudnative-pg.io -``` -::: - -## Restoring a Cluster - -To restore a cluster from an object store, create a new `Cluster` resource that -references the store containing the backup. Below is an example configuration: - -```yaml -apiVersion: postgresql.cnpg.io/v1 -kind: Cluster -metadata: - name: cluster-restore -spec: - instances: 3 - imagePullPolicy: IfNotPresent - bootstrap: - recovery: - source: source - externalClusters: - - name: source - plugin: - name: barman-cloud.cloudnative-pg.io - parameters: - barmanObjectName: minio-store - serverName: cluster-example - storage: - size: 1Gi -``` - -:::important -The above configuration does **not** enable WAL archiving for the restored cluster. -::: - -To enable WAL archiving for the restored cluster, include the `.spec.plugins` -section alongside the `externalClusters.plugin` section, as shown below: - -```yaml -apiVersion: postgresql.cnpg.io/v1 -kind: Cluster -metadata: - name: cluster-restore -spec: - instances: 3 - imagePullPolicy: IfNotPresent - bootstrap: - recovery: - source: source - plugins: - - name: barman-cloud.cloudnative-pg.io - isWALArchiver: true - parameters: - # Backup Object Store (push, read-write) - barmanObjectName: minio-store-bis - externalClusters: - - name: source - plugin: - name: barman-cloud.cloudnative-pg.io - parameters: - # Recovery Object Store (pull, read-only) - barmanObjectName: minio-store - serverName: cluster-example - storage: - size: 1Gi -``` - -The same object store may be used for both transaction log archiving and -restoring a cluster, or you can configure separate stores for these purposes. - -## Configuring Replica Clusters - -You can set up a distributed topology by combining the previously defined -configurations with the `.spec.replica` section. Below is an example of how to -define a replica cluster: - -```yaml -apiVersion: postgresql.cnpg.io/v1 -kind: Cluster -metadata: - name: cluster-dc-a -spec: - instances: 3 - primaryUpdateStrategy: unsupervised - - storage: - storageClass: csi-hostpath-sc - size: 1Gi - - plugins: - - name: barman-cloud.cloudnative-pg.io - isWALArchiver: true - parameters: - barmanObjectName: minio-store-a - - replica: - self: cluster-dc-a - primary: cluster-dc-a - source: cluster-dc-b - - externalClusters: - - name: cluster-dc-a - plugin: - name: barman-cloud.cloudnative-pg.io - parameters: - barmanObjectName: minio-store-a - - - name: cluster-dc-b - plugin: - name: barman-cloud.cloudnative-pg.io - parameters: - barmanObjectName: minio-store-b -``` - -## Configuring the plugin instance sidecar - -The Barman Cloud Plugin runs as a sidecar container next to each PostgreSQL -instance pod. It manages backup, WAL archiving, and restore processes. - -Configuration comes from multiple `ObjectStore` resources: - -1. The one referenced in the - `.spec.plugins` section of the `Cluster`. This is the - object store used for WAL archiving and base backups. -2. The one referenced in the external cluster - used in the `.spec.replica.source` section of the `Cluster`. This is - used by the log-shipping designated primary to get the WAL files. -3. The one referenced in the - `.spec.bootstrap.recovery.source` section of the `Cluster`. Used by - the initial recovery job to create the cluster from an existing backup. - -You can fine-tune sidecar behavior in the `.spec.instanceSidecarConfiguration` -of your ObjectStore. These settings apply to all PostgreSQL instances that use -this object store. Any updates take effect at the next `Cluster` reconciliation, -and could generate a rollout of the `Cluster`. - -```yaml -apiVersion: barmancloud.cnpg.io/v1 -kind: ObjectStore -metadata: - name: minio-store -spec: - configuration: - # [...] - instanceSidecarConfiguration: - retentionPolicyIntervalSeconds: 1800 - resources: - requests: - memory: "XXX" - cpu: "YYY" - limits: - memory: "XXX" - cpu: "YYY" -``` - -:::note -If more than one `ObjectStore` applies, the `instanceSidecarConfiguration` of -the one set in `.spec.plugins` has priority. -::: diff --git a/web/versioned_docs/version-0.12.0/compression.md b/web/versioned_docs/version-0.12.0/compression.md deleted file mode 100644 index 2abbede..0000000 --- a/web/versioned_docs/version-0.12.0/compression.md +++ /dev/null @@ -1,43 +0,0 @@ ---- -sidebar_position: 80 ---- - -# Compression - - - -By default, backups and WAL files are archived **uncompressed**. However, the -Barman Cloud Plugin supports multiple compression algorithms via -`barman-cloud-backup` and `barman-cloud-wal-archive`, allowing you to optimize -for space, speed, or a balance of both. - -### Supported Compression Algorithms - -- `bzip2` -- `gzip` -- `lz4` (WAL only) -- `snappy` -- `xz` (WAL only) -- `zstd` (WAL only) - -Compression settings for base backups and WAL archives are configured -independently. For implementation details, refer to the corresponding API -definitions: - -- [`DataBackupConfiguration`](https://pkg.go.dev/github.com/cloudnative-pg/barman-cloud/pkg/api#DataBackupConfiguration) -- [`WALBackupConfiguration`](https://pkg.go.dev/github.com/cloudnative-pg/barman-cloud/pkg/api#WalBackupConfiguration) - -:::important -Compression impacts both performance and storage efficiency. Choose the right -algorithm based on your recovery time objectives (RTO), storage capacity, and -network throughput. -::: - -## Compression Benchmark (on MinIO) - -| Compression | Backup Time (ms) | Restore Time (ms) | Uncompressed Size (MB) | Compressed Size (MB) | Ratio | -| ----------- | ---------------- | ----------------- | ---------------------- | -------------------- | ----- | -| None | 10,927 | 7,553 | 395 | 395 | 1.0:1 | -| bzip2 | 25,404 | 13,886 | 395 | 67 | 5.9:1 | -| gzip | 116,281 | 3,077 | 395 | 91 | 4.3:1 | -| snappy | 8,134 | 8,341 | 395 | 166 | 2.4:1 | diff --git a/web/versioned_docs/version-0.12.0/concepts.md b/web/versioned_docs/version-0.12.0/concepts.md deleted file mode 100644 index 3832df3..0000000 --- a/web/versioned_docs/version-0.12.0/concepts.md +++ /dev/null @@ -1,177 +0,0 @@ ---- -sidebar_position: 10 ---- - -# Main Concepts - - - -:::important -Before proceeding, make sure to review the following sections of the -CloudNativePG documentation: - -- [**Backup**](https://cloudnative-pg.io/documentation/current/backup/) -- [**WAL Archiving**](https://cloudnative-pg.io/documentation/current/wal_archiving/) -- [**Recovery**](https://cloudnative-pg.io/documentation/current/recovery/) -::: - -The **Barman Cloud Plugin** enables **hot (online) backups** of PostgreSQL -clusters in CloudNativePG through [`barman-cloud`](https://pgbarman.org), -supporting continuous physical backups and WAL archiving to an **object -store**β€”without interrupting write operations. - -It also supports both **full recovery** and **Point-in-Time Recovery (PITR)** -of a PostgreSQL cluster. - -## The Object Store - -At the core is the [`ObjectStore` custom resource (CRD)](plugin-barman-cloud.v1.md#objectstorespec), -which acts as the interface between the PostgreSQL cluster and the target -object storage system. It allows you to configure: - -- **Authentication and bucket location** via the `.spec.configuration` section -- **WAL archiving** settingsβ€”such as compression type, parallelism, and - server-side encryptionβ€”under `.spec.configuration.wal` -- **Base backup options**β€”with similar settings for compression, concurrency, - and encryptionβ€”under `.spec.configuration.data` -- **Retention policies** to manage the life-cycle of archived WALs and backups - via `.spec.configuration.retentionPolicy` - -WAL files are archived in the `wals` directory, while base backups are stored -as **tarballs** in the `base` directory, following the -[Barman Cloud convention](https://docs.pgbarman.org/cloud/latest/usage/#object-store-layout). - -The plugin also offers advanced capabilities, including -[backup tagging](misc.md#backup-object-tagging) and -[extra options for backups and WAL archiving](misc.md#extra-options-for-backup-and-wal-archiving). - -:::tip -For details, refer to the -[API reference for the `ObjectStore` resource](plugin-barman-cloud.v1.md#objectstorespec). -::: - -## Integration with a CloudNativePG Cluster - -CloudNativePG can delegate continuous backup and recovery responsibilities to -the **Barman Cloud Plugin** by configuring the `.spec.plugins` section of a -`Cluster` resource. This setup requires a corresponding `ObjectStore` resource -to be defined. - -:::important -While it is technically possible to reuse the same `ObjectStore` for multiple -`Cluster` resources within the same namespace, it is strongly recommended to -dedicate one object store per PostgreSQL cluster to ensure data isolation and -operational clarity. -::: - -The following example demonstrates how to configure a CloudNativePG cluster -named `cluster-example` to use a previously defined `ObjectStore` (also named -`cluster-example`) in the same namespace. Setting `isWALArchiver: true` enables -WAL archiving through the plugin: - -```yaml -apiVersion: postgresql.cnpg.io/v1 -kind: Cluster -metadata: - name: cluster-example -spec: - # Other cluster settings... - plugins: - - name: barman-cloud.cloudnative-pg.io - isWALArchiver: true - parameters: - barmanObjectName: cluster-example -``` - -## Backup of a Postgres Cluster - -Once the object store is defined and the `Cluster` is configured to use the -Barman Cloud Plugin, **WAL archiving is activated immediately** on the -PostgreSQL primary. - -Physical base backups are seamlessly managed by CloudNativePG using the -`Backup` and `ScheduledBackup` resources, respectively for -[on-demand](https://cloudnative-pg.io/documentation/current/backup/#on-demand-backups) -and -[scheduled](https://cloudnative-pg.io/documentation/current/backup/#scheduled-backups) -backups. - -To use the Barman Cloud Plugin, you must set the `method` to `plugin` and -configure the `pluginConfiguration` section as shown: - -```yaml -[...] -spec: - method: plugin - pluginConfiguration: - name: barman-cloud.cloudnative-pg.io - [...] -``` - -With this configuration, CloudNativePG supports: - -- Backups from both **primary** and **standby** instances -- Backups from **designated primaries** in a distributed topology using - [replica clusters](https://cloudnative-pg.io/documentation/current/replica_cluster/) - -:::tip -For details on how to back up from a standby, refer to the official documentation: -[Backup from a standby](https://cloudnative-pg.io/documentation/current/backup/#backup-from-a-standby). -::: - -:::important -Both backup and WAL archiving operations are executed by sidecar containers -running in the same pod as the PostgreSQL `Cluster` primary instanceβ€”except -when backups are taken from a standby, in which case the sidecar runs alongside -the standby pod. -The sidecar containers use a [dedicated container image](images.md) that -includes only the supported version of Barman Cloud. -::: - -## Recovery of a Postgres Cluster - -In PostgreSQL, *recovery* refers to the process of starting a database instance -from an existing backup. The Barman Cloud Plugin integrates with CloudNativePG -to support both **full recovery** and **Point-in-Time Recovery (PITR)** from an -object store. - -Recovery in this context is *not in-place*: it bootstraps a brand-new -PostgreSQL cluster from a backup and replays the necessary WAL files to reach -the desired recovery target. - -To perform a recovery, define an *external cluster* that references the -appropriate `ObjectStore`, and use it as the source in the `bootstrap` section -of the target cluster: - -```yaml -[...] -spec: - [...] - bootstrap: - recovery: - source: source - externalClusters: - - name: source - plugin: - name: barman-cloud.cloudnative-pg.io - parameters: - barmanObjectName: cluster-example - serverName: cluster-example - [...] -``` - -The critical element here is the `externalClusters` section of the `Cluster` -resource, where the `plugin` stanza instructs CloudNativePG to use the Barman -Cloud Plugin to access the object store for recovery. - -This same mechanism can be used for a variety of scenarios enabled by the -CloudNativePG API, including: - -* **Full cluster recovery** from the latest backup -* **Point-in-Time Recovery (PITR)** -* Bootstrapping **replica clusters** in a distributed topology - -:::tip -For complete instructions and advanced use cases, refer to the official -[Recovery documentation](https://cloudnative-pg.io/documentation/current/recovery/). -::: diff --git a/web/versioned_docs/version-0.12.0/images.md b/web/versioned_docs/version-0.12.0/images.md deleted file mode 100644 index f6c32d3..0000000 --- a/web/versioned_docs/version-0.12.0/images.md +++ /dev/null @@ -1,37 +0,0 @@ ---- -sidebar_position: 99 ---- - -# Container Images - - - -The Barman Cloud Plugin is distributed using two container images: - -- One for deploying the plugin components -- One for the sidecar that runs alongside each PostgreSQL instance in a - CloudNativePG `Cluster` using the plugin - -## Plugin Container Image - -The plugin image contains the logic required to operate the Barman Cloud Plugin -within your Kubernetes environment with CloudNativePG. It is published on the -GitHub Container Registry at `ghcr.io/cloudnative-pg/plugin-barman-cloud`. - -This image is built from the -[`Dockerfile.plugin`](https://github.com/cloudnative-pg/plugin-barman-cloud/blob/main/containers/Dockerfile.plugin) -in the plugin repository. - -## Sidecar Container Image - -The sidecar image is used within each PostgreSQL pod in the cluster. It -includes the latest supported version of Barman Cloud and is responsible for -performing WAL archiving and backups on behalf of CloudNativePG. - -It is available at `ghcr.io/cloudnative-pg/plugin-barman-cloud-sidecar` and is -built from the -[`Dockerfile.sidecar`](https://github.com/cloudnative-pg/plugin-barman-cloud/blob/main/containers/Dockerfile.sidecar). - -These sidecar images are designed to work seamlessly with the -[`minimal` PostgreSQL container images](https://github.com/cloudnative-pg/postgres-containers?tab=readme-ov-file#minimal-images) -maintained by the CloudNativePG Community. diff --git a/web/versioned_docs/version-0.12.0/installation.mdx b/web/versioned_docs/version-0.12.0/installation.mdx deleted file mode 100644 index 027d1e8..0000000 --- a/web/versioned_docs/version-0.12.0/installation.mdx +++ /dev/null @@ -1,109 +0,0 @@ ---- -sidebar_position: 20 ---- - -# Installation - -:::important -1. The plugin **must** be installed in the same namespace as the CloudNativePG - operator (typically `cnpg-system`). - -2. Keep in mind that the operator's **listening namespaces** may differ from its - installation namespace. Double-check this to avoid configuration issues. -::: - -## Verifying the Requirements - -Before installing the plugin, make sure the [requirements](intro.md#requirements) are met. - -### CloudNativePG Version - -Ensure you're running a version of CloudNativePG that is compatible with the -plugin. If installed in the default `cnpg-system` namespace, you can verify the -version with: - -```sh -kubectl get deployment -n cnpg-system cnpg-controller-manager \ - -o jsonpath="{.spec.template.spec.containers[*].image}" -``` - -Example output: - -```output -ghcr.io/cloudnative-pg/cloudnative-pg:1.26.0 -``` - -The version **must be 1.26 or newer**. - -### cert-manager - -Use the [cmctl](https://cert-manager.io/docs/reference/cmctl/#installation) -tool to confirm that `cert-manager` is installed and available: - -```sh -cmctl check api -``` - -Example output: - -```output -The cert-manager API is ready -``` - -Both checks are required before proceeding with the installation. - -## Installing the Barman Cloud Plugin - -import { InstallationSnippet } from '@site/src/components/Installation'; - -Install the plugin using `kubectl` by applying the manifest for the latest -release: - - - -Example output: - -```output -customresourcedefinition.apiextensions.k8s.io/objectstores.barmancloud.cnpg.io created -serviceaccount/plugin-barman-cloud created -role.rbac.authorization.k8s.io/leader-election-role created -clusterrole.rbac.authorization.k8s.io/metrics-auth-role created -clusterrole.rbac.authorization.k8s.io/metrics-reader created -clusterrole.rbac.authorization.k8s.io/objectstore-editor-role created -clusterrole.rbac.authorization.k8s.io/objectstore-viewer-role created -clusterrole.rbac.authorization.k8s.io/plugin-barman-cloud created -rolebinding.rbac.authorization.k8s.io/leader-election-rolebinding created -clusterrolebinding.rbac.authorization.k8s.io/metrics-auth-rolebinding created -clusterrolebinding.rbac.authorization.k8s.io/plugin-barman-cloud-binding created -secret/plugin-barman-cloud-8tfddg42gf created -service/barman-cloud created -deployment.apps/barman-cloud configured -certificate.cert-manager.io/barman-cloud-client created -certificate.cert-manager.io/barman-cloud-server created -issuer.cert-manager.io/selfsigned-issuer created -``` - -Finally, check that the deployment is up and running: - -```sh -kubectl rollout status deployment \ - -n cnpg-system barman-cloud -``` - -Example output: - -```output -deployment "barman-cloud" successfully rolled out -``` - -This confirms that the plugin is deployed and ready to use. - -## Testing the latest development snapshot - -You can also test the latest development snapshot of the plugin with the -following command: - -```sh -kubectl apply -f \ - https://raw.githubusercontent.com/cloudnative-pg/plugin-barman-cloud/refs/heads/main/manifest.yaml -``` diff --git a/web/versioned_docs/version-0.12.0/intro.md b/web/versioned_docs/version-0.12.0/intro.md deleted file mode 100644 index 9781d0d..0000000 --- a/web/versioned_docs/version-0.12.0/intro.md +++ /dev/null @@ -1,86 +0,0 @@ ---- -sidebar_position: 1 -sidebar_label: "Introduction" ---- - -# Barman Cloud Plugin - - - -The **Barman Cloud Plugin** for [CloudNativePG](https://cloudnative-pg.io/) -enables online continuous physical backups of PostgreSQL clusters to object storage -using the `barman-cloud` suite from the [Barman](https://docs.pgbarman.org/release/latest/) -project. - -:::important -If you plan to migrate your existing CloudNativePG cluster to the new -plugin-based approach using the Barman Cloud Plugin, see -["Migrating from Built-in CloudNativePG Backup"](migration.md) -for detailed instructions. -::: - -## Requirements - -Before using the Barman Cloud Plugin, ensure that the following components are -installed and properly configured: - -- [CloudNativePG](https://cloudnative-pg.io) version 1.26 or later - - - We strongly recommend version 1.27.0 or later, which includes improved - error handling and status reporting for the plugin. - - If you are running an earlier release, refer to the - [upgrade guide](https://cloudnative-pg.io/documentation/current/installation_upgrade). - -- [cert-manager](https://cert-manager.io/) - - - The recommended way to enable secure TLS communication between the plugin - and the operator. - - Alternatively, you can provide your own certificate bundles. See the - [CloudNativePG documentation on TLS configuration](https://cloudnative-pg.io/documentation/current/cnpg_i/#configuring-tls-certificates). - -- [`kubectl-cnpg`](https://cloudnative-pg.io/documentation/current/kubectl-plugin/) - plugin (optional but recommended) - - - Simplifies debugging and monitoring with additional status and inspection - commands. - - Multiple installation options are available in the - [installation guide](https://cloudnative-pg.io/documentation/current/kubectl-plugin/#install). - -## Key Features - -This plugin provides the following capabilities: - -- Physical online backup of the data directory -- Physical restore of the data directory -- Write-Ahead Log (WAL) archiving -- WAL restore -- Full cluster recovery -- Point-in-Time Recovery (PITR) -- Seamless integration with replica clusters for bootstrap and WAL restore from archive - -:::important -The Barman Cloud Plugin is designed to **replace the in-tree object storage support** -previously provided via the `.spec.backup.barmanObjectStore` section in the -`Cluster` resource. -Backups created using the in-tree approach are fully supported and compatible -with this plugin. -::: - -## Supported Object Storage Providers - -The plugin works with all storage backends supported by `barman-cloud`, including: - -- **Amazon S3** -- **Google Cloud Storage** -- **Microsoft Azure Blob Storage** - -In addition, the following S3-compatible and simulator solutions have been -tested and verified: - -- [MinIO](https://min.io/) – An S3-compatible storage solution -- [Azurite](https://github.com/Azure/Azurite) – A simulator for Azure Blob Storage -- [fake-gcs-server](https://github.com/fsouza/fake-gcs-server) – A simulator for Google Cloud Storage - -:::tip -For more details, refer to [Object Store Providers](object_stores.md). -::: diff --git a/web/versioned_docs/version-0.12.0/migration.md b/web/versioned_docs/version-0.12.0/migration.md deleted file mode 100644 index 2c99ada..0000000 --- a/web/versioned_docs/version-0.12.0/migration.md +++ /dev/null @@ -1,274 +0,0 @@ ---- -sidebar_position: 40 ---- - -# Migrating from Built-in CloudNativePG Backup - - - -The in-tree support for Barman Cloud in CloudNativePG is **deprecated starting -from version 1.26** and will be removed in a future release. - -If you're currently relying on the built-in Barman Cloud integration, you can -migrate seamlessly to the new **plugin-based architecture** using the Barman -Cloud Plugin, without data loss. Follow these steps: - -- [Install the Barman Cloud Plugin](installation.mdx) -- Create an `ObjectStore` resource by translating the contents of the - `.spec.backup.barmanObjectStore` section from your existing `Cluster` - definition -- Modify the `Cluster` resource in a single atomic change to switch from - in-tree backup to the plugin -- Update any `ScheduledBackup` resources to use the plugin -- Update the `externalClusters` configuration, where applicable - -:::tip -For a working example, refer to [this commit](https://github.com/cloudnative-pg/cnpg-playground/commit/596f30e252896edf8f734991c3538df87630f6f7) -from the [CloudNativePG Playground project](https://github.com/cloudnative-pg/cnpg-playground), -which demonstrates a full migration. -::: - ---- - -## Step 1: Define the `ObjectStore` - -Begin by creating an `ObjectStore` resource in the same namespace as your -PostgreSQL `Cluster`. - -There is a **direct mapping** between the `.spec.backup.barmanObjectStore` -section in CloudNativePG and the `.spec.configuration` field in the -`ObjectStore` CR. The conversion is mostly mechanical, with one key difference: - -:::warning -In the plugin architecture, retention policies are defined as part of the `ObjectStore`. -In contrast, the in-tree implementation defined them at the `Cluster` level. -::: - -If your `Cluster` used `.spec.backup.retentionPolicy`, move that configuration -to `.spec.retentionPolicy` in the `ObjectStore`. - ---- - -### Example - -Here’s an excerpt from a traditional in-tree CloudNativePG backup configuration -taken from the CloudNativePG Playground project: - -```yaml -apiVersion: postgresql.cnpg.io/v1 -kind: Cluster -metadata: - name: pg-eu -spec: - # [...] - backup: - barmanObjectStore: - destinationPath: s3://backups/ - endpointURL: http://minio-eu:9000 - s3Credentials: - accessKeyId: - name: minio-eu - key: ACCESS_KEY_ID - secretAccessKey: - name: minio-eu - key: ACCESS_SECRET_KEY - wal: - compression: gzip -``` - -This configuration translates to the following `ObjectStore` resource for the -plugin: - -```yaml -apiVersion: barmancloud.cnpg.io/v1 -kind: ObjectStore -metadata: - name: minio-eu -spec: - configuration: - destinationPath: s3://backups/ - endpointURL: http://minio-eu:9000 - s3Credentials: - accessKeyId: - name: minio-eu - key: ACCESS_KEY_ID - secretAccessKey: - name: minio-eu - key: ACCESS_SECRET_KEY - wal: - compression: gzip -``` - -As you can see, the contents of `barmanObjectStore` have been copied directly -under the `configuration` field of the `ObjectStore` resource, using the same -secret references. - -## Step 2: Update the `Cluster` for plugin WAL archiving - -Once the `ObjectStore` resource is in place, update the `Cluster` resource as -follows in a single atomic change: - -- Remove the `.spec.backup.barmanObjectStore` section -- Remove `.spec.backup.retentionPolicy` if it was defined (as it is now in the - `ObjectStore`) -- Remove the entire `spec.backup` section if it is now empty -- Add `barman-cloud.cloudnative-pg.io` to the `plugins` list, as described in - [Configuring WAL archiving](usage.md#configuring-wal-archiving) - -This will trigger a rolling update of the `Cluster`, switching continuous -backup from the in-tree implementation to the plugin-based approach. - -### Example - -The updated `pg-eu` cluster will have this configuration instead of the -previous `backup` section: - -```yaml - plugins: - - name: barman-cloud.cloudnative-pg.io - isWALArchiver: true - parameters: - barmanObjectName: minio-eu -``` - ---- - -## Step 3: Update the `ScheduledBackup` - -After switching the `Cluster` to use the plugin, update your `ScheduledBackup` -resources to match. - -Set the backup `method` to `plugin` and reference the plugin name via -`pluginConfiguration`, as shown in ["Performing a base backup"](usage.md#performing-a-base-backup). - -### Example - -Original in-tree `ScheduledBackup`: - -```yaml -apiVersion: postgresql.cnpg.io/v1 -kind: ScheduledBackup -metadata: - name: pg-eu-backup -spec: - cluster: - name: pg-eu - schedule: '0 0 0 * * *' - backupOwnerReference: self -``` - -Updated version using the plugin: - -```yaml -apiVersion: postgresql.cnpg.io/v1 -kind: ScheduledBackup -metadata: - name: pg-eu-backup -spec: - cluster: - name: pg-eu - schedule: '0 0 0 * * *' - backupOwnerReference: self - method: plugin - pluginConfiguration: - name: barman-cloud.cloudnative-pg.io -``` - ---- - -## Step 4: Update the `externalClusters` configuration - -If your `Cluster` relies on one or more external clusters that use the in-tree -Barman Cloud integration, you need to update those configurations to use the -plugin-based architecture. - -When a replica cluster fetches WAL files or base backups from an external -source that used the built-in backup method, follow these steps: - -1. Create a corresponding `ObjectStore` resource for the external cluster, as - shown in [Step 1](#step-1-define-the-objectstore) -2. Update the `externalClusters` section of your replica cluster to use the - plugin instead of the in-tree `barmanObjectStore` field - -### Example - -Consider the original configuration using in-tree Barman Cloud: - -```yaml -apiVersion: postgresql.cnpg.io/v1 -kind: Cluster -metadata: - name: pg-us -spec: - # [...] - externalClusters: - - name: pg-eu - barmanObjectStore: - destinationPath: s3://backups/ - endpointURL: http://minio-eu:9000 - serverName: pg-eu - s3Credentials: - accessKeyId: - name: minio-eu - key: ACCESS_KEY_ID - secretAccessKey: - name: minio-eu - key: ACCESS_SECRET_KEY - wal: - compression: gzip -``` - -Create the `ObjectStore` resource for the external cluster: - -```yaml -apiVersion: barmancloud.cnpg.io/v1 -kind: ObjectStore -metadata: - name: minio-eu -spec: - configuration: - destinationPath: s3://backups/ - endpointURL: http://minio-eu:9000 - s3Credentials: - accessKeyId: - name: minio-eu - key: ACCESS_KEY_ID - secretAccessKey: - name: minio-eu - key: ACCESS_SECRET_KEY - wal: - compression: gzip -``` - -Update the external cluster configuration to use the plugin: - -```yaml -apiVersion: postgresql.cnpg.io/v1 -kind: Cluster -metadata: - name: pg-us -spec: - # [...] - externalClusters: - - name: pg-eu - plugin: - name: barman-cloud.cloudnative-pg.io - parameters: - barmanObjectName: minio-eu - serverName: pg-eu -``` - -## Step 5: Verify your metrics - -When migrating from the in-core solution to the plugin-based approach, you need -to monitor a different set of metrics, as described in the -["Observability"](observability.md) section. - -The table below summarizes the name changes between the old in-core metrics and -the new plugin-based ones: - -| Old metric name | New metric name | -| ------------------------------------------------ | ---------------------------------------------------------------- | -| `cnpg_collector_last_failed_backup_timestamp` | `barman_cloud_cloudnative_pg_io_last_failed_backup_timestamp` | -| `cnpg_collector_last_available_backup_timestamp` | `barman_cloud_cloudnative_pg_io_last_available_backup_timestamp` | -| `cnpg_collector_first_recoverability_point` | `barman_cloud_cloudnative_pg_io_first_recoverability_point` | diff --git a/web/versioned_docs/version-0.12.0/misc.md b/web/versioned_docs/version-0.12.0/misc.md deleted file mode 100644 index 0f03b28..0000000 --- a/web/versioned_docs/version-0.12.0/misc.md +++ /dev/null @@ -1,97 +0,0 @@ ---- -sidebar_position: 90 ---- - -# Miscellaneous - - - -## Backup Object Tagging - -You can attach key-value metadata tags to backup artifactsβ€”such as base -backups, WAL files, and history filesβ€”via the `.spec.configuration` section of -the `ObjectStore` resource. - -- `tags`: applied to base backups and WAL files -- `historyTags`: applied to history files only - -### Example - -```yaml -apiVersion: barmancloud.cnpg.io/v1 -kind: ObjectStore -metadata: - name: my-store -spec: - configuration: - [...] - tags: - backupRetentionPolicy: "expire" - historyTags: - backupRetentionPolicy: "keep" - [...] -``` - -## Extra Options for Backup and WAL Archiving - -You can pass additional command-line arguments to `barman-cloud-backup` and -`barman-cloud-wal-archive` using the `additionalCommandArgs` field in the -`ObjectStore` configuration. - -- `.spec.configuration.data.additionalCommandArgs`: for `barman-cloud-backup` -- `.spec.configuration.wal.archiveAdditionalCommandArgs`: for `barman-cloud-wal-archive` - -Each field accepts a list of string arguments. If an argument is already -configured elsewhere in the plugin, the duplicate will be ignored. - -### Example: Extra Backup Options - -```yaml -kind: ObjectStore -metadata: - name: my-store -spec: - configuration: - data: - additionalCommandArgs: - - "--min-chunk-size=5MB" - - "--read-timeout=60" -``` - -### Example: Extra WAL Archive Options - -```yaml -kind: ObjectStore -metadata: - name: my-store -spec: - configuration: - wal: - archiveAdditionalCommandArgs: - - "--max-concurrency=1" - - "--read-timeout=60" -``` - -For a complete list of supported options, refer to the -[official Barman Cloud documentation](https://docs.pgbarman.org/release/latest/). - -## Enable the pprof debug server for the sidecar - -You can enable the instance sidecar's pprof debug HTTP server by adding the `--pprof-server=
` flag to the container's -arguments via `.spec.instanceSidecarConfiguration.additionalContainerArgs`. - -Pass a bind address in the form `:` (for example, `0.0.0.0:6061`). -An empty value disables the server (disabled by default). - -### Example - -```yaml -apiVersion: barmancloud.cnpg.io/v1 -kind: ObjectStore -metadata: - name: my-store -spec: - instanceSidecarConfiguration: - additionalContainerArgs: - - "--pprof-server=0.0.0.0:6061" -``` diff --git a/web/versioned_docs/version-0.12.0/object_stores.md b/web/versioned_docs/version-0.12.0/object_stores.md deleted file mode 100644 index 11b1ff8..0000000 --- a/web/versioned_docs/version-0.12.0/object_stores.md +++ /dev/null @@ -1,497 +0,0 @@ ---- -sidebar_position: 50 ---- - -# Object Store Providers - - - -The Barman Cloud Plugin enables the storage of PostgreSQL cluster backup files -in any object storage service supported by the -[Barman Cloud infrastructure](https://docs.pgbarman.org/release/latest/). - -Currently, Barman Cloud supports the following providers: - -- [Amazon S3](#aws-s3) -- [Microsoft Azure Blob Storage](#azure-blob-storage) -- [Google Cloud Storage](#google-cloud-storage) - -You may also use any S3- or Azure-compatible implementation of the above -services. - -To configure object storage with Barman Cloud, you must define an -[`ObjectStore` object](plugin-barman-cloud.v1.md#objectstore), which -establishes the connection between your PostgreSQL cluster and the object -storage backend. - -Configuration details β€” particularly around authentication β€” will vary depending on -the specific object storage provider you are using. - -The following sections detail the setup for each. - -:::note Authentication Methods -The Barman Cloud Plugin does not independently test all authentication methods -supported by `barman-cloud`. The plugin's responsibility is limited to passing -the provided credentials to `barman-cloud`, which then handles authentication -according to its own implementation. Users should refer to the -[Barman Cloud documentation](https://docs.pgbarman.org/release/latest/) to -verify that their chosen authentication method is supported and properly -configured. -::: - ---- - -## AWS S3 - -[AWS Simple Storage Service (S3)](https://aws.amazon.com/s3/) is one of the -most widely adopted object storage solutions. - -The Barman Cloud plugin for CloudNativePG integrates with S3 through two -primary authentication mechanisms: - -- [IAM Roles for Service Accounts (IRSA)](https://docs.aws.amazon.com/eks/latest/userguide/iam-roles-for-service-accounts.html) β€” - recommended for clusters running on EKS -- Access keys β€” using `ACCESS_KEY_ID` and `ACCESS_SECRET_KEY` credentials - -### Access Keys - -To authenticate using access keys, you’ll need: - -- `ACCESS_KEY_ID`: the public key used to authenticate to S3 -- `ACCESS_SECRET_KEY`: the corresponding secret key -- `ACCESS_SESSION_TOKEN`: (optional) a temporary session token, if required - -These credentials must be stored securely in a Kubernetes secret: - -```sh -kubectl create secret generic aws-creds \ - --from-literal=ACCESS_KEY_ID= \ - --from-literal=ACCESS_SECRET_KEY= -# --from-literal=ACCESS_SESSION_TOKEN= # if required -``` - -The credentials will be encrypted at rest if your Kubernetes environment -supports it. - -You can then reference the secret in your `ObjectStore` definition: - -```yaml -apiVersion: barmancloud.cnpg.io/v1 -kind: ObjectStore -metadata: - name: aws-store -spec: - configuration: - destinationPath: "s3://BUCKET_NAME/path/to/folder" - s3Credentials: - accessKeyId: - name: aws-creds - key: ACCESS_KEY_ID - secretAccessKey: - name: aws-creds - key: ACCESS_SECRET_KEY - [...] -``` - -### IAM Role for Service Account (IRSA) - -To use IRSA with EKS, configure the service account of the PostgreSQL cluster -with the appropriate annotation: - -```yaml -apiVersion: postgresql.cnpg.io/v1 -kind: Cluster -metadata: - [...] -spec: - serviceAccountTemplate: - metadata: - annotations: - eks.amazonaws.com/role-arn: arn:[...] - [...] -``` - -### S3 Lifecycle Policy - -Barman Cloud uploads backup files to S3 but does not modify them afterward. -To enhance data durability and protect against accidental or malicious loss, -it's recommended to implement the following best practices: - -- Enable object versioning -- Enable object locking to prevent objects from being deleted or overwritten - for a defined period or indefinitely (this provides an additional layer of - protection against accidental deletion and ransomware attacks) -- Set lifecycle rules to expire current versions a few days after your Barman - retention window -- Expire non-current versions after a longer period - -These strategies help you safeguard backups without requiring broad delete -permissions, ensuring both security and compliance with minimal operational -overhead. - -### S3-Compatible Storage Providers - -You can use S3-compatible services like **MinIO**, **Linode (Akamai) Object Storage**, -or **DigitalOcean Spaces** by specifying a custom `endpointURL`. - -Example with Linode (Akamai) Object Storage (`us-east1`): - -```yaml -apiVersion: barmancloud.cnpg.io/v1 -kind: ObjectStore -metadata: - name: linode-store -spec: - configuration: - destinationPath: "s3://BUCKET_NAME/" - endpointURL: "https://us-east1.linodeobjects.com" - s3Credentials: - [...] - [...] -``` - -Recent changes to the [boto3 implementation](https://github.com/boto/boto3/issues/4392) -of [Amazon S3 Data Integrity Protections](https://docs.aws.amazon.com/sdkref/latest/guide/feature-dataintegrity.html) -may lead to the `x-amz-content-sha256` error when using the Barman Cloud -Plugin. - -If you encounter this issue (see [GitHub issue #393](https://github.com/cloudnative-pg/plugin-barman-cloud/issues/393)), -you can apply the following workaround by setting specific environment -variables in the `ObjectStore` resource: - -```yaml -apiVersion: barmancloud.cnpg.io/v1 -kind: ObjectStore -metadata: - name: linode-store -spec: - instanceSidecarConfiguration: - env: - - name: AWS_REQUEST_CHECKSUM_CALCULATION - value: when_required - - name: AWS_RESPONSE_CHECKSUM_VALIDATION - value: when_required - [...] -``` - -These settings ensure that checksum calculations and validations are only -applied when explicitly required, avoiding compatibility issues with certain -S3-compatible storage providers. - -Example with DigitalOcean Spaces (SFO3, path-style): - -```yaml -apiVersion: barmancloud.cnpg.io/v1 -kind: ObjectStore -metadata: - name: digitalocean-store -spec: - configuration: - destinationPath: "s3://BUCKET_NAME/path/to/folder" - endpointURL: "https://sfo3.digitaloceanspaces.com" - s3Credentials: - [...] - [...] -``` - -### Using Object Storage with a Private CA - -For object storage services (e.g., MinIO) that use HTTPS with certificates -signed by a private CA, set the `endpointCA` field in the `ObjectStore` -definition. Unless you already have it, create a Kubernetes `Secret` with the -CA bundle: - -```sh -kubectl create secret generic my-ca-secret --from-file=ca.crt -``` - -Then reference it: - -```yaml -apiVersion: barmancloud.cnpg.io/v1 -kind: ObjectStore -metadata: - name: minio-store -spec: - configuration: - endpointURL: - endpointCA: - name: my-ca-secret - key: ca.crt - [...] -``` - - -:::note -If you want `ConfigMaps` and `Secrets` to be **automatically** reloaded by -instances, you can add a label with the key `cnpg.io/reload` to the -`Secrets`/`ConfigMaps`. Otherwise, you will have to reload the instances using the -`kubectl cnpg reload` subcommand. -::: - ---- - -## Azure Blob Storage - -[Azure Blob Storage](https://azure.microsoft.com/en-us/services/storage/blobs/) -is Microsoft’s cloud-based object storage solution. - -Barman Cloud supports the following authentication methods: - -- [Connection String](https://learn.microsoft.com/en-us/azure/storage/common/storage-configure-connection-string) -- Storage Account Name + [Storage Account Access Key](https://learn.microsoft.com/en-us/azure/storage/common/storage-account-keys-manage) -- Storage Account Name + [Storage Account SAS Token](https://learn.microsoft.com/en-us/azure/storage/blobs/sas-service-create) -- [Azure AD Managed Identity](https://learn.microsoft.com/en-us/entra/identity/managed-identities-azure-resources/overview) -- [Default Azure Credentials](https://learn.microsoft.com/en-us/dotnet/api/azure.identity.defaultazurecredential?view=azure-dotnet) - -### Azure AD Managed Identity - -This method avoids storing credentials in Kubernetes by enabling the -usage of [Azure Managed Identities](https://learn.microsoft.com/en-us/entra/identity/managed-identities-azure-resources/overview) authentication mechanism. -This can be enabled by setting the `inheritFromAzureAD` option to `true`. -Managed Identity can be configured for the AKS Cluster by following -the [Azure documentation](https://learn.microsoft.com/en-us/azure/aks/use-managed-identity?pivots=system-assigned). - -```yaml -apiVersion: barmancloud.cnpg.io/v1 -kind: ObjectStore -metadata: - name: azure-store -spec: - configuration: - destinationPath: "" - azureCredentials: - inheritFromAzureAD: true - [...] -``` - -### Default Azure Credentials - -The `useDefaultAzureCredentials` option enables the default Azure credentials -flow, which uses [`DefaultAzureCredential`](https://learn.microsoft.com/en-us/python/api/azure-identity/azure.identity.defaultazurecredential) -to automatically discover and use available credentials in the following order: - -1. **Environment Variables** β€” `AZURE_CLIENT_ID`, `AZURE_CLIENT_SECRET`, and `AZURE_TENANT_ID` for Service Principal authentication -2. **Managed Identity** β€” Uses the managed identity assigned to the pod -3. **Azure CLI** β€” Uses credentials from the Azure CLI if available -4. **Azure PowerShell** β€” Uses credentials from Azure PowerShell if available - -This approach is particularly useful for getting started with development and testing; it allows -the SDK to attempt multiple authentication mechanisms seamlessly across different environments. -However, this is not recommended for production. Please refer to the -[official Azure guidance](https://learn.microsoft.com/en-us/dotnet/azure/sdk/authentication/credential-chains?tabs=dac#usage-guidance-for-defaultazurecredential) -for a comprehensive understanding of `DefaultAzureCredential`. - -```yaml -apiVersion: barmancloud.cnpg.io/v1 -kind: ObjectStore -metadata: - name: azure-store -spec: - configuration: - destinationPath: "" - azureCredentials: - useDefaultAzureCredentials: true - [...] -``` - -### Access Key, SAS Token, or Connection String - -Store credentials in a Kubernetes secret: - -```sh -kubectl create secret generic azure-creds \ - --from-literal=AZURE_STORAGE_ACCOUNT= \ - --from-literal=AZURE_STORAGE_KEY= \ - --from-literal=AZURE_STORAGE_SAS_TOKEN= \ - --from-literal=AZURE_STORAGE_CONNECTION_STRING= -``` - -Then reference the required keys in your `ObjectStore`: - -```yaml -apiVersion: barmancloud.cnpg.io/v1 -kind: ObjectStore -metadata: - name: azure-store -spec: - configuration: - destinationPath: "" - azureCredentials: - connectionString: - name: azure-creds - key: AZURE_CONNECTION_STRING - storageAccount: - name: azure-creds - key: AZURE_STORAGE_ACCOUNT - storageKey: - name: azure-creds - key: AZURE_STORAGE_KEY - storageSasToken: - name: azure-creds - key: AZURE_STORAGE_SAS_TOKEN - [...] -``` - -For Azure Blob, the destination path format is: - -``` -://..core.windows.net// -``` - -### Azure-Compatible Providers - -If you're using a different implementation (e.g., Azurite or emulator): - -``` -://:/// -``` - ---- - -## Google Cloud Storage - -[Google Cloud Storage](https://cloud.google.com/storage/) is supported with two -authentication modes: - -- **GKE Workload Identity** (recommended inside Google Kubernetes Engine) -- **Service Account JSON key** via the `GOOGLE_APPLICATION_CREDENTIALS` environment variable - -### GKE Workload Identity - -Use the [Workload Identity authentication](https://cloud.google.com/kubernetes-engine/docs/how-to/workload-identity) -when running in GKE: - -1. Set `googleCredentials.gkeEnvironment` to `true` in the `ObjectStore` - resource -2. Annotate the `serviceAccountTemplate` in the `Cluster` resource with the GCP - service account - -For example, in the `ObjectStore` resource: - -```yaml -apiVersion: barmancloud.cnpg.io/v1 -kind: ObjectStore -metadata: - name: google-store -spec: - configuration: - destinationPath: "gs:///" - googleCredentials: - gkeEnvironment: true -``` - -And in the `Cluster` resource: - -```yaml -apiVersion: postgresql.cnpg.io/v1 -kind: Cluster -spec: - serviceAccountTemplate: - metadata: - annotations: - iam.gke.io/gcp-service-account: [...].iam.gserviceaccount.com -``` - -### Service Account JSON Key - -Follow Google’s [authentication setup](https://cloud.google.com/docs/authentication/getting-started), -then: - -```sh -kubectl create secret generic backup-creds --from-file=gcsCredentials=gcs_credentials_file.json -``` - -```yaml -apiVersion: barmancloud.cnpg.io/v1 -kind: ObjectStore -metadata: - name: google-store -spec: - configuration: - destinationPath: "gs:///" - googleCredentials: - applicationCredentials: - name: backup-creds - key: gcsCredentials - [...] -``` - -:::important -This authentication method generates a JSON file within the container -with all the credentials required to access your Google Cloud Storage -bucket. As a result, if someone gains access to the `Pod`, they will also have -write permissions to the bucket. -::: - ---- - - -## MinIO Object Store - -In order to use the Tenant resource you first need to deploy the -[MinIO operator](https://docs.min.io/community/minio-object-store/operations/deployments/installation.html). -For the latest documentation of MinIO, please refer to the -[MinIO official documentation](https://docs.min.io/community/minio-object-store/). - -MinIO Object Store's API is compatible with S3, and the default configuration of the Tenant -will create these services: -- `-console` on port 9090 (with autocert) or 9443 (without autocert) -- `-hl` on port 9000 -Where `` is the `metadata.name` you assigned to your Tenant resource. - -:::note -The `-console` service will only be available if you have enabled the -[MinIO Console](https://docs.min.io/community/minio-object-store/administration/minio-console.html). - -For example, the following Tenant: -```yml -apiVersion: minio.min.io/v2 -kind: Tenant -metadata: - name: cnpg-backups -spec: - [...] -``` -would have services called `cnpg-backups-console` and `cnpg-backups-hl` respectively. - -The `console` service is for managing the tenant, while the `hl` service exposes the S3 -compatible API. If your tenant is configured with `requestAutoCert` you will communicate -to these services over HTTPS, if not you will use HTTP. - -For authentication you can use your username and password, or create an access key. -Whichever method you choose, it has to be stored as a secret. - -```sh -kubectl create secret generic minio-creds \ - --from-literal=MINIO_ACCESS_KEY= \ - --from-literal=MINIO_SECRET_KEY= -``` - -Finally, create the Barman ObjectStore: - -```yaml -apiVersion: barmancloud.cnpg.io/v1 -kind: ObjectStore -metadata: - name: minio-store -spec: - configuration: - destinationPath: s3://BUCKET_NAME/ - endpointURL: http://-hl:9000 - s3Credentials: - accessKeyId: - name: minio-creds - key: MINIO_ACCESS_KEY - secretAccessKey: - name: minio-creds - key: MINIO_SECRET_KEY - [...] -``` - -:::important -Verify on `s3://BUCKET_NAME/` the presence of archived WAL files before -proceeding with a backup. -::: - ---- diff --git a/web/versioned_docs/version-0.12.0/observability.md b/web/versioned_docs/version-0.12.0/observability.md deleted file mode 100644 index 274b973..0000000 --- a/web/versioned_docs/version-0.12.0/observability.md +++ /dev/null @@ -1,24 +0,0 @@ ---- -sidebar_position: 55 ---- - -# Observability - - - -The Barman Cloud Plugin exposes the following metrics through the native -Prometheus exporter of the instance manager: - -- `barman_cloud_cloudnative_pg_io_last_failed_backup_timestamp`: - the UNIX timestamp of the most recent failed backup. - -- `barman_cloud_cloudnative_pg_io_last_available_backup_timestamp`: - the UNIX timestamp of the most recent successfully available backup. - -- `barman_cloud_cloudnative_pg_io_first_recoverability_point`: - the UNIX timestamp representing the earliest point in time from which the - cluster can be recovered. - -These metrics supersede the previously available in-core metrics that used the -`cnpg_collector` prefix. The new metrics are exposed under the -`barman_cloud_cloudnative_pg_io` prefix instead. diff --git a/web/versioned_docs/version-0.12.0/parameters.md b/web/versioned_docs/version-0.12.0/parameters.md deleted file mode 100644 index ca0cd2b..0000000 --- a/web/versioned_docs/version-0.12.0/parameters.md +++ /dev/null @@ -1,19 +0,0 @@ ---- -sidebar_position: 100 ---- - -# Parameters - - - -The following parameters are available for the Barman Cloud Plugin: - -- `barmanObjectName`: references the `ObjectStore` resource to be used by the - plugin. -- `serverName`: Specifies the server name in the object store. - -:::important -The `serverName` parameter in the `ObjectStore` resource is retained solely for -API compatibility with the in-tree `barmanObjectStore` and must always be left empty. -When needed, use the `serverName` plugin parameter in the Cluster configuration instead. -::: diff --git a/web/versioned_docs/version-0.12.0/plugin-barman-cloud.v1.md b/web/versioned_docs/version-0.12.0/plugin-barman-cloud.v1.md deleted file mode 100644 index 7bd607c..0000000 --- a/web/versioned_docs/version-0.12.0/plugin-barman-cloud.v1.md +++ /dev/null @@ -1,108 +0,0 @@ -# API Reference - -## Packages -- [barmancloud.cnpg.io/v1](#barmancloudcnpgiov1) - - -## barmancloud.cnpg.io/v1 - -Package v1 contains API Schema definitions for the barmancloud v1 API group - -### Resource Types -- [ObjectStore](#objectstore) - - - -#### InstanceSidecarConfiguration - - - -InstanceSidecarConfiguration defines the configuration for the sidecar that runs in the instance pods. - - - -_Appears in:_ -- [ObjectStoreSpec](#objectstorespec) - -| Field | Description | Required | Default | Validation | -| --- | --- | --- | --- | --- | -| `env` _[EnvVar](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#envvar-v1-core) array_ | The environment to be explicitly passed to the sidecar | | | | -| `retentionPolicyIntervalSeconds` _integer_ | The retentionCheckInterval defines the frequency at which the
system checks and enforces retention policies. | | 1800 | | -| `resources` _[ResourceRequirements](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcerequirements-v1-core)_ | Resources define cpu/memory requests and limits for the sidecar that runs in the instance pods. | | | | -| `additionalContainerArgs` _string array_ | AdditionalContainerArgs is an optional list of command-line arguments
to be passed to the sidecar container when it starts.
The provided arguments are appended to the container’s default arguments. | | | | -| `logLevel` _string_ | The log level for PostgreSQL instances. Valid values are: `error`, `warning`, `info` (default), `debug`, `trace` | | info | Enum: [error warning info debug trace]
| - - -#### ObjectStore - - - -ObjectStore is the Schema for the objectstores API. - - - - - -| Field | Description | Required | Default | Validation | -| --- | --- | --- | --- | --- | -| `apiVersion` _string_ | `barmancloud.cnpg.io/v1` | True | | | -| `kind` _string_ | `ObjectStore` | True | | | -| `metadata` _[ObjectMeta](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#objectmeta-v1-meta)_ | Refer to Kubernetes API documentation for fields of `metadata`. | True | | | -| `spec` _[ObjectStoreSpec](#objectstorespec)_ | Specification of the desired behavior of the ObjectStore.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status | True | | | -| `status` _[ObjectStoreStatus](#objectstorestatus)_ | Most recently observed status of the ObjectStore. This data may not be up to
date. Populated by the system. Read-only.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status | | | | - - -#### ObjectStoreSpec - - - -ObjectStoreSpec defines the desired state of ObjectStore. - - - -_Appears in:_ -- [ObjectStore](#objectstore) - -| Field | Description | Required | Default | Validation | -| --- | --- | --- | --- | --- | -| `configuration` _[BarmanObjectStoreConfiguration](https://pkg.go.dev/github.com/cloudnative-pg/barman-cloud/pkg/api#BarmanObjectStoreConfiguration)_ | The configuration for the barman-cloud tool suite | True | | | -| `retentionPolicy` _string_ | RetentionPolicy is the retention policy to be used for backups
and WALs (i.e. '60d'). The retention policy is expressed in the form
of `XXu` where `XX` is a positive integer and `u` is in `[dwm]` -
days, weeks, months. | | | Pattern: `^[1-9][0-9]*[dwm]$`
| -| `instanceSidecarConfiguration` _[InstanceSidecarConfiguration](#instancesidecarconfiguration)_ | The configuration for the sidecar that runs in the instance pods | | | | - - -#### ObjectStoreStatus - - - -ObjectStoreStatus defines the observed state of ObjectStore. - - - -_Appears in:_ -- [ObjectStore](#objectstore) - -| Field | Description | Required | Default | Validation | -| --- | --- | --- | --- | --- | -| `serverRecoveryWindow` _object (keys:string, values:[RecoveryWindow](#recoverywindow))_ | ServerRecoveryWindow maps each server to its recovery window | True | | | - - -#### RecoveryWindow - - - -RecoveryWindow represents the time span between the first -recoverability point and the last successful backup of a PostgreSQL -server, defining the period during which data can be restored. - - - -_Appears in:_ -- [ObjectStoreStatus](#objectstorestatus) - -| Field | Description | Required | Default | Validation | -| --- | --- | --- | --- | --- | -| `firstRecoverabilityPoint` _[Time](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#time-v1-meta)_ | The first recoverability point in a PostgreSQL server refers to
the earliest point in time to which the database can be
restored. | True | | | -| `lastSuccessfulBackupTime` _[Time](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#time-v1-meta)_ | The last successful backup time | True | | | -| `lastFailedBackupTime` _[Time](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#time-v1-meta)_ | The last failed backup time | True | | | - - diff --git a/web/versioned_docs/version-0.12.0/resource-name-migration.md b/web/versioned_docs/version-0.12.0/resource-name-migration.md deleted file mode 100644 index f5c1cc3..0000000 --- a/web/versioned_docs/version-0.12.0/resource-name-migration.md +++ /dev/null @@ -1,219 +0,0 @@ ---- -sidebar_position: 90 ---- - -# Resource name migration guide - - - -:::warning -Before proceeding with the migration process, please: -1. **Read this guide in its entirety** to understand what changes will be made -2. **Test in a non-production environment** first if possible -3. **Ensure you have proper backups** of your cluster configuration - -This migration will delete old RBAC resources only after the -`plugin-barman-cloud` upgrade. While the operation is designed to be safe, you -should review and understand the changes before proceeding. The maintainers of -this project are not responsible for any issues that may arise during -migration. - -**Note:** This guide assumes you are using the default `cnpg-system` namespace. -::: - -## Overview - -Starting from version **0.8.0**, the `plugin-barman-cloud` deployment manifests -use more specific, prefixed resource names to avoid conflicts with other -components deployed in the same Kubernetes cluster. - -## What Changed - -The following resources have been renamed to use proper prefixes. - -### Cluster-scoped Resources - -| Old Name | New Name | -|----------------------------|------------------------------------------| -| `metrics-auth-role` | `barman-plugin-metrics-auth-role` | -| `metrics-auth-rolebinding` | `barman-plugin-metrics-auth-rolebinding` | -| `metrics-reader` | `barman-plugin-metrics-reader` | -| `objectstore-viewer-role` | `barman-plugin-objectstore-viewer-role` | -| `objectstore-editor-role` | `barman-plugin-objectstore-editor-role` | - -### Namespace-scoped Resources - -| Old Name | New Name | Namespace | -|-------------------------------|---------------------------------------------|---------------| -| `leader-election-role` | `barman-plugin-leader-election-role` | `cnpg-system` | -| `leader-election-rolebinding` | `barman-plugin-leader-election-rolebinding` | `cnpg-system` | - -## Why This Change? - -Using generic names for cluster-wide resources is discouraged as they may -conflict with other components deployed in the same cluster. The new names make -it clear that these resources belong to the Barman Cloud plugin and help avoid -naming collisions. - -## Migration Instructions - -This three steps migration process is straightforward and can be completed with -a few `kubectl` commands. - -### Step 1: Upgrade plugin-barman-cloud - -Please refer to the [Installation](installation.mdx) section to deploy the new -`plugin-barman-cloud` release. - -### Step 2: Delete Old Cluster-scoped Resources - -:::danger Verify Resources Before Deletion -**IMPORTANT**: The old resource names are generic and could potentially belong -to other components in your cluster. - -**Before deleting each resource, verify it belongs to the Barman Cloud plugin -by checking:** -- For `objectstore-*` roles: Look for `barmancloud.cnpg.io` in the API groups -- For `metrics-*` roles: Check if they reference the `plugin-barman-cloud` - ServiceAccount in `cnpg-system` namespace -- For other roles: Look for labels like `app.kubernetes.io/name: plugin-barman-cloud` - -If a resource doesn't have these indicators, **DO NOT DELETE IT** as it may -belong to another application. - -Carefully review the output of each verification command before proceeding with -the `delete`. -::: - -:::tip Dry Run First -You can add `--dry-run=client` to any `kubectl delete` command to preview what -would be deleted without actually removing anything. -::: - -**Only proceed if you've verified these resources belong to the Barman Cloud -plugin (see warning above).** - -For each resource below, first verify it belongs to Barman Cloud, then delete -it: - -```bash -# 1. Check metrics-auth-rolebinding FIRST (we'll check the role after) -# Look for references to plugin-barman-cloud ServiceAccount -kubectl describe clusterrolebinding metrics-auth-rolebinding -# If it references plugin-barman-cloud ServiceAccount in cnpg-system namespace, -# delete it: -kubectl delete clusterrolebinding metrics-auth-rolebinding - -# 2. Check metrics-auth-role -# Look for references to authentication.k8s.io and authorization.k8s.io -kubectl describe clusterrole metrics-auth-role -# Verify it's not being used by any other rolebindings: -kubectl get clusterrolebinding -o json \ - | jq -r '.items[] | select(.roleRef.name=="metrics-auth-role") \ - | .metadata.name' -# If the above returns nothing (role is not in use) and the role looks like the -# Barman Cloud one, delete it (see warnings section): -kubectl delete clusterrole metrics-auth-role - -# 3. Check objectstore-viewer-role -# Look for barmancloud.cnpg.io API group or -# for `app.kubernetes.io/name: plugin-barman-cloud` label -kubectl describe clusterrole objectstore-viewer-role -# If it shows barmancloud.cnpg.io in API groups, delete it: -kubectl delete clusterrole objectstore-viewer-role - -# 4. Check objectstore-editor-role -# Look for barmancloud.cnpg.io API group or -# for `app.kubernetes.io/name: plugin-barman-cloud` label -kubectl describe clusterrole objectstore-editor-role -# If it shows barmancloud.cnpg.io in API groups, delete it: -kubectl delete clusterrole objectstore-editor-role - -# 5. Check metrics-reader (MOST DANGEROUS - very generic name) -# First, check if it's being used by any rolebindings OTHER than barman's: -kubectl get clusterrolebinding -o json | jq -r '.items[] \ - | select(.roleRef.name=="metrics-reader") \ - | "\(.metadata.name) -> \(.subjects[0].name) in \(.subjects[0].namespace)"' -# If this shows ANY rolebindings, review them carefully. Only proceed if -# they're all Barman-related. Then check the role itself: -kubectl describe clusterrole metrics-reader -# If it ONLY has nonResourceURLs: /metrics and NO other rolebindings use it, -# delete it: -kubectl delete clusterrole metrics-reader -``` - -:::warning -The `metrics-reader` role is particularly dangerous to delete blindly. Many -monitoring systems use this exact name. Only delete it if: - -1. You've verified it ONLY grants access to `/metrics` -2. No other rolebindings reference it (checked with the jq command above) -3. You're certain it was created by the Barman Cloud plugin - -If you're unsure, it's safer to leave it and let the new -`barman-plugin-metrics-reader` role coexist with it. -::: - -If any resource is not found during the `describe` command, that's okay - it -means it was never created or already deleted. Simply skip the delete command -for that resource. - -### Step 3: Delete Old Namespace-scoped Resources - -Delete the old namespace-scoped resources in the `cnpg-system` namespace: - -```bash -# Delete the old leader-election resources -kubectl delete role leader-election-role -n cnpg-system -kubectl delete rolebinding leader-election-rolebinding -n cnpg-system -``` - -If any resource is not found, that's okay - it means it was never created or -already deleted. - -## Impact - -- **Permissions:** If you have custom RBAC rules or tools that reference the - old resource names, they will need to be updated. -- **External Users:** If end users have been granted the - `objectstore-viewer-role` or `objectstore-editor-role`, they will need to be - re-granted the new role names (`barman-plugin-objectstore-viewer-role` and - `barman-plugin-objectstore-editor-role`). - -## Verification - -After migration, verify that the new resources are created: - -```bash -# Check cluster-scoped resources -kubectl get clusterrole | grep barman -kubectl get clusterrolebinding | grep barman - -# Check namespace-scoped resources -kubectl get role,rolebinding -n cnpg-system | grep barman -``` - -You should see the new prefixed resource names. - -## Troubleshooting - -### Plugin Not Starting After Migration - -If the plugin fails to start after migration, check: - -1. **ServiceAccount permissions:** Ensure the `plugin-barman-cloud` ServiceAccount is bound to the new roles: - ```bash - kubectl get clusterrolebinding barman-plugin-metrics-auth-rolebinding -o yaml - kubectl get rolebinding barman-plugin-leader-election-rolebinding -n cnpg-system -o yaml - ``` - -2. **Role references:** Verify that the rolebindings reference the correct role names: - ```bash - kubectl describe rolebinding barman-plugin-leader-election-rolebinding -n cnpg-system - kubectl describe clusterrolebinding barman-plugin-metrics-auth-rolebinding - ``` - -## Support - -If you encounter issues during migration, please open an issue on the [GitHub -repository](https://github.com/cloudnative-pg/plugin-barman-cloud/issues). diff --git a/web/versioned_docs/version-0.12.0/retention.md b/web/versioned_docs/version-0.12.0/retention.md deleted file mode 100644 index fefbd08..0000000 --- a/web/versioned_docs/version-0.12.0/retention.md +++ /dev/null @@ -1,38 +0,0 @@ ---- -sidebar_position: 60 ---- - -# Retention Policies - - - -The Barman Cloud Plugin supports **automated cleanup of obsolete backups** via -retention policies, configured in the `.spec.retentionPolicy` field of the -`ObjectStore` resource. - -:::note -This feature uses the `barman-cloud-backup-delete` command with the -`--retention-policy "RECOVERY WINDOW OF {{ value }} {{ unit }}"` syntax. -::: - -#### Example: 30-Day Retention Policy - -```yaml -apiVersion: barmancloud.cnpg.io/v1 -kind: ObjectStore -metadata: - name: my-store -spec: - [...] - retentionPolicy: "30d" -```` - -:::note -A **recovery window retention policy** ensures the cluster can be restored to -any point in time between the calculated *Point of Recoverability* (PoR) and -the latest WAL archive. The PoR is defined as `current time - recovery window`. -The **first valid backup** is the most recent backup completed before the PoR. -Backups older than that are marked as *obsolete* and deleted after the next -backup completes. -::: - diff --git a/web/versioned_docs/version-0.12.0/troubleshooting.md b/web/versioned_docs/version-0.12.0/troubleshooting.md deleted file mode 100644 index fe57262..0000000 --- a/web/versioned_docs/version-0.12.0/troubleshooting.md +++ /dev/null @@ -1,591 +0,0 @@ ---- -sidebar_position: 90 ---- - -# Troubleshooting - - - -This guide helps you diagnose and resolve common issues with the Barman Cloud -plugin. - -:::important -We are continuously improving the integration between CloudNativePG and the -Barman Cloud plugin as it moves toward greater stability and maturity. For this -reason, we recommend using the latest available version of both components. -See the [*Requirements* section](intro.md#requirements) for details. -::: - -:::note -The following commands assume you installed the CloudNativePG operator in -the default `cnpg-system` namespace. If you installed it in a different -namespace, adjust the commands accordingly. -::: - -## Viewing Logs - -To troubleshoot effectively, you’ll often need to review logs from multiple -sources: - -```sh -# View operator logs (includes plugin interaction logs) -kubectl logs -n cnpg-system deployment/cnpg-controller-manager -f - -# View plugin manager logs -kubectl logs -n cnpg-system deployment/barman-cloud -f - -# View sidecar container logs (Barman Cloud operations) -kubectl logs -n -c plugin-barman-cloud -f - -# View all containers in a pod -kubectl logs -n --all-containers=true - -# View previous container logs (if container restarted) -kubectl logs -n -c plugin-barman-cloud --previous -``` - -## Common Issues - -### Plugin Installation Issues - -#### Plugin pods not starting - -**Symptoms:** - -- Plugin pods stuck in `CrashLoopBackOff` or `Error` -- Plugin deployment not ready - -**Possible causes and solutions:** - -1. **Certificate issues** - - ```sh - # Check if cert-manager is installed and running - kubectl get pods -n cert-manager - - # Check if the plugin certificate is created - kubectl get certificates -n cnpg-system - ``` - - If cert-manager is not installed, install it first: - - ```sh - # Note: other installation methods for cert-manager are available - kubectl apply -f \ - https://github.com/cert-manager/cert-manager/releases/latest/download/cert-manager.yaml - ``` - - If you are using your own certificates without cert-manager, you will need - to verify the entire certificate chain yourself. - - -2. **Image pull errors** - - ```sh - # Check pod events for image pull errors - kubectl describe pod -n cnpg-system -l app=barman-cloud - ``` - - Verify the image exists and you have proper credentials if using a private - registry. - - -3. **Resource constraints** - - ```sh - # Check node resources - kubectl top nodes - kubectl describe nodes - ``` - - Make sure your cluster has sufficient CPU and memory resources. - -### Backup Failures - -#### Quick Backup Troubleshooting Checklist - -When a backup fails, follow these steps in order: - -1. **Check backup status**: - - ```sh - kubectl get backups.postgresql.cnpg.io -n - ``` -2. **Get error details and target pod**: - - ```sh - kubectl describe backups.postgresql.cnpg.io \ - -n - - kubectl get backups.postgresql.cnpg.io \ - -n \ - -o jsonpath='{.status.instanceID.podName}' - ``` -3. **Check the target pod’s sidecar logs**: - - ```sh - TARGET_POD=$(kubectl get backups.postgresql.cnpg.io \ - -n \ - -o jsonpath='{.status.instanceID.podName}') - - kubectl logs \ - -n $TARGET_POD -c plugin-barman-cloud \ - --tail=100 | grep -E "ERROR|FATAL|panic" - ``` -4. **Check cluster events**: - - ```sh - kubectl get events -n \ - --field-selector involvedObject.name= \ - --sort-by='.lastTimestamp' - ``` -5. **Verify plugin is running**: - - ```sh - kubectl get pods \ - -n cnpg-system -l app=barman-cloud - ``` -6. **Check operator logs**: - - ```sh - kubectl logs \ - -n cnpg-system deployment/cnpg-controller-manager \ - --tail=100 | grep -i "backup\|plugin" - ``` -7. **Check plugin manager logs**: - - ```sh - kubectl logs \ - -n cnpg-system deployment/barman-cloud --tail=100 - ``` - -#### Backup job fails immediately - -**Symptoms:** - -- Backup pods terminate with error -- No backup files appear in object storage -- Backup shows `failed` phase with various error messages - -**Common failure modes and solutions:** - -1. **"requested plugin is not available" errors** - - ``` - requested plugin is not available: barman - requested plugin is not available: barman-cloud - requested plugin is not available: barman-cloud.cloudnative-pg.io - ``` - - **Cause:** The plugin name in the Cluster configuration doesn’t match the - deployed plugin, or the plugin isn’t registered. - - **Solution:** - - a. **Check plugin registration:** - - ```sh - # If you have the `cnpg` plugin installed (v1.27.0+) - kubectl cnpg status -n - ``` - - Look for the "Plugins status" section: - ``` - Plugins status - Name Version Status Reported Operator Capabilities - ---- ------- ------ ------------------------------ - barman-cloud.cloudnative-pg.io 0.6.0 N/A Reconciler Hooks, Lifecycle Service - ``` - - b. **Verify plugin name in `Cluster` spec**: - - ```yaml - apiVersion: postgresql.cnpg.io/v1 - kind: Cluster - spec: - plugins: - - name: barman-cloud.cloudnative-pg.io - parameters: - barmanObjectName: - ``` - - c. **Check plugin deployment is running**: - - ```sh - kubectl get deployment -n cnpg-system barman-cloud - ``` - -2. **"rpc error: code = Unknown desc = panic caught: assignment to entry in nil map" errors** - - **Cause:** Misconfiguration in the `ObjectStore` (e.g., typo or missing field). - - **Solution:** - - - Review sidecar logs for details - - Verify `ObjectStore` configuration and secrets - - Common issues include: - - Missing or incorrect secret references - - Typos in configuration parameters - - Missing required environment variables in secrets - -#### Backup performance issues - -**Symptoms:** - -- Backups take extremely long -- Backups timeout - -**Plugin-specific considerations:** - -1. **Check `ObjectStore` parallelism settings** - - Adjust `maxParallel` in `ObjectStore` configuration - - Monitor sidecar container resource usage during backups - -2. **Verify plugin resource allocation** - - Check if the sidecar container has sufficient CPU/memory - - Review plugin container logs for resource-related warnings - -:::tip -For Barman-specific features like compression, encryption, and performance -tuning, refer to the [Barman documentation](https://docs.pgbarman.org/latest/). -::: - -### WAL Archiving Issues - -#### WAL archiving stops - -**Symptoms:** - -- WAL files accumulate on the primary -- Cluster shows WAL archiving warnings -- Sidecar logs show WAL errors - -**Debugging steps:** - -1. **Check plugin sidecar logs for WAL archiving errors** - ```sh - # Check recent WAL archive operations in sidecar - kubectl logs -n -c plugin-barman-cloud \ - --tail=50 | grep -i wal - ``` - -2. **Check ObjectStore configuration for WAL settings** - - Ensure ObjectStore has proper WAL retention settings - - Verify credentials have permissions for WAL operations - -### Restore Issues - -#### Restore fails during recovery - -**Symptoms:** - -- New cluster stuck in recovery -- Plugin sidecar shows restore errors -- PostgreSQL won’t start - -**Debugging steps:** - -1. **Check plugin sidecar logs during restore** - - ```sh - # Check the sidecar logs on the recovering cluster pods - kubectl logs -n \ - -c plugin-barman-cloud --tail=100 - - # Look for restore-related errors - kubectl logs -n \ - -c plugin-barman-cloud | grep -E "restore|recovery|ERROR" - ``` - -2. **Verify plugin can access backups** - - ```sh - # Check if `ObjectStore` is properly configured for restore - kubectl get objectstores.barmancloud.cnpg.io \ - -n -o yaml - - # Check PostgreSQL recovery logs - kubectl logs -n \ - -c postgres | grep -i recovery - ``` - -:::tip -For detailed Barman restore operations and troubleshooting, refer to the -[Barman documentation](https://docs.pgbarman.org/latest/barman-cloud-restore.html). -::: - -#### Point-in-time recovery (PITR) configuration issues - -**Symptoms:** - -- PITR doesn’t reach target time -- WAL access errors -- Recovery halts early - -**Debugging steps:** - -1. **Verify PITR configuration in the `Cluster` spec** - - ```yaml - apiVersion: postgresql.cnpg.io/v1 - kind: Cluster - metadata: - name: - spec: - storage: - size: 1Gi - - bootstrap: - recovery: - source: origin - recoveryTarget: - targetTime: "2024-01-15T10:30:00Z" - - externalClusters: - - name: origin - plugin: - enabled: true - name: barman-cloud.cloudnative-pg.io - parameters: - barmanObjectName: - serverName: - ``` - -2. **Check sidecar logs for WAL-related errors** - - ```sh - kubectl logs -n \ - -c plugin-barman-cloud | grep -i wal - ``` - -:::note -Timestamps without an explicit timezone suffix -(e.g., `2024-01-15 10:30:00`) are interpreted as UTC. -::: - -:::warning -Always specify an explicit timezone in your timestamp to avoid ambiguity. -For example, use `2024-01-15T10:30:00Z` or `2024-01-15T10:30:00+02:00` -instead of `2024-01-15 10:30:00`. -::: - -:::note -For detailed PITR configuration and WAL management, see the -[Barman PITR documentation](https://docs.pgbarman.org/latest/). -::: - -### Plugin Configuration Issues - -#### Plugin cannot connect to object storage - -**Symptoms:** - -- Sidecar logs show connection errors -- Backups fail with authentication or network errors -- `ObjectStore` resource reports errors - -**Solution:** - -1. **Verify `ObjectStore` CRD configuration and secrets** - - ```sh - # Check ObjectStore resource status - kubectl get objectstores.barmancloud.cnpg.io \ - -n -o yaml - - # Verify the secret exists and has correct keys for your provider - kubectl get secret -n \ - -o jsonpath='{.data}' | jq 'keys' - ``` - -2. **Check sidecar logs for connectivity issues** - ```sh - kubectl logs -n \ - -c plugin-barman-cloud | grep -E "connect|timeout|SSL|cert" - ``` - -3. **Adjust provider-specific settings (endpoint, path style, etc.)** - - See [Object Store Configuration](object_stores.md) for provider-specific settings - - Ensure `endpointURL` is set correctly for your storage provider - - Verify network policies allow egress to your storage provider - -## Diagnostic Commands - -### Using the `cnpg` plugin for `kubectl` - -The `cnpg` plugin for `kubectl` provides extended debugging capabilities. -Keep it updated: - -```sh -# Install or update the `cnpg` plugin -kubectl krew install cnpg -# Or using an alternative method: https://cloudnative-pg.io/documentation/current/kubectl-plugin/#install - -# Check plugin status (requires CNPG 1.27.0+) -kubectl cnpg status -n - -# View cluster status in detail -kubectl cnpg status -n --verbose -``` - -## Getting Help - -If problems persist: - -1. **Check the documentation** - - - [Installation Guide](installation.mdx) - - [Object Store Configuration](object_stores.md) (for provider-specific settings) - - [Usage Examples](usage.md) - - -2. **Gather diagnostic information** - - ```sh - # Create a diagnostic bundle (⚠️ sanitize these before sharing!) - kubectl get objectstores.barmancloud.cnpg.io -A -o yaml > /tmp/objectstores.yaml - kubectl get clusters.postgresql.cnpg.io -A -o yaml > /tmp/clusters.yaml - kubectl logs -n cnpg-system deployment/barman-cloud --tail=1000 > /tmp/plugin.log - ``` - - -3. **Community support** - - - CloudNativePG Slack: [#cloudnativepg-users](https://cloud-native.slack.com/messages/cloudnativepg-users) - - GitHub Issues: [plugin-barman-cloud](https://github.com/cloudnative-pg/plugin-barman-cloud/issues) - - -4. **Include when reporting** - - - CloudNativePG version - - Plugin version - - Kubernetes version - - Cloud provider and region - - Relevant configuration (⚠️ sanitize/redact sensitive information) - - Error messages and logs - - Steps to reproduce - -## Known Issues and Limitations - -### Current Known Issues - -1. **Migration compatibility**: After migrating from in-tree backup to the - plugin, the `kubectl cnpg backup` command syntax has changed - ([#353](https://github.com/cloudnative-pg/plugin-barman-cloud/issues/353)): - - ```sh - # Old command (in-tree, no longer works after migration) - kubectl cnpg backup -n \ - --method=barmanObjectStore - - # New command (plugin-based) - kubectl cnpg backup -n \ - --method=plugin --plugin-name=barman-cloud.cloudnative-pg.io - ``` - -### Plugin Limitations - -1. **Installation method**: Currently only supports manifest and Kustomize - installation ([#351](https://github.com/cloudnative-pg/plugin-barman-cloud/issues/351) - - Helm chart requested) - -2. **Sidecar resource sharing**: The plugin sidecar container shares pod - resources with PostgreSQL - -3. **Plugin restart behavior**: Restarting the sidecar container requires - restarting the entire PostgreSQL pod - -## Recap of General Debugging Steps - -### Check Backup Status and Identify the Target Instance - -```sh -# List all backups and their status -kubectl get backups.postgresql.cnpg.io -n - -# Get detailed backup information including error messages and target instance -kubectl describe backups.postgresql.cnpg.io \ - -n - -# Extract the target pod name from a failed backup -kubectl get backups.postgresql.cnpg.io \ - -n \ - -o jsonpath='{.status.instanceID.podName}' - -# Get more details including the target pod, method, phase, and error -kubectl get backups.postgresql.cnpg.io \ - -n \ - -o jsonpath='Pod: {.status.instanceID.podName}{"\n"}Method: {.status.method}{"\n"}Phase: {.status.phase}{"\n"}Error: {.status.error}{"\n"}' - -# Check the cluster status for backup-related information -kubectl cnpg status -n --verbose -``` - -### Check Sidecar Logs on the Backup Target Pod - -```sh -# Identify which pod was the backup target (from the previous step) -TARGET_POD=$(kubectl get backups.postgresql.cnpg.io \ - -n \ - -o jsonpath='{.status.instanceID.podName}') -echo "Backup target pod: $TARGET_POD" - -# Check the sidecar logs on the specific target pod -kubectl logs -n $TARGET_POD \ - -c plugin-barman-cloud --tail=100 - -# Follow the logs in real time -kubectl logs -n $TARGET_POD \ - -c plugin-barman-cloud -f - -# Check for specific errors in the target pod around the backup time -kubectl logs -n $TARGET_POD \ - -c plugin-barman-cloud --since=10m | grep -E "ERROR|FATAL|panic|failed" - -# Alternative: List all cluster pods and their roles -kubectl get pods -n -l cnpg.io/cluster= \ - -o custom-columns=NAME:.metadata.name,ROLE:.metadata.labels.cnpg\\.io/instanceRole,INSTANCE:.metadata.labels.cnpg\\.io/instanceName - -# Check sidecar logs on ALL cluster pods (if the target is unclear) -for pod in $(kubectl get pods -n -l cnpg.io/cluster= -o name); do - echo "=== Checking $pod ===" - kubectl logs -n $pod -c plugin-barman-cloud \ - --tail=20 | grep -i error || echo "No errors found" -done -``` - -### Check Events for Backup-Related Issues - -```sh -# Check events for the cluster -kubectl get events -n \ - --field-selector involvedObject.name= - -# Check events for failed backups -kubectl get events -n \ - --field-selector involvedObject.kind=Backup - -# Get all recent events in the namespace -kubectl get events -n --sort-by='.lastTimestamp' | tail -20 -``` - -### Verify `ObjectStore` Configuration - -```sh -# Check the ObjectStore resource -kubectl get objectstores.barmancloud.cnpg.io \ - -n -o yaml - -# Verify the secret exists and has the correct keys -kubectl get secret -n -o yaml -# Alternatively -kubectl get secret -n -o jsonpath='{.data}' | jq 'keys' -``` - -### Common Error Messages and Solutions - -* **"AccessDenied" or "403 Forbidden"** β€” Check cloud credentials and bucket permissions. -* **"NoSuchBucket"** β€” Verify the bucket exists and the endpoint URL is correct. -* **"Connection timeout"** β€” Check network connectivity and firewall rules. -* **"SSL certificate problem"** β€” For self-signed certificates, verify the CA bundle configuration. - diff --git a/web/versioned_docs/version-0.12.0/upgrades.mdx b/web/versioned_docs/version-0.12.0/upgrades.mdx deleted file mode 100644 index 0ab9ddb..0000000 --- a/web/versioned_docs/version-0.12.0/upgrades.mdx +++ /dev/null @@ -1,16 +0,0 @@ ---- -sidebar_position: 25 ---- - -# Upgrades - - - -You can upgrade the plugin simply by installing the new version. Unless -explicitly stated below or in the release notes, no special steps are required. - -## Upgrading to version 0.8.x from previous versions - -Version **0.8.0** introduces breaking changes to resource naming. -To complete the upgrade successfully, follow the instructions in the -["Resource name migration guide"](resource-name-migration.md). diff --git a/web/versioned_docs/version-0.12.0/usage.md b/web/versioned_docs/version-0.12.0/usage.md deleted file mode 100644 index 6406d38..0000000 --- a/web/versioned_docs/version-0.12.0/usage.md +++ /dev/null @@ -1,283 +0,0 @@ ---- -sidebar_position: 30 ---- - -# Using the Barman Cloud Plugin - - - -After [installing the plugin](installation.mdx) in the same namespace as the -CloudNativePG operator, enabling your PostgreSQL cluster to use the Barman -Cloud Plugin involves just a few steps: - -- Defining the object store containing your WAL archive and base backups, using - your preferred [provider](object_stores.md) -- Instructing the Postgres cluster to use the Barman Cloud Plugin - -From that moment, you’ll be able to issue on-demand backups or define a backup -schedule, as well as rely on the object store for recovery operations. - -The rest of this page details each step, using MinIO as object store provider. - -## Defining the `ObjectStore` - -An `ObjectStore` resource must be created for each object store used in your -PostgreSQL architecture. Here's an example configuration using MinIO: - -```yaml -apiVersion: barmancloud.cnpg.io/v1 -kind: ObjectStore -metadata: - name: minio-store -spec: - configuration: - destinationPath: s3://backups/ - endpointURL: http://minio:9000 - s3Credentials: - accessKeyId: - name: minio - key: ACCESS_KEY_ID - secretAccessKey: - name: minio - key: ACCESS_SECRET_KEY - wal: - compression: gzip -``` - -The `.spec.configuration` schema follows the same format as the -[in-tree barman-cloud support](https://pkg.go.dev/github.com/cloudnative-pg/barman-cloud/pkg/api#BarmanObjectStoreConfiguration). -Refer to [the CloudNativePG documentation](https://cloudnative-pg.io/documentation/current/appendixes/backup_barmanobjectstore/) -for additional details. - -:::important -The `serverName` parameter in the `ObjectStore` resource is retained solely for -API compatibility with the in-tree `barmanObjectStore` and must always be left empty. -When needed, use the `serverName` plugin parameter in the Cluster configuration instead. -::: - -## Configuring WAL Archiving - -Once the `ObjectStore` is defined, you can configure your PostgreSQL cluster -to archive WALs by referencing the store in the `.spec.plugins` section: - -```yaml -apiVersion: postgresql.cnpg.io/v1 -kind: Cluster -metadata: - name: cluster-example -spec: - instances: 3 - imagePullPolicy: Always - plugins: - - name: barman-cloud.cloudnative-pg.io - isWALArchiver: true - parameters: - barmanObjectName: minio-store - storage: - size: 1Gi -``` - -This configuration enables both WAL archiving and data directory backups. - -## Performing a Base Backup - -Once WAL archiving is enabled, the cluster is ready for backups. Backups can be -created either declaratively (with YAML manifests) or imperatively (with the -`cnpg` plugin). - -### Declarative approach (YAML manifest) - -Create a backup resource by applying a YAML manifest: - -```yaml -apiVersion: postgresql.cnpg.io/v1 -kind: Backup -metadata: - name: backup-example -spec: - cluster: - name: cluster-example - method: plugin - pluginConfiguration: - name: barman-cloud.cloudnative-pg.io -``` - -### Imperative approach (using the `cnpg` plugin) - -The quickest way to trigger an on-demand backup is with the `cnpg` plugin: - -```bash -kubectl cnpg backup -n \ - --method=plugin \ - --plugin-name=barman-cloud.cloudnative-pg.io -``` - -:::note Migration from in-tree backups -If you are migrating from the in-tree backup system, note the change in syntax: - -```bash -# Old command (in-tree backup) -kubectl cnpg backup -n --method=barmanObjectStore - -# New command (plugin-based backup) -kubectl cnpg backup -n \ - --method=plugin \ - --plugin-name=barman-cloud.cloudnative-pg.io -``` -::: - -## Restoring a Cluster - -To restore a cluster from an object store, create a new `Cluster` resource that -references the store containing the backup. Below is an example configuration: - -```yaml -apiVersion: postgresql.cnpg.io/v1 -kind: Cluster -metadata: - name: cluster-restore -spec: - instances: 3 - imagePullPolicy: IfNotPresent - bootstrap: - recovery: - source: source - externalClusters: - - name: source - plugin: - name: barman-cloud.cloudnative-pg.io - parameters: - barmanObjectName: minio-store - serverName: cluster-example - storage: - size: 1Gi -``` - -:::important -The above configuration does **not** enable WAL archiving for the restored cluster. -::: - -To enable WAL archiving for the restored cluster, include the `.spec.plugins` -section alongside the `externalClusters.plugin` section, as shown below: - -```yaml -apiVersion: postgresql.cnpg.io/v1 -kind: Cluster -metadata: - name: cluster-restore -spec: - instances: 3 - imagePullPolicy: IfNotPresent - bootstrap: - recovery: - source: source - plugins: - - name: barman-cloud.cloudnative-pg.io - isWALArchiver: true - parameters: - # Backup Object Store (push, read-write) - barmanObjectName: minio-store-bis - externalClusters: - - name: source - plugin: - name: barman-cloud.cloudnative-pg.io - parameters: - # Recovery Object Store (pull, read-only) - barmanObjectName: minio-store - serverName: cluster-example - storage: - size: 1Gi -``` - -The same object store may be used for both transaction log archiving and -restoring a cluster, or you can configure separate stores for these purposes. - -## Configuring Replica Clusters - -You can set up a distributed topology by combining the previously defined -configurations with the `.spec.replica` section. Below is an example of how to -define a replica cluster: - -```yaml -apiVersion: postgresql.cnpg.io/v1 -kind: Cluster -metadata: - name: cluster-dc-a -spec: - instances: 3 - primaryUpdateStrategy: unsupervised - - storage: - storageClass: csi-hostpath-sc - size: 1Gi - - plugins: - - name: barman-cloud.cloudnative-pg.io - isWALArchiver: true - parameters: - barmanObjectName: minio-store-a - - replica: - self: cluster-dc-a - primary: cluster-dc-a - source: cluster-dc-b - - externalClusters: - - name: cluster-dc-a - plugin: - name: barman-cloud.cloudnative-pg.io - parameters: - barmanObjectName: minio-store-a - - - name: cluster-dc-b - plugin: - name: barman-cloud.cloudnative-pg.io - parameters: - barmanObjectName: minio-store-b -``` - -## Configuring the plugin instance sidecar - -The Barman Cloud Plugin runs as a sidecar container next to each PostgreSQL -instance pod. It manages backup, WAL archiving, and restore processes. - -Configuration comes from multiple `ObjectStore` resources: - -1. The one referenced in the - `.spec.plugins` section of the `Cluster`. This is the - object store used for WAL archiving and base backups. -2. The one referenced in the external cluster - used in the `.spec.replica.source` section of the `Cluster`. This is - used by the log-shipping designated primary to get the WAL files. -3. The one referenced in the - `.spec.bootstrap.recovery.source` section of the `Cluster`. Used by - the initial recovery job to create the cluster from an existing backup. - -You can fine-tune sidecar behavior in the `.spec.instanceSidecarConfiguration` -of your ObjectStore. These settings apply to all PostgreSQL instances that use -this object store. Any updates take effect at the next `Cluster` reconciliation, -and could generate a rollout of the `Cluster`. - -```yaml -apiVersion: barmancloud.cnpg.io/v1 -kind: ObjectStore -metadata: - name: minio-store -spec: - configuration: - # [...] - instanceSidecarConfiguration: - retentionPolicyIntervalSeconds: 1800 - resources: - requests: - memory: "XXX" - cpu: "YYY" - limits: - memory: "XXX" - cpu: "YYY" -``` - -:::note -If more than one `ObjectStore` applies, the `instanceSidecarConfiguration` of -the one set in `.spec.plugins` has priority. -::: diff --git a/web/versioned_docs/version-0.3.0/welcome.md b/web/versioned_docs/version-0.3.0/welcome.md deleted file mode 100644 index 7dc7115..0000000 --- a/web/versioned_docs/version-0.3.0/welcome.md +++ /dev/null @@ -1,15 +0,0 @@ ---- -sidebar_position: 1 -sidebar_label: "Welcome" ---- - -# Barman Cloud CNPG-I plugin - -**Status:** EXPERIMENTAL - -Welcome to the documentation of the [barman-cloud](https://pgbarman.org/) CNPG-I -plugin for [CloudNativePG](https://cloudnative-pg.io/). - -Documentation for version **0.3.0** of the plugin is available in the -[README](https://github.com/cloudnative-pg/plugin-barman-cloud/blob/v0.3.0/README.md) -on GitHub. diff --git a/web/versioned_docs/version-0.4.0/compression.md b/web/versioned_docs/version-0.4.0/compression.md deleted file mode 100644 index 2abbede..0000000 --- a/web/versioned_docs/version-0.4.0/compression.md +++ /dev/null @@ -1,43 +0,0 @@ ---- -sidebar_position: 80 ---- - -# Compression - - - -By default, backups and WAL files are archived **uncompressed**. However, the -Barman Cloud Plugin supports multiple compression algorithms via -`barman-cloud-backup` and `barman-cloud-wal-archive`, allowing you to optimize -for space, speed, or a balance of both. - -### Supported Compression Algorithms - -- `bzip2` -- `gzip` -- `lz4` (WAL only) -- `snappy` -- `xz` (WAL only) -- `zstd` (WAL only) - -Compression settings for base backups and WAL archives are configured -independently. For implementation details, refer to the corresponding API -definitions: - -- [`DataBackupConfiguration`](https://pkg.go.dev/github.com/cloudnative-pg/barman-cloud/pkg/api#DataBackupConfiguration) -- [`WALBackupConfiguration`](https://pkg.go.dev/github.com/cloudnative-pg/barman-cloud/pkg/api#WalBackupConfiguration) - -:::important -Compression impacts both performance and storage efficiency. Choose the right -algorithm based on your recovery time objectives (RTO), storage capacity, and -network throughput. -::: - -## Compression Benchmark (on MinIO) - -| Compression | Backup Time (ms) | Restore Time (ms) | Uncompressed Size (MB) | Compressed Size (MB) | Ratio | -| ----------- | ---------------- | ----------------- | ---------------------- | -------------------- | ----- | -| None | 10,927 | 7,553 | 395 | 395 | 1.0:1 | -| bzip2 | 25,404 | 13,886 | 395 | 67 | 5.9:1 | -| gzip | 116,281 | 3,077 | 395 | 91 | 4.3:1 | -| snappy | 8,134 | 8,341 | 395 | 166 | 2.4:1 | diff --git a/web/versioned_docs/version-0.4.0/concepts.md b/web/versioned_docs/version-0.4.0/concepts.md deleted file mode 100644 index 3832df3..0000000 --- a/web/versioned_docs/version-0.4.0/concepts.md +++ /dev/null @@ -1,177 +0,0 @@ ---- -sidebar_position: 10 ---- - -# Main Concepts - - - -:::important -Before proceeding, make sure to review the following sections of the -CloudNativePG documentation: - -- [**Backup**](https://cloudnative-pg.io/documentation/current/backup/) -- [**WAL Archiving**](https://cloudnative-pg.io/documentation/current/wal_archiving/) -- [**Recovery**](https://cloudnative-pg.io/documentation/current/recovery/) -::: - -The **Barman Cloud Plugin** enables **hot (online) backups** of PostgreSQL -clusters in CloudNativePG through [`barman-cloud`](https://pgbarman.org), -supporting continuous physical backups and WAL archiving to an **object -store**β€”without interrupting write operations. - -It also supports both **full recovery** and **Point-in-Time Recovery (PITR)** -of a PostgreSQL cluster. - -## The Object Store - -At the core is the [`ObjectStore` custom resource (CRD)](plugin-barman-cloud.v1.md#objectstorespec), -which acts as the interface between the PostgreSQL cluster and the target -object storage system. It allows you to configure: - -- **Authentication and bucket location** via the `.spec.configuration` section -- **WAL archiving** settingsβ€”such as compression type, parallelism, and - server-side encryptionβ€”under `.spec.configuration.wal` -- **Base backup options**β€”with similar settings for compression, concurrency, - and encryptionβ€”under `.spec.configuration.data` -- **Retention policies** to manage the life-cycle of archived WALs and backups - via `.spec.configuration.retentionPolicy` - -WAL files are archived in the `wals` directory, while base backups are stored -as **tarballs** in the `base` directory, following the -[Barman Cloud convention](https://docs.pgbarman.org/cloud/latest/usage/#object-store-layout). - -The plugin also offers advanced capabilities, including -[backup tagging](misc.md#backup-object-tagging) and -[extra options for backups and WAL archiving](misc.md#extra-options-for-backup-and-wal-archiving). - -:::tip -For details, refer to the -[API reference for the `ObjectStore` resource](plugin-barman-cloud.v1.md#objectstorespec). -::: - -## Integration with a CloudNativePG Cluster - -CloudNativePG can delegate continuous backup and recovery responsibilities to -the **Barman Cloud Plugin** by configuring the `.spec.plugins` section of a -`Cluster` resource. This setup requires a corresponding `ObjectStore` resource -to be defined. - -:::important -While it is technically possible to reuse the same `ObjectStore` for multiple -`Cluster` resources within the same namespace, it is strongly recommended to -dedicate one object store per PostgreSQL cluster to ensure data isolation and -operational clarity. -::: - -The following example demonstrates how to configure a CloudNativePG cluster -named `cluster-example` to use a previously defined `ObjectStore` (also named -`cluster-example`) in the same namespace. Setting `isWALArchiver: true` enables -WAL archiving through the plugin: - -```yaml -apiVersion: postgresql.cnpg.io/v1 -kind: Cluster -metadata: - name: cluster-example -spec: - # Other cluster settings... - plugins: - - name: barman-cloud.cloudnative-pg.io - isWALArchiver: true - parameters: - barmanObjectName: cluster-example -``` - -## Backup of a Postgres Cluster - -Once the object store is defined and the `Cluster` is configured to use the -Barman Cloud Plugin, **WAL archiving is activated immediately** on the -PostgreSQL primary. - -Physical base backups are seamlessly managed by CloudNativePG using the -`Backup` and `ScheduledBackup` resources, respectively for -[on-demand](https://cloudnative-pg.io/documentation/current/backup/#on-demand-backups) -and -[scheduled](https://cloudnative-pg.io/documentation/current/backup/#scheduled-backups) -backups. - -To use the Barman Cloud Plugin, you must set the `method` to `plugin` and -configure the `pluginConfiguration` section as shown: - -```yaml -[...] -spec: - method: plugin - pluginConfiguration: - name: barman-cloud.cloudnative-pg.io - [...] -``` - -With this configuration, CloudNativePG supports: - -- Backups from both **primary** and **standby** instances -- Backups from **designated primaries** in a distributed topology using - [replica clusters](https://cloudnative-pg.io/documentation/current/replica_cluster/) - -:::tip -For details on how to back up from a standby, refer to the official documentation: -[Backup from a standby](https://cloudnative-pg.io/documentation/current/backup/#backup-from-a-standby). -::: - -:::important -Both backup and WAL archiving operations are executed by sidecar containers -running in the same pod as the PostgreSQL `Cluster` primary instanceβ€”except -when backups are taken from a standby, in which case the sidecar runs alongside -the standby pod. -The sidecar containers use a [dedicated container image](images.md) that -includes only the supported version of Barman Cloud. -::: - -## Recovery of a Postgres Cluster - -In PostgreSQL, *recovery* refers to the process of starting a database instance -from an existing backup. The Barman Cloud Plugin integrates with CloudNativePG -to support both **full recovery** and **Point-in-Time Recovery (PITR)** from an -object store. - -Recovery in this context is *not in-place*: it bootstraps a brand-new -PostgreSQL cluster from a backup and replays the necessary WAL files to reach -the desired recovery target. - -To perform a recovery, define an *external cluster* that references the -appropriate `ObjectStore`, and use it as the source in the `bootstrap` section -of the target cluster: - -```yaml -[...] -spec: - [...] - bootstrap: - recovery: - source: source - externalClusters: - - name: source - plugin: - name: barman-cloud.cloudnative-pg.io - parameters: - barmanObjectName: cluster-example - serverName: cluster-example - [...] -``` - -The critical element here is the `externalClusters` section of the `Cluster` -resource, where the `plugin` stanza instructs CloudNativePG to use the Barman -Cloud Plugin to access the object store for recovery. - -This same mechanism can be used for a variety of scenarios enabled by the -CloudNativePG API, including: - -* **Full cluster recovery** from the latest backup -* **Point-in-Time Recovery (PITR)** -* Bootstrapping **replica clusters** in a distributed topology - -:::tip -For complete instructions and advanced use cases, refer to the official -[Recovery documentation](https://cloudnative-pg.io/documentation/current/recovery/). -::: diff --git a/web/versioned_docs/version-0.4.0/images.md b/web/versioned_docs/version-0.4.0/images.md deleted file mode 100644 index f6c32d3..0000000 --- a/web/versioned_docs/version-0.4.0/images.md +++ /dev/null @@ -1,37 +0,0 @@ ---- -sidebar_position: 99 ---- - -# Container Images - - - -The Barman Cloud Plugin is distributed using two container images: - -- One for deploying the plugin components -- One for the sidecar that runs alongside each PostgreSQL instance in a - CloudNativePG `Cluster` using the plugin - -## Plugin Container Image - -The plugin image contains the logic required to operate the Barman Cloud Plugin -within your Kubernetes environment with CloudNativePG. It is published on the -GitHub Container Registry at `ghcr.io/cloudnative-pg/plugin-barman-cloud`. - -This image is built from the -[`Dockerfile.plugin`](https://github.com/cloudnative-pg/plugin-barman-cloud/blob/main/containers/Dockerfile.plugin) -in the plugin repository. - -## Sidecar Container Image - -The sidecar image is used within each PostgreSQL pod in the cluster. It -includes the latest supported version of Barman Cloud and is responsible for -performing WAL archiving and backups on behalf of CloudNativePG. - -It is available at `ghcr.io/cloudnative-pg/plugin-barman-cloud-sidecar` and is -built from the -[`Dockerfile.sidecar`](https://github.com/cloudnative-pg/plugin-barman-cloud/blob/main/containers/Dockerfile.sidecar). - -These sidecar images are designed to work seamlessly with the -[`minimal` PostgreSQL container images](https://github.com/cloudnative-pg/postgres-containers?tab=readme-ov-file#minimal-images) -maintained by the CloudNativePG Community. diff --git a/web/versioned_docs/version-0.4.0/installation.md b/web/versioned_docs/version-0.4.0/installation.md deleted file mode 100644 index 7dfa73c..0000000 --- a/web/versioned_docs/version-0.4.0/installation.md +++ /dev/null @@ -1,117 +0,0 @@ ---- -sidebar_position: 20 ---- - -# Installation - - - -:::important -1. The plugin **must** be installed in the same namespace as the CloudNativePG - operator (typically `cnpg-system`). - -2. Keep in mind that the operator's **listening namespaces** may differ from its - installation namespace. Double-check this to avoid configuration issues. -::: - -## Verifying the Requirements - -Before installing the plugin, make sure the [requirements](intro.md#requirements) are met. - -### CloudNativePG Version - -Ensure you're running a version of CloudNativePG that is compatible with the -plugin. If installed in the default `cnpg-system` namespace, you can verify the -version with: - -```sh -kubectl get deployment -n cnpg-system cnpg-controller-manager -o yaml \ - | grep ghcr.io/cloudnative-pg/cloudnative-pg -``` - -Example output: - -```output -image: ghcr.io/cloudnative-pg/cloudnative-pg:1.26.0 -``` - -The version **must be 1.26 or newer**. - -### cert-manager - -Use the [cmctl](https://cert-manager.io/docs/reference/cmctl/#installation) -tool to confirm that `cert-manager` is installed and available: - -```sh -cmctl check api -``` - -Example output: - -```output -The cert-manager API is ready -``` - -Both checks are required before proceeding with the installation. - -## Installing the Barman Cloud Plugin - -Install the plugin using `kubectl` by applying the manifest for the latest -release: - - - -```sh -kubectl apply -f \ - https://github.com/cloudnative-pg/plugin-barman-cloud/releases/download/v0.4.0/manifest.yaml -``` - - - -Example output: - -```output -customresourcedefinition.apiextensions.k8s.io/objectstores.barmancloud.cnpg.io created -serviceaccount/plugin-barman-cloud created -role.rbac.authorization.k8s.io/leader-election-role created -clusterrole.rbac.authorization.k8s.io/metrics-auth-role created -clusterrole.rbac.authorization.k8s.io/metrics-reader created -clusterrole.rbac.authorization.k8s.io/objectstore-editor-role created -clusterrole.rbac.authorization.k8s.io/objectstore-viewer-role created -clusterrole.rbac.authorization.k8s.io/plugin-barman-cloud created -rolebinding.rbac.authorization.k8s.io/leader-election-rolebinding created -clusterrolebinding.rbac.authorization.k8s.io/metrics-auth-rolebinding created -clusterrolebinding.rbac.authorization.k8s.io/plugin-barman-cloud-binding created -secret/plugin-barman-cloud-8tfddg42gf created -service/barman-cloud created -deployment.apps/barman-cloud configured -certificate.cert-manager.io/barman-cloud-client created -certificate.cert-manager.io/barman-cloud-server created -issuer.cert-manager.io/selfsigned-issuer created -``` - -Finally, check that the deployment is up and running: - -```sh -kubectl rollout status deployment \ - -n cnpg-system barman-cloud -``` - -Example output: - -```output -deployment "barman-cloud" successfully rolled out -``` - -This confirms that the plugin is deployed and ready to use. - -## Testing the latest development snapshot - -You can also test the latest development snapshot of the plugin with the -following command: - -```sh -kubectl apply -f \ - https://raw.githubusercontent.com/cloudnative-pg/plugin-barman-cloud/refs/heads/main/manifest.yaml -``` - diff --git a/web/versioned_docs/version-0.4.0/intro.md b/web/versioned_docs/version-0.4.0/intro.md deleted file mode 100644 index f22f383..0000000 --- a/web/versioned_docs/version-0.4.0/intro.md +++ /dev/null @@ -1,67 +0,0 @@ ---- -sidebar_position: 1 -sidebar_label: "Introduction" ---- - -# Barman Cloud Plugin - - - -The **Barman Cloud Plugin** for [CloudNativePG](https://cloudnative-pg.io/) -enables online continuous physical backups of PostgreSQL clusters to object storage -using the `barman-cloud` suite from the [Barman](https://docs.pgbarman.org/release/latest/) -project. - -:::important -If you plan to migrate your existing CloudNativePG cluster to the new -plugin-based approach using the Barman Cloud Plugin, see -["Migrating from Built-in CloudNativePG Backup"](migration.md) -for detailed instructions. -::: - -## Requirements - -To use the Barman Cloud Plugin, you need: - -- [CloudNativePG](https://cloudnative-pg.io) version **1.26** -- [cert-manager](https://cert-manager.io/) to enable TLS communication between - the plugin and the operator - -## Key Features - -This plugin provides the following capabilities: - -- Physical online backup of the data directory -- Physical restore of the data directory -- Write-Ahead Log (WAL) archiving -- WAL restore -- Full cluster recovery -- Point-in-Time Recovery (PITR) -- Seamless integration with replica clusters for bootstrap and WAL restore from archive - -:::important -The Barman Cloud Plugin is designed to **replace the in-tree object storage support** -previously provided via the `.spec.backup.barmanObjectStore` section in the -`Cluster` resource. -Backups created using the in-tree approach are fully supported and compatible -with this plugin. -::: - -## Supported Object Storage Providers - -The plugin works with all storage backends supported by `barman-cloud`, including: - -- **Amazon S3** -- **Google Cloud Storage** -- **Microsoft Azure Blob Storage** - -In addition, the following S3-compatible and simulator solutions have been -tested and verified: - -- [MinIO](https://min.io/) – An S3-compatible storage solution -- [Azurite](https://github.com/Azure/Azurite) – A simulator for Azure Blob Storage -- [fake-gcs-server](https://github.com/fsouza/fake-gcs-server) – A simulator for Google Cloud Storage - -:::tip -For more details, refer to [Object Store Providers](object_stores.md). -::: diff --git a/web/versioned_docs/version-0.4.0/migration.md b/web/versioned_docs/version-0.4.0/migration.md deleted file mode 100644 index 3c4ba98..0000000 --- a/web/versioned_docs/version-0.4.0/migration.md +++ /dev/null @@ -1,259 +0,0 @@ ---- -sidebar_position: 40 ---- - -# Migrating from Built-in CloudNativePG Backup - - - -The in-tree support for Barman Cloud in CloudNativePG is **deprecated starting -from version 1.26** and will be removed in a future release. - -If you're currently relying on the built-in Barman Cloud integration, you can -migrate seamlessly to the new **plugin-based architecture** using the Barman -Cloud Plugin, with **no downtime**. Follow these steps: - -- [Install the Barman Cloud Plugin](installation.md) -- Create an `ObjectStore` resource by translating the contents of the - `.spec.backup.barmanObjectStore` section from your existing `Cluster` - definition -- Modify the `Cluster` resource in a single atomic change to switch from - in-tree backup to the plugin -- Update any `ScheduledBackup` resources to use the plugin -- Update the `externalClusters` configuration, where applicable - -:::tip -For a working example, refer to [this commit](https://github.com/cloudnative-pg/cnpg-playground/commit/596f30e252896edf8f734991c3538df87630f6f7) -from the [CloudNativePG Playground project](https://github.com/cloudnative-pg/cnpg-playground), -which demonstrates a full migration. -::: - ---- - -## Step 1: Define the `ObjectStore` - -Begin by creating an `ObjectStore` resource in the same namespace as your -PostgreSQL `Cluster`. - -There is a **direct mapping** between the `.spec.backup.barmanObjectStore` -section in CloudNativePG and the `.spec.configuration` field in the -`ObjectStore` CR. The conversion is mostly mechanical, with one key difference: - -:::warning -In the plugin architecture, retention policies are defined as part of the `ObjectStore`. -In contrast, the in-tree implementation defined them at the `Cluster` level. -::: - -If your `Cluster` used `.spec.backup.retentionPolicy`, move that configuration -to `.spec.retentionPolicy` in the `ObjectStore`. - ---- - -### Example - -Here’s an excerpt from a traditional in-tree CloudNativePG backup configuration -taken from the CloudNativePG Playground project: - -```yaml -apiVersion: postgresql.cnpg.io/v1 -kind: Cluster -metadata: - name: pg-eu -spec: - # [...] - backup: - barmanObjectStore: - destinationPath: s3://backups/ - endpointURL: http://minio-eu:9000 - s3Credentials: - accessKeyId: - name: minio-eu - key: ACCESS_KEY_ID - secretAccessKey: - name: minio-eu - key: ACCESS_SECRET_KEY - wal: - compression: gzip -``` - -This configuration translates to the following `ObjectStore` resource for the -plugin: - -```yaml -apiVersion: barmancloud.cnpg.io/v1 -kind: ObjectStore -metadata: - name: minio-eu -spec: - configuration: - destinationPath: s3://backups/ - endpointURL: http://minio-eu:9000 - s3Credentials: - accessKeyId: - name: minio-eu - key: ACCESS_KEY_ID - secretAccessKey: - name: minio-eu - key: ACCESS_SECRET_KEY - wal: - compression: gzip -``` - -As you can see, the contents of `barmanObjectStore` have been copied directly -under the `configuration` field of the `ObjectStore` resource, using the same -secret references. - -## Step 2: Update the `Cluster` for plugin WAL archiving - -Once the `ObjectStore` resource is in place, update the `Cluster` resource as -follows in a single atomic change: - -- Remove the `.spec.backup.barmanObjectStore` section -- Remove `.spec.backup.retentionPolicy` if it was defined (as it is now in the - `ObjectStore`) -- Remove the entire `spec.backup` section if it is now empty -- Add `barman-cloud.cloudnative-pg.io` to the `plugins` list, as described in - [Configuring WAL archiving](usage.md#configuring-wal-archiving) - -This will trigger a rolling update of the `Cluster`, switching continuous -backup from the in-tree implementation to the plugin-based approach. - -### Example - -The updated `pg-eu` cluster will have this configuration instead of the -previous `backup` section: - -```yaml - plugins: - - name: barman-cloud.cloudnative-pg.io - isWALArchiver: true - parameters: - barmanObjectName: minio-eu -``` - ---- - -## Step 3: Update the `ScheduledBackup` - -After switching the `Cluster` to use the plugin, update your `ScheduledBackup` -resources to match. - -Set the backup `method` to `plugin` and reference the plugin name via -`pluginConfiguration`, as shown in ["Performing a base backup"](usage.md#performing-a-base-backup). - -### Example - -Original in-tree `ScheduledBackup`: - -```yaml -apiVersion: postgresql.cnpg.io/v1 -kind: ScheduledBackup -metadata: - name: pg-eu-backup -spec: - cluster: - name: pg-eu - schedule: '0 0 0 * * *' - backupOwnerReference: self -``` - -Updated version using the plugin: - -```yaml -apiVersion: postgresql.cnpg.io/v1 -kind: ScheduledBackup -metadata: - name: pg-eu-backup -spec: - cluster: - name: pg-eu - schedule: '0 0 0 * * *' - backupOwnerReference: self - method: plugin - pluginConfiguration: - name: barman-cloud.cloudnative-pg.io -``` - ---- - -## Step 4: Update the `externalClusters` configuration - -If your `Cluster` relies on one or more external clusters that use the in-tree -Barman Cloud integration, you need to update those configurations to use the -plugin-based architecture. - -When a replica cluster fetches WAL files or base backups from an external -source that used the built-in backup method, follow these steps: - -1. Create a corresponding `ObjectStore` resource for the external cluster, as - shown in [Step 1](#step-1-define-the-objectstore) -2. Update the `externalClusters` section of your replica cluster to use the - plugin instead of the in-tree `barmanObjectStore` field - -### Example - -Consider the original configuration using in-tree Barman Cloud: - -```yaml -apiVersion: postgresql.cnpg.io/v1 -kind: Cluster -metadata: - name: pg-us -spec: - # [...] - externalClusters: - - name: pg-eu - barmanObjectStore: - destinationPath: s3://backups/ - endpointURL: http://minio-eu:9000 - serverName: pg-eu - s3Credentials: - accessKeyId: - name: minio-eu - key: ACCESS_KEY_ID - secretAccessKey: - name: minio-eu - key: ACCESS_SECRET_KEY - wal: - compression: gzip -``` - -Create the `ObjectStore` resource for the external cluster: - -```yaml -apiVersion: barmancloud.cnpg.io/v1 -kind: ObjectStore -metadata: - name: minio-eu -spec: - configuration: - destinationPath: s3://backups/ - endpointURL: http://minio-eu:9000 - s3Credentials: - accessKeyId: - name: minio-eu - key: ACCESS_KEY_ID - secretAccessKey: - name: minio-eu - key: ACCESS_SECRET_KEY - wal: - compression: gzip -``` - -Update the external cluster configuration to use the plugin: - -```yaml -apiVersion: postgresql.cnpg.io/v1 -kind: Cluster -metadata: - name: pg-us -spec: - # [...] - externalClusters: - - name: pg-eu - plugin: - name: barman-cloud.cloudnative-pg.io - parameters: - barmanObjectName: minio-eu - serverName: pg-eu -``` diff --git a/web/versioned_docs/version-0.4.0/misc.md b/web/versioned_docs/version-0.4.0/misc.md deleted file mode 100644 index 4d3cefc..0000000 --- a/web/versioned_docs/version-0.4.0/misc.md +++ /dev/null @@ -1,76 +0,0 @@ ---- -sidebar_position: 90 ---- - -# Miscellaneous - - - -## Backup Object Tagging - -You can attach key-value metadata tags to backup artifactsβ€”such as base -backups, WAL files, and history filesβ€”via the `.spec.configuration` section of -the `ObjectStore` resource. - -- `tags`: applied to base backups and WAL files -- `historyTags`: applied to history files only - -### Example - -```yaml -apiVersion: barmancloud.cnpg.io/v1 -kind: ObjectStore -metadata: - name: my-store -spec: - configuration: - [...] - tags: - backupRetentionPolicy: "expire" - historyTags: - backupRetentionPolicy: "keep" - [...] -``` - -## Extra Options for Backup and WAL Archiving - -You can pass additional command-line arguments to `barman-cloud-backup` and -`barman-cloud-wal-archive` using the `additionalCommandArgs` field in the -`ObjectStore` configuration. - -- `.spec.configuration.data.additionalCommandArgs`: for `barman-cloud-backup` -- `.spec.configuration.wal.additionalCommandArgs`: for `barman-cloud-wal-archive` - -Each field accepts a list of string arguments. If an argument is already -configured elsewhere in the plugin, the duplicate will be ignored. - -### Example: Extra Backup Options - -```yaml -kind: ObjectStore -metadata: - name: my-store -spec: - configuration: - data: - additionalCommandArgs: - - "--min-chunk-size=5MB" - - "--read-timeout=60" -``` - -### Example: Extra WAL Archive Options - -```yaml -kind: ObjectStore -metadata: - name: my-store -spec: - configuration: - wal: - additionalCommandArgs: - - "--max-concurrency=1" - - "--read-timeout=60" -``` - -For a complete list of supported options, refer to the -[official Barman Cloud documentation](https://docs.pgbarman.org/release/latest/). diff --git a/web/versioned_docs/version-0.4.0/object_stores.md b/web/versioned_docs/version-0.4.0/object_stores.md deleted file mode 100644 index 29e7b35..0000000 --- a/web/versioned_docs/version-0.4.0/object_stores.md +++ /dev/null @@ -1,465 +0,0 @@ ---- -sidebar_position: 50 ---- - -# Object Store Providers - - - -The Barman Cloud Plugin enables the storage of PostgreSQL cluster backup files -in any object storage service supported by the -[Barman Cloud infrastructure](https://docs.pgbarman.org/release/latest/). - -Currently, Barman Cloud supports the following providers: - -- [Amazon S3](#aws-s3) -- [Microsoft Azure Blob Storage](#azure-blob-storage) -- [Google Cloud Storage](#google-cloud-storage) - -You may also use any S3- or Azure-compatible implementation of the above -services. - -To configure object storage with Barman Cloud, you must define an -[`ObjectStore` object](plugin-barman-cloud.v1.md#objectstore), which -establishes the connection between your PostgreSQL cluster and the object -storage backend. - -Configuration details β€” particularly around authentication β€” will vary depending on -the specific object storage provider you are using. - -The following sections detail the setup for each. - ---- - -## AWS S3 - -[AWS Simple Storage Service (S3)](https://aws.amazon.com/s3/) is one of the -most widely adopted object storage solutions. - -The Barman Cloud plugin for CloudNativePG integrates with S3 through two -primary authentication mechanisms: - -- [IAM Roles for Service Accounts (IRSA)](https://docs.aws.amazon.com/eks/latest/userguide/iam-roles-for-service-accounts.html) β€” - recommended for clusters running on EKS -- Access keys β€” using `ACCESS_KEY_ID` and `ACCESS_SECRET_KEY` credentials - -### Access Keys - -To authenticate using access keys, you’ll need: - -- `ACCESS_KEY_ID`: the public key used to authenticate to S3 -- `ACCESS_SECRET_KEY`: the corresponding secret key -- `ACCESS_SESSION_TOKEN`: (optional) a temporary session token, if required - -These credentials must be stored securely in a Kubernetes secret: - -```sh -kubectl create secret generic aws-creds \ - --from-literal=ACCESS_KEY_ID= \ - --from-literal=ACCESS_SECRET_KEY= -# --from-literal=ACCESS_SESSION_TOKEN= # if required -``` - -The credentials will be encrypted at rest if your Kubernetes environment -supports it. - -You can then reference the secret in your `ObjectStore` definition: - -```yaml -apiVersion: barmancloud.cnpg.io/v1 -kind: ObjectStore -metadata: - name: aws-store -spec: - configuration: - destinationPath: "s3://BUCKET_NAME/path/to/folder" - s3Credentials: - accessKeyId: - name: aws-creds - key: ACCESS_KEY_ID - secretAccessKey: - name: aws-creds - key: ACCESS_SECRET_KEY - [...] -``` - -### IAM Role for Service Account (IRSA) - -To use IRSA with EKS, configure the service account of the PostgreSQL cluster -with the appropriate annotation: - -```yaml -apiVersion: postgresql.cnpg.io/v1 -kind: Cluster -metadata: - [...] -spec: - serviceAccountTemplate: - metadata: - annotations: - eks.amazonaws.com/role-arn: arn:[...] - [...] -``` - -### S3 Lifecycle Policy - -Barman Cloud uploads backup files to S3 but does not modify them afterward. -To enhance data durability and protect against accidental or malicious loss, -it's recommended to implement the following best practices: - -- Enable object versioning -- Enable object locking to prevent objects from being deleted or overwritten - for a defined period or indefinitely (this provides an additional layer of - protection against accidental deletion and ransomware attacks) -- Set lifecycle rules to expire current versions a few days after your Barman - retention window -- Expire non-current versions after a longer period - -These strategies help you safeguard backups without requiring broad delete -permissions, ensuring both security and compliance with minimal operational -overhead. - - -### S3-Compatible Storage Providers - -You can use S3-compatible services like **MinIO**, **Linode (Akamai) Object Storage**, -or **DigitalOcean Spaces** by specifying a custom `endpointURL`. - -Example with Linode (Akamai) Object Storage (`us-east1`): - -```yaml -apiVersion: barmancloud.cnpg.io/v1 -kind: ObjectStore -metadata: - name: linode-store -spec: - configuration: - destinationPath: "s3://BUCKET_NAME/" - endpointURL: "https://us-east1.linodeobjects.com" - s3Credentials: - [...] - [...] -``` - -Example with DigitalOcean Spaces (SFO3, path-style): - -```yaml -apiVersion: barmancloud.cnpg.io/v1 -kind: ObjectStore -metadata: - name: digitalocean-store -spec: - configuration: - destinationPath: "s3://BUCKET_NAME/path/to/folder" - endpointURL: "https://sfo3.digitaloceanspaces.com" - s3Credentials: - [...] - [...] -``` - -### Using Object Storage with a Private CA - -For object storage services (e.g., MinIO) that use HTTPS with certificates -signed by a private CA, set the `endpointCA` field in the `ObjectStore` -definition. Unless you already have it, create a Kubernetes `Secret` with the -CA bundle: - -```sh -kubectl create secret generic my-ca-secret --from-file=ca.crt -``` - -Then reference it: - -```yaml -apiVersion: barmancloud.cnpg.io/v1 -kind: ObjectStore -metadata: - name: minio-store -spec: - configuration: - endpointURL: - endpointCA: - name: my-ca-secret - key: ca.crt - [...] -``` - - -:::note -If you want `ConfigMaps` and `Secrets` to be **automatically** reloaded by -instances, you can add a label with the key `cnpg.io/reload` to the -`Secrets`/`ConfigMaps`. Otherwise, you will have to reload the instances using the -`kubectl cnpg reload` subcommand. -::: - ---- - -## Azure Blob Storage - -[Azure Blob Storage](https://azure.microsoft.com/en-us/services/storage/blobs/) -is Microsoft’s cloud-based object storage solution. - -Barman Cloud supports the following authentication methods: - -- [Connection String](https://learn.microsoft.com/en-us/azure/storage/common/storage-configure-connection-string) -- Storage Account Name + [Access Key](https://learn.microsoft.com/en-us/azure/storage/common/storage-account-keys-manage) -- Storage Account Name + [SAS Token](https://learn.microsoft.com/en-us/azure/storage/blobs/sas-service-create) -- [Azure AD Workload Identity](https://azure.github.io/azure-workload-identity/docs/introduction.html) - -### Azure AD Workload Identity - -This method avoids storing credentials in Kubernetes via the -`.spec.configuration.inheritFromAzureAD` option: - -```yaml -apiVersion: barmancloud.cnpg.io/v1 -kind: ObjectStore -metadata: - name: azure-store -spec: - configuration: - destinationPath: "" - azureCredentials: - inheritFromAzureAD: true - [...] -``` - -### Access Key, SAS Token, or Connection String - -Store credentials in a Kubernetes secret: - -```sh -kubectl create secret generic azure-creds \ - --from-literal=AZURE_STORAGE_ACCOUNT= \ - --from-literal=AZURE_STORAGE_KEY= \ - --from-literal=AZURE_STORAGE_SAS_TOKEN= \ - --from-literal=AZURE_STORAGE_CONNECTION_STRING= -``` - -Then reference the required keys in your `ObjectStore`: - -```yaml -apiVersion: barmancloud.cnpg.io/v1 -kind: ObjectStore -metadata: - name: azure-store -spec: - configuration: - destinationPath: "" - azureCredentials: - connectionString: - name: azure-creds - key: AZURE_CONNECTION_STRING - storageAccount: - name: azure-creds - key: AZURE_STORAGE_ACCOUNT - storageKey: - name: azure-creds - key: AZURE_STORAGE_KEY - storageSasToken: - name: azure-creds - key: AZURE_STORAGE_SAS_TOKEN - [...] -``` - -For Azure Blob, the destination path format is: - -``` -://..core.windows.net// -``` - -### Azure-Compatible Providers - -If you're using a different implementation (e.g., Azurite or emulator): - -``` -://:/// -``` - ---- - -## Google Cloud Storage - -[Google Cloud Storage](https://cloud.google.com/storage/) is supported with two -authentication modes: - -- **GKE Workload Identity** (recommended inside Google Kubernetes Engine) -- **Service Account JSON key** via the `GOOGLE_APPLICATION_CREDENTIALS` environment variable - -### GKE Workload Identity - -Use the [Workload Identity authentication](https://cloud.google.com/kubernetes-engine/docs/how-to/workload-identity) -when running in GKE: - -1. Set `googleCredentials.gkeEnvironment` to `true` in the `ObjectStore` - resource -2. Annotate the `serviceAccountTemplate` in the `Cluster` resource with the GCP - service account - -For example, in the `ObjectStore` resource: - -```yaml -apiVersion: barmancloud.cnpg.io/v1 -kind: ObjectStore -metadata: - name: google-store -spec: - configuration: - destinationPath: "gs:///" - googleCredentials: - gkeEnvironment: true -``` - -And in the `Cluster` resource: - -```yaml -apiVersion: postgresql.cnpg.io/v1 -kind: Cluster -spec: - serviceAccountTemplate: - metadata: - annotations: - iam.gke.io/gcp-service-account: [...].iam.gserviceaccount.com -``` - -### Service Account JSON Key - -Follow Google’s [authentication setup](https://cloud.google.com/docs/authentication/getting-started), -then: - -```sh -kubectl create secret generic backup-creds --from-file=gcsCredentials=gcs_credentials_file.json -``` - -```yaml -apiVersion: barmancloud.cnpg.io/v1 -kind: ObjectStore -metadata: - name: google-store -spec: - configuration: - destinationPath: "gs:///" - googleCredentials: - applicationCredentials: - name: backup-creds - key: gcsCredentials - [...] -``` - -:::important -This authentication method generates a JSON file within the container -with all the credentials required to access your Google Cloud Storage -bucket. As a result, if someone gains access to the `Pod`, they will also have -write permissions to the bucket. -::: - ---- - - -## MinIO Gateway - -MinIO Gateway can proxy requests to cloud object storage providers like S3 or GCS. -For more information, refer to [MinIO official documentation](https://docs.min.io/). - -### Setup - -Create MinIO access credentials: - -```sh -kubectl create secret generic minio-creds \ - --from-literal=MINIO_ACCESS_KEY= \ - --from-literal=MINIO_SECRET_KEY= -``` - -:::note -Cloud Object Storage credentials will be used only by MinIO Gateway in this -case. -::: - -Expose MinIO Gateway via `ClusterIP`: - -```yaml -apiVersion: v1 -kind: Service -metadata: - name: minio-gateway-service -spec: - type: ClusterIP - ports: - - port: 9000 - targetPort: 9000 - protocol: TCP - selector: - app: minio -``` - -Here follows an excerpt of an example of deployment relaying to S3: - -```yaml -apiVersion: apps/v1 -kind: Deployment -[...] -spec: - containers: - - name: minio - image: minio/minio:RELEASE.2020-06-03T22-13-49Z - args: ["gateway", "s3"] - ports: - - containerPort: 9000 - env: - - name: MINIO_ACCESS_KEY - valueFrom: - secretKeyRef: - name: minio-creds - key: MINIO_ACCESS_KEY - - name: MINIO_SECRET_KEY - valueFrom: - secretKeyRef: - name: minio-creds - key: MINIO_SECRET_KEY - - name: AWS_ACCESS_KEY_ID - valueFrom: - secretKeyRef: - name: aws-creds - key: ACCESS_KEY_ID - - name: AWS_SECRET_ACCESS_KEY - valueFrom: - secretKeyRef: - name: aws-creds - key: ACCESS_SECRET_KEY -# Uncomment the below section if session token is required -# - name: AWS_SESSION_TOKEN -# valueFrom: -# secretKeyRef: -# name: aws-creds -# key: ACCESS_SESSION_TOKEN -``` - -Proceed by configuring MinIO Gateway service as the `endpointURL` in the -`ObjectStore` definition, then choose a bucket name to replace `BUCKET_NAME`: - -```yaml -apiVersion: barmancloud.cnpg.io/v1 -kind: ObjectStore -metadata: - name: minio-store -spec: - configuration: - destinationPath: s3://BUCKET_NAME/ - endpointURL: http://minio-gateway-service:9000 - s3Credentials: - accessKeyId: - name: minio-creds - key: MINIO_ACCESS_KEY - secretAccessKey: - name: minio-creds - key: MINIO_SECRET_KEY - [...] -``` - -:::important -Verify on `s3://BUCKET_NAME/` the presence of archived WAL files before -proceeding with a backup. -::: - ---- diff --git a/web/versioned_docs/version-0.4.0/parameters.md b/web/versioned_docs/version-0.4.0/parameters.md deleted file mode 100644 index ca0cd2b..0000000 --- a/web/versioned_docs/version-0.4.0/parameters.md +++ /dev/null @@ -1,19 +0,0 @@ ---- -sidebar_position: 100 ---- - -# Parameters - - - -The following parameters are available for the Barman Cloud Plugin: - -- `barmanObjectName`: references the `ObjectStore` resource to be used by the - plugin. -- `serverName`: Specifies the server name in the object store. - -:::important -The `serverName` parameter in the `ObjectStore` resource is retained solely for -API compatibility with the in-tree `barmanObjectStore` and must always be left empty. -When needed, use the `serverName` plugin parameter in the Cluster configuration instead. -::: diff --git a/web/versioned_docs/version-0.4.0/plugin-barman-cloud.v1.md b/web/versioned_docs/version-0.4.0/plugin-barman-cloud.v1.md deleted file mode 100644 index 552dc27..0000000 --- a/web/versioned_docs/version-0.4.0/plugin-barman-cloud.v1.md +++ /dev/null @@ -1,105 +0,0 @@ -# API Reference - -## Packages -- [barmancloud.cnpg.io/v1](#barmancloudcnpgiov1) - - -## barmancloud.cnpg.io/v1 - -Package v1 contains API Schema definitions for the barmancloud v1 API group - -### Resource Types -- [ObjectStore](#objectstore) - - - -#### InstanceSidecarConfiguration - - - -InstanceSidecarConfiguration defines the configuration for the sidecar that runs in the instance pods. - - - -_Appears in:_ -- [ObjectStoreSpec](#objectstorespec) - -| Field | Description | Required | Default | Validation | -| --- | --- | --- | --- | --- | -| `env` _[EnvVar](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#envvar-v1-core) array_ | The environment to be explicitly passed to the sidecar | | | | -| `retentionPolicyIntervalSeconds` _integer_ | The retentionCheckInterval defines the frequency at which the
system checks and enforces retention policies. | | 1800 | | -| `resources` _[ResourceRequirements](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcerequirements-v1-core)_ | Resources define cpu/memory requests and limits for the sidecar that runs in the instance pods. | | | | - - -#### ObjectStore - - - -ObjectStore is the Schema for the objectstores API. - - - - - -| Field | Description | Required | Default | Validation | -| --- | --- | --- | --- | --- | -| `apiVersion` _string_ | `barmancloud.cnpg.io/v1` | True | | | -| `kind` _string_ | `ObjectStore` | True | | | -| `metadata` _[ObjectMeta](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#objectmeta-v1-meta)_ | Refer to Kubernetes API documentation for fields of `metadata`. | True | | | -| `spec` _[ObjectStoreSpec](#objectstorespec)_ | Specification of the desired behavior of the ObjectStore.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status | True | | | -| `status` _[ObjectStoreStatus](#objectstorestatus)_ | Most recently observed status of the ObjectStore. This data may not be up to
date. Populated by the system. Read-only.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status | | | | - - -#### ObjectStoreSpec - - - -ObjectStoreSpec defines the desired state of ObjectStore. - - - -_Appears in:_ -- [ObjectStore](#objectstore) - -| Field | Description | Required | Default | Validation | -| --- | --- | --- | --- | --- | -| `configuration` _[BarmanObjectStoreConfiguration](https://pkg.go.dev/github.com/cloudnative-pg/barman-cloud/pkg/api#BarmanObjectStoreConfiguration)_ | The configuration for the barman-cloud tool suite | True | | | -| `retentionPolicy` _string_ | RetentionPolicy is the retention policy to be used for backups
and WALs (i.e. '60d'). The retention policy is expressed in the form
of `XXu` where `XX` is a positive integer and `u` is in `[dwm]` -
days, weeks, months. | | | Pattern: `^[1-9][0-9]*[dwm]$`
| -| `instanceSidecarConfiguration` _[InstanceSidecarConfiguration](#instancesidecarconfiguration)_ | The configuration for the sidecar that runs in the instance pods | | | | - - -#### ObjectStoreStatus - - - -ObjectStoreStatus defines the observed state of ObjectStore. - - - -_Appears in:_ -- [ObjectStore](#objectstore) - -| Field | Description | Required | Default | Validation | -| --- | --- | --- | --- | --- | -| `serverRecoveryWindow` _object (keys:string, values:[RecoveryWindow](#recoverywindow))_ | ServerRecoveryWindow maps each server to its recovery window | True | | | - - -#### RecoveryWindow - - - -RecoveryWindow represents the time span between the first -recoverability point and the last successful backup of a PostgreSQL -server, defining the period during which data can be restored. - - - -_Appears in:_ -- [ObjectStoreStatus](#objectstorestatus) - -| Field | Description | Required | Default | Validation | -| --- | --- | --- | --- | --- | -| `firstRecoverabilityPoint` _[Time](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#time-v1-meta)_ | The first recoverability point in a PostgreSQL server refers to
the earliest point in time to which the database can be
restored. | True | | | -| `lastSuccussfulBackupTime` _[Time](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#time-v1-meta)_ | The last successful backup time | True | | | - - diff --git a/web/versioned_docs/version-0.4.0/retention.md b/web/versioned_docs/version-0.4.0/retention.md deleted file mode 100644 index fefbd08..0000000 --- a/web/versioned_docs/version-0.4.0/retention.md +++ /dev/null @@ -1,38 +0,0 @@ ---- -sidebar_position: 60 ---- - -# Retention Policies - - - -The Barman Cloud Plugin supports **automated cleanup of obsolete backups** via -retention policies, configured in the `.spec.retentionPolicy` field of the -`ObjectStore` resource. - -:::note -This feature uses the `barman-cloud-backup-delete` command with the -`--retention-policy "RECOVERY WINDOW OF {{ value }} {{ unit }}"` syntax. -::: - -#### Example: 30-Day Retention Policy - -```yaml -apiVersion: barmancloud.cnpg.io/v1 -kind: ObjectStore -metadata: - name: my-store -spec: - [...] - retentionPolicy: "30d" -```` - -:::note -A **recovery window retention policy** ensures the cluster can be restored to -any point in time between the calculated *Point of Recoverability* (PoR) and -the latest WAL archive. The PoR is defined as `current time - recovery window`. -The **first valid backup** is the most recent backup completed before the PoR. -Backups older than that are marked as *obsolete* and deleted after the next -backup completes. -::: - diff --git a/web/versioned_docs/version-0.4.0/usage.md b/web/versioned_docs/version-0.4.0/usage.md deleted file mode 100644 index 8c9f8b7..0000000 --- a/web/versioned_docs/version-0.4.0/usage.md +++ /dev/null @@ -1,258 +0,0 @@ ---- -sidebar_position: 30 ---- - -# Using the Barman Cloud Plugin - - - -After [installing the plugin](installation.md) in the same namespace as the -CloudNativePG operator, enabling your PostgreSQL cluster to use the Barman -Cloud Plugin involves just a few steps: - -- Defining the object store containing your WAL archive and base backups, using - your preferred [provider](object_stores.md) -- Instructing the Postgres cluster to use the Barman Cloud Plugin - -From that moment, you’ll be able to issue on-demand backups or define a backup -schedule, as well as rely on the object store for recovery operations. - -The rest of this page details each step, using MinIO as object store provider. - -## Defining the `ObjectStore` - -An `ObjectStore` resource must be created for each object store used in your -PostgreSQL architecture. Here's an example configuration using MinIO: - -```yaml -apiVersion: barmancloud.cnpg.io/v1 -kind: ObjectStore -metadata: - name: minio-store -spec: - configuration: - destinationPath: s3://backups/ - endpointURL: http://minio:9000 - s3Credentials: - accessKeyId: - name: minio - key: ACCESS_KEY_ID - secretAccessKey: - name: minio - key: ACCESS_SECRET_KEY - wal: - compression: gzip -``` - -The `.spec.configuration` schema follows the same format as the -[in-tree barman-cloud support](https://pkg.go.dev/github.com/cloudnative-pg/barman-cloud/pkg/api#BarmanObjectStoreConfiguration). -Refer to [the CloudNativePG documentation](https://cloudnative-pg.io/documentation/current/appendixes/backup_barmanobjectstore/) -for additional details. - -:::important -The `serverName` parameter in the `ObjectStore` resource is retained solely for -API compatibility with the in-tree `barmanObjectStore` and must always be left empty. -When needed, use the `serverName` plugin parameter in the Cluster configuration instead. -::: - -## Configuring WAL Archiving - -Once the `ObjectStore` is defined, you can configure your PostgreSQL cluster -to archive WALs by referencing the store in the `.spec.plugins` section: - -```yaml -apiVersion: postgresql.cnpg.io/v1 -kind: Cluster -metadata: - name: cluster-example -spec: - instances: 3 - imagePullPolicy: Always - plugins: - - name: barman-cloud.cloudnative-pg.io - isWALArchiver: true - parameters: - barmanObjectName: minio-store - storage: - size: 1Gi -``` - -This configuration enables both WAL archiving and data directory backups. - -## Performing a Base Backup - -Once WAL archiving is enabled, the cluster is ready for backups. To issue an -on-demand backup, use the following configuration with the plugin method: - -```yaml -apiVersion: postgresql.cnpg.io/v1 -kind: Backup -metadata: - name: backup-example -spec: - cluster: - name: cluster-example - method: plugin - pluginConfiguration: - name: barman-cloud.cloudnative-pg.io -``` - -:::note -You can apply the same concept to the `ScheduledBackup` resource. -::: - -## Restoring a Cluster - -To restore a cluster from an object store, create a new `Cluster` resource that -references the store containing the backup. Below is an example configuration: - -```yaml -apiVersion: postgresql.cnpg.io/v1 -kind: Cluster -metadata: - name: cluster-restore -spec: - instances: 3 - imagePullPolicy: IfNotPresent - bootstrap: - recovery: - source: source - externalClusters: - - name: source - plugin: - name: barman-cloud.cloudnative-pg.io - parameters: - barmanObjectName: minio-store - serverName: cluster-example - storage: - size: 1Gi -``` - -:::important -The above configuration does **not** enable WAL archiving for the restored cluster. -::: - -To enable WAL archiving for the restored cluster, include the `.spec.plugins` -section alongside the `externalClusters.plugin` section, as shown below: - -```yaml -apiVersion: postgresql.cnpg.io/v1 -kind: Cluster -metadata: - name: cluster-restore -spec: - instances: 3 - imagePullPolicy: IfNotPresent - bootstrap: - recovery: - source: source - plugins: - - name: barman-cloud.cloudnative-pg.io - isWALArchiver: true - parameters: - # Backup Object Store (push, read-write) - barmanObjectName: minio-store-bis - externalClusters: - - name: source - plugin: - name: barman-cloud.cloudnative-pg.io - parameters: - # Recovery Object Store (pull, read-only) - barmanObjectName: minio-store - serverName: cluster-example - storage: - size: 1Gi -``` - -The same object store may be used for both transaction log archiving and -restoring a cluster, or you can configure separate stores for these purposes. - -## Configuring Replica Clusters - -You can set up a distributed topology by combining the previously defined -configurations with the `.spec.replica` section. Below is an example of how to -define a replica cluster: - -```yaml -apiVersion: postgresql.cnpg.io/v1 -kind: Cluster -metadata: - name: cluster-dc-a -spec: - instances: 3 - primaryUpdateStrategy: unsupervised - - storage: - storageClass: csi-hostpath-sc - size: 1Gi - - plugins: - - name: barman-cloud.cloudnative-pg.io - isWALArchiver: true - parameters: - barmanObjectName: minio-store-a - - replica: - self: cluster-dc-a - primary: cluster-dc-a - source: cluster-dc-b - - externalClusters: - - name: cluster-dc-a - plugin: - name: barman-cloud.cloudnative-pg.io - parameters: - barmanObjectName: minio-store-a - - - name: cluster-dc-b - plugin: - name: barman-cloud.cloudnative-pg.io - parameters: - barmanObjectName: minio-store-b -``` - -## Configuring the plugin instance sidecar - -The Barman Cloud Plugin runs as a sidecar container next to each PostgreSQL -instance pod. It manages backup, WAL archiving, and restore processes. - -Configuration comes from multiple `ObjectStore` resources: - -1. The one referenced in the - `.spec.plugins` section of the `Cluster`. This is the - object store used for WAL archiving and base backups. -2. The one referenced in the external cluster - used in the `.spec.replica.source` section of the `Cluster`. This is - used by the log-shipping designated primary to get the WAL files. -3. The one referenced in the - `.spec.bootstrap.recovery.source` section of the `Cluster`. Used by - the initial recovery job to create the cluster from an existing backup. - -You can fine-tune sidecar behavior in the `.spec.instanceSidecarConfiguration` -of your ObjectStore. These settings apply to all PostgreSQL instances that use -this object store. Any updates take effect at the next `Cluster` reconciliation, -and could generate a rollout of the `Cluster`. - -```yaml -apiVersion: barmancloud.cnpg.io/v1 -kind: ObjectStore -metadata: - name: minio-store -spec: - configuration: - # [...] - instanceSidecarConfiguration: - retentionPolicyIntervalSeconds: 1800 - resources: - requests: - memory: "XXX" - cpu: "YYY" - limits: - memory: "XXX" - cpu: "YYY" -``` - -:::note -If more than one `ObjectStore` applies, the `instanceSidecarConfiguration` of -the one set in `.spec.plugins` has priority. -::: diff --git a/web/versioned_docs/version-0.4.1/compression.md b/web/versioned_docs/version-0.4.1/compression.md deleted file mode 100644 index 2abbede..0000000 --- a/web/versioned_docs/version-0.4.1/compression.md +++ /dev/null @@ -1,43 +0,0 @@ ---- -sidebar_position: 80 ---- - -# Compression - - - -By default, backups and WAL files are archived **uncompressed**. However, the -Barman Cloud Plugin supports multiple compression algorithms via -`barman-cloud-backup` and `barman-cloud-wal-archive`, allowing you to optimize -for space, speed, or a balance of both. - -### Supported Compression Algorithms - -- `bzip2` -- `gzip` -- `lz4` (WAL only) -- `snappy` -- `xz` (WAL only) -- `zstd` (WAL only) - -Compression settings for base backups and WAL archives are configured -independently. For implementation details, refer to the corresponding API -definitions: - -- [`DataBackupConfiguration`](https://pkg.go.dev/github.com/cloudnative-pg/barman-cloud/pkg/api#DataBackupConfiguration) -- [`WALBackupConfiguration`](https://pkg.go.dev/github.com/cloudnative-pg/barman-cloud/pkg/api#WalBackupConfiguration) - -:::important -Compression impacts both performance and storage efficiency. Choose the right -algorithm based on your recovery time objectives (RTO), storage capacity, and -network throughput. -::: - -## Compression Benchmark (on MinIO) - -| Compression | Backup Time (ms) | Restore Time (ms) | Uncompressed Size (MB) | Compressed Size (MB) | Ratio | -| ----------- | ---------------- | ----------------- | ---------------------- | -------------------- | ----- | -| None | 10,927 | 7,553 | 395 | 395 | 1.0:1 | -| bzip2 | 25,404 | 13,886 | 395 | 67 | 5.9:1 | -| gzip | 116,281 | 3,077 | 395 | 91 | 4.3:1 | -| snappy | 8,134 | 8,341 | 395 | 166 | 2.4:1 | diff --git a/web/versioned_docs/version-0.4.1/concepts.md b/web/versioned_docs/version-0.4.1/concepts.md deleted file mode 100644 index 3832df3..0000000 --- a/web/versioned_docs/version-0.4.1/concepts.md +++ /dev/null @@ -1,177 +0,0 @@ ---- -sidebar_position: 10 ---- - -# Main Concepts - - - -:::important -Before proceeding, make sure to review the following sections of the -CloudNativePG documentation: - -- [**Backup**](https://cloudnative-pg.io/documentation/current/backup/) -- [**WAL Archiving**](https://cloudnative-pg.io/documentation/current/wal_archiving/) -- [**Recovery**](https://cloudnative-pg.io/documentation/current/recovery/) -::: - -The **Barman Cloud Plugin** enables **hot (online) backups** of PostgreSQL -clusters in CloudNativePG through [`barman-cloud`](https://pgbarman.org), -supporting continuous physical backups and WAL archiving to an **object -store**β€”without interrupting write operations. - -It also supports both **full recovery** and **Point-in-Time Recovery (PITR)** -of a PostgreSQL cluster. - -## The Object Store - -At the core is the [`ObjectStore` custom resource (CRD)](plugin-barman-cloud.v1.md#objectstorespec), -which acts as the interface between the PostgreSQL cluster and the target -object storage system. It allows you to configure: - -- **Authentication and bucket location** via the `.spec.configuration` section -- **WAL archiving** settingsβ€”such as compression type, parallelism, and - server-side encryptionβ€”under `.spec.configuration.wal` -- **Base backup options**β€”with similar settings for compression, concurrency, - and encryptionβ€”under `.spec.configuration.data` -- **Retention policies** to manage the life-cycle of archived WALs and backups - via `.spec.configuration.retentionPolicy` - -WAL files are archived in the `wals` directory, while base backups are stored -as **tarballs** in the `base` directory, following the -[Barman Cloud convention](https://docs.pgbarman.org/cloud/latest/usage/#object-store-layout). - -The plugin also offers advanced capabilities, including -[backup tagging](misc.md#backup-object-tagging) and -[extra options for backups and WAL archiving](misc.md#extra-options-for-backup-and-wal-archiving). - -:::tip -For details, refer to the -[API reference for the `ObjectStore` resource](plugin-barman-cloud.v1.md#objectstorespec). -::: - -## Integration with a CloudNativePG Cluster - -CloudNativePG can delegate continuous backup and recovery responsibilities to -the **Barman Cloud Plugin** by configuring the `.spec.plugins` section of a -`Cluster` resource. This setup requires a corresponding `ObjectStore` resource -to be defined. - -:::important -While it is technically possible to reuse the same `ObjectStore` for multiple -`Cluster` resources within the same namespace, it is strongly recommended to -dedicate one object store per PostgreSQL cluster to ensure data isolation and -operational clarity. -::: - -The following example demonstrates how to configure a CloudNativePG cluster -named `cluster-example` to use a previously defined `ObjectStore` (also named -`cluster-example`) in the same namespace. Setting `isWALArchiver: true` enables -WAL archiving through the plugin: - -```yaml -apiVersion: postgresql.cnpg.io/v1 -kind: Cluster -metadata: - name: cluster-example -spec: - # Other cluster settings... - plugins: - - name: barman-cloud.cloudnative-pg.io - isWALArchiver: true - parameters: - barmanObjectName: cluster-example -``` - -## Backup of a Postgres Cluster - -Once the object store is defined and the `Cluster` is configured to use the -Barman Cloud Plugin, **WAL archiving is activated immediately** on the -PostgreSQL primary. - -Physical base backups are seamlessly managed by CloudNativePG using the -`Backup` and `ScheduledBackup` resources, respectively for -[on-demand](https://cloudnative-pg.io/documentation/current/backup/#on-demand-backups) -and -[scheduled](https://cloudnative-pg.io/documentation/current/backup/#scheduled-backups) -backups. - -To use the Barman Cloud Plugin, you must set the `method` to `plugin` and -configure the `pluginConfiguration` section as shown: - -```yaml -[...] -spec: - method: plugin - pluginConfiguration: - name: barman-cloud.cloudnative-pg.io - [...] -``` - -With this configuration, CloudNativePG supports: - -- Backups from both **primary** and **standby** instances -- Backups from **designated primaries** in a distributed topology using - [replica clusters](https://cloudnative-pg.io/documentation/current/replica_cluster/) - -:::tip -For details on how to back up from a standby, refer to the official documentation: -[Backup from a standby](https://cloudnative-pg.io/documentation/current/backup/#backup-from-a-standby). -::: - -:::important -Both backup and WAL archiving operations are executed by sidecar containers -running in the same pod as the PostgreSQL `Cluster` primary instanceβ€”except -when backups are taken from a standby, in which case the sidecar runs alongside -the standby pod. -The sidecar containers use a [dedicated container image](images.md) that -includes only the supported version of Barman Cloud. -::: - -## Recovery of a Postgres Cluster - -In PostgreSQL, *recovery* refers to the process of starting a database instance -from an existing backup. The Barman Cloud Plugin integrates with CloudNativePG -to support both **full recovery** and **Point-in-Time Recovery (PITR)** from an -object store. - -Recovery in this context is *not in-place*: it bootstraps a brand-new -PostgreSQL cluster from a backup and replays the necessary WAL files to reach -the desired recovery target. - -To perform a recovery, define an *external cluster* that references the -appropriate `ObjectStore`, and use it as the source in the `bootstrap` section -of the target cluster: - -```yaml -[...] -spec: - [...] - bootstrap: - recovery: - source: source - externalClusters: - - name: source - plugin: - name: barman-cloud.cloudnative-pg.io - parameters: - barmanObjectName: cluster-example - serverName: cluster-example - [...] -``` - -The critical element here is the `externalClusters` section of the `Cluster` -resource, where the `plugin` stanza instructs CloudNativePG to use the Barman -Cloud Plugin to access the object store for recovery. - -This same mechanism can be used for a variety of scenarios enabled by the -CloudNativePG API, including: - -* **Full cluster recovery** from the latest backup -* **Point-in-Time Recovery (PITR)** -* Bootstrapping **replica clusters** in a distributed topology - -:::tip -For complete instructions and advanced use cases, refer to the official -[Recovery documentation](https://cloudnative-pg.io/documentation/current/recovery/). -::: diff --git a/web/versioned_docs/version-0.4.1/images.md b/web/versioned_docs/version-0.4.1/images.md deleted file mode 100644 index f6c32d3..0000000 --- a/web/versioned_docs/version-0.4.1/images.md +++ /dev/null @@ -1,37 +0,0 @@ ---- -sidebar_position: 99 ---- - -# Container Images - - - -The Barman Cloud Plugin is distributed using two container images: - -- One for deploying the plugin components -- One for the sidecar that runs alongside each PostgreSQL instance in a - CloudNativePG `Cluster` using the plugin - -## Plugin Container Image - -The plugin image contains the logic required to operate the Barman Cloud Plugin -within your Kubernetes environment with CloudNativePG. It is published on the -GitHub Container Registry at `ghcr.io/cloudnative-pg/plugin-barman-cloud`. - -This image is built from the -[`Dockerfile.plugin`](https://github.com/cloudnative-pg/plugin-barman-cloud/blob/main/containers/Dockerfile.plugin) -in the plugin repository. - -## Sidecar Container Image - -The sidecar image is used within each PostgreSQL pod in the cluster. It -includes the latest supported version of Barman Cloud and is responsible for -performing WAL archiving and backups on behalf of CloudNativePG. - -It is available at `ghcr.io/cloudnative-pg/plugin-barman-cloud-sidecar` and is -built from the -[`Dockerfile.sidecar`](https://github.com/cloudnative-pg/plugin-barman-cloud/blob/main/containers/Dockerfile.sidecar). - -These sidecar images are designed to work seamlessly with the -[`minimal` PostgreSQL container images](https://github.com/cloudnative-pg/postgres-containers?tab=readme-ov-file#minimal-images) -maintained by the CloudNativePG Community. diff --git a/web/versioned_docs/version-0.4.1/installation.mdx b/web/versioned_docs/version-0.4.1/installation.mdx deleted file mode 100644 index 85bd41b..0000000 --- a/web/versioned_docs/version-0.4.1/installation.mdx +++ /dev/null @@ -1,109 +0,0 @@ ---- -sidebar_position: 20 ---- - -# Installation - -:::important -1. The plugin **must** be installed in the same namespace as the CloudNativePG - operator (typically `cnpg-system`). - -2. Keep in mind that the operator's **listening namespaces** may differ from its - installation namespace. Double-check this to avoid configuration issues. -::: - -## Verifying the Requirements - -Before installing the plugin, make sure the [requirements](intro.md#requirements) are met. - -### CloudNativePG Version - -Ensure you're running a version of CloudNativePG that is compatible with the -plugin. If installed in the default `cnpg-system` namespace, you can verify the -version with: - -```sh -kubectl get deployment -n cnpg-system cnpg-controller-manager -o yaml \ - | grep ghcr.io/cloudnative-pg/cloudnative-pg -``` - -Example output: - -```output -image: ghcr.io/cloudnative-pg/cloudnative-pg:1.26.0 -``` - -The version **must be 1.26 or newer**. - -### cert-manager - -Use the [cmctl](https://cert-manager.io/docs/reference/cmctl/#installation) -tool to confirm that `cert-manager` is installed and available: - -```sh -cmctl check api -``` - -Example output: - -```output -The cert-manager API is ready -``` - -Both checks are required before proceeding with the installation. - -## Installing the Barman Cloud Plugin - -import { InstallationSnippet } from '@site/src/components/Installation'; - -Install the plugin using `kubectl` by applying the manifest for the latest -release: - - - -Example output: - -```output -customresourcedefinition.apiextensions.k8s.io/objectstores.barmancloud.cnpg.io created -serviceaccount/plugin-barman-cloud created -role.rbac.authorization.k8s.io/leader-election-role created -clusterrole.rbac.authorization.k8s.io/metrics-auth-role created -clusterrole.rbac.authorization.k8s.io/metrics-reader created -clusterrole.rbac.authorization.k8s.io/objectstore-editor-role created -clusterrole.rbac.authorization.k8s.io/objectstore-viewer-role created -clusterrole.rbac.authorization.k8s.io/plugin-barman-cloud created -rolebinding.rbac.authorization.k8s.io/leader-election-rolebinding created -clusterrolebinding.rbac.authorization.k8s.io/metrics-auth-rolebinding created -clusterrolebinding.rbac.authorization.k8s.io/plugin-barman-cloud-binding created -secret/plugin-barman-cloud-8tfddg42gf created -service/barman-cloud created -deployment.apps/barman-cloud configured -certificate.cert-manager.io/barman-cloud-client created -certificate.cert-manager.io/barman-cloud-server created -issuer.cert-manager.io/selfsigned-issuer created -``` - -Finally, check that the deployment is up and running: - -```sh -kubectl rollout status deployment \ - -n cnpg-system barman-cloud -``` - -Example output: - -```output -deployment "barman-cloud" successfully rolled out -``` - -This confirms that the plugin is deployed and ready to use. - -## Testing the latest development snapshot - -You can also test the latest development snapshot of the plugin with the -following command: - -```sh -kubectl apply -f \ - https://raw.githubusercontent.com/cloudnative-pg/plugin-barman-cloud/refs/heads/main/manifest.yaml -``` diff --git a/web/versioned_docs/version-0.4.1/intro.md b/web/versioned_docs/version-0.4.1/intro.md deleted file mode 100644 index f22f383..0000000 --- a/web/versioned_docs/version-0.4.1/intro.md +++ /dev/null @@ -1,67 +0,0 @@ ---- -sidebar_position: 1 -sidebar_label: "Introduction" ---- - -# Barman Cloud Plugin - - - -The **Barman Cloud Plugin** for [CloudNativePG](https://cloudnative-pg.io/) -enables online continuous physical backups of PostgreSQL clusters to object storage -using the `barman-cloud` suite from the [Barman](https://docs.pgbarman.org/release/latest/) -project. - -:::important -If you plan to migrate your existing CloudNativePG cluster to the new -plugin-based approach using the Barman Cloud Plugin, see -["Migrating from Built-in CloudNativePG Backup"](migration.md) -for detailed instructions. -::: - -## Requirements - -To use the Barman Cloud Plugin, you need: - -- [CloudNativePG](https://cloudnative-pg.io) version **1.26** -- [cert-manager](https://cert-manager.io/) to enable TLS communication between - the plugin and the operator - -## Key Features - -This plugin provides the following capabilities: - -- Physical online backup of the data directory -- Physical restore of the data directory -- Write-Ahead Log (WAL) archiving -- WAL restore -- Full cluster recovery -- Point-in-Time Recovery (PITR) -- Seamless integration with replica clusters for bootstrap and WAL restore from archive - -:::important -The Barman Cloud Plugin is designed to **replace the in-tree object storage support** -previously provided via the `.spec.backup.barmanObjectStore` section in the -`Cluster` resource. -Backups created using the in-tree approach are fully supported and compatible -with this plugin. -::: - -## Supported Object Storage Providers - -The plugin works with all storage backends supported by `barman-cloud`, including: - -- **Amazon S3** -- **Google Cloud Storage** -- **Microsoft Azure Blob Storage** - -In addition, the following S3-compatible and simulator solutions have been -tested and verified: - -- [MinIO](https://min.io/) – An S3-compatible storage solution -- [Azurite](https://github.com/Azure/Azurite) – A simulator for Azure Blob Storage -- [fake-gcs-server](https://github.com/fsouza/fake-gcs-server) – A simulator for Google Cloud Storage - -:::tip -For more details, refer to [Object Store Providers](object_stores.md). -::: diff --git a/web/versioned_docs/version-0.4.1/migration.md b/web/versioned_docs/version-0.4.1/migration.md deleted file mode 100644 index 43c4b80..0000000 --- a/web/versioned_docs/version-0.4.1/migration.md +++ /dev/null @@ -1,259 +0,0 @@ ---- -sidebar_position: 40 ---- - -# Migrating from Built-in CloudNativePG Backup - - - -The in-tree support for Barman Cloud in CloudNativePG is **deprecated starting -from version 1.26** and will be removed in a future release. - -If you're currently relying on the built-in Barman Cloud integration, you can -migrate seamlessly to the new **plugin-based architecture** using the Barman -Cloud Plugin, without data loss. Follow these steps: - -- [Install the Barman Cloud Plugin](installation.mdx) -- Create an `ObjectStore` resource by translating the contents of the - `.spec.backup.barmanObjectStore` section from your existing `Cluster` - definition -- Modify the `Cluster` resource in a single atomic change to switch from - in-tree backup to the plugin -- Update any `ScheduledBackup` resources to use the plugin -- Update the `externalClusters` configuration, where applicable - -:::tip -For a working example, refer to [this commit](https://github.com/cloudnative-pg/cnpg-playground/commit/596f30e252896edf8f734991c3538df87630f6f7) -from the [CloudNativePG Playground project](https://github.com/cloudnative-pg/cnpg-playground), -which demonstrates a full migration. -::: - ---- - -## Step 1: Define the `ObjectStore` - -Begin by creating an `ObjectStore` resource in the same namespace as your -PostgreSQL `Cluster`. - -There is a **direct mapping** between the `.spec.backup.barmanObjectStore` -section in CloudNativePG and the `.spec.configuration` field in the -`ObjectStore` CR. The conversion is mostly mechanical, with one key difference: - -:::warning -In the plugin architecture, retention policies are defined as part of the `ObjectStore`. -In contrast, the in-tree implementation defined them at the `Cluster` level. -::: - -If your `Cluster` used `.spec.backup.retentionPolicy`, move that configuration -to `.spec.retentionPolicy` in the `ObjectStore`. - ---- - -### Example - -Here’s an excerpt from a traditional in-tree CloudNativePG backup configuration -taken from the CloudNativePG Playground project: - -```yaml -apiVersion: postgresql.cnpg.io/v1 -kind: Cluster -metadata: - name: pg-eu -spec: - # [...] - backup: - barmanObjectStore: - destinationPath: s3://backups/ - endpointURL: http://minio-eu:9000 - s3Credentials: - accessKeyId: - name: minio-eu - key: ACCESS_KEY_ID - secretAccessKey: - name: minio-eu - key: ACCESS_SECRET_KEY - wal: - compression: gzip -``` - -This configuration translates to the following `ObjectStore` resource for the -plugin: - -```yaml -apiVersion: barmancloud.cnpg.io/v1 -kind: ObjectStore -metadata: - name: minio-eu -spec: - configuration: - destinationPath: s3://backups/ - endpointURL: http://minio-eu:9000 - s3Credentials: - accessKeyId: - name: minio-eu - key: ACCESS_KEY_ID - secretAccessKey: - name: minio-eu - key: ACCESS_SECRET_KEY - wal: - compression: gzip -``` - -As you can see, the contents of `barmanObjectStore` have been copied directly -under the `configuration` field of the `ObjectStore` resource, using the same -secret references. - -## Step 2: Update the `Cluster` for plugin WAL archiving - -Once the `ObjectStore` resource is in place, update the `Cluster` resource as -follows in a single atomic change: - -- Remove the `.spec.backup.barmanObjectStore` section -- Remove `.spec.backup.retentionPolicy` if it was defined (as it is now in the - `ObjectStore`) -- Remove the entire `spec.backup` section if it is now empty -- Add `barman-cloud.cloudnative-pg.io` to the `plugins` list, as described in - [Configuring WAL archiving](usage.md#configuring-wal-archiving) - -This will trigger a rolling update of the `Cluster`, switching continuous -backup from the in-tree implementation to the plugin-based approach. - -### Example - -The updated `pg-eu` cluster will have this configuration instead of the -previous `backup` section: - -```yaml - plugins: - - name: barman-cloud.cloudnative-pg.io - isWALArchiver: true - parameters: - barmanObjectName: minio-eu -``` - ---- - -## Step 3: Update the `ScheduledBackup` - -After switching the `Cluster` to use the plugin, update your `ScheduledBackup` -resources to match. - -Set the backup `method` to `plugin` and reference the plugin name via -`pluginConfiguration`, as shown in ["Performing a base backup"](usage.md#performing-a-base-backup). - -### Example - -Original in-tree `ScheduledBackup`: - -```yaml -apiVersion: postgresql.cnpg.io/v1 -kind: ScheduledBackup -metadata: - name: pg-eu-backup -spec: - cluster: - name: pg-eu - schedule: '0 0 0 * * *' - backupOwnerReference: self -``` - -Updated version using the plugin: - -```yaml -apiVersion: postgresql.cnpg.io/v1 -kind: ScheduledBackup -metadata: - name: pg-eu-backup -spec: - cluster: - name: pg-eu - schedule: '0 0 0 * * *' - backupOwnerReference: self - method: plugin - pluginConfiguration: - name: barman-cloud.cloudnative-pg.io -``` - ---- - -## Step 4: Update the `externalClusters` configuration - -If your `Cluster` relies on one or more external clusters that use the in-tree -Barman Cloud integration, you need to update those configurations to use the -plugin-based architecture. - -When a replica cluster fetches WAL files or base backups from an external -source that used the built-in backup method, follow these steps: - -1. Create a corresponding `ObjectStore` resource for the external cluster, as - shown in [Step 1](#step-1-define-the-objectstore) -2. Update the `externalClusters` section of your replica cluster to use the - plugin instead of the in-tree `barmanObjectStore` field - -### Example - -Consider the original configuration using in-tree Barman Cloud: - -```yaml -apiVersion: postgresql.cnpg.io/v1 -kind: Cluster -metadata: - name: pg-us -spec: - # [...] - externalClusters: - - name: pg-eu - barmanObjectStore: - destinationPath: s3://backups/ - endpointURL: http://minio-eu:9000 - serverName: pg-eu - s3Credentials: - accessKeyId: - name: minio-eu - key: ACCESS_KEY_ID - secretAccessKey: - name: minio-eu - key: ACCESS_SECRET_KEY - wal: - compression: gzip -``` - -Create the `ObjectStore` resource for the external cluster: - -```yaml -apiVersion: barmancloud.cnpg.io/v1 -kind: ObjectStore -metadata: - name: minio-eu -spec: - configuration: - destinationPath: s3://backups/ - endpointURL: http://minio-eu:9000 - s3Credentials: - accessKeyId: - name: minio-eu - key: ACCESS_KEY_ID - secretAccessKey: - name: minio-eu - key: ACCESS_SECRET_KEY - wal: - compression: gzip -``` - -Update the external cluster configuration to use the plugin: - -```yaml -apiVersion: postgresql.cnpg.io/v1 -kind: Cluster -metadata: - name: pg-us -spec: - # [...] - externalClusters: - - name: pg-eu - plugin: - name: barman-cloud.cloudnative-pg.io - parameters: - barmanObjectName: minio-eu - serverName: pg-eu -``` diff --git a/web/versioned_docs/version-0.4.1/misc.md b/web/versioned_docs/version-0.4.1/misc.md deleted file mode 100644 index 4d3cefc..0000000 --- a/web/versioned_docs/version-0.4.1/misc.md +++ /dev/null @@ -1,76 +0,0 @@ ---- -sidebar_position: 90 ---- - -# Miscellaneous - - - -## Backup Object Tagging - -You can attach key-value metadata tags to backup artifactsβ€”such as base -backups, WAL files, and history filesβ€”via the `.spec.configuration` section of -the `ObjectStore` resource. - -- `tags`: applied to base backups and WAL files -- `historyTags`: applied to history files only - -### Example - -```yaml -apiVersion: barmancloud.cnpg.io/v1 -kind: ObjectStore -metadata: - name: my-store -spec: - configuration: - [...] - tags: - backupRetentionPolicy: "expire" - historyTags: - backupRetentionPolicy: "keep" - [...] -``` - -## Extra Options for Backup and WAL Archiving - -You can pass additional command-line arguments to `barman-cloud-backup` and -`barman-cloud-wal-archive` using the `additionalCommandArgs` field in the -`ObjectStore` configuration. - -- `.spec.configuration.data.additionalCommandArgs`: for `barman-cloud-backup` -- `.spec.configuration.wal.additionalCommandArgs`: for `barman-cloud-wal-archive` - -Each field accepts a list of string arguments. If an argument is already -configured elsewhere in the plugin, the duplicate will be ignored. - -### Example: Extra Backup Options - -```yaml -kind: ObjectStore -metadata: - name: my-store -spec: - configuration: - data: - additionalCommandArgs: - - "--min-chunk-size=5MB" - - "--read-timeout=60" -``` - -### Example: Extra WAL Archive Options - -```yaml -kind: ObjectStore -metadata: - name: my-store -spec: - configuration: - wal: - additionalCommandArgs: - - "--max-concurrency=1" - - "--read-timeout=60" -``` - -For a complete list of supported options, refer to the -[official Barman Cloud documentation](https://docs.pgbarman.org/release/latest/). diff --git a/web/versioned_docs/version-0.4.1/object_stores.md b/web/versioned_docs/version-0.4.1/object_stores.md deleted file mode 100644 index 29e7b35..0000000 --- a/web/versioned_docs/version-0.4.1/object_stores.md +++ /dev/null @@ -1,465 +0,0 @@ ---- -sidebar_position: 50 ---- - -# Object Store Providers - - - -The Barman Cloud Plugin enables the storage of PostgreSQL cluster backup files -in any object storage service supported by the -[Barman Cloud infrastructure](https://docs.pgbarman.org/release/latest/). - -Currently, Barman Cloud supports the following providers: - -- [Amazon S3](#aws-s3) -- [Microsoft Azure Blob Storage](#azure-blob-storage) -- [Google Cloud Storage](#google-cloud-storage) - -You may also use any S3- or Azure-compatible implementation of the above -services. - -To configure object storage with Barman Cloud, you must define an -[`ObjectStore` object](plugin-barman-cloud.v1.md#objectstore), which -establishes the connection between your PostgreSQL cluster and the object -storage backend. - -Configuration details β€” particularly around authentication β€” will vary depending on -the specific object storage provider you are using. - -The following sections detail the setup for each. - ---- - -## AWS S3 - -[AWS Simple Storage Service (S3)](https://aws.amazon.com/s3/) is one of the -most widely adopted object storage solutions. - -The Barman Cloud plugin for CloudNativePG integrates with S3 through two -primary authentication mechanisms: - -- [IAM Roles for Service Accounts (IRSA)](https://docs.aws.amazon.com/eks/latest/userguide/iam-roles-for-service-accounts.html) β€” - recommended for clusters running on EKS -- Access keys β€” using `ACCESS_KEY_ID` and `ACCESS_SECRET_KEY` credentials - -### Access Keys - -To authenticate using access keys, you’ll need: - -- `ACCESS_KEY_ID`: the public key used to authenticate to S3 -- `ACCESS_SECRET_KEY`: the corresponding secret key -- `ACCESS_SESSION_TOKEN`: (optional) a temporary session token, if required - -These credentials must be stored securely in a Kubernetes secret: - -```sh -kubectl create secret generic aws-creds \ - --from-literal=ACCESS_KEY_ID= \ - --from-literal=ACCESS_SECRET_KEY= -# --from-literal=ACCESS_SESSION_TOKEN= # if required -``` - -The credentials will be encrypted at rest if your Kubernetes environment -supports it. - -You can then reference the secret in your `ObjectStore` definition: - -```yaml -apiVersion: barmancloud.cnpg.io/v1 -kind: ObjectStore -metadata: - name: aws-store -spec: - configuration: - destinationPath: "s3://BUCKET_NAME/path/to/folder" - s3Credentials: - accessKeyId: - name: aws-creds - key: ACCESS_KEY_ID - secretAccessKey: - name: aws-creds - key: ACCESS_SECRET_KEY - [...] -``` - -### IAM Role for Service Account (IRSA) - -To use IRSA with EKS, configure the service account of the PostgreSQL cluster -with the appropriate annotation: - -```yaml -apiVersion: postgresql.cnpg.io/v1 -kind: Cluster -metadata: - [...] -spec: - serviceAccountTemplate: - metadata: - annotations: - eks.amazonaws.com/role-arn: arn:[...] - [...] -``` - -### S3 Lifecycle Policy - -Barman Cloud uploads backup files to S3 but does not modify them afterward. -To enhance data durability and protect against accidental or malicious loss, -it's recommended to implement the following best practices: - -- Enable object versioning -- Enable object locking to prevent objects from being deleted or overwritten - for a defined period or indefinitely (this provides an additional layer of - protection against accidental deletion and ransomware attacks) -- Set lifecycle rules to expire current versions a few days after your Barman - retention window -- Expire non-current versions after a longer period - -These strategies help you safeguard backups without requiring broad delete -permissions, ensuring both security and compliance with minimal operational -overhead. - - -### S3-Compatible Storage Providers - -You can use S3-compatible services like **MinIO**, **Linode (Akamai) Object Storage**, -or **DigitalOcean Spaces** by specifying a custom `endpointURL`. - -Example with Linode (Akamai) Object Storage (`us-east1`): - -```yaml -apiVersion: barmancloud.cnpg.io/v1 -kind: ObjectStore -metadata: - name: linode-store -spec: - configuration: - destinationPath: "s3://BUCKET_NAME/" - endpointURL: "https://us-east1.linodeobjects.com" - s3Credentials: - [...] - [...] -``` - -Example with DigitalOcean Spaces (SFO3, path-style): - -```yaml -apiVersion: barmancloud.cnpg.io/v1 -kind: ObjectStore -metadata: - name: digitalocean-store -spec: - configuration: - destinationPath: "s3://BUCKET_NAME/path/to/folder" - endpointURL: "https://sfo3.digitaloceanspaces.com" - s3Credentials: - [...] - [...] -``` - -### Using Object Storage with a Private CA - -For object storage services (e.g., MinIO) that use HTTPS with certificates -signed by a private CA, set the `endpointCA` field in the `ObjectStore` -definition. Unless you already have it, create a Kubernetes `Secret` with the -CA bundle: - -```sh -kubectl create secret generic my-ca-secret --from-file=ca.crt -``` - -Then reference it: - -```yaml -apiVersion: barmancloud.cnpg.io/v1 -kind: ObjectStore -metadata: - name: minio-store -spec: - configuration: - endpointURL: - endpointCA: - name: my-ca-secret - key: ca.crt - [...] -``` - - -:::note -If you want `ConfigMaps` and `Secrets` to be **automatically** reloaded by -instances, you can add a label with the key `cnpg.io/reload` to the -`Secrets`/`ConfigMaps`. Otherwise, you will have to reload the instances using the -`kubectl cnpg reload` subcommand. -::: - ---- - -## Azure Blob Storage - -[Azure Blob Storage](https://azure.microsoft.com/en-us/services/storage/blobs/) -is Microsoft’s cloud-based object storage solution. - -Barman Cloud supports the following authentication methods: - -- [Connection String](https://learn.microsoft.com/en-us/azure/storage/common/storage-configure-connection-string) -- Storage Account Name + [Access Key](https://learn.microsoft.com/en-us/azure/storage/common/storage-account-keys-manage) -- Storage Account Name + [SAS Token](https://learn.microsoft.com/en-us/azure/storage/blobs/sas-service-create) -- [Azure AD Workload Identity](https://azure.github.io/azure-workload-identity/docs/introduction.html) - -### Azure AD Workload Identity - -This method avoids storing credentials in Kubernetes via the -`.spec.configuration.inheritFromAzureAD` option: - -```yaml -apiVersion: barmancloud.cnpg.io/v1 -kind: ObjectStore -metadata: - name: azure-store -spec: - configuration: - destinationPath: "" - azureCredentials: - inheritFromAzureAD: true - [...] -``` - -### Access Key, SAS Token, or Connection String - -Store credentials in a Kubernetes secret: - -```sh -kubectl create secret generic azure-creds \ - --from-literal=AZURE_STORAGE_ACCOUNT= \ - --from-literal=AZURE_STORAGE_KEY= \ - --from-literal=AZURE_STORAGE_SAS_TOKEN= \ - --from-literal=AZURE_STORAGE_CONNECTION_STRING= -``` - -Then reference the required keys in your `ObjectStore`: - -```yaml -apiVersion: barmancloud.cnpg.io/v1 -kind: ObjectStore -metadata: - name: azure-store -spec: - configuration: - destinationPath: "" - azureCredentials: - connectionString: - name: azure-creds - key: AZURE_CONNECTION_STRING - storageAccount: - name: azure-creds - key: AZURE_STORAGE_ACCOUNT - storageKey: - name: azure-creds - key: AZURE_STORAGE_KEY - storageSasToken: - name: azure-creds - key: AZURE_STORAGE_SAS_TOKEN - [...] -``` - -For Azure Blob, the destination path format is: - -``` -://..core.windows.net// -``` - -### Azure-Compatible Providers - -If you're using a different implementation (e.g., Azurite or emulator): - -``` -://:/// -``` - ---- - -## Google Cloud Storage - -[Google Cloud Storage](https://cloud.google.com/storage/) is supported with two -authentication modes: - -- **GKE Workload Identity** (recommended inside Google Kubernetes Engine) -- **Service Account JSON key** via the `GOOGLE_APPLICATION_CREDENTIALS` environment variable - -### GKE Workload Identity - -Use the [Workload Identity authentication](https://cloud.google.com/kubernetes-engine/docs/how-to/workload-identity) -when running in GKE: - -1. Set `googleCredentials.gkeEnvironment` to `true` in the `ObjectStore` - resource -2. Annotate the `serviceAccountTemplate` in the `Cluster` resource with the GCP - service account - -For example, in the `ObjectStore` resource: - -```yaml -apiVersion: barmancloud.cnpg.io/v1 -kind: ObjectStore -metadata: - name: google-store -spec: - configuration: - destinationPath: "gs:///" - googleCredentials: - gkeEnvironment: true -``` - -And in the `Cluster` resource: - -```yaml -apiVersion: postgresql.cnpg.io/v1 -kind: Cluster -spec: - serviceAccountTemplate: - metadata: - annotations: - iam.gke.io/gcp-service-account: [...].iam.gserviceaccount.com -``` - -### Service Account JSON Key - -Follow Google’s [authentication setup](https://cloud.google.com/docs/authentication/getting-started), -then: - -```sh -kubectl create secret generic backup-creds --from-file=gcsCredentials=gcs_credentials_file.json -``` - -```yaml -apiVersion: barmancloud.cnpg.io/v1 -kind: ObjectStore -metadata: - name: google-store -spec: - configuration: - destinationPath: "gs:///" - googleCredentials: - applicationCredentials: - name: backup-creds - key: gcsCredentials - [...] -``` - -:::important -This authentication method generates a JSON file within the container -with all the credentials required to access your Google Cloud Storage -bucket. As a result, if someone gains access to the `Pod`, they will also have -write permissions to the bucket. -::: - ---- - - -## MinIO Gateway - -MinIO Gateway can proxy requests to cloud object storage providers like S3 or GCS. -For more information, refer to [MinIO official documentation](https://docs.min.io/). - -### Setup - -Create MinIO access credentials: - -```sh -kubectl create secret generic minio-creds \ - --from-literal=MINIO_ACCESS_KEY= \ - --from-literal=MINIO_SECRET_KEY= -``` - -:::note -Cloud Object Storage credentials will be used only by MinIO Gateway in this -case. -::: - -Expose MinIO Gateway via `ClusterIP`: - -```yaml -apiVersion: v1 -kind: Service -metadata: - name: minio-gateway-service -spec: - type: ClusterIP - ports: - - port: 9000 - targetPort: 9000 - protocol: TCP - selector: - app: minio -``` - -Here follows an excerpt of an example of deployment relaying to S3: - -```yaml -apiVersion: apps/v1 -kind: Deployment -[...] -spec: - containers: - - name: minio - image: minio/minio:RELEASE.2020-06-03T22-13-49Z - args: ["gateway", "s3"] - ports: - - containerPort: 9000 - env: - - name: MINIO_ACCESS_KEY - valueFrom: - secretKeyRef: - name: minio-creds - key: MINIO_ACCESS_KEY - - name: MINIO_SECRET_KEY - valueFrom: - secretKeyRef: - name: minio-creds - key: MINIO_SECRET_KEY - - name: AWS_ACCESS_KEY_ID - valueFrom: - secretKeyRef: - name: aws-creds - key: ACCESS_KEY_ID - - name: AWS_SECRET_ACCESS_KEY - valueFrom: - secretKeyRef: - name: aws-creds - key: ACCESS_SECRET_KEY -# Uncomment the below section if session token is required -# - name: AWS_SESSION_TOKEN -# valueFrom: -# secretKeyRef: -# name: aws-creds -# key: ACCESS_SESSION_TOKEN -``` - -Proceed by configuring MinIO Gateway service as the `endpointURL` in the -`ObjectStore` definition, then choose a bucket name to replace `BUCKET_NAME`: - -```yaml -apiVersion: barmancloud.cnpg.io/v1 -kind: ObjectStore -metadata: - name: minio-store -spec: - configuration: - destinationPath: s3://BUCKET_NAME/ - endpointURL: http://minio-gateway-service:9000 - s3Credentials: - accessKeyId: - name: minio-creds - key: MINIO_ACCESS_KEY - secretAccessKey: - name: minio-creds - key: MINIO_SECRET_KEY - [...] -``` - -:::important -Verify on `s3://BUCKET_NAME/` the presence of archived WAL files before -proceeding with a backup. -::: - ---- diff --git a/web/versioned_docs/version-0.4.1/parameters.md b/web/versioned_docs/version-0.4.1/parameters.md deleted file mode 100644 index ca0cd2b..0000000 --- a/web/versioned_docs/version-0.4.1/parameters.md +++ /dev/null @@ -1,19 +0,0 @@ ---- -sidebar_position: 100 ---- - -# Parameters - - - -The following parameters are available for the Barman Cloud Plugin: - -- `barmanObjectName`: references the `ObjectStore` resource to be used by the - plugin. -- `serverName`: Specifies the server name in the object store. - -:::important -The `serverName` parameter in the `ObjectStore` resource is retained solely for -API compatibility with the in-tree `barmanObjectStore` and must always be left empty. -When needed, use the `serverName` plugin parameter in the Cluster configuration instead. -::: diff --git a/web/versioned_docs/version-0.4.1/plugin-barman-cloud.v1.md b/web/versioned_docs/version-0.4.1/plugin-barman-cloud.v1.md deleted file mode 100644 index 552dc27..0000000 --- a/web/versioned_docs/version-0.4.1/plugin-barman-cloud.v1.md +++ /dev/null @@ -1,105 +0,0 @@ -# API Reference - -## Packages -- [barmancloud.cnpg.io/v1](#barmancloudcnpgiov1) - - -## barmancloud.cnpg.io/v1 - -Package v1 contains API Schema definitions for the barmancloud v1 API group - -### Resource Types -- [ObjectStore](#objectstore) - - - -#### InstanceSidecarConfiguration - - - -InstanceSidecarConfiguration defines the configuration for the sidecar that runs in the instance pods. - - - -_Appears in:_ -- [ObjectStoreSpec](#objectstorespec) - -| Field | Description | Required | Default | Validation | -| --- | --- | --- | --- | --- | -| `env` _[EnvVar](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#envvar-v1-core) array_ | The environment to be explicitly passed to the sidecar | | | | -| `retentionPolicyIntervalSeconds` _integer_ | The retentionCheckInterval defines the frequency at which the
system checks and enforces retention policies. | | 1800 | | -| `resources` _[ResourceRequirements](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcerequirements-v1-core)_ | Resources define cpu/memory requests and limits for the sidecar that runs in the instance pods. | | | | - - -#### ObjectStore - - - -ObjectStore is the Schema for the objectstores API. - - - - - -| Field | Description | Required | Default | Validation | -| --- | --- | --- | --- | --- | -| `apiVersion` _string_ | `barmancloud.cnpg.io/v1` | True | | | -| `kind` _string_ | `ObjectStore` | True | | | -| `metadata` _[ObjectMeta](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#objectmeta-v1-meta)_ | Refer to Kubernetes API documentation for fields of `metadata`. | True | | | -| `spec` _[ObjectStoreSpec](#objectstorespec)_ | Specification of the desired behavior of the ObjectStore.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status | True | | | -| `status` _[ObjectStoreStatus](#objectstorestatus)_ | Most recently observed status of the ObjectStore. This data may not be up to
date. Populated by the system. Read-only.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status | | | | - - -#### ObjectStoreSpec - - - -ObjectStoreSpec defines the desired state of ObjectStore. - - - -_Appears in:_ -- [ObjectStore](#objectstore) - -| Field | Description | Required | Default | Validation | -| --- | --- | --- | --- | --- | -| `configuration` _[BarmanObjectStoreConfiguration](https://pkg.go.dev/github.com/cloudnative-pg/barman-cloud/pkg/api#BarmanObjectStoreConfiguration)_ | The configuration for the barman-cloud tool suite | True | | | -| `retentionPolicy` _string_ | RetentionPolicy is the retention policy to be used for backups
and WALs (i.e. '60d'). The retention policy is expressed in the form
of `XXu` where `XX` is a positive integer and `u` is in `[dwm]` -
days, weeks, months. | | | Pattern: `^[1-9][0-9]*[dwm]$`
| -| `instanceSidecarConfiguration` _[InstanceSidecarConfiguration](#instancesidecarconfiguration)_ | The configuration for the sidecar that runs in the instance pods | | | | - - -#### ObjectStoreStatus - - - -ObjectStoreStatus defines the observed state of ObjectStore. - - - -_Appears in:_ -- [ObjectStore](#objectstore) - -| Field | Description | Required | Default | Validation | -| --- | --- | --- | --- | --- | -| `serverRecoveryWindow` _object (keys:string, values:[RecoveryWindow](#recoverywindow))_ | ServerRecoveryWindow maps each server to its recovery window | True | | | - - -#### RecoveryWindow - - - -RecoveryWindow represents the time span between the first -recoverability point and the last successful backup of a PostgreSQL -server, defining the period during which data can be restored. - - - -_Appears in:_ -- [ObjectStoreStatus](#objectstorestatus) - -| Field | Description | Required | Default | Validation | -| --- | --- | --- | --- | --- | -| `firstRecoverabilityPoint` _[Time](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#time-v1-meta)_ | The first recoverability point in a PostgreSQL server refers to
the earliest point in time to which the database can be
restored. | True | | | -| `lastSuccussfulBackupTime` _[Time](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#time-v1-meta)_ | The last successful backup time | True | | | - - diff --git a/web/versioned_docs/version-0.4.1/retention.md b/web/versioned_docs/version-0.4.1/retention.md deleted file mode 100644 index fefbd08..0000000 --- a/web/versioned_docs/version-0.4.1/retention.md +++ /dev/null @@ -1,38 +0,0 @@ ---- -sidebar_position: 60 ---- - -# Retention Policies - - - -The Barman Cloud Plugin supports **automated cleanup of obsolete backups** via -retention policies, configured in the `.spec.retentionPolicy` field of the -`ObjectStore` resource. - -:::note -This feature uses the `barman-cloud-backup-delete` command with the -`--retention-policy "RECOVERY WINDOW OF {{ value }} {{ unit }}"` syntax. -::: - -#### Example: 30-Day Retention Policy - -```yaml -apiVersion: barmancloud.cnpg.io/v1 -kind: ObjectStore -metadata: - name: my-store -spec: - [...] - retentionPolicy: "30d" -```` - -:::note -A **recovery window retention policy** ensures the cluster can be restored to -any point in time between the calculated *Point of Recoverability* (PoR) and -the latest WAL archive. The PoR is defined as `current time - recovery window`. -The **first valid backup** is the most recent backup completed before the PoR. -Backups older than that are marked as *obsolete* and deleted after the next -backup completes. -::: - diff --git a/web/versioned_docs/version-0.4.1/usage.md b/web/versioned_docs/version-0.4.1/usage.md deleted file mode 100644 index 5a82229..0000000 --- a/web/versioned_docs/version-0.4.1/usage.md +++ /dev/null @@ -1,258 +0,0 @@ ---- -sidebar_position: 30 ---- - -# Using the Barman Cloud Plugin - - - -After [installing the plugin](installation.mdx) in the same namespace as the -CloudNativePG operator, enabling your PostgreSQL cluster to use the Barman -Cloud Plugin involves just a few steps: - -- Defining the object store containing your WAL archive and base backups, using - your preferred [provider](object_stores.md) -- Instructing the Postgres cluster to use the Barman Cloud Plugin - -From that moment, you’ll be able to issue on-demand backups or define a backup -schedule, as well as rely on the object store for recovery operations. - -The rest of this page details each step, using MinIO as object store provider. - -## Defining the `ObjectStore` - -An `ObjectStore` resource must be created for each object store used in your -PostgreSQL architecture. Here's an example configuration using MinIO: - -```yaml -apiVersion: barmancloud.cnpg.io/v1 -kind: ObjectStore -metadata: - name: minio-store -spec: - configuration: - destinationPath: s3://backups/ - endpointURL: http://minio:9000 - s3Credentials: - accessKeyId: - name: minio - key: ACCESS_KEY_ID - secretAccessKey: - name: minio - key: ACCESS_SECRET_KEY - wal: - compression: gzip -``` - -The `.spec.configuration` schema follows the same format as the -[in-tree barman-cloud support](https://pkg.go.dev/github.com/cloudnative-pg/barman-cloud/pkg/api#BarmanObjectStoreConfiguration). -Refer to [the CloudNativePG documentation](https://cloudnative-pg.io/documentation/current/appendixes/backup_barmanobjectstore/) -for additional details. - -:::important -The `serverName` parameter in the `ObjectStore` resource is retained solely for -API compatibility with the in-tree `barmanObjectStore` and must always be left empty. -When needed, use the `serverName` plugin parameter in the Cluster configuration instead. -::: - -## Configuring WAL Archiving - -Once the `ObjectStore` is defined, you can configure your PostgreSQL cluster -to archive WALs by referencing the store in the `.spec.plugins` section: - -```yaml -apiVersion: postgresql.cnpg.io/v1 -kind: Cluster -metadata: - name: cluster-example -spec: - instances: 3 - imagePullPolicy: Always - plugins: - - name: barman-cloud.cloudnative-pg.io - isWALArchiver: true - parameters: - barmanObjectName: minio-store - storage: - size: 1Gi -``` - -This configuration enables both WAL archiving and data directory backups. - -## Performing a Base Backup - -Once WAL archiving is enabled, the cluster is ready for backups. To issue an -on-demand backup, use the following configuration with the plugin method: - -```yaml -apiVersion: postgresql.cnpg.io/v1 -kind: Backup -metadata: - name: backup-example -spec: - cluster: - name: cluster-example - method: plugin - pluginConfiguration: - name: barman-cloud.cloudnative-pg.io -``` - -:::note -You can apply the same concept to the `ScheduledBackup` resource. -::: - -## Restoring a Cluster - -To restore a cluster from an object store, create a new `Cluster` resource that -references the store containing the backup. Below is an example configuration: - -```yaml -apiVersion: postgresql.cnpg.io/v1 -kind: Cluster -metadata: - name: cluster-restore -spec: - instances: 3 - imagePullPolicy: IfNotPresent - bootstrap: - recovery: - source: source - externalClusters: - - name: source - plugin: - name: barman-cloud.cloudnative-pg.io - parameters: - barmanObjectName: minio-store - serverName: cluster-example - storage: - size: 1Gi -``` - -:::important -The above configuration does **not** enable WAL archiving for the restored cluster. -::: - -To enable WAL archiving for the restored cluster, include the `.spec.plugins` -section alongside the `externalClusters.plugin` section, as shown below: - -```yaml -apiVersion: postgresql.cnpg.io/v1 -kind: Cluster -metadata: - name: cluster-restore -spec: - instances: 3 - imagePullPolicy: IfNotPresent - bootstrap: - recovery: - source: source - plugins: - - name: barman-cloud.cloudnative-pg.io - isWALArchiver: true - parameters: - # Backup Object Store (push, read-write) - barmanObjectName: minio-store-bis - externalClusters: - - name: source - plugin: - name: barman-cloud.cloudnative-pg.io - parameters: - # Recovery Object Store (pull, read-only) - barmanObjectName: minio-store - serverName: cluster-example - storage: - size: 1Gi -``` - -The same object store may be used for both transaction log archiving and -restoring a cluster, or you can configure separate stores for these purposes. - -## Configuring Replica Clusters - -You can set up a distributed topology by combining the previously defined -configurations with the `.spec.replica` section. Below is an example of how to -define a replica cluster: - -```yaml -apiVersion: postgresql.cnpg.io/v1 -kind: Cluster -metadata: - name: cluster-dc-a -spec: - instances: 3 - primaryUpdateStrategy: unsupervised - - storage: - storageClass: csi-hostpath-sc - size: 1Gi - - plugins: - - name: barman-cloud.cloudnative-pg.io - isWALArchiver: true - parameters: - barmanObjectName: minio-store-a - - replica: - self: cluster-dc-a - primary: cluster-dc-a - source: cluster-dc-b - - externalClusters: - - name: cluster-dc-a - plugin: - name: barman-cloud.cloudnative-pg.io - parameters: - barmanObjectName: minio-store-a - - - name: cluster-dc-b - plugin: - name: barman-cloud.cloudnative-pg.io - parameters: - barmanObjectName: minio-store-b -``` - -## Configuring the plugin instance sidecar - -The Barman Cloud Plugin runs as a sidecar container next to each PostgreSQL -instance pod. It manages backup, WAL archiving, and restore processes. - -Configuration comes from multiple `ObjectStore` resources: - -1. The one referenced in the - `.spec.plugins` section of the `Cluster`. This is the - object store used for WAL archiving and base backups. -2. The one referenced in the external cluster - used in the `.spec.replica.source` section of the `Cluster`. This is - used by the log-shipping designated primary to get the WAL files. -3. The one referenced in the - `.spec.bootstrap.recovery.source` section of the `Cluster`. Used by - the initial recovery job to create the cluster from an existing backup. - -You can fine-tune sidecar behavior in the `.spec.instanceSidecarConfiguration` -of your ObjectStore. These settings apply to all PostgreSQL instances that use -this object store. Any updates take effect at the next `Cluster` reconciliation, -and could generate a rollout of the `Cluster`. - -```yaml -apiVersion: barmancloud.cnpg.io/v1 -kind: ObjectStore -metadata: - name: minio-store -spec: - configuration: - # [...] - instanceSidecarConfiguration: - retentionPolicyIntervalSeconds: 1800 - resources: - requests: - memory: "XXX" - cpu: "YYY" - limits: - memory: "XXX" - cpu: "YYY" -``` - -:::note -If more than one `ObjectStore` applies, the `instanceSidecarConfiguration` of -the one set in `.spec.plugins` has priority. -::: diff --git a/web/versioned_docs/version-0.5.0/compression.md b/web/versioned_docs/version-0.5.0/compression.md deleted file mode 100644 index 2abbede..0000000 --- a/web/versioned_docs/version-0.5.0/compression.md +++ /dev/null @@ -1,43 +0,0 @@ ---- -sidebar_position: 80 ---- - -# Compression - - - -By default, backups and WAL files are archived **uncompressed**. However, the -Barman Cloud Plugin supports multiple compression algorithms via -`barman-cloud-backup` and `barman-cloud-wal-archive`, allowing you to optimize -for space, speed, or a balance of both. - -### Supported Compression Algorithms - -- `bzip2` -- `gzip` -- `lz4` (WAL only) -- `snappy` -- `xz` (WAL only) -- `zstd` (WAL only) - -Compression settings for base backups and WAL archives are configured -independently. For implementation details, refer to the corresponding API -definitions: - -- [`DataBackupConfiguration`](https://pkg.go.dev/github.com/cloudnative-pg/barman-cloud/pkg/api#DataBackupConfiguration) -- [`WALBackupConfiguration`](https://pkg.go.dev/github.com/cloudnative-pg/barman-cloud/pkg/api#WalBackupConfiguration) - -:::important -Compression impacts both performance and storage efficiency. Choose the right -algorithm based on your recovery time objectives (RTO), storage capacity, and -network throughput. -::: - -## Compression Benchmark (on MinIO) - -| Compression | Backup Time (ms) | Restore Time (ms) | Uncompressed Size (MB) | Compressed Size (MB) | Ratio | -| ----------- | ---------------- | ----------------- | ---------------------- | -------------------- | ----- | -| None | 10,927 | 7,553 | 395 | 395 | 1.0:1 | -| bzip2 | 25,404 | 13,886 | 395 | 67 | 5.9:1 | -| gzip | 116,281 | 3,077 | 395 | 91 | 4.3:1 | -| snappy | 8,134 | 8,341 | 395 | 166 | 2.4:1 | diff --git a/web/versioned_docs/version-0.5.0/concepts.md b/web/versioned_docs/version-0.5.0/concepts.md deleted file mode 100644 index 3832df3..0000000 --- a/web/versioned_docs/version-0.5.0/concepts.md +++ /dev/null @@ -1,177 +0,0 @@ ---- -sidebar_position: 10 ---- - -# Main Concepts - - - -:::important -Before proceeding, make sure to review the following sections of the -CloudNativePG documentation: - -- [**Backup**](https://cloudnative-pg.io/documentation/current/backup/) -- [**WAL Archiving**](https://cloudnative-pg.io/documentation/current/wal_archiving/) -- [**Recovery**](https://cloudnative-pg.io/documentation/current/recovery/) -::: - -The **Barman Cloud Plugin** enables **hot (online) backups** of PostgreSQL -clusters in CloudNativePG through [`barman-cloud`](https://pgbarman.org), -supporting continuous physical backups and WAL archiving to an **object -store**β€”without interrupting write operations. - -It also supports both **full recovery** and **Point-in-Time Recovery (PITR)** -of a PostgreSQL cluster. - -## The Object Store - -At the core is the [`ObjectStore` custom resource (CRD)](plugin-barman-cloud.v1.md#objectstorespec), -which acts as the interface between the PostgreSQL cluster and the target -object storage system. It allows you to configure: - -- **Authentication and bucket location** via the `.spec.configuration` section -- **WAL archiving** settingsβ€”such as compression type, parallelism, and - server-side encryptionβ€”under `.spec.configuration.wal` -- **Base backup options**β€”with similar settings for compression, concurrency, - and encryptionβ€”under `.spec.configuration.data` -- **Retention policies** to manage the life-cycle of archived WALs and backups - via `.spec.configuration.retentionPolicy` - -WAL files are archived in the `wals` directory, while base backups are stored -as **tarballs** in the `base` directory, following the -[Barman Cloud convention](https://docs.pgbarman.org/cloud/latest/usage/#object-store-layout). - -The plugin also offers advanced capabilities, including -[backup tagging](misc.md#backup-object-tagging) and -[extra options for backups and WAL archiving](misc.md#extra-options-for-backup-and-wal-archiving). - -:::tip -For details, refer to the -[API reference for the `ObjectStore` resource](plugin-barman-cloud.v1.md#objectstorespec). -::: - -## Integration with a CloudNativePG Cluster - -CloudNativePG can delegate continuous backup and recovery responsibilities to -the **Barman Cloud Plugin** by configuring the `.spec.plugins` section of a -`Cluster` resource. This setup requires a corresponding `ObjectStore` resource -to be defined. - -:::important -While it is technically possible to reuse the same `ObjectStore` for multiple -`Cluster` resources within the same namespace, it is strongly recommended to -dedicate one object store per PostgreSQL cluster to ensure data isolation and -operational clarity. -::: - -The following example demonstrates how to configure a CloudNativePG cluster -named `cluster-example` to use a previously defined `ObjectStore` (also named -`cluster-example`) in the same namespace. Setting `isWALArchiver: true` enables -WAL archiving through the plugin: - -```yaml -apiVersion: postgresql.cnpg.io/v1 -kind: Cluster -metadata: - name: cluster-example -spec: - # Other cluster settings... - plugins: - - name: barman-cloud.cloudnative-pg.io - isWALArchiver: true - parameters: - barmanObjectName: cluster-example -``` - -## Backup of a Postgres Cluster - -Once the object store is defined and the `Cluster` is configured to use the -Barman Cloud Plugin, **WAL archiving is activated immediately** on the -PostgreSQL primary. - -Physical base backups are seamlessly managed by CloudNativePG using the -`Backup` and `ScheduledBackup` resources, respectively for -[on-demand](https://cloudnative-pg.io/documentation/current/backup/#on-demand-backups) -and -[scheduled](https://cloudnative-pg.io/documentation/current/backup/#scheduled-backups) -backups. - -To use the Barman Cloud Plugin, you must set the `method` to `plugin` and -configure the `pluginConfiguration` section as shown: - -```yaml -[...] -spec: - method: plugin - pluginConfiguration: - name: barman-cloud.cloudnative-pg.io - [...] -``` - -With this configuration, CloudNativePG supports: - -- Backups from both **primary** and **standby** instances -- Backups from **designated primaries** in a distributed topology using - [replica clusters](https://cloudnative-pg.io/documentation/current/replica_cluster/) - -:::tip -For details on how to back up from a standby, refer to the official documentation: -[Backup from a standby](https://cloudnative-pg.io/documentation/current/backup/#backup-from-a-standby). -::: - -:::important -Both backup and WAL archiving operations are executed by sidecar containers -running in the same pod as the PostgreSQL `Cluster` primary instanceβ€”except -when backups are taken from a standby, in which case the sidecar runs alongside -the standby pod. -The sidecar containers use a [dedicated container image](images.md) that -includes only the supported version of Barman Cloud. -::: - -## Recovery of a Postgres Cluster - -In PostgreSQL, *recovery* refers to the process of starting a database instance -from an existing backup. The Barman Cloud Plugin integrates with CloudNativePG -to support both **full recovery** and **Point-in-Time Recovery (PITR)** from an -object store. - -Recovery in this context is *not in-place*: it bootstraps a brand-new -PostgreSQL cluster from a backup and replays the necessary WAL files to reach -the desired recovery target. - -To perform a recovery, define an *external cluster* that references the -appropriate `ObjectStore`, and use it as the source in the `bootstrap` section -of the target cluster: - -```yaml -[...] -spec: - [...] - bootstrap: - recovery: - source: source - externalClusters: - - name: source - plugin: - name: barman-cloud.cloudnative-pg.io - parameters: - barmanObjectName: cluster-example - serverName: cluster-example - [...] -``` - -The critical element here is the `externalClusters` section of the `Cluster` -resource, where the `plugin` stanza instructs CloudNativePG to use the Barman -Cloud Plugin to access the object store for recovery. - -This same mechanism can be used for a variety of scenarios enabled by the -CloudNativePG API, including: - -* **Full cluster recovery** from the latest backup -* **Point-in-Time Recovery (PITR)** -* Bootstrapping **replica clusters** in a distributed topology - -:::tip -For complete instructions and advanced use cases, refer to the official -[Recovery documentation](https://cloudnative-pg.io/documentation/current/recovery/). -::: diff --git a/web/versioned_docs/version-0.5.0/images.md b/web/versioned_docs/version-0.5.0/images.md deleted file mode 100644 index f6c32d3..0000000 --- a/web/versioned_docs/version-0.5.0/images.md +++ /dev/null @@ -1,37 +0,0 @@ ---- -sidebar_position: 99 ---- - -# Container Images - - - -The Barman Cloud Plugin is distributed using two container images: - -- One for deploying the plugin components -- One for the sidecar that runs alongside each PostgreSQL instance in a - CloudNativePG `Cluster` using the plugin - -## Plugin Container Image - -The plugin image contains the logic required to operate the Barman Cloud Plugin -within your Kubernetes environment with CloudNativePG. It is published on the -GitHub Container Registry at `ghcr.io/cloudnative-pg/plugin-barman-cloud`. - -This image is built from the -[`Dockerfile.plugin`](https://github.com/cloudnative-pg/plugin-barman-cloud/blob/main/containers/Dockerfile.plugin) -in the plugin repository. - -## Sidecar Container Image - -The sidecar image is used within each PostgreSQL pod in the cluster. It -includes the latest supported version of Barman Cloud and is responsible for -performing WAL archiving and backups on behalf of CloudNativePG. - -It is available at `ghcr.io/cloudnative-pg/plugin-barman-cloud-sidecar` and is -built from the -[`Dockerfile.sidecar`](https://github.com/cloudnative-pg/plugin-barman-cloud/blob/main/containers/Dockerfile.sidecar). - -These sidecar images are designed to work seamlessly with the -[`minimal` PostgreSQL container images](https://github.com/cloudnative-pg/postgres-containers?tab=readme-ov-file#minimal-images) -maintained by the CloudNativePG Community. diff --git a/web/versioned_docs/version-0.5.0/installation.mdx b/web/versioned_docs/version-0.5.0/installation.mdx deleted file mode 100644 index 85bd41b..0000000 --- a/web/versioned_docs/version-0.5.0/installation.mdx +++ /dev/null @@ -1,109 +0,0 @@ ---- -sidebar_position: 20 ---- - -# Installation - -:::important -1. The plugin **must** be installed in the same namespace as the CloudNativePG - operator (typically `cnpg-system`). - -2. Keep in mind that the operator's **listening namespaces** may differ from its - installation namespace. Double-check this to avoid configuration issues. -::: - -## Verifying the Requirements - -Before installing the plugin, make sure the [requirements](intro.md#requirements) are met. - -### CloudNativePG Version - -Ensure you're running a version of CloudNativePG that is compatible with the -plugin. If installed in the default `cnpg-system` namespace, you can verify the -version with: - -```sh -kubectl get deployment -n cnpg-system cnpg-controller-manager -o yaml \ - | grep ghcr.io/cloudnative-pg/cloudnative-pg -``` - -Example output: - -```output -image: ghcr.io/cloudnative-pg/cloudnative-pg:1.26.0 -``` - -The version **must be 1.26 or newer**. - -### cert-manager - -Use the [cmctl](https://cert-manager.io/docs/reference/cmctl/#installation) -tool to confirm that `cert-manager` is installed and available: - -```sh -cmctl check api -``` - -Example output: - -```output -The cert-manager API is ready -``` - -Both checks are required before proceeding with the installation. - -## Installing the Barman Cloud Plugin - -import { InstallationSnippet } from '@site/src/components/Installation'; - -Install the plugin using `kubectl` by applying the manifest for the latest -release: - - - -Example output: - -```output -customresourcedefinition.apiextensions.k8s.io/objectstores.barmancloud.cnpg.io created -serviceaccount/plugin-barman-cloud created -role.rbac.authorization.k8s.io/leader-election-role created -clusterrole.rbac.authorization.k8s.io/metrics-auth-role created -clusterrole.rbac.authorization.k8s.io/metrics-reader created -clusterrole.rbac.authorization.k8s.io/objectstore-editor-role created -clusterrole.rbac.authorization.k8s.io/objectstore-viewer-role created -clusterrole.rbac.authorization.k8s.io/plugin-barman-cloud created -rolebinding.rbac.authorization.k8s.io/leader-election-rolebinding created -clusterrolebinding.rbac.authorization.k8s.io/metrics-auth-rolebinding created -clusterrolebinding.rbac.authorization.k8s.io/plugin-barman-cloud-binding created -secret/plugin-barman-cloud-8tfddg42gf created -service/barman-cloud created -deployment.apps/barman-cloud configured -certificate.cert-manager.io/barman-cloud-client created -certificate.cert-manager.io/barman-cloud-server created -issuer.cert-manager.io/selfsigned-issuer created -``` - -Finally, check that the deployment is up and running: - -```sh -kubectl rollout status deployment \ - -n cnpg-system barman-cloud -``` - -Example output: - -```output -deployment "barman-cloud" successfully rolled out -``` - -This confirms that the plugin is deployed and ready to use. - -## Testing the latest development snapshot - -You can also test the latest development snapshot of the plugin with the -following command: - -```sh -kubectl apply -f \ - https://raw.githubusercontent.com/cloudnative-pg/plugin-barman-cloud/refs/heads/main/manifest.yaml -``` diff --git a/web/versioned_docs/version-0.5.0/intro.md b/web/versioned_docs/version-0.5.0/intro.md deleted file mode 100644 index f22f383..0000000 --- a/web/versioned_docs/version-0.5.0/intro.md +++ /dev/null @@ -1,67 +0,0 @@ ---- -sidebar_position: 1 -sidebar_label: "Introduction" ---- - -# Barman Cloud Plugin - - - -The **Barman Cloud Plugin** for [CloudNativePG](https://cloudnative-pg.io/) -enables online continuous physical backups of PostgreSQL clusters to object storage -using the `barman-cloud` suite from the [Barman](https://docs.pgbarman.org/release/latest/) -project. - -:::important -If you plan to migrate your existing CloudNativePG cluster to the new -plugin-based approach using the Barman Cloud Plugin, see -["Migrating from Built-in CloudNativePG Backup"](migration.md) -for detailed instructions. -::: - -## Requirements - -To use the Barman Cloud Plugin, you need: - -- [CloudNativePG](https://cloudnative-pg.io) version **1.26** -- [cert-manager](https://cert-manager.io/) to enable TLS communication between - the plugin and the operator - -## Key Features - -This plugin provides the following capabilities: - -- Physical online backup of the data directory -- Physical restore of the data directory -- Write-Ahead Log (WAL) archiving -- WAL restore -- Full cluster recovery -- Point-in-Time Recovery (PITR) -- Seamless integration with replica clusters for bootstrap and WAL restore from archive - -:::important -The Barman Cloud Plugin is designed to **replace the in-tree object storage support** -previously provided via the `.spec.backup.barmanObjectStore` section in the -`Cluster` resource. -Backups created using the in-tree approach are fully supported and compatible -with this plugin. -::: - -## Supported Object Storage Providers - -The plugin works with all storage backends supported by `barman-cloud`, including: - -- **Amazon S3** -- **Google Cloud Storage** -- **Microsoft Azure Blob Storage** - -In addition, the following S3-compatible and simulator solutions have been -tested and verified: - -- [MinIO](https://min.io/) – An S3-compatible storage solution -- [Azurite](https://github.com/Azure/Azurite) – A simulator for Azure Blob Storage -- [fake-gcs-server](https://github.com/fsouza/fake-gcs-server) – A simulator for Google Cloud Storage - -:::tip -For more details, refer to [Object Store Providers](object_stores.md). -::: diff --git a/web/versioned_docs/version-0.5.0/migration.md b/web/versioned_docs/version-0.5.0/migration.md deleted file mode 100644 index 43c4b80..0000000 --- a/web/versioned_docs/version-0.5.0/migration.md +++ /dev/null @@ -1,259 +0,0 @@ ---- -sidebar_position: 40 ---- - -# Migrating from Built-in CloudNativePG Backup - - - -The in-tree support for Barman Cloud in CloudNativePG is **deprecated starting -from version 1.26** and will be removed in a future release. - -If you're currently relying on the built-in Barman Cloud integration, you can -migrate seamlessly to the new **plugin-based architecture** using the Barman -Cloud Plugin, without data loss. Follow these steps: - -- [Install the Barman Cloud Plugin](installation.mdx) -- Create an `ObjectStore` resource by translating the contents of the - `.spec.backup.barmanObjectStore` section from your existing `Cluster` - definition -- Modify the `Cluster` resource in a single atomic change to switch from - in-tree backup to the plugin -- Update any `ScheduledBackup` resources to use the plugin -- Update the `externalClusters` configuration, where applicable - -:::tip -For a working example, refer to [this commit](https://github.com/cloudnative-pg/cnpg-playground/commit/596f30e252896edf8f734991c3538df87630f6f7) -from the [CloudNativePG Playground project](https://github.com/cloudnative-pg/cnpg-playground), -which demonstrates a full migration. -::: - ---- - -## Step 1: Define the `ObjectStore` - -Begin by creating an `ObjectStore` resource in the same namespace as your -PostgreSQL `Cluster`. - -There is a **direct mapping** between the `.spec.backup.barmanObjectStore` -section in CloudNativePG and the `.spec.configuration` field in the -`ObjectStore` CR. The conversion is mostly mechanical, with one key difference: - -:::warning -In the plugin architecture, retention policies are defined as part of the `ObjectStore`. -In contrast, the in-tree implementation defined them at the `Cluster` level. -::: - -If your `Cluster` used `.spec.backup.retentionPolicy`, move that configuration -to `.spec.retentionPolicy` in the `ObjectStore`. - ---- - -### Example - -Here’s an excerpt from a traditional in-tree CloudNativePG backup configuration -taken from the CloudNativePG Playground project: - -```yaml -apiVersion: postgresql.cnpg.io/v1 -kind: Cluster -metadata: - name: pg-eu -spec: - # [...] - backup: - barmanObjectStore: - destinationPath: s3://backups/ - endpointURL: http://minio-eu:9000 - s3Credentials: - accessKeyId: - name: minio-eu - key: ACCESS_KEY_ID - secretAccessKey: - name: minio-eu - key: ACCESS_SECRET_KEY - wal: - compression: gzip -``` - -This configuration translates to the following `ObjectStore` resource for the -plugin: - -```yaml -apiVersion: barmancloud.cnpg.io/v1 -kind: ObjectStore -metadata: - name: minio-eu -spec: - configuration: - destinationPath: s3://backups/ - endpointURL: http://minio-eu:9000 - s3Credentials: - accessKeyId: - name: minio-eu - key: ACCESS_KEY_ID - secretAccessKey: - name: minio-eu - key: ACCESS_SECRET_KEY - wal: - compression: gzip -``` - -As you can see, the contents of `barmanObjectStore` have been copied directly -under the `configuration` field of the `ObjectStore` resource, using the same -secret references. - -## Step 2: Update the `Cluster` for plugin WAL archiving - -Once the `ObjectStore` resource is in place, update the `Cluster` resource as -follows in a single atomic change: - -- Remove the `.spec.backup.barmanObjectStore` section -- Remove `.spec.backup.retentionPolicy` if it was defined (as it is now in the - `ObjectStore`) -- Remove the entire `spec.backup` section if it is now empty -- Add `barman-cloud.cloudnative-pg.io` to the `plugins` list, as described in - [Configuring WAL archiving](usage.md#configuring-wal-archiving) - -This will trigger a rolling update of the `Cluster`, switching continuous -backup from the in-tree implementation to the plugin-based approach. - -### Example - -The updated `pg-eu` cluster will have this configuration instead of the -previous `backup` section: - -```yaml - plugins: - - name: barman-cloud.cloudnative-pg.io - isWALArchiver: true - parameters: - barmanObjectName: minio-eu -``` - ---- - -## Step 3: Update the `ScheduledBackup` - -After switching the `Cluster` to use the plugin, update your `ScheduledBackup` -resources to match. - -Set the backup `method` to `plugin` and reference the plugin name via -`pluginConfiguration`, as shown in ["Performing a base backup"](usage.md#performing-a-base-backup). - -### Example - -Original in-tree `ScheduledBackup`: - -```yaml -apiVersion: postgresql.cnpg.io/v1 -kind: ScheduledBackup -metadata: - name: pg-eu-backup -spec: - cluster: - name: pg-eu - schedule: '0 0 0 * * *' - backupOwnerReference: self -``` - -Updated version using the plugin: - -```yaml -apiVersion: postgresql.cnpg.io/v1 -kind: ScheduledBackup -metadata: - name: pg-eu-backup -spec: - cluster: - name: pg-eu - schedule: '0 0 0 * * *' - backupOwnerReference: self - method: plugin - pluginConfiguration: - name: barman-cloud.cloudnative-pg.io -``` - ---- - -## Step 4: Update the `externalClusters` configuration - -If your `Cluster` relies on one or more external clusters that use the in-tree -Barman Cloud integration, you need to update those configurations to use the -plugin-based architecture. - -When a replica cluster fetches WAL files or base backups from an external -source that used the built-in backup method, follow these steps: - -1. Create a corresponding `ObjectStore` resource for the external cluster, as - shown in [Step 1](#step-1-define-the-objectstore) -2. Update the `externalClusters` section of your replica cluster to use the - plugin instead of the in-tree `barmanObjectStore` field - -### Example - -Consider the original configuration using in-tree Barman Cloud: - -```yaml -apiVersion: postgresql.cnpg.io/v1 -kind: Cluster -metadata: - name: pg-us -spec: - # [...] - externalClusters: - - name: pg-eu - barmanObjectStore: - destinationPath: s3://backups/ - endpointURL: http://minio-eu:9000 - serverName: pg-eu - s3Credentials: - accessKeyId: - name: minio-eu - key: ACCESS_KEY_ID - secretAccessKey: - name: minio-eu - key: ACCESS_SECRET_KEY - wal: - compression: gzip -``` - -Create the `ObjectStore` resource for the external cluster: - -```yaml -apiVersion: barmancloud.cnpg.io/v1 -kind: ObjectStore -metadata: - name: minio-eu -spec: - configuration: - destinationPath: s3://backups/ - endpointURL: http://minio-eu:9000 - s3Credentials: - accessKeyId: - name: minio-eu - key: ACCESS_KEY_ID - secretAccessKey: - name: minio-eu - key: ACCESS_SECRET_KEY - wal: - compression: gzip -``` - -Update the external cluster configuration to use the plugin: - -```yaml -apiVersion: postgresql.cnpg.io/v1 -kind: Cluster -metadata: - name: pg-us -spec: - # [...] - externalClusters: - - name: pg-eu - plugin: - name: barman-cloud.cloudnative-pg.io - parameters: - barmanObjectName: minio-eu - serverName: pg-eu -``` diff --git a/web/versioned_docs/version-0.5.0/misc.md b/web/versioned_docs/version-0.5.0/misc.md deleted file mode 100644 index 4d3cefc..0000000 --- a/web/versioned_docs/version-0.5.0/misc.md +++ /dev/null @@ -1,76 +0,0 @@ ---- -sidebar_position: 90 ---- - -# Miscellaneous - - - -## Backup Object Tagging - -You can attach key-value metadata tags to backup artifactsβ€”such as base -backups, WAL files, and history filesβ€”via the `.spec.configuration` section of -the `ObjectStore` resource. - -- `tags`: applied to base backups and WAL files -- `historyTags`: applied to history files only - -### Example - -```yaml -apiVersion: barmancloud.cnpg.io/v1 -kind: ObjectStore -metadata: - name: my-store -spec: - configuration: - [...] - tags: - backupRetentionPolicy: "expire" - historyTags: - backupRetentionPolicy: "keep" - [...] -``` - -## Extra Options for Backup and WAL Archiving - -You can pass additional command-line arguments to `barman-cloud-backup` and -`barman-cloud-wal-archive` using the `additionalCommandArgs` field in the -`ObjectStore` configuration. - -- `.spec.configuration.data.additionalCommandArgs`: for `barman-cloud-backup` -- `.spec.configuration.wal.additionalCommandArgs`: for `barman-cloud-wal-archive` - -Each field accepts a list of string arguments. If an argument is already -configured elsewhere in the plugin, the duplicate will be ignored. - -### Example: Extra Backup Options - -```yaml -kind: ObjectStore -metadata: - name: my-store -spec: - configuration: - data: - additionalCommandArgs: - - "--min-chunk-size=5MB" - - "--read-timeout=60" -``` - -### Example: Extra WAL Archive Options - -```yaml -kind: ObjectStore -metadata: - name: my-store -spec: - configuration: - wal: - additionalCommandArgs: - - "--max-concurrency=1" - - "--read-timeout=60" -``` - -For a complete list of supported options, refer to the -[official Barman Cloud documentation](https://docs.pgbarman.org/release/latest/). diff --git a/web/versioned_docs/version-0.5.0/object_stores.md b/web/versioned_docs/version-0.5.0/object_stores.md deleted file mode 100644 index 29e7b35..0000000 --- a/web/versioned_docs/version-0.5.0/object_stores.md +++ /dev/null @@ -1,465 +0,0 @@ ---- -sidebar_position: 50 ---- - -# Object Store Providers - - - -The Barman Cloud Plugin enables the storage of PostgreSQL cluster backup files -in any object storage service supported by the -[Barman Cloud infrastructure](https://docs.pgbarman.org/release/latest/). - -Currently, Barman Cloud supports the following providers: - -- [Amazon S3](#aws-s3) -- [Microsoft Azure Blob Storage](#azure-blob-storage) -- [Google Cloud Storage](#google-cloud-storage) - -You may also use any S3- or Azure-compatible implementation of the above -services. - -To configure object storage with Barman Cloud, you must define an -[`ObjectStore` object](plugin-barman-cloud.v1.md#objectstore), which -establishes the connection between your PostgreSQL cluster and the object -storage backend. - -Configuration details β€” particularly around authentication β€” will vary depending on -the specific object storage provider you are using. - -The following sections detail the setup for each. - ---- - -## AWS S3 - -[AWS Simple Storage Service (S3)](https://aws.amazon.com/s3/) is one of the -most widely adopted object storage solutions. - -The Barman Cloud plugin for CloudNativePG integrates with S3 through two -primary authentication mechanisms: - -- [IAM Roles for Service Accounts (IRSA)](https://docs.aws.amazon.com/eks/latest/userguide/iam-roles-for-service-accounts.html) β€” - recommended for clusters running on EKS -- Access keys β€” using `ACCESS_KEY_ID` and `ACCESS_SECRET_KEY` credentials - -### Access Keys - -To authenticate using access keys, you’ll need: - -- `ACCESS_KEY_ID`: the public key used to authenticate to S3 -- `ACCESS_SECRET_KEY`: the corresponding secret key -- `ACCESS_SESSION_TOKEN`: (optional) a temporary session token, if required - -These credentials must be stored securely in a Kubernetes secret: - -```sh -kubectl create secret generic aws-creds \ - --from-literal=ACCESS_KEY_ID= \ - --from-literal=ACCESS_SECRET_KEY= -# --from-literal=ACCESS_SESSION_TOKEN= # if required -``` - -The credentials will be encrypted at rest if your Kubernetes environment -supports it. - -You can then reference the secret in your `ObjectStore` definition: - -```yaml -apiVersion: barmancloud.cnpg.io/v1 -kind: ObjectStore -metadata: - name: aws-store -spec: - configuration: - destinationPath: "s3://BUCKET_NAME/path/to/folder" - s3Credentials: - accessKeyId: - name: aws-creds - key: ACCESS_KEY_ID - secretAccessKey: - name: aws-creds - key: ACCESS_SECRET_KEY - [...] -``` - -### IAM Role for Service Account (IRSA) - -To use IRSA with EKS, configure the service account of the PostgreSQL cluster -with the appropriate annotation: - -```yaml -apiVersion: postgresql.cnpg.io/v1 -kind: Cluster -metadata: - [...] -spec: - serviceAccountTemplate: - metadata: - annotations: - eks.amazonaws.com/role-arn: arn:[...] - [...] -``` - -### S3 Lifecycle Policy - -Barman Cloud uploads backup files to S3 but does not modify them afterward. -To enhance data durability and protect against accidental or malicious loss, -it's recommended to implement the following best practices: - -- Enable object versioning -- Enable object locking to prevent objects from being deleted or overwritten - for a defined period or indefinitely (this provides an additional layer of - protection against accidental deletion and ransomware attacks) -- Set lifecycle rules to expire current versions a few days after your Barman - retention window -- Expire non-current versions after a longer period - -These strategies help you safeguard backups without requiring broad delete -permissions, ensuring both security and compliance with minimal operational -overhead. - - -### S3-Compatible Storage Providers - -You can use S3-compatible services like **MinIO**, **Linode (Akamai) Object Storage**, -or **DigitalOcean Spaces** by specifying a custom `endpointURL`. - -Example with Linode (Akamai) Object Storage (`us-east1`): - -```yaml -apiVersion: barmancloud.cnpg.io/v1 -kind: ObjectStore -metadata: - name: linode-store -spec: - configuration: - destinationPath: "s3://BUCKET_NAME/" - endpointURL: "https://us-east1.linodeobjects.com" - s3Credentials: - [...] - [...] -``` - -Example with DigitalOcean Spaces (SFO3, path-style): - -```yaml -apiVersion: barmancloud.cnpg.io/v1 -kind: ObjectStore -metadata: - name: digitalocean-store -spec: - configuration: - destinationPath: "s3://BUCKET_NAME/path/to/folder" - endpointURL: "https://sfo3.digitaloceanspaces.com" - s3Credentials: - [...] - [...] -``` - -### Using Object Storage with a Private CA - -For object storage services (e.g., MinIO) that use HTTPS with certificates -signed by a private CA, set the `endpointCA` field in the `ObjectStore` -definition. Unless you already have it, create a Kubernetes `Secret` with the -CA bundle: - -```sh -kubectl create secret generic my-ca-secret --from-file=ca.crt -``` - -Then reference it: - -```yaml -apiVersion: barmancloud.cnpg.io/v1 -kind: ObjectStore -metadata: - name: minio-store -spec: - configuration: - endpointURL: - endpointCA: - name: my-ca-secret - key: ca.crt - [...] -``` - - -:::note -If you want `ConfigMaps` and `Secrets` to be **automatically** reloaded by -instances, you can add a label with the key `cnpg.io/reload` to the -`Secrets`/`ConfigMaps`. Otherwise, you will have to reload the instances using the -`kubectl cnpg reload` subcommand. -::: - ---- - -## Azure Blob Storage - -[Azure Blob Storage](https://azure.microsoft.com/en-us/services/storage/blobs/) -is Microsoft’s cloud-based object storage solution. - -Barman Cloud supports the following authentication methods: - -- [Connection String](https://learn.microsoft.com/en-us/azure/storage/common/storage-configure-connection-string) -- Storage Account Name + [Access Key](https://learn.microsoft.com/en-us/azure/storage/common/storage-account-keys-manage) -- Storage Account Name + [SAS Token](https://learn.microsoft.com/en-us/azure/storage/blobs/sas-service-create) -- [Azure AD Workload Identity](https://azure.github.io/azure-workload-identity/docs/introduction.html) - -### Azure AD Workload Identity - -This method avoids storing credentials in Kubernetes via the -`.spec.configuration.inheritFromAzureAD` option: - -```yaml -apiVersion: barmancloud.cnpg.io/v1 -kind: ObjectStore -metadata: - name: azure-store -spec: - configuration: - destinationPath: "" - azureCredentials: - inheritFromAzureAD: true - [...] -``` - -### Access Key, SAS Token, or Connection String - -Store credentials in a Kubernetes secret: - -```sh -kubectl create secret generic azure-creds \ - --from-literal=AZURE_STORAGE_ACCOUNT= \ - --from-literal=AZURE_STORAGE_KEY= \ - --from-literal=AZURE_STORAGE_SAS_TOKEN= \ - --from-literal=AZURE_STORAGE_CONNECTION_STRING= -``` - -Then reference the required keys in your `ObjectStore`: - -```yaml -apiVersion: barmancloud.cnpg.io/v1 -kind: ObjectStore -metadata: - name: azure-store -spec: - configuration: - destinationPath: "" - azureCredentials: - connectionString: - name: azure-creds - key: AZURE_CONNECTION_STRING - storageAccount: - name: azure-creds - key: AZURE_STORAGE_ACCOUNT - storageKey: - name: azure-creds - key: AZURE_STORAGE_KEY - storageSasToken: - name: azure-creds - key: AZURE_STORAGE_SAS_TOKEN - [...] -``` - -For Azure Blob, the destination path format is: - -``` -://..core.windows.net// -``` - -### Azure-Compatible Providers - -If you're using a different implementation (e.g., Azurite or emulator): - -``` -://:/// -``` - ---- - -## Google Cloud Storage - -[Google Cloud Storage](https://cloud.google.com/storage/) is supported with two -authentication modes: - -- **GKE Workload Identity** (recommended inside Google Kubernetes Engine) -- **Service Account JSON key** via the `GOOGLE_APPLICATION_CREDENTIALS` environment variable - -### GKE Workload Identity - -Use the [Workload Identity authentication](https://cloud.google.com/kubernetes-engine/docs/how-to/workload-identity) -when running in GKE: - -1. Set `googleCredentials.gkeEnvironment` to `true` in the `ObjectStore` - resource -2. Annotate the `serviceAccountTemplate` in the `Cluster` resource with the GCP - service account - -For example, in the `ObjectStore` resource: - -```yaml -apiVersion: barmancloud.cnpg.io/v1 -kind: ObjectStore -metadata: - name: google-store -spec: - configuration: - destinationPath: "gs:///" - googleCredentials: - gkeEnvironment: true -``` - -And in the `Cluster` resource: - -```yaml -apiVersion: postgresql.cnpg.io/v1 -kind: Cluster -spec: - serviceAccountTemplate: - metadata: - annotations: - iam.gke.io/gcp-service-account: [...].iam.gserviceaccount.com -``` - -### Service Account JSON Key - -Follow Google’s [authentication setup](https://cloud.google.com/docs/authentication/getting-started), -then: - -```sh -kubectl create secret generic backup-creds --from-file=gcsCredentials=gcs_credentials_file.json -``` - -```yaml -apiVersion: barmancloud.cnpg.io/v1 -kind: ObjectStore -metadata: - name: google-store -spec: - configuration: - destinationPath: "gs:///" - googleCredentials: - applicationCredentials: - name: backup-creds - key: gcsCredentials - [...] -``` - -:::important -This authentication method generates a JSON file within the container -with all the credentials required to access your Google Cloud Storage -bucket. As a result, if someone gains access to the `Pod`, they will also have -write permissions to the bucket. -::: - ---- - - -## MinIO Gateway - -MinIO Gateway can proxy requests to cloud object storage providers like S3 or GCS. -For more information, refer to [MinIO official documentation](https://docs.min.io/). - -### Setup - -Create MinIO access credentials: - -```sh -kubectl create secret generic minio-creds \ - --from-literal=MINIO_ACCESS_KEY= \ - --from-literal=MINIO_SECRET_KEY= -``` - -:::note -Cloud Object Storage credentials will be used only by MinIO Gateway in this -case. -::: - -Expose MinIO Gateway via `ClusterIP`: - -```yaml -apiVersion: v1 -kind: Service -metadata: - name: minio-gateway-service -spec: - type: ClusterIP - ports: - - port: 9000 - targetPort: 9000 - protocol: TCP - selector: - app: minio -``` - -Here follows an excerpt of an example of deployment relaying to S3: - -```yaml -apiVersion: apps/v1 -kind: Deployment -[...] -spec: - containers: - - name: minio - image: minio/minio:RELEASE.2020-06-03T22-13-49Z - args: ["gateway", "s3"] - ports: - - containerPort: 9000 - env: - - name: MINIO_ACCESS_KEY - valueFrom: - secretKeyRef: - name: minio-creds - key: MINIO_ACCESS_KEY - - name: MINIO_SECRET_KEY - valueFrom: - secretKeyRef: - name: minio-creds - key: MINIO_SECRET_KEY - - name: AWS_ACCESS_KEY_ID - valueFrom: - secretKeyRef: - name: aws-creds - key: ACCESS_KEY_ID - - name: AWS_SECRET_ACCESS_KEY - valueFrom: - secretKeyRef: - name: aws-creds - key: ACCESS_SECRET_KEY -# Uncomment the below section if session token is required -# - name: AWS_SESSION_TOKEN -# valueFrom: -# secretKeyRef: -# name: aws-creds -# key: ACCESS_SESSION_TOKEN -``` - -Proceed by configuring MinIO Gateway service as the `endpointURL` in the -`ObjectStore` definition, then choose a bucket name to replace `BUCKET_NAME`: - -```yaml -apiVersion: barmancloud.cnpg.io/v1 -kind: ObjectStore -metadata: - name: minio-store -spec: - configuration: - destinationPath: s3://BUCKET_NAME/ - endpointURL: http://minio-gateway-service:9000 - s3Credentials: - accessKeyId: - name: minio-creds - key: MINIO_ACCESS_KEY - secretAccessKey: - name: minio-creds - key: MINIO_SECRET_KEY - [...] -``` - -:::important -Verify on `s3://BUCKET_NAME/` the presence of archived WAL files before -proceeding with a backup. -::: - ---- diff --git a/web/versioned_docs/version-0.5.0/parameters.md b/web/versioned_docs/version-0.5.0/parameters.md deleted file mode 100644 index ca0cd2b..0000000 --- a/web/versioned_docs/version-0.5.0/parameters.md +++ /dev/null @@ -1,19 +0,0 @@ ---- -sidebar_position: 100 ---- - -# Parameters - - - -The following parameters are available for the Barman Cloud Plugin: - -- `barmanObjectName`: references the `ObjectStore` resource to be used by the - plugin. -- `serverName`: Specifies the server name in the object store. - -:::important -The `serverName` parameter in the `ObjectStore` resource is retained solely for -API compatibility with the in-tree `barmanObjectStore` and must always be left empty. -When needed, use the `serverName` plugin parameter in the Cluster configuration instead. -::: diff --git a/web/versioned_docs/version-0.5.0/plugin-barman-cloud.v1.md b/web/versioned_docs/version-0.5.0/plugin-barman-cloud.v1.md deleted file mode 100644 index 552dc27..0000000 --- a/web/versioned_docs/version-0.5.0/plugin-barman-cloud.v1.md +++ /dev/null @@ -1,105 +0,0 @@ -# API Reference - -## Packages -- [barmancloud.cnpg.io/v1](#barmancloudcnpgiov1) - - -## barmancloud.cnpg.io/v1 - -Package v1 contains API Schema definitions for the barmancloud v1 API group - -### Resource Types -- [ObjectStore](#objectstore) - - - -#### InstanceSidecarConfiguration - - - -InstanceSidecarConfiguration defines the configuration for the sidecar that runs in the instance pods. - - - -_Appears in:_ -- [ObjectStoreSpec](#objectstorespec) - -| Field | Description | Required | Default | Validation | -| --- | --- | --- | --- | --- | -| `env` _[EnvVar](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#envvar-v1-core) array_ | The environment to be explicitly passed to the sidecar | | | | -| `retentionPolicyIntervalSeconds` _integer_ | The retentionCheckInterval defines the frequency at which the
system checks and enforces retention policies. | | 1800 | | -| `resources` _[ResourceRequirements](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcerequirements-v1-core)_ | Resources define cpu/memory requests and limits for the sidecar that runs in the instance pods. | | | | - - -#### ObjectStore - - - -ObjectStore is the Schema for the objectstores API. - - - - - -| Field | Description | Required | Default | Validation | -| --- | --- | --- | --- | --- | -| `apiVersion` _string_ | `barmancloud.cnpg.io/v1` | True | | | -| `kind` _string_ | `ObjectStore` | True | | | -| `metadata` _[ObjectMeta](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#objectmeta-v1-meta)_ | Refer to Kubernetes API documentation for fields of `metadata`. | True | | | -| `spec` _[ObjectStoreSpec](#objectstorespec)_ | Specification of the desired behavior of the ObjectStore.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status | True | | | -| `status` _[ObjectStoreStatus](#objectstorestatus)_ | Most recently observed status of the ObjectStore. This data may not be up to
date. Populated by the system. Read-only.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status | | | | - - -#### ObjectStoreSpec - - - -ObjectStoreSpec defines the desired state of ObjectStore. - - - -_Appears in:_ -- [ObjectStore](#objectstore) - -| Field | Description | Required | Default | Validation | -| --- | --- | --- | --- | --- | -| `configuration` _[BarmanObjectStoreConfiguration](https://pkg.go.dev/github.com/cloudnative-pg/barman-cloud/pkg/api#BarmanObjectStoreConfiguration)_ | The configuration for the barman-cloud tool suite | True | | | -| `retentionPolicy` _string_ | RetentionPolicy is the retention policy to be used for backups
and WALs (i.e. '60d'). The retention policy is expressed in the form
of `XXu` where `XX` is a positive integer and `u` is in `[dwm]` -
days, weeks, months. | | | Pattern: `^[1-9][0-9]*[dwm]$`
| -| `instanceSidecarConfiguration` _[InstanceSidecarConfiguration](#instancesidecarconfiguration)_ | The configuration for the sidecar that runs in the instance pods | | | | - - -#### ObjectStoreStatus - - - -ObjectStoreStatus defines the observed state of ObjectStore. - - - -_Appears in:_ -- [ObjectStore](#objectstore) - -| Field | Description | Required | Default | Validation | -| --- | --- | --- | --- | --- | -| `serverRecoveryWindow` _object (keys:string, values:[RecoveryWindow](#recoverywindow))_ | ServerRecoveryWindow maps each server to its recovery window | True | | | - - -#### RecoveryWindow - - - -RecoveryWindow represents the time span between the first -recoverability point and the last successful backup of a PostgreSQL -server, defining the period during which data can be restored. - - - -_Appears in:_ -- [ObjectStoreStatus](#objectstorestatus) - -| Field | Description | Required | Default | Validation | -| --- | --- | --- | --- | --- | -| `firstRecoverabilityPoint` _[Time](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#time-v1-meta)_ | The first recoverability point in a PostgreSQL server refers to
the earliest point in time to which the database can be
restored. | True | | | -| `lastSuccussfulBackupTime` _[Time](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#time-v1-meta)_ | The last successful backup time | True | | | - - diff --git a/web/versioned_docs/version-0.5.0/retention.md b/web/versioned_docs/version-0.5.0/retention.md deleted file mode 100644 index fefbd08..0000000 --- a/web/versioned_docs/version-0.5.0/retention.md +++ /dev/null @@ -1,38 +0,0 @@ ---- -sidebar_position: 60 ---- - -# Retention Policies - - - -The Barman Cloud Plugin supports **automated cleanup of obsolete backups** via -retention policies, configured in the `.spec.retentionPolicy` field of the -`ObjectStore` resource. - -:::note -This feature uses the `barman-cloud-backup-delete` command with the -`--retention-policy "RECOVERY WINDOW OF {{ value }} {{ unit }}"` syntax. -::: - -#### Example: 30-Day Retention Policy - -```yaml -apiVersion: barmancloud.cnpg.io/v1 -kind: ObjectStore -metadata: - name: my-store -spec: - [...] - retentionPolicy: "30d" -```` - -:::note -A **recovery window retention policy** ensures the cluster can be restored to -any point in time between the calculated *Point of Recoverability* (PoR) and -the latest WAL archive. The PoR is defined as `current time - recovery window`. -The **first valid backup** is the most recent backup completed before the PoR. -Backups older than that are marked as *obsolete* and deleted after the next -backup completes. -::: - diff --git a/web/versioned_docs/version-0.5.0/usage.md b/web/versioned_docs/version-0.5.0/usage.md deleted file mode 100644 index 5a82229..0000000 --- a/web/versioned_docs/version-0.5.0/usage.md +++ /dev/null @@ -1,258 +0,0 @@ ---- -sidebar_position: 30 ---- - -# Using the Barman Cloud Plugin - - - -After [installing the plugin](installation.mdx) in the same namespace as the -CloudNativePG operator, enabling your PostgreSQL cluster to use the Barman -Cloud Plugin involves just a few steps: - -- Defining the object store containing your WAL archive and base backups, using - your preferred [provider](object_stores.md) -- Instructing the Postgres cluster to use the Barman Cloud Plugin - -From that moment, you’ll be able to issue on-demand backups or define a backup -schedule, as well as rely on the object store for recovery operations. - -The rest of this page details each step, using MinIO as object store provider. - -## Defining the `ObjectStore` - -An `ObjectStore` resource must be created for each object store used in your -PostgreSQL architecture. Here's an example configuration using MinIO: - -```yaml -apiVersion: barmancloud.cnpg.io/v1 -kind: ObjectStore -metadata: - name: minio-store -spec: - configuration: - destinationPath: s3://backups/ - endpointURL: http://minio:9000 - s3Credentials: - accessKeyId: - name: minio - key: ACCESS_KEY_ID - secretAccessKey: - name: minio - key: ACCESS_SECRET_KEY - wal: - compression: gzip -``` - -The `.spec.configuration` schema follows the same format as the -[in-tree barman-cloud support](https://pkg.go.dev/github.com/cloudnative-pg/barman-cloud/pkg/api#BarmanObjectStoreConfiguration). -Refer to [the CloudNativePG documentation](https://cloudnative-pg.io/documentation/current/appendixes/backup_barmanobjectstore/) -for additional details. - -:::important -The `serverName` parameter in the `ObjectStore` resource is retained solely for -API compatibility with the in-tree `barmanObjectStore` and must always be left empty. -When needed, use the `serverName` plugin parameter in the Cluster configuration instead. -::: - -## Configuring WAL Archiving - -Once the `ObjectStore` is defined, you can configure your PostgreSQL cluster -to archive WALs by referencing the store in the `.spec.plugins` section: - -```yaml -apiVersion: postgresql.cnpg.io/v1 -kind: Cluster -metadata: - name: cluster-example -spec: - instances: 3 - imagePullPolicy: Always - plugins: - - name: barman-cloud.cloudnative-pg.io - isWALArchiver: true - parameters: - barmanObjectName: minio-store - storage: - size: 1Gi -``` - -This configuration enables both WAL archiving and data directory backups. - -## Performing a Base Backup - -Once WAL archiving is enabled, the cluster is ready for backups. To issue an -on-demand backup, use the following configuration with the plugin method: - -```yaml -apiVersion: postgresql.cnpg.io/v1 -kind: Backup -metadata: - name: backup-example -spec: - cluster: - name: cluster-example - method: plugin - pluginConfiguration: - name: barman-cloud.cloudnative-pg.io -``` - -:::note -You can apply the same concept to the `ScheduledBackup` resource. -::: - -## Restoring a Cluster - -To restore a cluster from an object store, create a new `Cluster` resource that -references the store containing the backup. Below is an example configuration: - -```yaml -apiVersion: postgresql.cnpg.io/v1 -kind: Cluster -metadata: - name: cluster-restore -spec: - instances: 3 - imagePullPolicy: IfNotPresent - bootstrap: - recovery: - source: source - externalClusters: - - name: source - plugin: - name: barman-cloud.cloudnative-pg.io - parameters: - barmanObjectName: minio-store - serverName: cluster-example - storage: - size: 1Gi -``` - -:::important -The above configuration does **not** enable WAL archiving for the restored cluster. -::: - -To enable WAL archiving for the restored cluster, include the `.spec.plugins` -section alongside the `externalClusters.plugin` section, as shown below: - -```yaml -apiVersion: postgresql.cnpg.io/v1 -kind: Cluster -metadata: - name: cluster-restore -spec: - instances: 3 - imagePullPolicy: IfNotPresent - bootstrap: - recovery: - source: source - plugins: - - name: barman-cloud.cloudnative-pg.io - isWALArchiver: true - parameters: - # Backup Object Store (push, read-write) - barmanObjectName: minio-store-bis - externalClusters: - - name: source - plugin: - name: barman-cloud.cloudnative-pg.io - parameters: - # Recovery Object Store (pull, read-only) - barmanObjectName: minio-store - serverName: cluster-example - storage: - size: 1Gi -``` - -The same object store may be used for both transaction log archiving and -restoring a cluster, or you can configure separate stores for these purposes. - -## Configuring Replica Clusters - -You can set up a distributed topology by combining the previously defined -configurations with the `.spec.replica` section. Below is an example of how to -define a replica cluster: - -```yaml -apiVersion: postgresql.cnpg.io/v1 -kind: Cluster -metadata: - name: cluster-dc-a -spec: - instances: 3 - primaryUpdateStrategy: unsupervised - - storage: - storageClass: csi-hostpath-sc - size: 1Gi - - plugins: - - name: barman-cloud.cloudnative-pg.io - isWALArchiver: true - parameters: - barmanObjectName: minio-store-a - - replica: - self: cluster-dc-a - primary: cluster-dc-a - source: cluster-dc-b - - externalClusters: - - name: cluster-dc-a - plugin: - name: barman-cloud.cloudnative-pg.io - parameters: - barmanObjectName: minio-store-a - - - name: cluster-dc-b - plugin: - name: barman-cloud.cloudnative-pg.io - parameters: - barmanObjectName: minio-store-b -``` - -## Configuring the plugin instance sidecar - -The Barman Cloud Plugin runs as a sidecar container next to each PostgreSQL -instance pod. It manages backup, WAL archiving, and restore processes. - -Configuration comes from multiple `ObjectStore` resources: - -1. The one referenced in the - `.spec.plugins` section of the `Cluster`. This is the - object store used for WAL archiving and base backups. -2. The one referenced in the external cluster - used in the `.spec.replica.source` section of the `Cluster`. This is - used by the log-shipping designated primary to get the WAL files. -3. The one referenced in the - `.spec.bootstrap.recovery.source` section of the `Cluster`. Used by - the initial recovery job to create the cluster from an existing backup. - -You can fine-tune sidecar behavior in the `.spec.instanceSidecarConfiguration` -of your ObjectStore. These settings apply to all PostgreSQL instances that use -this object store. Any updates take effect at the next `Cluster` reconciliation, -and could generate a rollout of the `Cluster`. - -```yaml -apiVersion: barmancloud.cnpg.io/v1 -kind: ObjectStore -metadata: - name: minio-store -spec: - configuration: - # [...] - instanceSidecarConfiguration: - retentionPolicyIntervalSeconds: 1800 - resources: - requests: - memory: "XXX" - cpu: "YYY" - limits: - memory: "XXX" - cpu: "YYY" -``` - -:::note -If more than one `ObjectStore` applies, the `instanceSidecarConfiguration` of -the one set in `.spec.plugins` has priority. -::: diff --git a/web/versioned_docs/version-0.6.0/compression.md b/web/versioned_docs/version-0.6.0/compression.md deleted file mode 100644 index 2abbede..0000000 --- a/web/versioned_docs/version-0.6.0/compression.md +++ /dev/null @@ -1,43 +0,0 @@ ---- -sidebar_position: 80 ---- - -# Compression - - - -By default, backups and WAL files are archived **uncompressed**. However, the -Barman Cloud Plugin supports multiple compression algorithms via -`barman-cloud-backup` and `barman-cloud-wal-archive`, allowing you to optimize -for space, speed, or a balance of both. - -### Supported Compression Algorithms - -- `bzip2` -- `gzip` -- `lz4` (WAL only) -- `snappy` -- `xz` (WAL only) -- `zstd` (WAL only) - -Compression settings for base backups and WAL archives are configured -independently. For implementation details, refer to the corresponding API -definitions: - -- [`DataBackupConfiguration`](https://pkg.go.dev/github.com/cloudnative-pg/barman-cloud/pkg/api#DataBackupConfiguration) -- [`WALBackupConfiguration`](https://pkg.go.dev/github.com/cloudnative-pg/barman-cloud/pkg/api#WalBackupConfiguration) - -:::important -Compression impacts both performance and storage efficiency. Choose the right -algorithm based on your recovery time objectives (RTO), storage capacity, and -network throughput. -::: - -## Compression Benchmark (on MinIO) - -| Compression | Backup Time (ms) | Restore Time (ms) | Uncompressed Size (MB) | Compressed Size (MB) | Ratio | -| ----------- | ---------------- | ----------------- | ---------------------- | -------------------- | ----- | -| None | 10,927 | 7,553 | 395 | 395 | 1.0:1 | -| bzip2 | 25,404 | 13,886 | 395 | 67 | 5.9:1 | -| gzip | 116,281 | 3,077 | 395 | 91 | 4.3:1 | -| snappy | 8,134 | 8,341 | 395 | 166 | 2.4:1 | diff --git a/web/versioned_docs/version-0.6.0/concepts.md b/web/versioned_docs/version-0.6.0/concepts.md deleted file mode 100644 index 3832df3..0000000 --- a/web/versioned_docs/version-0.6.0/concepts.md +++ /dev/null @@ -1,177 +0,0 @@ ---- -sidebar_position: 10 ---- - -# Main Concepts - - - -:::important -Before proceeding, make sure to review the following sections of the -CloudNativePG documentation: - -- [**Backup**](https://cloudnative-pg.io/documentation/current/backup/) -- [**WAL Archiving**](https://cloudnative-pg.io/documentation/current/wal_archiving/) -- [**Recovery**](https://cloudnative-pg.io/documentation/current/recovery/) -::: - -The **Barman Cloud Plugin** enables **hot (online) backups** of PostgreSQL -clusters in CloudNativePG through [`barman-cloud`](https://pgbarman.org), -supporting continuous physical backups and WAL archiving to an **object -store**β€”without interrupting write operations. - -It also supports both **full recovery** and **Point-in-Time Recovery (PITR)** -of a PostgreSQL cluster. - -## The Object Store - -At the core is the [`ObjectStore` custom resource (CRD)](plugin-barman-cloud.v1.md#objectstorespec), -which acts as the interface between the PostgreSQL cluster and the target -object storage system. It allows you to configure: - -- **Authentication and bucket location** via the `.spec.configuration` section -- **WAL archiving** settingsβ€”such as compression type, parallelism, and - server-side encryptionβ€”under `.spec.configuration.wal` -- **Base backup options**β€”with similar settings for compression, concurrency, - and encryptionβ€”under `.spec.configuration.data` -- **Retention policies** to manage the life-cycle of archived WALs and backups - via `.spec.configuration.retentionPolicy` - -WAL files are archived in the `wals` directory, while base backups are stored -as **tarballs** in the `base` directory, following the -[Barman Cloud convention](https://docs.pgbarman.org/cloud/latest/usage/#object-store-layout). - -The plugin also offers advanced capabilities, including -[backup tagging](misc.md#backup-object-tagging) and -[extra options for backups and WAL archiving](misc.md#extra-options-for-backup-and-wal-archiving). - -:::tip -For details, refer to the -[API reference for the `ObjectStore` resource](plugin-barman-cloud.v1.md#objectstorespec). -::: - -## Integration with a CloudNativePG Cluster - -CloudNativePG can delegate continuous backup and recovery responsibilities to -the **Barman Cloud Plugin** by configuring the `.spec.plugins` section of a -`Cluster` resource. This setup requires a corresponding `ObjectStore` resource -to be defined. - -:::important -While it is technically possible to reuse the same `ObjectStore` for multiple -`Cluster` resources within the same namespace, it is strongly recommended to -dedicate one object store per PostgreSQL cluster to ensure data isolation and -operational clarity. -::: - -The following example demonstrates how to configure a CloudNativePG cluster -named `cluster-example` to use a previously defined `ObjectStore` (also named -`cluster-example`) in the same namespace. Setting `isWALArchiver: true` enables -WAL archiving through the plugin: - -```yaml -apiVersion: postgresql.cnpg.io/v1 -kind: Cluster -metadata: - name: cluster-example -spec: - # Other cluster settings... - plugins: - - name: barman-cloud.cloudnative-pg.io - isWALArchiver: true - parameters: - barmanObjectName: cluster-example -``` - -## Backup of a Postgres Cluster - -Once the object store is defined and the `Cluster` is configured to use the -Barman Cloud Plugin, **WAL archiving is activated immediately** on the -PostgreSQL primary. - -Physical base backups are seamlessly managed by CloudNativePG using the -`Backup` and `ScheduledBackup` resources, respectively for -[on-demand](https://cloudnative-pg.io/documentation/current/backup/#on-demand-backups) -and -[scheduled](https://cloudnative-pg.io/documentation/current/backup/#scheduled-backups) -backups. - -To use the Barman Cloud Plugin, you must set the `method` to `plugin` and -configure the `pluginConfiguration` section as shown: - -```yaml -[...] -spec: - method: plugin - pluginConfiguration: - name: barman-cloud.cloudnative-pg.io - [...] -``` - -With this configuration, CloudNativePG supports: - -- Backups from both **primary** and **standby** instances -- Backups from **designated primaries** in a distributed topology using - [replica clusters](https://cloudnative-pg.io/documentation/current/replica_cluster/) - -:::tip -For details on how to back up from a standby, refer to the official documentation: -[Backup from a standby](https://cloudnative-pg.io/documentation/current/backup/#backup-from-a-standby). -::: - -:::important -Both backup and WAL archiving operations are executed by sidecar containers -running in the same pod as the PostgreSQL `Cluster` primary instanceβ€”except -when backups are taken from a standby, in which case the sidecar runs alongside -the standby pod. -The sidecar containers use a [dedicated container image](images.md) that -includes only the supported version of Barman Cloud. -::: - -## Recovery of a Postgres Cluster - -In PostgreSQL, *recovery* refers to the process of starting a database instance -from an existing backup. The Barman Cloud Plugin integrates with CloudNativePG -to support both **full recovery** and **Point-in-Time Recovery (PITR)** from an -object store. - -Recovery in this context is *not in-place*: it bootstraps a brand-new -PostgreSQL cluster from a backup and replays the necessary WAL files to reach -the desired recovery target. - -To perform a recovery, define an *external cluster* that references the -appropriate `ObjectStore`, and use it as the source in the `bootstrap` section -of the target cluster: - -```yaml -[...] -spec: - [...] - bootstrap: - recovery: - source: source - externalClusters: - - name: source - plugin: - name: barman-cloud.cloudnative-pg.io - parameters: - barmanObjectName: cluster-example - serverName: cluster-example - [...] -``` - -The critical element here is the `externalClusters` section of the `Cluster` -resource, where the `plugin` stanza instructs CloudNativePG to use the Barman -Cloud Plugin to access the object store for recovery. - -This same mechanism can be used for a variety of scenarios enabled by the -CloudNativePG API, including: - -* **Full cluster recovery** from the latest backup -* **Point-in-Time Recovery (PITR)** -* Bootstrapping **replica clusters** in a distributed topology - -:::tip -For complete instructions and advanced use cases, refer to the official -[Recovery documentation](https://cloudnative-pg.io/documentation/current/recovery/). -::: diff --git a/web/versioned_docs/version-0.6.0/images.md b/web/versioned_docs/version-0.6.0/images.md deleted file mode 100644 index f6c32d3..0000000 --- a/web/versioned_docs/version-0.6.0/images.md +++ /dev/null @@ -1,37 +0,0 @@ ---- -sidebar_position: 99 ---- - -# Container Images - - - -The Barman Cloud Plugin is distributed using two container images: - -- One for deploying the plugin components -- One for the sidecar that runs alongside each PostgreSQL instance in a - CloudNativePG `Cluster` using the plugin - -## Plugin Container Image - -The plugin image contains the logic required to operate the Barman Cloud Plugin -within your Kubernetes environment with CloudNativePG. It is published on the -GitHub Container Registry at `ghcr.io/cloudnative-pg/plugin-barman-cloud`. - -This image is built from the -[`Dockerfile.plugin`](https://github.com/cloudnative-pg/plugin-barman-cloud/blob/main/containers/Dockerfile.plugin) -in the plugin repository. - -## Sidecar Container Image - -The sidecar image is used within each PostgreSQL pod in the cluster. It -includes the latest supported version of Barman Cloud and is responsible for -performing WAL archiving and backups on behalf of CloudNativePG. - -It is available at `ghcr.io/cloudnative-pg/plugin-barman-cloud-sidecar` and is -built from the -[`Dockerfile.sidecar`](https://github.com/cloudnative-pg/plugin-barman-cloud/blob/main/containers/Dockerfile.sidecar). - -These sidecar images are designed to work seamlessly with the -[`minimal` PostgreSQL container images](https://github.com/cloudnative-pg/postgres-containers?tab=readme-ov-file#minimal-images) -maintained by the CloudNativePG Community. diff --git a/web/versioned_docs/version-0.6.0/installation.mdx b/web/versioned_docs/version-0.6.0/installation.mdx deleted file mode 100644 index 027d1e8..0000000 --- a/web/versioned_docs/version-0.6.0/installation.mdx +++ /dev/null @@ -1,109 +0,0 @@ ---- -sidebar_position: 20 ---- - -# Installation - -:::important -1. The plugin **must** be installed in the same namespace as the CloudNativePG - operator (typically `cnpg-system`). - -2. Keep in mind that the operator's **listening namespaces** may differ from its - installation namespace. Double-check this to avoid configuration issues. -::: - -## Verifying the Requirements - -Before installing the plugin, make sure the [requirements](intro.md#requirements) are met. - -### CloudNativePG Version - -Ensure you're running a version of CloudNativePG that is compatible with the -plugin. If installed in the default `cnpg-system` namespace, you can verify the -version with: - -```sh -kubectl get deployment -n cnpg-system cnpg-controller-manager \ - -o jsonpath="{.spec.template.spec.containers[*].image}" -``` - -Example output: - -```output -ghcr.io/cloudnative-pg/cloudnative-pg:1.26.0 -``` - -The version **must be 1.26 or newer**. - -### cert-manager - -Use the [cmctl](https://cert-manager.io/docs/reference/cmctl/#installation) -tool to confirm that `cert-manager` is installed and available: - -```sh -cmctl check api -``` - -Example output: - -```output -The cert-manager API is ready -``` - -Both checks are required before proceeding with the installation. - -## Installing the Barman Cloud Plugin - -import { InstallationSnippet } from '@site/src/components/Installation'; - -Install the plugin using `kubectl` by applying the manifest for the latest -release: - - - -Example output: - -```output -customresourcedefinition.apiextensions.k8s.io/objectstores.barmancloud.cnpg.io created -serviceaccount/plugin-barman-cloud created -role.rbac.authorization.k8s.io/leader-election-role created -clusterrole.rbac.authorization.k8s.io/metrics-auth-role created -clusterrole.rbac.authorization.k8s.io/metrics-reader created -clusterrole.rbac.authorization.k8s.io/objectstore-editor-role created -clusterrole.rbac.authorization.k8s.io/objectstore-viewer-role created -clusterrole.rbac.authorization.k8s.io/plugin-barman-cloud created -rolebinding.rbac.authorization.k8s.io/leader-election-rolebinding created -clusterrolebinding.rbac.authorization.k8s.io/metrics-auth-rolebinding created -clusterrolebinding.rbac.authorization.k8s.io/plugin-barman-cloud-binding created -secret/plugin-barman-cloud-8tfddg42gf created -service/barman-cloud created -deployment.apps/barman-cloud configured -certificate.cert-manager.io/barman-cloud-client created -certificate.cert-manager.io/barman-cloud-server created -issuer.cert-manager.io/selfsigned-issuer created -``` - -Finally, check that the deployment is up and running: - -```sh -kubectl rollout status deployment \ - -n cnpg-system barman-cloud -``` - -Example output: - -```output -deployment "barman-cloud" successfully rolled out -``` - -This confirms that the plugin is deployed and ready to use. - -## Testing the latest development snapshot - -You can also test the latest development snapshot of the plugin with the -following command: - -```sh -kubectl apply -f \ - https://raw.githubusercontent.com/cloudnative-pg/plugin-barman-cloud/refs/heads/main/manifest.yaml -``` diff --git a/web/versioned_docs/version-0.6.0/intro.md b/web/versioned_docs/version-0.6.0/intro.md deleted file mode 100644 index f22f383..0000000 --- a/web/versioned_docs/version-0.6.0/intro.md +++ /dev/null @@ -1,67 +0,0 @@ ---- -sidebar_position: 1 -sidebar_label: "Introduction" ---- - -# Barman Cloud Plugin - - - -The **Barman Cloud Plugin** for [CloudNativePG](https://cloudnative-pg.io/) -enables online continuous physical backups of PostgreSQL clusters to object storage -using the `barman-cloud` suite from the [Barman](https://docs.pgbarman.org/release/latest/) -project. - -:::important -If you plan to migrate your existing CloudNativePG cluster to the new -plugin-based approach using the Barman Cloud Plugin, see -["Migrating from Built-in CloudNativePG Backup"](migration.md) -for detailed instructions. -::: - -## Requirements - -To use the Barman Cloud Plugin, you need: - -- [CloudNativePG](https://cloudnative-pg.io) version **1.26** -- [cert-manager](https://cert-manager.io/) to enable TLS communication between - the plugin and the operator - -## Key Features - -This plugin provides the following capabilities: - -- Physical online backup of the data directory -- Physical restore of the data directory -- Write-Ahead Log (WAL) archiving -- WAL restore -- Full cluster recovery -- Point-in-Time Recovery (PITR) -- Seamless integration with replica clusters for bootstrap and WAL restore from archive - -:::important -The Barman Cloud Plugin is designed to **replace the in-tree object storage support** -previously provided via the `.spec.backup.barmanObjectStore` section in the -`Cluster` resource. -Backups created using the in-tree approach are fully supported and compatible -with this plugin. -::: - -## Supported Object Storage Providers - -The plugin works with all storage backends supported by `barman-cloud`, including: - -- **Amazon S3** -- **Google Cloud Storage** -- **Microsoft Azure Blob Storage** - -In addition, the following S3-compatible and simulator solutions have been -tested and verified: - -- [MinIO](https://min.io/) – An S3-compatible storage solution -- [Azurite](https://github.com/Azure/Azurite) – A simulator for Azure Blob Storage -- [fake-gcs-server](https://github.com/fsouza/fake-gcs-server) – A simulator for Google Cloud Storage - -:::tip -For more details, refer to [Object Store Providers](object_stores.md). -::: diff --git a/web/versioned_docs/version-0.6.0/migration.md b/web/versioned_docs/version-0.6.0/migration.md deleted file mode 100644 index 43c4b80..0000000 --- a/web/versioned_docs/version-0.6.0/migration.md +++ /dev/null @@ -1,259 +0,0 @@ ---- -sidebar_position: 40 ---- - -# Migrating from Built-in CloudNativePG Backup - - - -The in-tree support for Barman Cloud in CloudNativePG is **deprecated starting -from version 1.26** and will be removed in a future release. - -If you're currently relying on the built-in Barman Cloud integration, you can -migrate seamlessly to the new **plugin-based architecture** using the Barman -Cloud Plugin, without data loss. Follow these steps: - -- [Install the Barman Cloud Plugin](installation.mdx) -- Create an `ObjectStore` resource by translating the contents of the - `.spec.backup.barmanObjectStore` section from your existing `Cluster` - definition -- Modify the `Cluster` resource in a single atomic change to switch from - in-tree backup to the plugin -- Update any `ScheduledBackup` resources to use the plugin -- Update the `externalClusters` configuration, where applicable - -:::tip -For a working example, refer to [this commit](https://github.com/cloudnative-pg/cnpg-playground/commit/596f30e252896edf8f734991c3538df87630f6f7) -from the [CloudNativePG Playground project](https://github.com/cloudnative-pg/cnpg-playground), -which demonstrates a full migration. -::: - ---- - -## Step 1: Define the `ObjectStore` - -Begin by creating an `ObjectStore` resource in the same namespace as your -PostgreSQL `Cluster`. - -There is a **direct mapping** between the `.spec.backup.barmanObjectStore` -section in CloudNativePG and the `.spec.configuration` field in the -`ObjectStore` CR. The conversion is mostly mechanical, with one key difference: - -:::warning -In the plugin architecture, retention policies are defined as part of the `ObjectStore`. -In contrast, the in-tree implementation defined them at the `Cluster` level. -::: - -If your `Cluster` used `.spec.backup.retentionPolicy`, move that configuration -to `.spec.retentionPolicy` in the `ObjectStore`. - ---- - -### Example - -Here’s an excerpt from a traditional in-tree CloudNativePG backup configuration -taken from the CloudNativePG Playground project: - -```yaml -apiVersion: postgresql.cnpg.io/v1 -kind: Cluster -metadata: - name: pg-eu -spec: - # [...] - backup: - barmanObjectStore: - destinationPath: s3://backups/ - endpointURL: http://minio-eu:9000 - s3Credentials: - accessKeyId: - name: minio-eu - key: ACCESS_KEY_ID - secretAccessKey: - name: minio-eu - key: ACCESS_SECRET_KEY - wal: - compression: gzip -``` - -This configuration translates to the following `ObjectStore` resource for the -plugin: - -```yaml -apiVersion: barmancloud.cnpg.io/v1 -kind: ObjectStore -metadata: - name: minio-eu -spec: - configuration: - destinationPath: s3://backups/ - endpointURL: http://minio-eu:9000 - s3Credentials: - accessKeyId: - name: minio-eu - key: ACCESS_KEY_ID - secretAccessKey: - name: minio-eu - key: ACCESS_SECRET_KEY - wal: - compression: gzip -``` - -As you can see, the contents of `barmanObjectStore` have been copied directly -under the `configuration` field of the `ObjectStore` resource, using the same -secret references. - -## Step 2: Update the `Cluster` for plugin WAL archiving - -Once the `ObjectStore` resource is in place, update the `Cluster` resource as -follows in a single atomic change: - -- Remove the `.spec.backup.barmanObjectStore` section -- Remove `.spec.backup.retentionPolicy` if it was defined (as it is now in the - `ObjectStore`) -- Remove the entire `spec.backup` section if it is now empty -- Add `barman-cloud.cloudnative-pg.io` to the `plugins` list, as described in - [Configuring WAL archiving](usage.md#configuring-wal-archiving) - -This will trigger a rolling update of the `Cluster`, switching continuous -backup from the in-tree implementation to the plugin-based approach. - -### Example - -The updated `pg-eu` cluster will have this configuration instead of the -previous `backup` section: - -```yaml - plugins: - - name: barman-cloud.cloudnative-pg.io - isWALArchiver: true - parameters: - barmanObjectName: minio-eu -``` - ---- - -## Step 3: Update the `ScheduledBackup` - -After switching the `Cluster` to use the plugin, update your `ScheduledBackup` -resources to match. - -Set the backup `method` to `plugin` and reference the plugin name via -`pluginConfiguration`, as shown in ["Performing a base backup"](usage.md#performing-a-base-backup). - -### Example - -Original in-tree `ScheduledBackup`: - -```yaml -apiVersion: postgresql.cnpg.io/v1 -kind: ScheduledBackup -metadata: - name: pg-eu-backup -spec: - cluster: - name: pg-eu - schedule: '0 0 0 * * *' - backupOwnerReference: self -``` - -Updated version using the plugin: - -```yaml -apiVersion: postgresql.cnpg.io/v1 -kind: ScheduledBackup -metadata: - name: pg-eu-backup -spec: - cluster: - name: pg-eu - schedule: '0 0 0 * * *' - backupOwnerReference: self - method: plugin - pluginConfiguration: - name: barman-cloud.cloudnative-pg.io -``` - ---- - -## Step 4: Update the `externalClusters` configuration - -If your `Cluster` relies on one or more external clusters that use the in-tree -Barman Cloud integration, you need to update those configurations to use the -plugin-based architecture. - -When a replica cluster fetches WAL files or base backups from an external -source that used the built-in backup method, follow these steps: - -1. Create a corresponding `ObjectStore` resource for the external cluster, as - shown in [Step 1](#step-1-define-the-objectstore) -2. Update the `externalClusters` section of your replica cluster to use the - plugin instead of the in-tree `barmanObjectStore` field - -### Example - -Consider the original configuration using in-tree Barman Cloud: - -```yaml -apiVersion: postgresql.cnpg.io/v1 -kind: Cluster -metadata: - name: pg-us -spec: - # [...] - externalClusters: - - name: pg-eu - barmanObjectStore: - destinationPath: s3://backups/ - endpointURL: http://minio-eu:9000 - serverName: pg-eu - s3Credentials: - accessKeyId: - name: minio-eu - key: ACCESS_KEY_ID - secretAccessKey: - name: minio-eu - key: ACCESS_SECRET_KEY - wal: - compression: gzip -``` - -Create the `ObjectStore` resource for the external cluster: - -```yaml -apiVersion: barmancloud.cnpg.io/v1 -kind: ObjectStore -metadata: - name: minio-eu -spec: - configuration: - destinationPath: s3://backups/ - endpointURL: http://minio-eu:9000 - s3Credentials: - accessKeyId: - name: minio-eu - key: ACCESS_KEY_ID - secretAccessKey: - name: minio-eu - key: ACCESS_SECRET_KEY - wal: - compression: gzip -``` - -Update the external cluster configuration to use the plugin: - -```yaml -apiVersion: postgresql.cnpg.io/v1 -kind: Cluster -metadata: - name: pg-us -spec: - # [...] - externalClusters: - - name: pg-eu - plugin: - name: barman-cloud.cloudnative-pg.io - parameters: - barmanObjectName: minio-eu - serverName: pg-eu -``` diff --git a/web/versioned_docs/version-0.6.0/misc.md b/web/versioned_docs/version-0.6.0/misc.md deleted file mode 100644 index 4d3cefc..0000000 --- a/web/versioned_docs/version-0.6.0/misc.md +++ /dev/null @@ -1,76 +0,0 @@ ---- -sidebar_position: 90 ---- - -# Miscellaneous - - - -## Backup Object Tagging - -You can attach key-value metadata tags to backup artifactsβ€”such as base -backups, WAL files, and history filesβ€”via the `.spec.configuration` section of -the `ObjectStore` resource. - -- `tags`: applied to base backups and WAL files -- `historyTags`: applied to history files only - -### Example - -```yaml -apiVersion: barmancloud.cnpg.io/v1 -kind: ObjectStore -metadata: - name: my-store -spec: - configuration: - [...] - tags: - backupRetentionPolicy: "expire" - historyTags: - backupRetentionPolicy: "keep" - [...] -``` - -## Extra Options for Backup and WAL Archiving - -You can pass additional command-line arguments to `barman-cloud-backup` and -`barman-cloud-wal-archive` using the `additionalCommandArgs` field in the -`ObjectStore` configuration. - -- `.spec.configuration.data.additionalCommandArgs`: for `barman-cloud-backup` -- `.spec.configuration.wal.additionalCommandArgs`: for `barman-cloud-wal-archive` - -Each field accepts a list of string arguments. If an argument is already -configured elsewhere in the plugin, the duplicate will be ignored. - -### Example: Extra Backup Options - -```yaml -kind: ObjectStore -metadata: - name: my-store -spec: - configuration: - data: - additionalCommandArgs: - - "--min-chunk-size=5MB" - - "--read-timeout=60" -``` - -### Example: Extra WAL Archive Options - -```yaml -kind: ObjectStore -metadata: - name: my-store -spec: - configuration: - wal: - additionalCommandArgs: - - "--max-concurrency=1" - - "--read-timeout=60" -``` - -For a complete list of supported options, refer to the -[official Barman Cloud documentation](https://docs.pgbarman.org/release/latest/). diff --git a/web/versioned_docs/version-0.6.0/object_stores.md b/web/versioned_docs/version-0.6.0/object_stores.md deleted file mode 100644 index b9d4824..0000000 --- a/web/versioned_docs/version-0.6.0/object_stores.md +++ /dev/null @@ -1,493 +0,0 @@ ---- -sidebar_position: 50 ---- - -# Object Store Providers - - - -The Barman Cloud Plugin enables the storage of PostgreSQL cluster backup files -in any object storage service supported by the -[Barman Cloud infrastructure](https://docs.pgbarman.org/release/latest/). - -Currently, Barman Cloud supports the following providers: - -- [Amazon S3](#aws-s3) -- [Microsoft Azure Blob Storage](#azure-blob-storage) -- [Google Cloud Storage](#google-cloud-storage) - -You may also use any S3- or Azure-compatible implementation of the above -services. - -To configure object storage with Barman Cloud, you must define an -[`ObjectStore` object](plugin-barman-cloud.v1.md#objectstore), which -establishes the connection between your PostgreSQL cluster and the object -storage backend. - -Configuration details β€” particularly around authentication β€” will vary depending on -the specific object storage provider you are using. - -The following sections detail the setup for each. - ---- - -## AWS S3 - -[AWS Simple Storage Service (S3)](https://aws.amazon.com/s3/) is one of the -most widely adopted object storage solutions. - -The Barman Cloud plugin for CloudNativePG integrates with S3 through two -primary authentication mechanisms: - -- [IAM Roles for Service Accounts (IRSA)](https://docs.aws.amazon.com/eks/latest/userguide/iam-roles-for-service-accounts.html) β€” - recommended for clusters running on EKS -- Access keys β€” using `ACCESS_KEY_ID` and `ACCESS_SECRET_KEY` credentials - -### Access Keys - -To authenticate using access keys, you’ll need: - -- `ACCESS_KEY_ID`: the public key used to authenticate to S3 -- `ACCESS_SECRET_KEY`: the corresponding secret key -- `ACCESS_SESSION_TOKEN`: (optional) a temporary session token, if required - -These credentials must be stored securely in a Kubernetes secret: - -```sh -kubectl create secret generic aws-creds \ - --from-literal=ACCESS_KEY_ID= \ - --from-literal=ACCESS_SECRET_KEY= -# --from-literal=ACCESS_SESSION_TOKEN= # if required -``` - -The credentials will be encrypted at rest if your Kubernetes environment -supports it. - -You can then reference the secret in your `ObjectStore` definition: - -```yaml -apiVersion: barmancloud.cnpg.io/v1 -kind: ObjectStore -metadata: - name: aws-store -spec: - configuration: - destinationPath: "s3://BUCKET_NAME/path/to/folder" - s3Credentials: - accessKeyId: - name: aws-creds - key: ACCESS_KEY_ID - secretAccessKey: - name: aws-creds - key: ACCESS_SECRET_KEY - [...] -``` - -### IAM Role for Service Account (IRSA) - -To use IRSA with EKS, configure the service account of the PostgreSQL cluster -with the appropriate annotation: - -```yaml -apiVersion: postgresql.cnpg.io/v1 -kind: Cluster -metadata: - [...] -spec: - serviceAccountTemplate: - metadata: - annotations: - eks.amazonaws.com/role-arn: arn:[...] - [...] -``` - -### S3 Lifecycle Policy - -Barman Cloud uploads backup files to S3 but does not modify them afterward. -To enhance data durability and protect against accidental or malicious loss, -it's recommended to implement the following best practices: - -- Enable object versioning -- Enable object locking to prevent objects from being deleted or overwritten - for a defined period or indefinitely (this provides an additional layer of - protection against accidental deletion and ransomware attacks) -- Set lifecycle rules to expire current versions a few days after your Barman - retention window -- Expire non-current versions after a longer period - -These strategies help you safeguard backups without requiring broad delete -permissions, ensuring both security and compliance with minimal operational -overhead. - - -### S3-Compatible Storage Providers - -You can use S3-compatible services like **MinIO**, **Linode (Akamai) Object Storage**, -or **DigitalOcean Spaces** by specifying a custom `endpointURL`. - -Example with Linode (Akamai) Object Storage (`us-east1`): - -```yaml -apiVersion: barmancloud.cnpg.io/v1 -kind: ObjectStore -metadata: - name: linode-store -spec: - configuration: - destinationPath: "s3://BUCKET_NAME/" - endpointURL: "https://us-east1.linodeobjects.com" - s3Credentials: - [...] - [...] -``` - -Recent changes to the [boto3 implementation](https://github.com/boto/boto3/issues/4392) -of [Amazon S3 Data Integrity Protections](https://docs.aws.amazon.com/sdkref/latest/guide/feature-dataintegrity.html) -may lead to the `x-amz-content-sha256` error when using the Barman Cloud -Plugin. - -If you encounter this issue (see [GitHub issue #393](https://github.com/cloudnative-pg/plugin-barman-cloud/issues/393)), -you can apply the following workaround by setting specific environment -variables in the `ObjectStore` resource: - -```yaml -apiVersion: barmancloud.cnpg.io/v1 -kind: ObjectStore -metadata: - name: linode-store -spec: - instanceSidecarConfiguration: - env: - - name: AWS_REQUEST_CHECKSUM_CALCULATION - value: when_required - - name: AWS_RESPONSE_CHECKSUM_VALIDATION - value: when_required - [...] -``` - -These settings ensure that checksum calculations and validations are only -applied when explicitly required, avoiding compatibility issues with certain -S3-compatible storage providers. - -Example with DigitalOcean Spaces (SFO3, path-style): - -```yaml -apiVersion: barmancloud.cnpg.io/v1 -kind: ObjectStore -metadata: - name: digitalocean-store -spec: - configuration: - destinationPath: "s3://BUCKET_NAME/path/to/folder" - endpointURL: "https://sfo3.digitaloceanspaces.com" - s3Credentials: - [...] - [...] -``` - -### Using Object Storage with a Private CA - -For object storage services (e.g., MinIO) that use HTTPS with certificates -signed by a private CA, set the `endpointCA` field in the `ObjectStore` -definition. Unless you already have it, create a Kubernetes `Secret` with the -CA bundle: - -```sh -kubectl create secret generic my-ca-secret --from-file=ca.crt -``` - -Then reference it: - -```yaml -apiVersion: barmancloud.cnpg.io/v1 -kind: ObjectStore -metadata: - name: minio-store -spec: - configuration: - endpointURL: - endpointCA: - name: my-ca-secret - key: ca.crt - [...] -``` - - -:::note -If you want `ConfigMaps` and `Secrets` to be **automatically** reloaded by -instances, you can add a label with the key `cnpg.io/reload` to the -`Secrets`/`ConfigMaps`. Otherwise, you will have to reload the instances using the -`kubectl cnpg reload` subcommand. -::: - ---- - -## Azure Blob Storage - -[Azure Blob Storage](https://azure.microsoft.com/en-us/services/storage/blobs/) -is Microsoft’s cloud-based object storage solution. - -Barman Cloud supports the following authentication methods: - -- [Connection String](https://learn.microsoft.com/en-us/azure/storage/common/storage-configure-connection-string) -- Storage Account Name + [Access Key](https://learn.microsoft.com/en-us/azure/storage/common/storage-account-keys-manage) -- Storage Account Name + [SAS Token](https://learn.microsoft.com/en-us/azure/storage/blobs/sas-service-create) -- [Azure AD Workload Identity](https://azure.github.io/azure-workload-identity/docs/introduction.html) - -### Azure AD Workload Identity - -This method avoids storing credentials in Kubernetes via the -`.spec.configuration.inheritFromAzureAD` option: - -```yaml -apiVersion: barmancloud.cnpg.io/v1 -kind: ObjectStore -metadata: - name: azure-store -spec: - configuration: - destinationPath: "" - azureCredentials: - inheritFromAzureAD: true - [...] -``` - -### Access Key, SAS Token, or Connection String - -Store credentials in a Kubernetes secret: - -```sh -kubectl create secret generic azure-creds \ - --from-literal=AZURE_STORAGE_ACCOUNT= \ - --from-literal=AZURE_STORAGE_KEY= \ - --from-literal=AZURE_STORAGE_SAS_TOKEN= \ - --from-literal=AZURE_STORAGE_CONNECTION_STRING= -``` - -Then reference the required keys in your `ObjectStore`: - -```yaml -apiVersion: barmancloud.cnpg.io/v1 -kind: ObjectStore -metadata: - name: azure-store -spec: - configuration: - destinationPath: "" - azureCredentials: - connectionString: - name: azure-creds - key: AZURE_CONNECTION_STRING - storageAccount: - name: azure-creds - key: AZURE_STORAGE_ACCOUNT - storageKey: - name: azure-creds - key: AZURE_STORAGE_KEY - storageSasToken: - name: azure-creds - key: AZURE_STORAGE_SAS_TOKEN - [...] -``` - -For Azure Blob, the destination path format is: - -``` -://..core.windows.net// -``` - -### Azure-Compatible Providers - -If you're using a different implementation (e.g., Azurite or emulator): - -``` -://:/// -``` - ---- - -## Google Cloud Storage - -[Google Cloud Storage](https://cloud.google.com/storage/) is supported with two -authentication modes: - -- **GKE Workload Identity** (recommended inside Google Kubernetes Engine) -- **Service Account JSON key** via the `GOOGLE_APPLICATION_CREDENTIALS` environment variable - -### GKE Workload Identity - -Use the [Workload Identity authentication](https://cloud.google.com/kubernetes-engine/docs/how-to/workload-identity) -when running in GKE: - -1. Set `googleCredentials.gkeEnvironment` to `true` in the `ObjectStore` - resource -2. Annotate the `serviceAccountTemplate` in the `Cluster` resource with the GCP - service account - -For example, in the `ObjectStore` resource: - -```yaml -apiVersion: barmancloud.cnpg.io/v1 -kind: ObjectStore -metadata: - name: google-store -spec: - configuration: - destinationPath: "gs:///" - googleCredentials: - gkeEnvironment: true -``` - -And in the `Cluster` resource: - -```yaml -apiVersion: postgresql.cnpg.io/v1 -kind: Cluster -spec: - serviceAccountTemplate: - metadata: - annotations: - iam.gke.io/gcp-service-account: [...].iam.gserviceaccount.com -``` - -### Service Account JSON Key - -Follow Google’s [authentication setup](https://cloud.google.com/docs/authentication/getting-started), -then: - -```sh -kubectl create secret generic backup-creds --from-file=gcsCredentials=gcs_credentials_file.json -``` - -```yaml -apiVersion: barmancloud.cnpg.io/v1 -kind: ObjectStore -metadata: - name: google-store -spec: - configuration: - destinationPath: "gs:///" - googleCredentials: - applicationCredentials: - name: backup-creds - key: gcsCredentials - [...] -``` - -:::important -This authentication method generates a JSON file within the container -with all the credentials required to access your Google Cloud Storage -bucket. As a result, if someone gains access to the `Pod`, they will also have -write permissions to the bucket. -::: - ---- - - -## MinIO Gateway - -MinIO Gateway can proxy requests to cloud object storage providers like S3 or GCS. -For more information, refer to [MinIO official documentation](https://docs.min.io/). - -### Setup - -Create MinIO access credentials: - -```sh -kubectl create secret generic minio-creds \ - --from-literal=MINIO_ACCESS_KEY= \ - --from-literal=MINIO_SECRET_KEY= -``` - -:::note -Cloud Object Storage credentials will be used only by MinIO Gateway in this -case. -::: - -Expose MinIO Gateway via `ClusterIP`: - -```yaml -apiVersion: v1 -kind: Service -metadata: - name: minio-gateway-service -spec: - type: ClusterIP - ports: - - port: 9000 - targetPort: 9000 - protocol: TCP - selector: - app: minio -``` - -Here follows an excerpt of an example of deployment relaying to S3: - -```yaml -apiVersion: apps/v1 -kind: Deployment -[...] -spec: - containers: - - name: minio - image: minio/minio:RELEASE.2020-06-03T22-13-49Z - args: ["gateway", "s3"] - ports: - - containerPort: 9000 - env: - - name: MINIO_ACCESS_KEY - valueFrom: - secretKeyRef: - name: minio-creds - key: MINIO_ACCESS_KEY - - name: MINIO_SECRET_KEY - valueFrom: - secretKeyRef: - name: minio-creds - key: MINIO_SECRET_KEY - - name: AWS_ACCESS_KEY_ID - valueFrom: - secretKeyRef: - name: aws-creds - key: ACCESS_KEY_ID - - name: AWS_SECRET_ACCESS_KEY - valueFrom: - secretKeyRef: - name: aws-creds - key: ACCESS_SECRET_KEY -# Uncomment the below section if session token is required -# - name: AWS_SESSION_TOKEN -# valueFrom: -# secretKeyRef: -# name: aws-creds -# key: ACCESS_SESSION_TOKEN -``` - -Proceed by configuring MinIO Gateway service as the `endpointURL` in the -`ObjectStore` definition, then choose a bucket name to replace `BUCKET_NAME`: - -```yaml -apiVersion: barmancloud.cnpg.io/v1 -kind: ObjectStore -metadata: - name: minio-store -spec: - configuration: - destinationPath: s3://BUCKET_NAME/ - endpointURL: http://minio-gateway-service:9000 - s3Credentials: - accessKeyId: - name: minio-creds - key: MINIO_ACCESS_KEY - secretAccessKey: - name: minio-creds - key: MINIO_SECRET_KEY - [...] -``` - -:::important -Verify on `s3://BUCKET_NAME/` the presence of archived WAL files before -proceeding with a backup. -::: - ---- diff --git a/web/versioned_docs/version-0.6.0/parameters.md b/web/versioned_docs/version-0.6.0/parameters.md deleted file mode 100644 index ca0cd2b..0000000 --- a/web/versioned_docs/version-0.6.0/parameters.md +++ /dev/null @@ -1,19 +0,0 @@ ---- -sidebar_position: 100 ---- - -# Parameters - - - -The following parameters are available for the Barman Cloud Plugin: - -- `barmanObjectName`: references the `ObjectStore` resource to be used by the - plugin. -- `serverName`: Specifies the server name in the object store. - -:::important -The `serverName` parameter in the `ObjectStore` resource is retained solely for -API compatibility with the in-tree `barmanObjectStore` and must always be left empty. -When needed, use the `serverName` plugin parameter in the Cluster configuration instead. -::: diff --git a/web/versioned_docs/version-0.6.0/plugin-barman-cloud.v1.md b/web/versioned_docs/version-0.6.0/plugin-barman-cloud.v1.md deleted file mode 100644 index 552dc27..0000000 --- a/web/versioned_docs/version-0.6.0/plugin-barman-cloud.v1.md +++ /dev/null @@ -1,105 +0,0 @@ -# API Reference - -## Packages -- [barmancloud.cnpg.io/v1](#barmancloudcnpgiov1) - - -## barmancloud.cnpg.io/v1 - -Package v1 contains API Schema definitions for the barmancloud v1 API group - -### Resource Types -- [ObjectStore](#objectstore) - - - -#### InstanceSidecarConfiguration - - - -InstanceSidecarConfiguration defines the configuration for the sidecar that runs in the instance pods. - - - -_Appears in:_ -- [ObjectStoreSpec](#objectstorespec) - -| Field | Description | Required | Default | Validation | -| --- | --- | --- | --- | --- | -| `env` _[EnvVar](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#envvar-v1-core) array_ | The environment to be explicitly passed to the sidecar | | | | -| `retentionPolicyIntervalSeconds` _integer_ | The retentionCheckInterval defines the frequency at which the
system checks and enforces retention policies. | | 1800 | | -| `resources` _[ResourceRequirements](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcerequirements-v1-core)_ | Resources define cpu/memory requests and limits for the sidecar that runs in the instance pods. | | | | - - -#### ObjectStore - - - -ObjectStore is the Schema for the objectstores API. - - - - - -| Field | Description | Required | Default | Validation | -| --- | --- | --- | --- | --- | -| `apiVersion` _string_ | `barmancloud.cnpg.io/v1` | True | | | -| `kind` _string_ | `ObjectStore` | True | | | -| `metadata` _[ObjectMeta](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#objectmeta-v1-meta)_ | Refer to Kubernetes API documentation for fields of `metadata`. | True | | | -| `spec` _[ObjectStoreSpec](#objectstorespec)_ | Specification of the desired behavior of the ObjectStore.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status | True | | | -| `status` _[ObjectStoreStatus](#objectstorestatus)_ | Most recently observed status of the ObjectStore. This data may not be up to
date. Populated by the system. Read-only.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status | | | | - - -#### ObjectStoreSpec - - - -ObjectStoreSpec defines the desired state of ObjectStore. - - - -_Appears in:_ -- [ObjectStore](#objectstore) - -| Field | Description | Required | Default | Validation | -| --- | --- | --- | --- | --- | -| `configuration` _[BarmanObjectStoreConfiguration](https://pkg.go.dev/github.com/cloudnative-pg/barman-cloud/pkg/api#BarmanObjectStoreConfiguration)_ | The configuration for the barman-cloud tool suite | True | | | -| `retentionPolicy` _string_ | RetentionPolicy is the retention policy to be used for backups
and WALs (i.e. '60d'). The retention policy is expressed in the form
of `XXu` where `XX` is a positive integer and `u` is in `[dwm]` -
days, weeks, months. | | | Pattern: `^[1-9][0-9]*[dwm]$`
| -| `instanceSidecarConfiguration` _[InstanceSidecarConfiguration](#instancesidecarconfiguration)_ | The configuration for the sidecar that runs in the instance pods | | | | - - -#### ObjectStoreStatus - - - -ObjectStoreStatus defines the observed state of ObjectStore. - - - -_Appears in:_ -- [ObjectStore](#objectstore) - -| Field | Description | Required | Default | Validation | -| --- | --- | --- | --- | --- | -| `serverRecoveryWindow` _object (keys:string, values:[RecoveryWindow](#recoverywindow))_ | ServerRecoveryWindow maps each server to its recovery window | True | | | - - -#### RecoveryWindow - - - -RecoveryWindow represents the time span between the first -recoverability point and the last successful backup of a PostgreSQL -server, defining the period during which data can be restored. - - - -_Appears in:_ -- [ObjectStoreStatus](#objectstorestatus) - -| Field | Description | Required | Default | Validation | -| --- | --- | --- | --- | --- | -| `firstRecoverabilityPoint` _[Time](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#time-v1-meta)_ | The first recoverability point in a PostgreSQL server refers to
the earliest point in time to which the database can be
restored. | True | | | -| `lastSuccussfulBackupTime` _[Time](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#time-v1-meta)_ | The last successful backup time | True | | | - - diff --git a/web/versioned_docs/version-0.6.0/retention.md b/web/versioned_docs/version-0.6.0/retention.md deleted file mode 100644 index fefbd08..0000000 --- a/web/versioned_docs/version-0.6.0/retention.md +++ /dev/null @@ -1,38 +0,0 @@ ---- -sidebar_position: 60 ---- - -# Retention Policies - - - -The Barman Cloud Plugin supports **automated cleanup of obsolete backups** via -retention policies, configured in the `.spec.retentionPolicy` field of the -`ObjectStore` resource. - -:::note -This feature uses the `barman-cloud-backup-delete` command with the -`--retention-policy "RECOVERY WINDOW OF {{ value }} {{ unit }}"` syntax. -::: - -#### Example: 30-Day Retention Policy - -```yaml -apiVersion: barmancloud.cnpg.io/v1 -kind: ObjectStore -metadata: - name: my-store -spec: - [...] - retentionPolicy: "30d" -```` - -:::note -A **recovery window retention policy** ensures the cluster can be restored to -any point in time between the calculated *Point of Recoverability* (PoR) and -the latest WAL archive. The PoR is defined as `current time - recovery window`. -The **first valid backup** is the most recent backup completed before the PoR. -Backups older than that are marked as *obsolete* and deleted after the next -backup completes. -::: - diff --git a/web/versioned_docs/version-0.6.0/usage.md b/web/versioned_docs/version-0.6.0/usage.md deleted file mode 100644 index 5a82229..0000000 --- a/web/versioned_docs/version-0.6.0/usage.md +++ /dev/null @@ -1,258 +0,0 @@ ---- -sidebar_position: 30 ---- - -# Using the Barman Cloud Plugin - - - -After [installing the plugin](installation.mdx) in the same namespace as the -CloudNativePG operator, enabling your PostgreSQL cluster to use the Barman -Cloud Plugin involves just a few steps: - -- Defining the object store containing your WAL archive and base backups, using - your preferred [provider](object_stores.md) -- Instructing the Postgres cluster to use the Barman Cloud Plugin - -From that moment, you’ll be able to issue on-demand backups or define a backup -schedule, as well as rely on the object store for recovery operations. - -The rest of this page details each step, using MinIO as object store provider. - -## Defining the `ObjectStore` - -An `ObjectStore` resource must be created for each object store used in your -PostgreSQL architecture. Here's an example configuration using MinIO: - -```yaml -apiVersion: barmancloud.cnpg.io/v1 -kind: ObjectStore -metadata: - name: minio-store -spec: - configuration: - destinationPath: s3://backups/ - endpointURL: http://minio:9000 - s3Credentials: - accessKeyId: - name: minio - key: ACCESS_KEY_ID - secretAccessKey: - name: minio - key: ACCESS_SECRET_KEY - wal: - compression: gzip -``` - -The `.spec.configuration` schema follows the same format as the -[in-tree barman-cloud support](https://pkg.go.dev/github.com/cloudnative-pg/barman-cloud/pkg/api#BarmanObjectStoreConfiguration). -Refer to [the CloudNativePG documentation](https://cloudnative-pg.io/documentation/current/appendixes/backup_barmanobjectstore/) -for additional details. - -:::important -The `serverName` parameter in the `ObjectStore` resource is retained solely for -API compatibility with the in-tree `barmanObjectStore` and must always be left empty. -When needed, use the `serverName` plugin parameter in the Cluster configuration instead. -::: - -## Configuring WAL Archiving - -Once the `ObjectStore` is defined, you can configure your PostgreSQL cluster -to archive WALs by referencing the store in the `.spec.plugins` section: - -```yaml -apiVersion: postgresql.cnpg.io/v1 -kind: Cluster -metadata: - name: cluster-example -spec: - instances: 3 - imagePullPolicy: Always - plugins: - - name: barman-cloud.cloudnative-pg.io - isWALArchiver: true - parameters: - barmanObjectName: minio-store - storage: - size: 1Gi -``` - -This configuration enables both WAL archiving and data directory backups. - -## Performing a Base Backup - -Once WAL archiving is enabled, the cluster is ready for backups. To issue an -on-demand backup, use the following configuration with the plugin method: - -```yaml -apiVersion: postgresql.cnpg.io/v1 -kind: Backup -metadata: - name: backup-example -spec: - cluster: - name: cluster-example - method: plugin - pluginConfiguration: - name: barman-cloud.cloudnative-pg.io -``` - -:::note -You can apply the same concept to the `ScheduledBackup` resource. -::: - -## Restoring a Cluster - -To restore a cluster from an object store, create a new `Cluster` resource that -references the store containing the backup. Below is an example configuration: - -```yaml -apiVersion: postgresql.cnpg.io/v1 -kind: Cluster -metadata: - name: cluster-restore -spec: - instances: 3 - imagePullPolicy: IfNotPresent - bootstrap: - recovery: - source: source - externalClusters: - - name: source - plugin: - name: barman-cloud.cloudnative-pg.io - parameters: - barmanObjectName: minio-store - serverName: cluster-example - storage: - size: 1Gi -``` - -:::important -The above configuration does **not** enable WAL archiving for the restored cluster. -::: - -To enable WAL archiving for the restored cluster, include the `.spec.plugins` -section alongside the `externalClusters.plugin` section, as shown below: - -```yaml -apiVersion: postgresql.cnpg.io/v1 -kind: Cluster -metadata: - name: cluster-restore -spec: - instances: 3 - imagePullPolicy: IfNotPresent - bootstrap: - recovery: - source: source - plugins: - - name: barman-cloud.cloudnative-pg.io - isWALArchiver: true - parameters: - # Backup Object Store (push, read-write) - barmanObjectName: minio-store-bis - externalClusters: - - name: source - plugin: - name: barman-cloud.cloudnative-pg.io - parameters: - # Recovery Object Store (pull, read-only) - barmanObjectName: minio-store - serverName: cluster-example - storage: - size: 1Gi -``` - -The same object store may be used for both transaction log archiving and -restoring a cluster, or you can configure separate stores for these purposes. - -## Configuring Replica Clusters - -You can set up a distributed topology by combining the previously defined -configurations with the `.spec.replica` section. Below is an example of how to -define a replica cluster: - -```yaml -apiVersion: postgresql.cnpg.io/v1 -kind: Cluster -metadata: - name: cluster-dc-a -spec: - instances: 3 - primaryUpdateStrategy: unsupervised - - storage: - storageClass: csi-hostpath-sc - size: 1Gi - - plugins: - - name: barman-cloud.cloudnative-pg.io - isWALArchiver: true - parameters: - barmanObjectName: minio-store-a - - replica: - self: cluster-dc-a - primary: cluster-dc-a - source: cluster-dc-b - - externalClusters: - - name: cluster-dc-a - plugin: - name: barman-cloud.cloudnative-pg.io - parameters: - barmanObjectName: minio-store-a - - - name: cluster-dc-b - plugin: - name: barman-cloud.cloudnative-pg.io - parameters: - barmanObjectName: minio-store-b -``` - -## Configuring the plugin instance sidecar - -The Barman Cloud Plugin runs as a sidecar container next to each PostgreSQL -instance pod. It manages backup, WAL archiving, and restore processes. - -Configuration comes from multiple `ObjectStore` resources: - -1. The one referenced in the - `.spec.plugins` section of the `Cluster`. This is the - object store used for WAL archiving and base backups. -2. The one referenced in the external cluster - used in the `.spec.replica.source` section of the `Cluster`. This is - used by the log-shipping designated primary to get the WAL files. -3. The one referenced in the - `.spec.bootstrap.recovery.source` section of the `Cluster`. Used by - the initial recovery job to create the cluster from an existing backup. - -You can fine-tune sidecar behavior in the `.spec.instanceSidecarConfiguration` -of your ObjectStore. These settings apply to all PostgreSQL instances that use -this object store. Any updates take effect at the next `Cluster` reconciliation, -and could generate a rollout of the `Cluster`. - -```yaml -apiVersion: barmancloud.cnpg.io/v1 -kind: ObjectStore -metadata: - name: minio-store -spec: - configuration: - # [...] - instanceSidecarConfiguration: - retentionPolicyIntervalSeconds: 1800 - resources: - requests: - memory: "XXX" - cpu: "YYY" - limits: - memory: "XXX" - cpu: "YYY" -``` - -:::note -If more than one `ObjectStore` applies, the `instanceSidecarConfiguration` of -the one set in `.spec.plugins` has priority. -::: diff --git a/web/versioned_docs/version-0.7.0/compression.md b/web/versioned_docs/version-0.7.0/compression.md deleted file mode 100644 index 2abbede..0000000 --- a/web/versioned_docs/version-0.7.0/compression.md +++ /dev/null @@ -1,43 +0,0 @@ ---- -sidebar_position: 80 ---- - -# Compression - - - -By default, backups and WAL files are archived **uncompressed**. However, the -Barman Cloud Plugin supports multiple compression algorithms via -`barman-cloud-backup` and `barman-cloud-wal-archive`, allowing you to optimize -for space, speed, or a balance of both. - -### Supported Compression Algorithms - -- `bzip2` -- `gzip` -- `lz4` (WAL only) -- `snappy` -- `xz` (WAL only) -- `zstd` (WAL only) - -Compression settings for base backups and WAL archives are configured -independently. For implementation details, refer to the corresponding API -definitions: - -- [`DataBackupConfiguration`](https://pkg.go.dev/github.com/cloudnative-pg/barman-cloud/pkg/api#DataBackupConfiguration) -- [`WALBackupConfiguration`](https://pkg.go.dev/github.com/cloudnative-pg/barman-cloud/pkg/api#WalBackupConfiguration) - -:::important -Compression impacts both performance and storage efficiency. Choose the right -algorithm based on your recovery time objectives (RTO), storage capacity, and -network throughput. -::: - -## Compression Benchmark (on MinIO) - -| Compression | Backup Time (ms) | Restore Time (ms) | Uncompressed Size (MB) | Compressed Size (MB) | Ratio | -| ----------- | ---------------- | ----------------- | ---------------------- | -------------------- | ----- | -| None | 10,927 | 7,553 | 395 | 395 | 1.0:1 | -| bzip2 | 25,404 | 13,886 | 395 | 67 | 5.9:1 | -| gzip | 116,281 | 3,077 | 395 | 91 | 4.3:1 | -| snappy | 8,134 | 8,341 | 395 | 166 | 2.4:1 | diff --git a/web/versioned_docs/version-0.7.0/concepts.md b/web/versioned_docs/version-0.7.0/concepts.md deleted file mode 100644 index 3832df3..0000000 --- a/web/versioned_docs/version-0.7.0/concepts.md +++ /dev/null @@ -1,177 +0,0 @@ ---- -sidebar_position: 10 ---- - -# Main Concepts - - - -:::important -Before proceeding, make sure to review the following sections of the -CloudNativePG documentation: - -- [**Backup**](https://cloudnative-pg.io/documentation/current/backup/) -- [**WAL Archiving**](https://cloudnative-pg.io/documentation/current/wal_archiving/) -- [**Recovery**](https://cloudnative-pg.io/documentation/current/recovery/) -::: - -The **Barman Cloud Plugin** enables **hot (online) backups** of PostgreSQL -clusters in CloudNativePG through [`barman-cloud`](https://pgbarman.org), -supporting continuous physical backups and WAL archiving to an **object -store**β€”without interrupting write operations. - -It also supports both **full recovery** and **Point-in-Time Recovery (PITR)** -of a PostgreSQL cluster. - -## The Object Store - -At the core is the [`ObjectStore` custom resource (CRD)](plugin-barman-cloud.v1.md#objectstorespec), -which acts as the interface between the PostgreSQL cluster and the target -object storage system. It allows you to configure: - -- **Authentication and bucket location** via the `.spec.configuration` section -- **WAL archiving** settingsβ€”such as compression type, parallelism, and - server-side encryptionβ€”under `.spec.configuration.wal` -- **Base backup options**β€”with similar settings for compression, concurrency, - and encryptionβ€”under `.spec.configuration.data` -- **Retention policies** to manage the life-cycle of archived WALs and backups - via `.spec.configuration.retentionPolicy` - -WAL files are archived in the `wals` directory, while base backups are stored -as **tarballs** in the `base` directory, following the -[Barman Cloud convention](https://docs.pgbarman.org/cloud/latest/usage/#object-store-layout). - -The plugin also offers advanced capabilities, including -[backup tagging](misc.md#backup-object-tagging) and -[extra options for backups and WAL archiving](misc.md#extra-options-for-backup-and-wal-archiving). - -:::tip -For details, refer to the -[API reference for the `ObjectStore` resource](plugin-barman-cloud.v1.md#objectstorespec). -::: - -## Integration with a CloudNativePG Cluster - -CloudNativePG can delegate continuous backup and recovery responsibilities to -the **Barman Cloud Plugin** by configuring the `.spec.plugins` section of a -`Cluster` resource. This setup requires a corresponding `ObjectStore` resource -to be defined. - -:::important -While it is technically possible to reuse the same `ObjectStore` for multiple -`Cluster` resources within the same namespace, it is strongly recommended to -dedicate one object store per PostgreSQL cluster to ensure data isolation and -operational clarity. -::: - -The following example demonstrates how to configure a CloudNativePG cluster -named `cluster-example` to use a previously defined `ObjectStore` (also named -`cluster-example`) in the same namespace. Setting `isWALArchiver: true` enables -WAL archiving through the plugin: - -```yaml -apiVersion: postgresql.cnpg.io/v1 -kind: Cluster -metadata: - name: cluster-example -spec: - # Other cluster settings... - plugins: - - name: barman-cloud.cloudnative-pg.io - isWALArchiver: true - parameters: - barmanObjectName: cluster-example -``` - -## Backup of a Postgres Cluster - -Once the object store is defined and the `Cluster` is configured to use the -Barman Cloud Plugin, **WAL archiving is activated immediately** on the -PostgreSQL primary. - -Physical base backups are seamlessly managed by CloudNativePG using the -`Backup` and `ScheduledBackup` resources, respectively for -[on-demand](https://cloudnative-pg.io/documentation/current/backup/#on-demand-backups) -and -[scheduled](https://cloudnative-pg.io/documentation/current/backup/#scheduled-backups) -backups. - -To use the Barman Cloud Plugin, you must set the `method` to `plugin` and -configure the `pluginConfiguration` section as shown: - -```yaml -[...] -spec: - method: plugin - pluginConfiguration: - name: barman-cloud.cloudnative-pg.io - [...] -``` - -With this configuration, CloudNativePG supports: - -- Backups from both **primary** and **standby** instances -- Backups from **designated primaries** in a distributed topology using - [replica clusters](https://cloudnative-pg.io/documentation/current/replica_cluster/) - -:::tip -For details on how to back up from a standby, refer to the official documentation: -[Backup from a standby](https://cloudnative-pg.io/documentation/current/backup/#backup-from-a-standby). -::: - -:::important -Both backup and WAL archiving operations are executed by sidecar containers -running in the same pod as the PostgreSQL `Cluster` primary instanceβ€”except -when backups are taken from a standby, in which case the sidecar runs alongside -the standby pod. -The sidecar containers use a [dedicated container image](images.md) that -includes only the supported version of Barman Cloud. -::: - -## Recovery of a Postgres Cluster - -In PostgreSQL, *recovery* refers to the process of starting a database instance -from an existing backup. The Barman Cloud Plugin integrates with CloudNativePG -to support both **full recovery** and **Point-in-Time Recovery (PITR)** from an -object store. - -Recovery in this context is *not in-place*: it bootstraps a brand-new -PostgreSQL cluster from a backup and replays the necessary WAL files to reach -the desired recovery target. - -To perform a recovery, define an *external cluster* that references the -appropriate `ObjectStore`, and use it as the source in the `bootstrap` section -of the target cluster: - -```yaml -[...] -spec: - [...] - bootstrap: - recovery: - source: source - externalClusters: - - name: source - plugin: - name: barman-cloud.cloudnative-pg.io - parameters: - barmanObjectName: cluster-example - serverName: cluster-example - [...] -``` - -The critical element here is the `externalClusters` section of the `Cluster` -resource, where the `plugin` stanza instructs CloudNativePG to use the Barman -Cloud Plugin to access the object store for recovery. - -This same mechanism can be used for a variety of scenarios enabled by the -CloudNativePG API, including: - -* **Full cluster recovery** from the latest backup -* **Point-in-Time Recovery (PITR)** -* Bootstrapping **replica clusters** in a distributed topology - -:::tip -For complete instructions and advanced use cases, refer to the official -[Recovery documentation](https://cloudnative-pg.io/documentation/current/recovery/). -::: diff --git a/web/versioned_docs/version-0.7.0/images.md b/web/versioned_docs/version-0.7.0/images.md deleted file mode 100644 index f6c32d3..0000000 --- a/web/versioned_docs/version-0.7.0/images.md +++ /dev/null @@ -1,37 +0,0 @@ ---- -sidebar_position: 99 ---- - -# Container Images - - - -The Barman Cloud Plugin is distributed using two container images: - -- One for deploying the plugin components -- One for the sidecar that runs alongside each PostgreSQL instance in a - CloudNativePG `Cluster` using the plugin - -## Plugin Container Image - -The plugin image contains the logic required to operate the Barman Cloud Plugin -within your Kubernetes environment with CloudNativePG. It is published on the -GitHub Container Registry at `ghcr.io/cloudnative-pg/plugin-barman-cloud`. - -This image is built from the -[`Dockerfile.plugin`](https://github.com/cloudnative-pg/plugin-barman-cloud/blob/main/containers/Dockerfile.plugin) -in the plugin repository. - -## Sidecar Container Image - -The sidecar image is used within each PostgreSQL pod in the cluster. It -includes the latest supported version of Barman Cloud and is responsible for -performing WAL archiving and backups on behalf of CloudNativePG. - -It is available at `ghcr.io/cloudnative-pg/plugin-barman-cloud-sidecar` and is -built from the -[`Dockerfile.sidecar`](https://github.com/cloudnative-pg/plugin-barman-cloud/blob/main/containers/Dockerfile.sidecar). - -These sidecar images are designed to work seamlessly with the -[`minimal` PostgreSQL container images](https://github.com/cloudnative-pg/postgres-containers?tab=readme-ov-file#minimal-images) -maintained by the CloudNativePG Community. diff --git a/web/versioned_docs/version-0.7.0/installation.mdx b/web/versioned_docs/version-0.7.0/installation.mdx deleted file mode 100644 index 027d1e8..0000000 --- a/web/versioned_docs/version-0.7.0/installation.mdx +++ /dev/null @@ -1,109 +0,0 @@ ---- -sidebar_position: 20 ---- - -# Installation - -:::important -1. The plugin **must** be installed in the same namespace as the CloudNativePG - operator (typically `cnpg-system`). - -2. Keep in mind that the operator's **listening namespaces** may differ from its - installation namespace. Double-check this to avoid configuration issues. -::: - -## Verifying the Requirements - -Before installing the plugin, make sure the [requirements](intro.md#requirements) are met. - -### CloudNativePG Version - -Ensure you're running a version of CloudNativePG that is compatible with the -plugin. If installed in the default `cnpg-system` namespace, you can verify the -version with: - -```sh -kubectl get deployment -n cnpg-system cnpg-controller-manager \ - -o jsonpath="{.spec.template.spec.containers[*].image}" -``` - -Example output: - -```output -ghcr.io/cloudnative-pg/cloudnative-pg:1.26.0 -``` - -The version **must be 1.26 or newer**. - -### cert-manager - -Use the [cmctl](https://cert-manager.io/docs/reference/cmctl/#installation) -tool to confirm that `cert-manager` is installed and available: - -```sh -cmctl check api -``` - -Example output: - -```output -The cert-manager API is ready -``` - -Both checks are required before proceeding with the installation. - -## Installing the Barman Cloud Plugin - -import { InstallationSnippet } from '@site/src/components/Installation'; - -Install the plugin using `kubectl` by applying the manifest for the latest -release: - - - -Example output: - -```output -customresourcedefinition.apiextensions.k8s.io/objectstores.barmancloud.cnpg.io created -serviceaccount/plugin-barman-cloud created -role.rbac.authorization.k8s.io/leader-election-role created -clusterrole.rbac.authorization.k8s.io/metrics-auth-role created -clusterrole.rbac.authorization.k8s.io/metrics-reader created -clusterrole.rbac.authorization.k8s.io/objectstore-editor-role created -clusterrole.rbac.authorization.k8s.io/objectstore-viewer-role created -clusterrole.rbac.authorization.k8s.io/plugin-barman-cloud created -rolebinding.rbac.authorization.k8s.io/leader-election-rolebinding created -clusterrolebinding.rbac.authorization.k8s.io/metrics-auth-rolebinding created -clusterrolebinding.rbac.authorization.k8s.io/plugin-barman-cloud-binding created -secret/plugin-barman-cloud-8tfddg42gf created -service/barman-cloud created -deployment.apps/barman-cloud configured -certificate.cert-manager.io/barman-cloud-client created -certificate.cert-manager.io/barman-cloud-server created -issuer.cert-manager.io/selfsigned-issuer created -``` - -Finally, check that the deployment is up and running: - -```sh -kubectl rollout status deployment \ - -n cnpg-system barman-cloud -``` - -Example output: - -```output -deployment "barman-cloud" successfully rolled out -``` - -This confirms that the plugin is deployed and ready to use. - -## Testing the latest development snapshot - -You can also test the latest development snapshot of the plugin with the -following command: - -```sh -kubectl apply -f \ - https://raw.githubusercontent.com/cloudnative-pg/plugin-barman-cloud/refs/heads/main/manifest.yaml -``` diff --git a/web/versioned_docs/version-0.7.0/intro.md b/web/versioned_docs/version-0.7.0/intro.md deleted file mode 100644 index 9781d0d..0000000 --- a/web/versioned_docs/version-0.7.0/intro.md +++ /dev/null @@ -1,86 +0,0 @@ ---- -sidebar_position: 1 -sidebar_label: "Introduction" ---- - -# Barman Cloud Plugin - - - -The **Barman Cloud Plugin** for [CloudNativePG](https://cloudnative-pg.io/) -enables online continuous physical backups of PostgreSQL clusters to object storage -using the `barman-cloud` suite from the [Barman](https://docs.pgbarman.org/release/latest/) -project. - -:::important -If you plan to migrate your existing CloudNativePG cluster to the new -plugin-based approach using the Barman Cloud Plugin, see -["Migrating from Built-in CloudNativePG Backup"](migration.md) -for detailed instructions. -::: - -## Requirements - -Before using the Barman Cloud Plugin, ensure that the following components are -installed and properly configured: - -- [CloudNativePG](https://cloudnative-pg.io) version 1.26 or later - - - We strongly recommend version 1.27.0 or later, which includes improved - error handling and status reporting for the plugin. - - If you are running an earlier release, refer to the - [upgrade guide](https://cloudnative-pg.io/documentation/current/installation_upgrade). - -- [cert-manager](https://cert-manager.io/) - - - The recommended way to enable secure TLS communication between the plugin - and the operator. - - Alternatively, you can provide your own certificate bundles. See the - [CloudNativePG documentation on TLS configuration](https://cloudnative-pg.io/documentation/current/cnpg_i/#configuring-tls-certificates). - -- [`kubectl-cnpg`](https://cloudnative-pg.io/documentation/current/kubectl-plugin/) - plugin (optional but recommended) - - - Simplifies debugging and monitoring with additional status and inspection - commands. - - Multiple installation options are available in the - [installation guide](https://cloudnative-pg.io/documentation/current/kubectl-plugin/#install). - -## Key Features - -This plugin provides the following capabilities: - -- Physical online backup of the data directory -- Physical restore of the data directory -- Write-Ahead Log (WAL) archiving -- WAL restore -- Full cluster recovery -- Point-in-Time Recovery (PITR) -- Seamless integration with replica clusters for bootstrap and WAL restore from archive - -:::important -The Barman Cloud Plugin is designed to **replace the in-tree object storage support** -previously provided via the `.spec.backup.barmanObjectStore` section in the -`Cluster` resource. -Backups created using the in-tree approach are fully supported and compatible -with this plugin. -::: - -## Supported Object Storage Providers - -The plugin works with all storage backends supported by `barman-cloud`, including: - -- **Amazon S3** -- **Google Cloud Storage** -- **Microsoft Azure Blob Storage** - -In addition, the following S3-compatible and simulator solutions have been -tested and verified: - -- [MinIO](https://min.io/) – An S3-compatible storage solution -- [Azurite](https://github.com/Azure/Azurite) – A simulator for Azure Blob Storage -- [fake-gcs-server](https://github.com/fsouza/fake-gcs-server) – A simulator for Google Cloud Storage - -:::tip -For more details, refer to [Object Store Providers](object_stores.md). -::: diff --git a/web/versioned_docs/version-0.7.0/migration.md b/web/versioned_docs/version-0.7.0/migration.md deleted file mode 100644 index 43c4b80..0000000 --- a/web/versioned_docs/version-0.7.0/migration.md +++ /dev/null @@ -1,259 +0,0 @@ ---- -sidebar_position: 40 ---- - -# Migrating from Built-in CloudNativePG Backup - - - -The in-tree support for Barman Cloud in CloudNativePG is **deprecated starting -from version 1.26** and will be removed in a future release. - -If you're currently relying on the built-in Barman Cloud integration, you can -migrate seamlessly to the new **plugin-based architecture** using the Barman -Cloud Plugin, without data loss. Follow these steps: - -- [Install the Barman Cloud Plugin](installation.mdx) -- Create an `ObjectStore` resource by translating the contents of the - `.spec.backup.barmanObjectStore` section from your existing `Cluster` - definition -- Modify the `Cluster` resource in a single atomic change to switch from - in-tree backup to the plugin -- Update any `ScheduledBackup` resources to use the plugin -- Update the `externalClusters` configuration, where applicable - -:::tip -For a working example, refer to [this commit](https://github.com/cloudnative-pg/cnpg-playground/commit/596f30e252896edf8f734991c3538df87630f6f7) -from the [CloudNativePG Playground project](https://github.com/cloudnative-pg/cnpg-playground), -which demonstrates a full migration. -::: - ---- - -## Step 1: Define the `ObjectStore` - -Begin by creating an `ObjectStore` resource in the same namespace as your -PostgreSQL `Cluster`. - -There is a **direct mapping** between the `.spec.backup.barmanObjectStore` -section in CloudNativePG and the `.spec.configuration` field in the -`ObjectStore` CR. The conversion is mostly mechanical, with one key difference: - -:::warning -In the plugin architecture, retention policies are defined as part of the `ObjectStore`. -In contrast, the in-tree implementation defined them at the `Cluster` level. -::: - -If your `Cluster` used `.spec.backup.retentionPolicy`, move that configuration -to `.spec.retentionPolicy` in the `ObjectStore`. - ---- - -### Example - -Here’s an excerpt from a traditional in-tree CloudNativePG backup configuration -taken from the CloudNativePG Playground project: - -```yaml -apiVersion: postgresql.cnpg.io/v1 -kind: Cluster -metadata: - name: pg-eu -spec: - # [...] - backup: - barmanObjectStore: - destinationPath: s3://backups/ - endpointURL: http://minio-eu:9000 - s3Credentials: - accessKeyId: - name: minio-eu - key: ACCESS_KEY_ID - secretAccessKey: - name: minio-eu - key: ACCESS_SECRET_KEY - wal: - compression: gzip -``` - -This configuration translates to the following `ObjectStore` resource for the -plugin: - -```yaml -apiVersion: barmancloud.cnpg.io/v1 -kind: ObjectStore -metadata: - name: minio-eu -spec: - configuration: - destinationPath: s3://backups/ - endpointURL: http://minio-eu:9000 - s3Credentials: - accessKeyId: - name: minio-eu - key: ACCESS_KEY_ID - secretAccessKey: - name: minio-eu - key: ACCESS_SECRET_KEY - wal: - compression: gzip -``` - -As you can see, the contents of `barmanObjectStore` have been copied directly -under the `configuration` field of the `ObjectStore` resource, using the same -secret references. - -## Step 2: Update the `Cluster` for plugin WAL archiving - -Once the `ObjectStore` resource is in place, update the `Cluster` resource as -follows in a single atomic change: - -- Remove the `.spec.backup.barmanObjectStore` section -- Remove `.spec.backup.retentionPolicy` if it was defined (as it is now in the - `ObjectStore`) -- Remove the entire `spec.backup` section if it is now empty -- Add `barman-cloud.cloudnative-pg.io` to the `plugins` list, as described in - [Configuring WAL archiving](usage.md#configuring-wal-archiving) - -This will trigger a rolling update of the `Cluster`, switching continuous -backup from the in-tree implementation to the plugin-based approach. - -### Example - -The updated `pg-eu` cluster will have this configuration instead of the -previous `backup` section: - -```yaml - plugins: - - name: barman-cloud.cloudnative-pg.io - isWALArchiver: true - parameters: - barmanObjectName: minio-eu -``` - ---- - -## Step 3: Update the `ScheduledBackup` - -After switching the `Cluster` to use the plugin, update your `ScheduledBackup` -resources to match. - -Set the backup `method` to `plugin` and reference the plugin name via -`pluginConfiguration`, as shown in ["Performing a base backup"](usage.md#performing-a-base-backup). - -### Example - -Original in-tree `ScheduledBackup`: - -```yaml -apiVersion: postgresql.cnpg.io/v1 -kind: ScheduledBackup -metadata: - name: pg-eu-backup -spec: - cluster: - name: pg-eu - schedule: '0 0 0 * * *' - backupOwnerReference: self -``` - -Updated version using the plugin: - -```yaml -apiVersion: postgresql.cnpg.io/v1 -kind: ScheduledBackup -metadata: - name: pg-eu-backup -spec: - cluster: - name: pg-eu - schedule: '0 0 0 * * *' - backupOwnerReference: self - method: plugin - pluginConfiguration: - name: barman-cloud.cloudnative-pg.io -``` - ---- - -## Step 4: Update the `externalClusters` configuration - -If your `Cluster` relies on one or more external clusters that use the in-tree -Barman Cloud integration, you need to update those configurations to use the -plugin-based architecture. - -When a replica cluster fetches WAL files or base backups from an external -source that used the built-in backup method, follow these steps: - -1. Create a corresponding `ObjectStore` resource for the external cluster, as - shown in [Step 1](#step-1-define-the-objectstore) -2. Update the `externalClusters` section of your replica cluster to use the - plugin instead of the in-tree `barmanObjectStore` field - -### Example - -Consider the original configuration using in-tree Barman Cloud: - -```yaml -apiVersion: postgresql.cnpg.io/v1 -kind: Cluster -metadata: - name: pg-us -spec: - # [...] - externalClusters: - - name: pg-eu - barmanObjectStore: - destinationPath: s3://backups/ - endpointURL: http://minio-eu:9000 - serverName: pg-eu - s3Credentials: - accessKeyId: - name: minio-eu - key: ACCESS_KEY_ID - secretAccessKey: - name: minio-eu - key: ACCESS_SECRET_KEY - wal: - compression: gzip -``` - -Create the `ObjectStore` resource for the external cluster: - -```yaml -apiVersion: barmancloud.cnpg.io/v1 -kind: ObjectStore -metadata: - name: minio-eu -spec: - configuration: - destinationPath: s3://backups/ - endpointURL: http://minio-eu:9000 - s3Credentials: - accessKeyId: - name: minio-eu - key: ACCESS_KEY_ID - secretAccessKey: - name: minio-eu - key: ACCESS_SECRET_KEY - wal: - compression: gzip -``` - -Update the external cluster configuration to use the plugin: - -```yaml -apiVersion: postgresql.cnpg.io/v1 -kind: Cluster -metadata: - name: pg-us -spec: - # [...] - externalClusters: - - name: pg-eu - plugin: - name: barman-cloud.cloudnative-pg.io - parameters: - barmanObjectName: minio-eu - serverName: pg-eu -``` diff --git a/web/versioned_docs/version-0.7.0/misc.md b/web/versioned_docs/version-0.7.0/misc.md deleted file mode 100644 index 4d3cefc..0000000 --- a/web/versioned_docs/version-0.7.0/misc.md +++ /dev/null @@ -1,76 +0,0 @@ ---- -sidebar_position: 90 ---- - -# Miscellaneous - - - -## Backup Object Tagging - -You can attach key-value metadata tags to backup artifactsβ€”such as base -backups, WAL files, and history filesβ€”via the `.spec.configuration` section of -the `ObjectStore` resource. - -- `tags`: applied to base backups and WAL files -- `historyTags`: applied to history files only - -### Example - -```yaml -apiVersion: barmancloud.cnpg.io/v1 -kind: ObjectStore -metadata: - name: my-store -spec: - configuration: - [...] - tags: - backupRetentionPolicy: "expire" - historyTags: - backupRetentionPolicy: "keep" - [...] -``` - -## Extra Options for Backup and WAL Archiving - -You can pass additional command-line arguments to `barman-cloud-backup` and -`barman-cloud-wal-archive` using the `additionalCommandArgs` field in the -`ObjectStore` configuration. - -- `.spec.configuration.data.additionalCommandArgs`: for `barman-cloud-backup` -- `.spec.configuration.wal.additionalCommandArgs`: for `barman-cloud-wal-archive` - -Each field accepts a list of string arguments. If an argument is already -configured elsewhere in the plugin, the duplicate will be ignored. - -### Example: Extra Backup Options - -```yaml -kind: ObjectStore -metadata: - name: my-store -spec: - configuration: - data: - additionalCommandArgs: - - "--min-chunk-size=5MB" - - "--read-timeout=60" -``` - -### Example: Extra WAL Archive Options - -```yaml -kind: ObjectStore -metadata: - name: my-store -spec: - configuration: - wal: - additionalCommandArgs: - - "--max-concurrency=1" - - "--read-timeout=60" -``` - -For a complete list of supported options, refer to the -[official Barman Cloud documentation](https://docs.pgbarman.org/release/latest/). diff --git a/web/versioned_docs/version-0.7.0/object_stores.md b/web/versioned_docs/version-0.7.0/object_stores.md deleted file mode 100644 index 74e0473..0000000 --- a/web/versioned_docs/version-0.7.0/object_stores.md +++ /dev/null @@ -1,454 +0,0 @@ ---- -sidebar_position: 50 ---- - -# Object Store Providers - - - -The Barman Cloud Plugin enables the storage of PostgreSQL cluster backup files -in any object storage service supported by the -[Barman Cloud infrastructure](https://docs.pgbarman.org/release/latest/). - -Currently, Barman Cloud supports the following providers: - -- [Amazon S3](#aws-s3) -- [Microsoft Azure Blob Storage](#azure-blob-storage) -- [Google Cloud Storage](#google-cloud-storage) - -You may also use any S3- or Azure-compatible implementation of the above -services. - -To configure object storage with Barman Cloud, you must define an -[`ObjectStore` object](plugin-barman-cloud.v1.md#objectstore), which -establishes the connection between your PostgreSQL cluster and the object -storage backend. - -Configuration details β€” particularly around authentication β€” will vary depending on -the specific object storage provider you are using. - -The following sections detail the setup for each. - ---- - -## AWS S3 - -[AWS Simple Storage Service (S3)](https://aws.amazon.com/s3/) is one of the -most widely adopted object storage solutions. - -The Barman Cloud plugin for CloudNativePG integrates with S3 through two -primary authentication mechanisms: - -- [IAM Roles for Service Accounts (IRSA)](https://docs.aws.amazon.com/eks/latest/userguide/iam-roles-for-service-accounts.html) β€” - recommended for clusters running on EKS -- Access keys β€” using `ACCESS_KEY_ID` and `ACCESS_SECRET_KEY` credentials - -### Access Keys - -To authenticate using access keys, you’ll need: - -- `ACCESS_KEY_ID`: the public key used to authenticate to S3 -- `ACCESS_SECRET_KEY`: the corresponding secret key -- `ACCESS_SESSION_TOKEN`: (optional) a temporary session token, if required - -These credentials must be stored securely in a Kubernetes secret: - -```sh -kubectl create secret generic aws-creds \ - --from-literal=ACCESS_KEY_ID= \ - --from-literal=ACCESS_SECRET_KEY= -# --from-literal=ACCESS_SESSION_TOKEN= # if required -``` - -The credentials will be encrypted at rest if your Kubernetes environment -supports it. - -You can then reference the secret in your `ObjectStore` definition: - -```yaml -apiVersion: barmancloud.cnpg.io/v1 -kind: ObjectStore -metadata: - name: aws-store -spec: - configuration: - destinationPath: "s3://BUCKET_NAME/path/to/folder" - s3Credentials: - accessKeyId: - name: aws-creds - key: ACCESS_KEY_ID - secretAccessKey: - name: aws-creds - key: ACCESS_SECRET_KEY - [...] -``` - -### IAM Role for Service Account (IRSA) - -To use IRSA with EKS, configure the service account of the PostgreSQL cluster -with the appropriate annotation: - -```yaml -apiVersion: postgresql.cnpg.io/v1 -kind: Cluster -metadata: - [...] -spec: - serviceAccountTemplate: - metadata: - annotations: - eks.amazonaws.com/role-arn: arn:[...] - [...] -``` - -### S3 Lifecycle Policy - -Barman Cloud uploads backup files to S3 but does not modify them afterward. -To enhance data durability and protect against accidental or malicious loss, -it's recommended to implement the following best practices: - -- Enable object versioning -- Enable object locking to prevent objects from being deleted or overwritten - for a defined period or indefinitely (this provides an additional layer of - protection against accidental deletion and ransomware attacks) -- Set lifecycle rules to expire current versions a few days after your Barman - retention window -- Expire non-current versions after a longer period - -These strategies help you safeguard backups without requiring broad delete -permissions, ensuring both security and compliance with minimal operational -overhead. - - -### S3-Compatible Storage Providers - -You can use S3-compatible services like **MinIO**, **Linode (Akamai) Object Storage**, -or **DigitalOcean Spaces** by specifying a custom `endpointURL`. - -Example with Linode (Akamai) Object Storage (`us-east1`): - -```yaml -apiVersion: barmancloud.cnpg.io/v1 -kind: ObjectStore -metadata: - name: linode-store -spec: - configuration: - destinationPath: "s3://BUCKET_NAME/" - endpointURL: "https://us-east1.linodeobjects.com" - s3Credentials: - [...] - [...] -``` - -Recent changes to the [boto3 implementation](https://github.com/boto/boto3/issues/4392) -of [Amazon S3 Data Integrity Protections](https://docs.aws.amazon.com/sdkref/latest/guide/feature-dataintegrity.html) -may lead to the `x-amz-content-sha256` error when using the Barman Cloud -Plugin. - -If you encounter this issue (see [GitHub issue #393](https://github.com/cloudnative-pg/plugin-barman-cloud/issues/393)), -you can apply the following workaround by setting specific environment -variables in the `ObjectStore` resource: - -```yaml -apiVersion: barmancloud.cnpg.io/v1 -kind: ObjectStore -metadata: - name: linode-store -spec: - instanceSidecarConfiguration: - env: - - name: AWS_REQUEST_CHECKSUM_CALCULATION - value: when_required - - name: AWS_RESPONSE_CHECKSUM_VALIDATION - value: when_required - [...] -``` - -These settings ensure that checksum calculations and validations are only -applied when explicitly required, avoiding compatibility issues with certain -S3-compatible storage providers. - -Example with DigitalOcean Spaces (SFO3, path-style): - -```yaml -apiVersion: barmancloud.cnpg.io/v1 -kind: ObjectStore -metadata: - name: digitalocean-store -spec: - configuration: - destinationPath: "s3://BUCKET_NAME/path/to/folder" - endpointURL: "https://sfo3.digitaloceanspaces.com" - s3Credentials: - [...] - [...] -``` - -### Using Object Storage with a Private CA - -For object storage services (e.g., MinIO) that use HTTPS with certificates -signed by a private CA, set the `endpointCA` field in the `ObjectStore` -definition. Unless you already have it, create a Kubernetes `Secret` with the -CA bundle: - -```sh -kubectl create secret generic my-ca-secret --from-file=ca.crt -``` - -Then reference it: - -```yaml -apiVersion: barmancloud.cnpg.io/v1 -kind: ObjectStore -metadata: - name: minio-store -spec: - configuration: - endpointURL: - endpointCA: - name: my-ca-secret - key: ca.crt - [...] -``` - - -:::note -If you want `ConfigMaps` and `Secrets` to be **automatically** reloaded by -instances, you can add a label with the key `cnpg.io/reload` to the -`Secrets`/`ConfigMaps`. Otherwise, you will have to reload the instances using the -`kubectl cnpg reload` subcommand. -::: - ---- - -## Azure Blob Storage - -[Azure Blob Storage](https://azure.microsoft.com/en-us/services/storage/blobs/) -is Microsoft’s cloud-based object storage solution. - -Barman Cloud supports the following authentication methods: - -- [Connection String](https://learn.microsoft.com/en-us/azure/storage/common/storage-configure-connection-string) -- Storage Account Name + [Access Key](https://learn.microsoft.com/en-us/azure/storage/common/storage-account-keys-manage) -- Storage Account Name + [SAS Token](https://learn.microsoft.com/en-us/azure/storage/blobs/sas-service-create) -- [Azure AD Workload Identity](https://azure.github.io/azure-workload-identity/docs/introduction.html) - -### Azure AD Workload Identity - -This method avoids storing credentials in Kubernetes via the -`.spec.configuration.inheritFromAzureAD` option: - -```yaml -apiVersion: barmancloud.cnpg.io/v1 -kind: ObjectStore -metadata: - name: azure-store -spec: - configuration: - destinationPath: "" - azureCredentials: - inheritFromAzureAD: true - [...] -``` - -### Access Key, SAS Token, or Connection String - -Store credentials in a Kubernetes secret: - -```sh -kubectl create secret generic azure-creds \ - --from-literal=AZURE_STORAGE_ACCOUNT= \ - --from-literal=AZURE_STORAGE_KEY= \ - --from-literal=AZURE_STORAGE_SAS_TOKEN= \ - --from-literal=AZURE_STORAGE_CONNECTION_STRING= -``` - -Then reference the required keys in your `ObjectStore`: - -```yaml -apiVersion: barmancloud.cnpg.io/v1 -kind: ObjectStore -metadata: - name: azure-store -spec: - configuration: - destinationPath: "" - azureCredentials: - connectionString: - name: azure-creds - key: AZURE_CONNECTION_STRING - storageAccount: - name: azure-creds - key: AZURE_STORAGE_ACCOUNT - storageKey: - name: azure-creds - key: AZURE_STORAGE_KEY - storageSasToken: - name: azure-creds - key: AZURE_STORAGE_SAS_TOKEN - [...] -``` - -For Azure Blob, the destination path format is: - -``` -://..core.windows.net// -``` - -### Azure-Compatible Providers - -If you're using a different implementation (e.g., Azurite or emulator): - -``` -://:/// -``` - ---- - -## Google Cloud Storage - -[Google Cloud Storage](https://cloud.google.com/storage/) is supported with two -authentication modes: - -- **GKE Workload Identity** (recommended inside Google Kubernetes Engine) -- **Service Account JSON key** via the `GOOGLE_APPLICATION_CREDENTIALS` environment variable - -### GKE Workload Identity - -Use the [Workload Identity authentication](https://cloud.google.com/kubernetes-engine/docs/how-to/workload-identity) -when running in GKE: - -1. Set `googleCredentials.gkeEnvironment` to `true` in the `ObjectStore` - resource -2. Annotate the `serviceAccountTemplate` in the `Cluster` resource with the GCP - service account - -For example, in the `ObjectStore` resource: - -```yaml -apiVersion: barmancloud.cnpg.io/v1 -kind: ObjectStore -metadata: - name: google-store -spec: - configuration: - destinationPath: "gs:///" - googleCredentials: - gkeEnvironment: true -``` - -And in the `Cluster` resource: - -```yaml -apiVersion: postgresql.cnpg.io/v1 -kind: Cluster -spec: - serviceAccountTemplate: - metadata: - annotations: - iam.gke.io/gcp-service-account: [...].iam.gserviceaccount.com -``` - -### Service Account JSON Key - -Follow Google’s [authentication setup](https://cloud.google.com/docs/authentication/getting-started), -then: - -```sh -kubectl create secret generic backup-creds --from-file=gcsCredentials=gcs_credentials_file.json -``` - -```yaml -apiVersion: barmancloud.cnpg.io/v1 -kind: ObjectStore -metadata: - name: google-store -spec: - configuration: - destinationPath: "gs:///" - googleCredentials: - applicationCredentials: - name: backup-creds - key: gcsCredentials - [...] -``` - -:::important -This authentication method generates a JSON file within the container -with all the credentials required to access your Google Cloud Storage -bucket. As a result, if someone gains access to the `Pod`, they will also have -write permissions to the bucket. -::: - ---- - - -## MinIO Object Store - -In order to use the Tenant resource you first need to deploy the -[MinIO operator](https://docs.min.io/community/minio-object-store/operations/deployments/installation.html). -For the latest documentation of MinIO, please refer to the -[MinIO official documentation](https://docs.min.io/community/minio-object-store/). - -MinIO Object Store's API is compatible with S3, and the default configuration of the Tenant -will create these services: -- `-console` on port 9090 (with autocert) or 9443 (without autocert) -- `-hl` on port 9000 -Where `` is the `metadata.name` you assigned to your Tenant resource. - -:::note -The `-console` service will only be available if you have enabled the -[MinIO Console](https://docs.min.io/community/minio-object-store/administration/minio-console.html). - -For example, the following Tenant: -```yml -apiVersion: minio.min.io/v2 -kind: Tenant -metadata: - name: cnpg-backups -spec: - [...] -``` -would have services called `cnpg-backups-console` and `cnpg-backups-hl` respectively. - -The `console` service is for managing the tenant, while the `hl` service exposes the S3 -compatible API. If your tenant is configured with `requestAutoCert` you will communicate -to these services over HTTPS, if not you will use HTTP. - -For authentication you can use your username and password, or create an access key. -Whichever method you choose, it has to be stored as a secret. - -```sh -kubectl create secret generic minio-creds \ - --from-literal=MINIO_ACCESS_KEY= \ - --from-literal=MINIO_SECRET_KEY= -``` - -Finally, create the Barman ObjectStore: - -```yaml -apiVersion: barmancloud.cnpg.io/v1 -kind: ObjectStore -metadata: - name: minio-store -spec: - configuration: - destinationPath: s3://BUCKET_NAME/ - endpointURL: http://-hl:9000 - s3Credentials: - accessKeyId: - name: minio-creds - key: MINIO_ACCESS_KEY - secretAccessKey: - name: minio-creds - key: MINIO_SECRET_KEY - [...] -``` - -:::important -Verify on `s3://BUCKET_NAME/` the presence of archived WAL files before -proceeding with a backup. -::: - ---- diff --git a/web/versioned_docs/version-0.7.0/parameters.md b/web/versioned_docs/version-0.7.0/parameters.md deleted file mode 100644 index ca0cd2b..0000000 --- a/web/versioned_docs/version-0.7.0/parameters.md +++ /dev/null @@ -1,19 +0,0 @@ ---- -sidebar_position: 100 ---- - -# Parameters - - - -The following parameters are available for the Barman Cloud Plugin: - -- `barmanObjectName`: references the `ObjectStore` resource to be used by the - plugin. -- `serverName`: Specifies the server name in the object store. - -:::important -The `serverName` parameter in the `ObjectStore` resource is retained solely for -API compatibility with the in-tree `barmanObjectStore` and must always be left empty. -When needed, use the `serverName` plugin parameter in the Cluster configuration instead. -::: diff --git a/web/versioned_docs/version-0.7.0/plugin-barman-cloud.v1.md b/web/versioned_docs/version-0.7.0/plugin-barman-cloud.v1.md deleted file mode 100644 index 7bd607c..0000000 --- a/web/versioned_docs/version-0.7.0/plugin-barman-cloud.v1.md +++ /dev/null @@ -1,108 +0,0 @@ -# API Reference - -## Packages -- [barmancloud.cnpg.io/v1](#barmancloudcnpgiov1) - - -## barmancloud.cnpg.io/v1 - -Package v1 contains API Schema definitions for the barmancloud v1 API group - -### Resource Types -- [ObjectStore](#objectstore) - - - -#### InstanceSidecarConfiguration - - - -InstanceSidecarConfiguration defines the configuration for the sidecar that runs in the instance pods. - - - -_Appears in:_ -- [ObjectStoreSpec](#objectstorespec) - -| Field | Description | Required | Default | Validation | -| --- | --- | --- | --- | --- | -| `env` _[EnvVar](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#envvar-v1-core) array_ | The environment to be explicitly passed to the sidecar | | | | -| `retentionPolicyIntervalSeconds` _integer_ | The retentionCheckInterval defines the frequency at which the
system checks and enforces retention policies. | | 1800 | | -| `resources` _[ResourceRequirements](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcerequirements-v1-core)_ | Resources define cpu/memory requests and limits for the sidecar that runs in the instance pods. | | | | -| `additionalContainerArgs` _string array_ | AdditionalContainerArgs is an optional list of command-line arguments
to be passed to the sidecar container when it starts.
The provided arguments are appended to the container’s default arguments. | | | | -| `logLevel` _string_ | The log level for PostgreSQL instances. Valid values are: `error`, `warning`, `info` (default), `debug`, `trace` | | info | Enum: [error warning info debug trace]
| - - -#### ObjectStore - - - -ObjectStore is the Schema for the objectstores API. - - - - - -| Field | Description | Required | Default | Validation | -| --- | --- | --- | --- | --- | -| `apiVersion` _string_ | `barmancloud.cnpg.io/v1` | True | | | -| `kind` _string_ | `ObjectStore` | True | | | -| `metadata` _[ObjectMeta](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#objectmeta-v1-meta)_ | Refer to Kubernetes API documentation for fields of `metadata`. | True | | | -| `spec` _[ObjectStoreSpec](#objectstorespec)_ | Specification of the desired behavior of the ObjectStore.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status | True | | | -| `status` _[ObjectStoreStatus](#objectstorestatus)_ | Most recently observed status of the ObjectStore. This data may not be up to
date. Populated by the system. Read-only.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status | | | | - - -#### ObjectStoreSpec - - - -ObjectStoreSpec defines the desired state of ObjectStore. - - - -_Appears in:_ -- [ObjectStore](#objectstore) - -| Field | Description | Required | Default | Validation | -| --- | --- | --- | --- | --- | -| `configuration` _[BarmanObjectStoreConfiguration](https://pkg.go.dev/github.com/cloudnative-pg/barman-cloud/pkg/api#BarmanObjectStoreConfiguration)_ | The configuration for the barman-cloud tool suite | True | | | -| `retentionPolicy` _string_ | RetentionPolicy is the retention policy to be used for backups
and WALs (i.e. '60d'). The retention policy is expressed in the form
of `XXu` where `XX` is a positive integer and `u` is in `[dwm]` -
days, weeks, months. | | | Pattern: `^[1-9][0-9]*[dwm]$`
| -| `instanceSidecarConfiguration` _[InstanceSidecarConfiguration](#instancesidecarconfiguration)_ | The configuration for the sidecar that runs in the instance pods | | | | - - -#### ObjectStoreStatus - - - -ObjectStoreStatus defines the observed state of ObjectStore. - - - -_Appears in:_ -- [ObjectStore](#objectstore) - -| Field | Description | Required | Default | Validation | -| --- | --- | --- | --- | --- | -| `serverRecoveryWindow` _object (keys:string, values:[RecoveryWindow](#recoverywindow))_ | ServerRecoveryWindow maps each server to its recovery window | True | | | - - -#### RecoveryWindow - - - -RecoveryWindow represents the time span between the first -recoverability point and the last successful backup of a PostgreSQL -server, defining the period during which data can be restored. - - - -_Appears in:_ -- [ObjectStoreStatus](#objectstorestatus) - -| Field | Description | Required | Default | Validation | -| --- | --- | --- | --- | --- | -| `firstRecoverabilityPoint` _[Time](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#time-v1-meta)_ | The first recoverability point in a PostgreSQL server refers to
the earliest point in time to which the database can be
restored. | True | | | -| `lastSuccessfulBackupTime` _[Time](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#time-v1-meta)_ | The last successful backup time | True | | | -| `lastFailedBackupTime` _[Time](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#time-v1-meta)_ | The last failed backup time | True | | | - - diff --git a/web/versioned_docs/version-0.7.0/retention.md b/web/versioned_docs/version-0.7.0/retention.md deleted file mode 100644 index fefbd08..0000000 --- a/web/versioned_docs/version-0.7.0/retention.md +++ /dev/null @@ -1,38 +0,0 @@ ---- -sidebar_position: 60 ---- - -# Retention Policies - - - -The Barman Cloud Plugin supports **automated cleanup of obsolete backups** via -retention policies, configured in the `.spec.retentionPolicy` field of the -`ObjectStore` resource. - -:::note -This feature uses the `barman-cloud-backup-delete` command with the -`--retention-policy "RECOVERY WINDOW OF {{ value }} {{ unit }}"` syntax. -::: - -#### Example: 30-Day Retention Policy - -```yaml -apiVersion: barmancloud.cnpg.io/v1 -kind: ObjectStore -metadata: - name: my-store -spec: - [...] - retentionPolicy: "30d" -```` - -:::note -A **recovery window retention policy** ensures the cluster can be restored to -any point in time between the calculated *Point of Recoverability* (PoR) and -the latest WAL archive. The PoR is defined as `current time - recovery window`. -The **first valid backup** is the most recent backup completed before the PoR. -Backups older than that are marked as *obsolete* and deleted after the next -backup completes. -::: - diff --git a/web/versioned_docs/version-0.7.0/troubleshooting.md b/web/versioned_docs/version-0.7.0/troubleshooting.md deleted file mode 100644 index 0d9852c..0000000 --- a/web/versioned_docs/version-0.7.0/troubleshooting.md +++ /dev/null @@ -1,580 +0,0 @@ ---- -sidebar_position: 90 ---- - -# Troubleshooting - - - -This guide helps you diagnose and resolve common issues with the Barman Cloud -plugin. - -:::important -We are continuously improving the integration between CloudNativePG and the -Barman Cloud plugin as it moves toward greater stability and maturity. For this -reason, we recommend using the latest available version of both components. -See the [*Requirements* section](intro.md#requirements) for details. -::: - -:::note -The following commands assume you installed the CloudNativePG operator in -the default `cnpg-system` namespace. If you installed it in a different -namespace, adjust the commands accordingly. -::: - -## Viewing Logs - -To troubleshoot effectively, you’ll often need to review logs from multiple -sources: - -```sh -# View operator logs (includes plugin interaction logs) -kubectl logs -n cnpg-system deployment/cnpg-controller-manager -f - -# View plugin manager logs -kubectl logs -n cnpg-system deployment/barman-cloud -f - -# View sidecar container logs (Barman Cloud operations) -kubectl logs -n -c plugin-barman-cloud -f - -# View all containers in a pod -kubectl logs -n --all-containers=true - -# View previous container logs (if container restarted) -kubectl logs -n -c plugin-barman-cloud --previous -``` - -## Common Issues - -### Plugin Installation Issues - -#### Plugin pods not starting - -**Symptoms:** - -- Plugin pods stuck in `CrashLoopBackOff` or `Error` -- Plugin deployment not ready - -**Possible causes and solutions:** - -1. **Certificate issues** - - ```sh - # Check if cert-manager is installed and running - kubectl get pods -n cert-manager - - # Check if the plugin certificate is created - kubectl get certificates -n cnpg-system - ``` - - If cert-manager is not installed, install it first: - - ```sh - # Note: other installation methods for cert-manager are available - kubectl apply -f \ - https://github.com/cert-manager/cert-manager/releases/latest/download/cert-manager.yaml - ``` - - If you are using your own certificates without cert-manager, you will need - to verify the entire certificate chain yourself. - - -2. **Image pull errors** - - ```sh - # Check pod events for image pull errors - kubectl describe pod -n cnpg-system -l app=barman-cloud - ``` - - Verify the image exists and you have proper credentials if using a private - registry. - - -3. **Resource constraints** - - ```sh - # Check node resources - kubectl top nodes - kubectl describe nodes - ``` - - Make sure your cluster has sufficient CPU and memory resources. - -### Backup Failures - -#### Quick Backup Troubleshooting Checklist - -When a backup fails, follow these steps in order: - -1. **Check backup status**: - - ```sh - kubectl get backups.postgresql.cnpg.io -n - ``` -2. **Get error details and target pod**: - - ```sh - kubectl describe backups.postgresql.cnpg.io \ - -n - - kubectl get backups.postgresql.cnpg.io \ - -n \ - -o jsonpath='{.status.instanceID.podName}' - ``` -3. **Check the target pod’s sidecar logs**: - - ```sh - TARGET_POD=$(kubectl get backups.postgresql.cnpg.io \ - -n \ - -o jsonpath='{.status.instanceID.podName}') - - kubectl logs \ - -n $TARGET_POD -c plugin-barman-cloud \ - --tail=100 | grep -E "ERROR|FATAL|panic" - ``` -4. **Check cluster events**: - - ```sh - kubectl get events -n \ - --field-selector involvedObject.name= \ - --sort-by='.lastTimestamp' - ``` -5. **Verify plugin is running**: - - ```sh - kubectl get pods \ - -n cnpg-system -l app=barman-cloud - ``` -6. **Check operator logs**: - - ```sh - kubectl logs \ - -n cnpg-system deployment/cnpg-controller-manager \ - --tail=100 | grep -i "backup\|plugin" - ``` -7. **Check plugin manager logs**: - - ```sh - kubectl logs \ - -n cnpg-system deployment/barman-cloud --tail=100 - ``` - -#### Backup job fails immediately - -**Symptoms:** - -- Backup pods terminate with error -- No backup files appear in object storage -- Backup shows `failed` phase with various error messages - -**Common failure modes and solutions:** - -1. **"requested plugin is not available" errors** - - ``` - requested plugin is not available: barman - requested plugin is not available: barman-cloud - requested plugin is not available: barman-cloud.cloudnative-pg.io - ``` - - **Cause:** The plugin name in the Cluster configuration doesn’t match the - deployed plugin, or the plugin isn’t registered. - - **Solution:** - - a. **Check plugin registration:** - - ```sh - # If you have the `cnpg` plugin installed (v1.27.0+) - kubectl cnpg status -n - ``` - - Look for the "Plugins status" section: - ``` - Plugins status - Name Version Status Reported Operator Capabilities - ---- ------- ------ ------------------------------ - barman-cloud.cloudnative-pg.io 0.6.0 N/A Reconciler Hooks, Lifecycle Service - ``` - - b. **Verify plugin name in `Cluster` spec**: - - ```yaml - apiVersion: postgresql.cnpg.io/v1 - kind: Cluster - spec: - plugins: - - name: barman-cloud.cloudnative-pg.io - parameters: - barmanObjectName: - ``` - - c. **Check plugin deployment is running**: - - ```sh - kubectl get deployment -n cnpg-system barman-cloud - ``` - -2. **"rpc error: code = Unknown desc = panic caught: assignment to entry in nil map" errors** - - **Cause:** Misconfiguration in the `ObjectStore` (e.g., typo or missing field). - - **Solution:** - - - Review sidecar logs for details - - Verify `ObjectStore` configuration and secrets - - Common issues include: - - Missing or incorrect secret references - - Typos in configuration parameters - - Missing required environment variables in secrets - -#### Backup performance issues - -**Symptoms:** - -- Backups take extremely long -- Backups timeout - -**Plugin-specific considerations:** - -1. **Check `ObjectStore` parallelism settings** - - Adjust `maxParallel` in `ObjectStore` configuration - - Monitor sidecar container resource usage during backups - -2. **Verify plugin resource allocation** - - Check if the sidecar container has sufficient CPU/memory - - Review plugin container logs for resource-related warnings - -:::tip -For Barman-specific features like compression, encryption, and performance -tuning, refer to the [Barman documentation](https://docs.pgbarman.org/latest/). -::: - -### WAL Archiving Issues - -#### WAL archiving stops - -**Symptoms:** - -- WAL files accumulate on the primary -- Cluster shows WAL archiving warnings -- Sidecar logs show WAL errors - -**Debugging steps:** - -1. **Check plugin sidecar logs for WAL archiving errors** - ```sh - # Check recent WAL archive operations in sidecar - kubectl logs -n -c plugin-barman-cloud \ - --tail=50 | grep -i wal - ``` - -2. **Check ObjectStore configuration for WAL settings** - - Ensure ObjectStore has proper WAL retention settings - - Verify credentials have permissions for WAL operations - -### Restore Issues - -#### Restore fails during recovery - -**Symptoms:** - -- New cluster stuck in recovery -- Plugin sidecar shows restore errors -- PostgreSQL won’t start - -**Debugging steps:** - -1. **Check plugin sidecar logs during restore** - - ```sh - # Check the sidecar logs on the recovering cluster pods - kubectl logs -n \ - -c plugin-barman-cloud --tail=100 - - # Look for restore-related errors - kubectl logs -n \ - -c plugin-barman-cloud | grep -E "restore|recovery|ERROR" - ``` - -2. **Verify plugin can access backups** - - ```sh - # Check if `ObjectStore` is properly configured for restore - kubectl get objectstores.barmancloud.cnpg.io \ - -n -o yaml - - # Check PostgreSQL recovery logs - kubectl logs -n \ - -c postgres | grep -i recovery - ``` - -:::tip -For detailed Barman restore operations and troubleshooting, refer to the -[Barman documentation](https://docs.pgbarman.org/latest/barman-cloud-restore.html). -::: - -#### Point-in-time recovery (PITR) configuration issues - -**Symptoms:** - -- PITR doesn’t reach target time -- WAL access errors -- Recovery halts early - -**Debugging steps:** - -1. **Verify PITR configuration in the `Cluster` spec** - - ```yaml - apiVersion: postgresql.cnpg.io/v1 - kind: Cluster - metadata: - name: - spec: - storage: - size: 1Gi - - bootstrap: - recovery: - source: origin - recoveryTarget: - targetTime: "2024-01-15 10:30:00" - - externalClusters: - - name: origin - plugin: - enabled: true - name: barman-cloud.cloudnative-pg.io - parameters: - barmanObjectName: - serverName: - ``` - -2. **Check sidecar logs for WAL-related errors** - - ```sh - kubectl logs -n \ - -c plugin-barman-cloud | grep -i wal - ``` - -:::note -For detailed PITR configuration and WAL management, see the -[Barman PITR documentation](https://docs.pgbarman.org/latest/). -::: - -### Plugin Configuration Issues - -#### Plugin cannot connect to object storage - -**Symptoms:** - -- Sidecar logs show connection errors -- Backups fail with authentication or network errors -- `ObjectStore` resource reports errors - -**Solution:** - -1. **Verify `ObjectStore` CRD configuration and secrets** - - ```sh - # Check ObjectStore resource status - kubectl get objectstores.barmancloud.cnpg.io \ - -n -o yaml - - # Verify the secret exists and has correct keys for your provider - kubectl get secret -n \ - -o jsonpath='{.data}' | jq 'keys' - ``` - -2. **Check sidecar logs for connectivity issues** - ```sh - kubectl logs -n \ - -c plugin-barman-cloud | grep -E "connect|timeout|SSL|cert" - ``` - -3. **Adjust provider-specific settings (endpoint, path style, etc.)** - - See [Object Store Configuration](object_stores.md) for provider-specific settings - - Ensure `endpointURL` match your storage type - - Verify network policies allow egress to your storage provider - -## Diagnostic Commands - -### Using the `cnpg` plugin for `kubectl` - -The `cnpg` plugin for `kubectl` provides extended debugging capabilities. -Keep it updated: - -```sh -# Install or update the `cnpg` plugin -kubectl krew install cnpg -# Or using an alternative method: https://cloudnative-pg.io/documentation/current/kubectl-plugin/#install - -# Check plugin status (requires CNPG 1.27.0+) -kubectl cnpg status -n - -# View cluster status in detail -kubectl cnpg status -n --verbose -``` - -## Getting Help - -If problems persist: - -1. **Check the documentation** - - - [Installation Guide](installation.mdx) - - [Object Store Configuration](object_stores.md) (for provider-specific settings) - - [Usage Examples](usage.md) - - -2. **Gather diagnostic information** - - ```sh - # Create a diagnostic bundle (⚠️ sanitize these before sharing!) - kubectl get objectstores.barmancloud.cnpg.io -A -o yaml > /tmp/objectstores.yaml - kubectl get clusters.postgresql.cnpg.io -A -o yaml > /tmp/clusters.yaml - kubectl logs -n cnpg-system deployment/barman-cloud --tail=1000 > /tmp/plugin.log - ``` - - -3. **Community support** - - - CloudNativePG Slack: [#cloudnativepg-users](https://cloud-native.slack.com/messages/cloudnativepg-users) - - GitHub Issues: [plugin-barman-cloud](https://github.com/cloudnative-pg/plugin-barman-cloud/issues) - - -4. **Include when reporting** - - - CloudNativePG version - - Plugin version - - Kubernetes version - - Cloud provider and region - - Relevant configuration (⚠️ sanitize/redact sensitive information) - - Error messages and logs - - Steps to reproduce - -## Known Issues and Limitations - -### Current Known Issues - -1. **Migration compatibility**: After migrating from in-tree backup to the - plugin, the `kubectl cnpg backup` command syntax has changed - ([#353](https://github.com/cloudnative-pg/plugin-barman-cloud/issues/353)): - - ```sh - # Old command (in-tree, no longer works after migration) - kubectl cnpg backup -n \ - --method=barmanObjectStore - - # New command (plugin-based) - kubectl cnpg backup -n \ - --method=plugin --plugin-name=barman-cloud.cloudnative-pg.io - ``` - -### Plugin Limitations - -1. **Installation method**: Currently only supports manifest and Kustomize - installation ([#351](https://github.com/cloudnative-pg/plugin-barman-cloud/issues/351) - - Helm chart requested) - -2. **Sidecar resource sharing**: The plugin sidecar container shares pod - resources with PostgreSQL - -3. **Plugin restart behavior**: Restarting the sidecar container requires - restarting the entire PostgreSQL pod - -## Recap of General Debugging Steps - -### Check Backup Status and Identify the Target Instance - -```sh -# List all backups and their status -kubectl get backups.postgresql.cnpg.io -n - -# Get detailed backup information including error messages and target instance -kubectl describe backups.postgresql.cnpg.io \ - -n - -# Extract the target pod name from a failed backup -kubectl get backups.postgresql.cnpg.io \ - -n \ - -o jsonpath='{.status.instanceID.podName}' - -# Get more details including the target pod, method, phase, and error -kubectl get backups.postgresql.cnpg.io \ - -n \ - -o jsonpath='Pod: {.status.instanceID.podName}{"\n"}Method: {.status.method}{"\n"}Phase: {.status.phase}{"\n"}Error: {.status.error}{"\n"}' - -# Check the cluster status for backup-related information -kubectl cnpg status -n --verbose -``` - -### Check Sidecar Logs on the Backup Target Pod - -```sh -# Identify which pod was the backup target (from the previous step) -TARGET_POD=$(kubectl get backups.postgresql.cnpg.io \ - -n \ - -o jsonpath='{.status.instanceID.podName}') -echo "Backup target pod: $TARGET_POD" - -# Check the sidecar logs on the specific target pod -kubectl logs -n $TARGET_POD \ - -c plugin-barman-cloud --tail=100 - -# Follow the logs in real time -kubectl logs -n $TARGET_POD \ - -c plugin-barman-cloud -f - -# Check for specific errors in the target pod around the backup time -kubectl logs -n $TARGET_POD \ - -c plugin-barman-cloud --since=10m | grep -E "ERROR|FATAL|panic|failed" - -# Alternative: List all cluster pods and their roles -kubectl get pods -n -l cnpg.io/cluster= \ - -o custom-columns=NAME:.metadata.name,ROLE:.metadata.labels.cnpg\\.io/instanceRole,INSTANCE:.metadata.labels.cnpg\\.io/instanceName - -# Check sidecar logs on ALL cluster pods (if the target is unclear) -for pod in $(kubectl get pods -n -l cnpg.io/cluster= -o name); do - echo "=== Checking $pod ===" - kubectl logs -n $pod -c plugin-barman-cloud \ - --tail=20 | grep -i error || echo "No errors found" -done -``` - -### Check Events for Backup-Related Issues - -```sh -# Check events for the cluster -kubectl get events -n \ - --field-selector involvedObject.name= - -# Check events for failed backups -kubectl get events -n \ - --field-selector involvedObject.kind=Backup - -# Get all recent events in the namespace -kubectl get events -n --sort-by='.lastTimestamp' | tail -20 -``` - -### Verify `ObjectStore` Configuration - -```sh -# Check the ObjectStore resource -kubectl get objectstores.barmancloud.cnpg.io \ - -n -o yaml - -# Verify the secret exists and has the correct keys -kubectl get secret -n -o yaml -# Alternatively -kubectl get secret -n -o jsonpath='{.data}' | jq 'keys' -``` - -### Common Error Messages and Solutions - -* **"AccessDenied" or "403 Forbidden"** β€” Check cloud credentials and bucket permissions. -* **"NoSuchBucket"** β€” Verify the bucket exists and the endpoint URL is correct. -* **"Connection timeout"** β€” Check network connectivity and firewall rules. -* **"SSL certificate problem"** β€” For self-signed certificates, verify the CA bundle configuration. - diff --git a/web/versioned_docs/version-0.7.0/usage.md b/web/versioned_docs/version-0.7.0/usage.md deleted file mode 100644 index 6406d38..0000000 --- a/web/versioned_docs/version-0.7.0/usage.md +++ /dev/null @@ -1,283 +0,0 @@ ---- -sidebar_position: 30 ---- - -# Using the Barman Cloud Plugin - - - -After [installing the plugin](installation.mdx) in the same namespace as the -CloudNativePG operator, enabling your PostgreSQL cluster to use the Barman -Cloud Plugin involves just a few steps: - -- Defining the object store containing your WAL archive and base backups, using - your preferred [provider](object_stores.md) -- Instructing the Postgres cluster to use the Barman Cloud Plugin - -From that moment, you’ll be able to issue on-demand backups or define a backup -schedule, as well as rely on the object store for recovery operations. - -The rest of this page details each step, using MinIO as object store provider. - -## Defining the `ObjectStore` - -An `ObjectStore` resource must be created for each object store used in your -PostgreSQL architecture. Here's an example configuration using MinIO: - -```yaml -apiVersion: barmancloud.cnpg.io/v1 -kind: ObjectStore -metadata: - name: minio-store -spec: - configuration: - destinationPath: s3://backups/ - endpointURL: http://minio:9000 - s3Credentials: - accessKeyId: - name: minio - key: ACCESS_KEY_ID - secretAccessKey: - name: minio - key: ACCESS_SECRET_KEY - wal: - compression: gzip -``` - -The `.spec.configuration` schema follows the same format as the -[in-tree barman-cloud support](https://pkg.go.dev/github.com/cloudnative-pg/barman-cloud/pkg/api#BarmanObjectStoreConfiguration). -Refer to [the CloudNativePG documentation](https://cloudnative-pg.io/documentation/current/appendixes/backup_barmanobjectstore/) -for additional details. - -:::important -The `serverName` parameter in the `ObjectStore` resource is retained solely for -API compatibility with the in-tree `barmanObjectStore` and must always be left empty. -When needed, use the `serverName` plugin parameter in the Cluster configuration instead. -::: - -## Configuring WAL Archiving - -Once the `ObjectStore` is defined, you can configure your PostgreSQL cluster -to archive WALs by referencing the store in the `.spec.plugins` section: - -```yaml -apiVersion: postgresql.cnpg.io/v1 -kind: Cluster -metadata: - name: cluster-example -spec: - instances: 3 - imagePullPolicy: Always - plugins: - - name: barman-cloud.cloudnative-pg.io - isWALArchiver: true - parameters: - barmanObjectName: minio-store - storage: - size: 1Gi -``` - -This configuration enables both WAL archiving and data directory backups. - -## Performing a Base Backup - -Once WAL archiving is enabled, the cluster is ready for backups. Backups can be -created either declaratively (with YAML manifests) or imperatively (with the -`cnpg` plugin). - -### Declarative approach (YAML manifest) - -Create a backup resource by applying a YAML manifest: - -```yaml -apiVersion: postgresql.cnpg.io/v1 -kind: Backup -metadata: - name: backup-example -spec: - cluster: - name: cluster-example - method: plugin - pluginConfiguration: - name: barman-cloud.cloudnative-pg.io -``` - -### Imperative approach (using the `cnpg` plugin) - -The quickest way to trigger an on-demand backup is with the `cnpg` plugin: - -```bash -kubectl cnpg backup -n \ - --method=plugin \ - --plugin-name=barman-cloud.cloudnative-pg.io -``` - -:::note Migration from in-tree backups -If you are migrating from the in-tree backup system, note the change in syntax: - -```bash -# Old command (in-tree backup) -kubectl cnpg backup -n --method=barmanObjectStore - -# New command (plugin-based backup) -kubectl cnpg backup -n \ - --method=plugin \ - --plugin-name=barman-cloud.cloudnative-pg.io -``` -::: - -## Restoring a Cluster - -To restore a cluster from an object store, create a new `Cluster` resource that -references the store containing the backup. Below is an example configuration: - -```yaml -apiVersion: postgresql.cnpg.io/v1 -kind: Cluster -metadata: - name: cluster-restore -spec: - instances: 3 - imagePullPolicy: IfNotPresent - bootstrap: - recovery: - source: source - externalClusters: - - name: source - plugin: - name: barman-cloud.cloudnative-pg.io - parameters: - barmanObjectName: minio-store - serverName: cluster-example - storage: - size: 1Gi -``` - -:::important -The above configuration does **not** enable WAL archiving for the restored cluster. -::: - -To enable WAL archiving for the restored cluster, include the `.spec.plugins` -section alongside the `externalClusters.plugin` section, as shown below: - -```yaml -apiVersion: postgresql.cnpg.io/v1 -kind: Cluster -metadata: - name: cluster-restore -spec: - instances: 3 - imagePullPolicy: IfNotPresent - bootstrap: - recovery: - source: source - plugins: - - name: barman-cloud.cloudnative-pg.io - isWALArchiver: true - parameters: - # Backup Object Store (push, read-write) - barmanObjectName: minio-store-bis - externalClusters: - - name: source - plugin: - name: barman-cloud.cloudnative-pg.io - parameters: - # Recovery Object Store (pull, read-only) - barmanObjectName: minio-store - serverName: cluster-example - storage: - size: 1Gi -``` - -The same object store may be used for both transaction log archiving and -restoring a cluster, or you can configure separate stores for these purposes. - -## Configuring Replica Clusters - -You can set up a distributed topology by combining the previously defined -configurations with the `.spec.replica` section. Below is an example of how to -define a replica cluster: - -```yaml -apiVersion: postgresql.cnpg.io/v1 -kind: Cluster -metadata: - name: cluster-dc-a -spec: - instances: 3 - primaryUpdateStrategy: unsupervised - - storage: - storageClass: csi-hostpath-sc - size: 1Gi - - plugins: - - name: barman-cloud.cloudnative-pg.io - isWALArchiver: true - parameters: - barmanObjectName: minio-store-a - - replica: - self: cluster-dc-a - primary: cluster-dc-a - source: cluster-dc-b - - externalClusters: - - name: cluster-dc-a - plugin: - name: barman-cloud.cloudnative-pg.io - parameters: - barmanObjectName: minio-store-a - - - name: cluster-dc-b - plugin: - name: barman-cloud.cloudnative-pg.io - parameters: - barmanObjectName: minio-store-b -``` - -## Configuring the plugin instance sidecar - -The Barman Cloud Plugin runs as a sidecar container next to each PostgreSQL -instance pod. It manages backup, WAL archiving, and restore processes. - -Configuration comes from multiple `ObjectStore` resources: - -1. The one referenced in the - `.spec.plugins` section of the `Cluster`. This is the - object store used for WAL archiving and base backups. -2. The one referenced in the external cluster - used in the `.spec.replica.source` section of the `Cluster`. This is - used by the log-shipping designated primary to get the WAL files. -3. The one referenced in the - `.spec.bootstrap.recovery.source` section of the `Cluster`. Used by - the initial recovery job to create the cluster from an existing backup. - -You can fine-tune sidecar behavior in the `.spec.instanceSidecarConfiguration` -of your ObjectStore. These settings apply to all PostgreSQL instances that use -this object store. Any updates take effect at the next `Cluster` reconciliation, -and could generate a rollout of the `Cluster`. - -```yaml -apiVersion: barmancloud.cnpg.io/v1 -kind: ObjectStore -metadata: - name: minio-store -spec: - configuration: - # [...] - instanceSidecarConfiguration: - retentionPolicyIntervalSeconds: 1800 - resources: - requests: - memory: "XXX" - cpu: "YYY" - limits: - memory: "XXX" - cpu: "YYY" -``` - -:::note -If more than one `ObjectStore` applies, the `instanceSidecarConfiguration` of -the one set in `.spec.plugins` has priority. -::: diff --git a/web/versioned_docs/version-0.8.0/compression.md b/web/versioned_docs/version-0.8.0/compression.md deleted file mode 100644 index 2abbede..0000000 --- a/web/versioned_docs/version-0.8.0/compression.md +++ /dev/null @@ -1,43 +0,0 @@ ---- -sidebar_position: 80 ---- - -# Compression - - - -By default, backups and WAL files are archived **uncompressed**. However, the -Barman Cloud Plugin supports multiple compression algorithms via -`barman-cloud-backup` and `barman-cloud-wal-archive`, allowing you to optimize -for space, speed, or a balance of both. - -### Supported Compression Algorithms - -- `bzip2` -- `gzip` -- `lz4` (WAL only) -- `snappy` -- `xz` (WAL only) -- `zstd` (WAL only) - -Compression settings for base backups and WAL archives are configured -independently. For implementation details, refer to the corresponding API -definitions: - -- [`DataBackupConfiguration`](https://pkg.go.dev/github.com/cloudnative-pg/barman-cloud/pkg/api#DataBackupConfiguration) -- [`WALBackupConfiguration`](https://pkg.go.dev/github.com/cloudnative-pg/barman-cloud/pkg/api#WalBackupConfiguration) - -:::important -Compression impacts both performance and storage efficiency. Choose the right -algorithm based on your recovery time objectives (RTO), storage capacity, and -network throughput. -::: - -## Compression Benchmark (on MinIO) - -| Compression | Backup Time (ms) | Restore Time (ms) | Uncompressed Size (MB) | Compressed Size (MB) | Ratio | -| ----------- | ---------------- | ----------------- | ---------------------- | -------------------- | ----- | -| None | 10,927 | 7,553 | 395 | 395 | 1.0:1 | -| bzip2 | 25,404 | 13,886 | 395 | 67 | 5.9:1 | -| gzip | 116,281 | 3,077 | 395 | 91 | 4.3:1 | -| snappy | 8,134 | 8,341 | 395 | 166 | 2.4:1 | diff --git a/web/versioned_docs/version-0.8.0/concepts.md b/web/versioned_docs/version-0.8.0/concepts.md deleted file mode 100644 index 3832df3..0000000 --- a/web/versioned_docs/version-0.8.0/concepts.md +++ /dev/null @@ -1,177 +0,0 @@ ---- -sidebar_position: 10 ---- - -# Main Concepts - - - -:::important -Before proceeding, make sure to review the following sections of the -CloudNativePG documentation: - -- [**Backup**](https://cloudnative-pg.io/documentation/current/backup/) -- [**WAL Archiving**](https://cloudnative-pg.io/documentation/current/wal_archiving/) -- [**Recovery**](https://cloudnative-pg.io/documentation/current/recovery/) -::: - -The **Barman Cloud Plugin** enables **hot (online) backups** of PostgreSQL -clusters in CloudNativePG through [`barman-cloud`](https://pgbarman.org), -supporting continuous physical backups and WAL archiving to an **object -store**β€”without interrupting write operations. - -It also supports both **full recovery** and **Point-in-Time Recovery (PITR)** -of a PostgreSQL cluster. - -## The Object Store - -At the core is the [`ObjectStore` custom resource (CRD)](plugin-barman-cloud.v1.md#objectstorespec), -which acts as the interface between the PostgreSQL cluster and the target -object storage system. It allows you to configure: - -- **Authentication and bucket location** via the `.spec.configuration` section -- **WAL archiving** settingsβ€”such as compression type, parallelism, and - server-side encryptionβ€”under `.spec.configuration.wal` -- **Base backup options**β€”with similar settings for compression, concurrency, - and encryptionβ€”under `.spec.configuration.data` -- **Retention policies** to manage the life-cycle of archived WALs and backups - via `.spec.configuration.retentionPolicy` - -WAL files are archived in the `wals` directory, while base backups are stored -as **tarballs** in the `base` directory, following the -[Barman Cloud convention](https://docs.pgbarman.org/cloud/latest/usage/#object-store-layout). - -The plugin also offers advanced capabilities, including -[backup tagging](misc.md#backup-object-tagging) and -[extra options for backups and WAL archiving](misc.md#extra-options-for-backup-and-wal-archiving). - -:::tip -For details, refer to the -[API reference for the `ObjectStore` resource](plugin-barman-cloud.v1.md#objectstorespec). -::: - -## Integration with a CloudNativePG Cluster - -CloudNativePG can delegate continuous backup and recovery responsibilities to -the **Barman Cloud Plugin** by configuring the `.spec.plugins` section of a -`Cluster` resource. This setup requires a corresponding `ObjectStore` resource -to be defined. - -:::important -While it is technically possible to reuse the same `ObjectStore` for multiple -`Cluster` resources within the same namespace, it is strongly recommended to -dedicate one object store per PostgreSQL cluster to ensure data isolation and -operational clarity. -::: - -The following example demonstrates how to configure a CloudNativePG cluster -named `cluster-example` to use a previously defined `ObjectStore` (also named -`cluster-example`) in the same namespace. Setting `isWALArchiver: true` enables -WAL archiving through the plugin: - -```yaml -apiVersion: postgresql.cnpg.io/v1 -kind: Cluster -metadata: - name: cluster-example -spec: - # Other cluster settings... - plugins: - - name: barman-cloud.cloudnative-pg.io - isWALArchiver: true - parameters: - barmanObjectName: cluster-example -``` - -## Backup of a Postgres Cluster - -Once the object store is defined and the `Cluster` is configured to use the -Barman Cloud Plugin, **WAL archiving is activated immediately** on the -PostgreSQL primary. - -Physical base backups are seamlessly managed by CloudNativePG using the -`Backup` and `ScheduledBackup` resources, respectively for -[on-demand](https://cloudnative-pg.io/documentation/current/backup/#on-demand-backups) -and -[scheduled](https://cloudnative-pg.io/documentation/current/backup/#scheduled-backups) -backups. - -To use the Barman Cloud Plugin, you must set the `method` to `plugin` and -configure the `pluginConfiguration` section as shown: - -```yaml -[...] -spec: - method: plugin - pluginConfiguration: - name: barman-cloud.cloudnative-pg.io - [...] -``` - -With this configuration, CloudNativePG supports: - -- Backups from both **primary** and **standby** instances -- Backups from **designated primaries** in a distributed topology using - [replica clusters](https://cloudnative-pg.io/documentation/current/replica_cluster/) - -:::tip -For details on how to back up from a standby, refer to the official documentation: -[Backup from a standby](https://cloudnative-pg.io/documentation/current/backup/#backup-from-a-standby). -::: - -:::important -Both backup and WAL archiving operations are executed by sidecar containers -running in the same pod as the PostgreSQL `Cluster` primary instanceβ€”except -when backups are taken from a standby, in which case the sidecar runs alongside -the standby pod. -The sidecar containers use a [dedicated container image](images.md) that -includes only the supported version of Barman Cloud. -::: - -## Recovery of a Postgres Cluster - -In PostgreSQL, *recovery* refers to the process of starting a database instance -from an existing backup. The Barman Cloud Plugin integrates with CloudNativePG -to support both **full recovery** and **Point-in-Time Recovery (PITR)** from an -object store. - -Recovery in this context is *not in-place*: it bootstraps a brand-new -PostgreSQL cluster from a backup and replays the necessary WAL files to reach -the desired recovery target. - -To perform a recovery, define an *external cluster* that references the -appropriate `ObjectStore`, and use it as the source in the `bootstrap` section -of the target cluster: - -```yaml -[...] -spec: - [...] - bootstrap: - recovery: - source: source - externalClusters: - - name: source - plugin: - name: barman-cloud.cloudnative-pg.io - parameters: - barmanObjectName: cluster-example - serverName: cluster-example - [...] -``` - -The critical element here is the `externalClusters` section of the `Cluster` -resource, where the `plugin` stanza instructs CloudNativePG to use the Barman -Cloud Plugin to access the object store for recovery. - -This same mechanism can be used for a variety of scenarios enabled by the -CloudNativePG API, including: - -* **Full cluster recovery** from the latest backup -* **Point-in-Time Recovery (PITR)** -* Bootstrapping **replica clusters** in a distributed topology - -:::tip -For complete instructions and advanced use cases, refer to the official -[Recovery documentation](https://cloudnative-pg.io/documentation/current/recovery/). -::: diff --git a/web/versioned_docs/version-0.8.0/images.md b/web/versioned_docs/version-0.8.0/images.md deleted file mode 100644 index f6c32d3..0000000 --- a/web/versioned_docs/version-0.8.0/images.md +++ /dev/null @@ -1,37 +0,0 @@ ---- -sidebar_position: 99 ---- - -# Container Images - - - -The Barman Cloud Plugin is distributed using two container images: - -- One for deploying the plugin components -- One for the sidecar that runs alongside each PostgreSQL instance in a - CloudNativePG `Cluster` using the plugin - -## Plugin Container Image - -The plugin image contains the logic required to operate the Barman Cloud Plugin -within your Kubernetes environment with CloudNativePG. It is published on the -GitHub Container Registry at `ghcr.io/cloudnative-pg/plugin-barman-cloud`. - -This image is built from the -[`Dockerfile.plugin`](https://github.com/cloudnative-pg/plugin-barman-cloud/blob/main/containers/Dockerfile.plugin) -in the plugin repository. - -## Sidecar Container Image - -The sidecar image is used within each PostgreSQL pod in the cluster. It -includes the latest supported version of Barman Cloud and is responsible for -performing WAL archiving and backups on behalf of CloudNativePG. - -It is available at `ghcr.io/cloudnative-pg/plugin-barman-cloud-sidecar` and is -built from the -[`Dockerfile.sidecar`](https://github.com/cloudnative-pg/plugin-barman-cloud/blob/main/containers/Dockerfile.sidecar). - -These sidecar images are designed to work seamlessly with the -[`minimal` PostgreSQL container images](https://github.com/cloudnative-pg/postgres-containers?tab=readme-ov-file#minimal-images) -maintained by the CloudNativePG Community. diff --git a/web/versioned_docs/version-0.8.0/installation.mdx b/web/versioned_docs/version-0.8.0/installation.mdx deleted file mode 100644 index 027d1e8..0000000 --- a/web/versioned_docs/version-0.8.0/installation.mdx +++ /dev/null @@ -1,109 +0,0 @@ ---- -sidebar_position: 20 ---- - -# Installation - -:::important -1. The plugin **must** be installed in the same namespace as the CloudNativePG - operator (typically `cnpg-system`). - -2. Keep in mind that the operator's **listening namespaces** may differ from its - installation namespace. Double-check this to avoid configuration issues. -::: - -## Verifying the Requirements - -Before installing the plugin, make sure the [requirements](intro.md#requirements) are met. - -### CloudNativePG Version - -Ensure you're running a version of CloudNativePG that is compatible with the -plugin. If installed in the default `cnpg-system` namespace, you can verify the -version with: - -```sh -kubectl get deployment -n cnpg-system cnpg-controller-manager \ - -o jsonpath="{.spec.template.spec.containers[*].image}" -``` - -Example output: - -```output -ghcr.io/cloudnative-pg/cloudnative-pg:1.26.0 -``` - -The version **must be 1.26 or newer**. - -### cert-manager - -Use the [cmctl](https://cert-manager.io/docs/reference/cmctl/#installation) -tool to confirm that `cert-manager` is installed and available: - -```sh -cmctl check api -``` - -Example output: - -```output -The cert-manager API is ready -``` - -Both checks are required before proceeding with the installation. - -## Installing the Barman Cloud Plugin - -import { InstallationSnippet } from '@site/src/components/Installation'; - -Install the plugin using `kubectl` by applying the manifest for the latest -release: - - - -Example output: - -```output -customresourcedefinition.apiextensions.k8s.io/objectstores.barmancloud.cnpg.io created -serviceaccount/plugin-barman-cloud created -role.rbac.authorization.k8s.io/leader-election-role created -clusterrole.rbac.authorization.k8s.io/metrics-auth-role created -clusterrole.rbac.authorization.k8s.io/metrics-reader created -clusterrole.rbac.authorization.k8s.io/objectstore-editor-role created -clusterrole.rbac.authorization.k8s.io/objectstore-viewer-role created -clusterrole.rbac.authorization.k8s.io/plugin-barman-cloud created -rolebinding.rbac.authorization.k8s.io/leader-election-rolebinding created -clusterrolebinding.rbac.authorization.k8s.io/metrics-auth-rolebinding created -clusterrolebinding.rbac.authorization.k8s.io/plugin-barman-cloud-binding created -secret/plugin-barman-cloud-8tfddg42gf created -service/barman-cloud created -deployment.apps/barman-cloud configured -certificate.cert-manager.io/barman-cloud-client created -certificate.cert-manager.io/barman-cloud-server created -issuer.cert-manager.io/selfsigned-issuer created -``` - -Finally, check that the deployment is up and running: - -```sh -kubectl rollout status deployment \ - -n cnpg-system barman-cloud -``` - -Example output: - -```output -deployment "barman-cloud" successfully rolled out -``` - -This confirms that the plugin is deployed and ready to use. - -## Testing the latest development snapshot - -You can also test the latest development snapshot of the plugin with the -following command: - -```sh -kubectl apply -f \ - https://raw.githubusercontent.com/cloudnative-pg/plugin-barman-cloud/refs/heads/main/manifest.yaml -``` diff --git a/web/versioned_docs/version-0.8.0/intro.md b/web/versioned_docs/version-0.8.0/intro.md deleted file mode 100644 index 9781d0d..0000000 --- a/web/versioned_docs/version-0.8.0/intro.md +++ /dev/null @@ -1,86 +0,0 @@ ---- -sidebar_position: 1 -sidebar_label: "Introduction" ---- - -# Barman Cloud Plugin - - - -The **Barman Cloud Plugin** for [CloudNativePG](https://cloudnative-pg.io/) -enables online continuous physical backups of PostgreSQL clusters to object storage -using the `barman-cloud` suite from the [Barman](https://docs.pgbarman.org/release/latest/) -project. - -:::important -If you plan to migrate your existing CloudNativePG cluster to the new -plugin-based approach using the Barman Cloud Plugin, see -["Migrating from Built-in CloudNativePG Backup"](migration.md) -for detailed instructions. -::: - -## Requirements - -Before using the Barman Cloud Plugin, ensure that the following components are -installed and properly configured: - -- [CloudNativePG](https://cloudnative-pg.io) version 1.26 or later - - - We strongly recommend version 1.27.0 or later, which includes improved - error handling and status reporting for the plugin. - - If you are running an earlier release, refer to the - [upgrade guide](https://cloudnative-pg.io/documentation/current/installation_upgrade). - -- [cert-manager](https://cert-manager.io/) - - - The recommended way to enable secure TLS communication between the plugin - and the operator. - - Alternatively, you can provide your own certificate bundles. See the - [CloudNativePG documentation on TLS configuration](https://cloudnative-pg.io/documentation/current/cnpg_i/#configuring-tls-certificates). - -- [`kubectl-cnpg`](https://cloudnative-pg.io/documentation/current/kubectl-plugin/) - plugin (optional but recommended) - - - Simplifies debugging and monitoring with additional status and inspection - commands. - - Multiple installation options are available in the - [installation guide](https://cloudnative-pg.io/documentation/current/kubectl-plugin/#install). - -## Key Features - -This plugin provides the following capabilities: - -- Physical online backup of the data directory -- Physical restore of the data directory -- Write-Ahead Log (WAL) archiving -- WAL restore -- Full cluster recovery -- Point-in-Time Recovery (PITR) -- Seamless integration with replica clusters for bootstrap and WAL restore from archive - -:::important -The Barman Cloud Plugin is designed to **replace the in-tree object storage support** -previously provided via the `.spec.backup.barmanObjectStore` section in the -`Cluster` resource. -Backups created using the in-tree approach are fully supported and compatible -with this plugin. -::: - -## Supported Object Storage Providers - -The plugin works with all storage backends supported by `barman-cloud`, including: - -- **Amazon S3** -- **Google Cloud Storage** -- **Microsoft Azure Blob Storage** - -In addition, the following S3-compatible and simulator solutions have been -tested and verified: - -- [MinIO](https://min.io/) – An S3-compatible storage solution -- [Azurite](https://github.com/Azure/Azurite) – A simulator for Azure Blob Storage -- [fake-gcs-server](https://github.com/fsouza/fake-gcs-server) – A simulator for Google Cloud Storage - -:::tip -For more details, refer to [Object Store Providers](object_stores.md). -::: diff --git a/web/versioned_docs/version-0.8.0/migration.md b/web/versioned_docs/version-0.8.0/migration.md deleted file mode 100644 index 2c99ada..0000000 --- a/web/versioned_docs/version-0.8.0/migration.md +++ /dev/null @@ -1,274 +0,0 @@ ---- -sidebar_position: 40 ---- - -# Migrating from Built-in CloudNativePG Backup - - - -The in-tree support for Barman Cloud in CloudNativePG is **deprecated starting -from version 1.26** and will be removed in a future release. - -If you're currently relying on the built-in Barman Cloud integration, you can -migrate seamlessly to the new **plugin-based architecture** using the Barman -Cloud Plugin, without data loss. Follow these steps: - -- [Install the Barman Cloud Plugin](installation.mdx) -- Create an `ObjectStore` resource by translating the contents of the - `.spec.backup.barmanObjectStore` section from your existing `Cluster` - definition -- Modify the `Cluster` resource in a single atomic change to switch from - in-tree backup to the plugin -- Update any `ScheduledBackup` resources to use the plugin -- Update the `externalClusters` configuration, where applicable - -:::tip -For a working example, refer to [this commit](https://github.com/cloudnative-pg/cnpg-playground/commit/596f30e252896edf8f734991c3538df87630f6f7) -from the [CloudNativePG Playground project](https://github.com/cloudnative-pg/cnpg-playground), -which demonstrates a full migration. -::: - ---- - -## Step 1: Define the `ObjectStore` - -Begin by creating an `ObjectStore` resource in the same namespace as your -PostgreSQL `Cluster`. - -There is a **direct mapping** between the `.spec.backup.barmanObjectStore` -section in CloudNativePG and the `.spec.configuration` field in the -`ObjectStore` CR. The conversion is mostly mechanical, with one key difference: - -:::warning -In the plugin architecture, retention policies are defined as part of the `ObjectStore`. -In contrast, the in-tree implementation defined them at the `Cluster` level. -::: - -If your `Cluster` used `.spec.backup.retentionPolicy`, move that configuration -to `.spec.retentionPolicy` in the `ObjectStore`. - ---- - -### Example - -Here’s an excerpt from a traditional in-tree CloudNativePG backup configuration -taken from the CloudNativePG Playground project: - -```yaml -apiVersion: postgresql.cnpg.io/v1 -kind: Cluster -metadata: - name: pg-eu -spec: - # [...] - backup: - barmanObjectStore: - destinationPath: s3://backups/ - endpointURL: http://minio-eu:9000 - s3Credentials: - accessKeyId: - name: minio-eu - key: ACCESS_KEY_ID - secretAccessKey: - name: minio-eu - key: ACCESS_SECRET_KEY - wal: - compression: gzip -``` - -This configuration translates to the following `ObjectStore` resource for the -plugin: - -```yaml -apiVersion: barmancloud.cnpg.io/v1 -kind: ObjectStore -metadata: - name: minio-eu -spec: - configuration: - destinationPath: s3://backups/ - endpointURL: http://minio-eu:9000 - s3Credentials: - accessKeyId: - name: minio-eu - key: ACCESS_KEY_ID - secretAccessKey: - name: minio-eu - key: ACCESS_SECRET_KEY - wal: - compression: gzip -``` - -As you can see, the contents of `barmanObjectStore` have been copied directly -under the `configuration` field of the `ObjectStore` resource, using the same -secret references. - -## Step 2: Update the `Cluster` for plugin WAL archiving - -Once the `ObjectStore` resource is in place, update the `Cluster` resource as -follows in a single atomic change: - -- Remove the `.spec.backup.barmanObjectStore` section -- Remove `.spec.backup.retentionPolicy` if it was defined (as it is now in the - `ObjectStore`) -- Remove the entire `spec.backup` section if it is now empty -- Add `barman-cloud.cloudnative-pg.io` to the `plugins` list, as described in - [Configuring WAL archiving](usage.md#configuring-wal-archiving) - -This will trigger a rolling update of the `Cluster`, switching continuous -backup from the in-tree implementation to the plugin-based approach. - -### Example - -The updated `pg-eu` cluster will have this configuration instead of the -previous `backup` section: - -```yaml - plugins: - - name: barman-cloud.cloudnative-pg.io - isWALArchiver: true - parameters: - barmanObjectName: minio-eu -``` - ---- - -## Step 3: Update the `ScheduledBackup` - -After switching the `Cluster` to use the plugin, update your `ScheduledBackup` -resources to match. - -Set the backup `method` to `plugin` and reference the plugin name via -`pluginConfiguration`, as shown in ["Performing a base backup"](usage.md#performing-a-base-backup). - -### Example - -Original in-tree `ScheduledBackup`: - -```yaml -apiVersion: postgresql.cnpg.io/v1 -kind: ScheduledBackup -metadata: - name: pg-eu-backup -spec: - cluster: - name: pg-eu - schedule: '0 0 0 * * *' - backupOwnerReference: self -``` - -Updated version using the plugin: - -```yaml -apiVersion: postgresql.cnpg.io/v1 -kind: ScheduledBackup -metadata: - name: pg-eu-backup -spec: - cluster: - name: pg-eu - schedule: '0 0 0 * * *' - backupOwnerReference: self - method: plugin - pluginConfiguration: - name: barman-cloud.cloudnative-pg.io -``` - ---- - -## Step 4: Update the `externalClusters` configuration - -If your `Cluster` relies on one or more external clusters that use the in-tree -Barman Cloud integration, you need to update those configurations to use the -plugin-based architecture. - -When a replica cluster fetches WAL files or base backups from an external -source that used the built-in backup method, follow these steps: - -1. Create a corresponding `ObjectStore` resource for the external cluster, as - shown in [Step 1](#step-1-define-the-objectstore) -2. Update the `externalClusters` section of your replica cluster to use the - plugin instead of the in-tree `barmanObjectStore` field - -### Example - -Consider the original configuration using in-tree Barman Cloud: - -```yaml -apiVersion: postgresql.cnpg.io/v1 -kind: Cluster -metadata: - name: pg-us -spec: - # [...] - externalClusters: - - name: pg-eu - barmanObjectStore: - destinationPath: s3://backups/ - endpointURL: http://minio-eu:9000 - serverName: pg-eu - s3Credentials: - accessKeyId: - name: minio-eu - key: ACCESS_KEY_ID - secretAccessKey: - name: minio-eu - key: ACCESS_SECRET_KEY - wal: - compression: gzip -``` - -Create the `ObjectStore` resource for the external cluster: - -```yaml -apiVersion: barmancloud.cnpg.io/v1 -kind: ObjectStore -metadata: - name: minio-eu -spec: - configuration: - destinationPath: s3://backups/ - endpointURL: http://minio-eu:9000 - s3Credentials: - accessKeyId: - name: minio-eu - key: ACCESS_KEY_ID - secretAccessKey: - name: minio-eu - key: ACCESS_SECRET_KEY - wal: - compression: gzip -``` - -Update the external cluster configuration to use the plugin: - -```yaml -apiVersion: postgresql.cnpg.io/v1 -kind: Cluster -metadata: - name: pg-us -spec: - # [...] - externalClusters: - - name: pg-eu - plugin: - name: barman-cloud.cloudnative-pg.io - parameters: - barmanObjectName: minio-eu - serverName: pg-eu -``` - -## Step 5: Verify your metrics - -When migrating from the in-core solution to the plugin-based approach, you need -to monitor a different set of metrics, as described in the -["Observability"](observability.md) section. - -The table below summarizes the name changes between the old in-core metrics and -the new plugin-based ones: - -| Old metric name | New metric name | -| ------------------------------------------------ | ---------------------------------------------------------------- | -| `cnpg_collector_last_failed_backup_timestamp` | `barman_cloud_cloudnative_pg_io_last_failed_backup_timestamp` | -| `cnpg_collector_last_available_backup_timestamp` | `barman_cloud_cloudnative_pg_io_last_available_backup_timestamp` | -| `cnpg_collector_first_recoverability_point` | `barman_cloud_cloudnative_pg_io_first_recoverability_point` | diff --git a/web/versioned_docs/version-0.8.0/misc.md b/web/versioned_docs/version-0.8.0/misc.md deleted file mode 100644 index 4d3cefc..0000000 --- a/web/versioned_docs/version-0.8.0/misc.md +++ /dev/null @@ -1,76 +0,0 @@ ---- -sidebar_position: 90 ---- - -# Miscellaneous - - - -## Backup Object Tagging - -You can attach key-value metadata tags to backup artifactsβ€”such as base -backups, WAL files, and history filesβ€”via the `.spec.configuration` section of -the `ObjectStore` resource. - -- `tags`: applied to base backups and WAL files -- `historyTags`: applied to history files only - -### Example - -```yaml -apiVersion: barmancloud.cnpg.io/v1 -kind: ObjectStore -metadata: - name: my-store -spec: - configuration: - [...] - tags: - backupRetentionPolicy: "expire" - historyTags: - backupRetentionPolicy: "keep" - [...] -``` - -## Extra Options for Backup and WAL Archiving - -You can pass additional command-line arguments to `barman-cloud-backup` and -`barman-cloud-wal-archive` using the `additionalCommandArgs` field in the -`ObjectStore` configuration. - -- `.spec.configuration.data.additionalCommandArgs`: for `barman-cloud-backup` -- `.spec.configuration.wal.additionalCommandArgs`: for `barman-cloud-wal-archive` - -Each field accepts a list of string arguments. If an argument is already -configured elsewhere in the plugin, the duplicate will be ignored. - -### Example: Extra Backup Options - -```yaml -kind: ObjectStore -metadata: - name: my-store -spec: - configuration: - data: - additionalCommandArgs: - - "--min-chunk-size=5MB" - - "--read-timeout=60" -``` - -### Example: Extra WAL Archive Options - -```yaml -kind: ObjectStore -metadata: - name: my-store -spec: - configuration: - wal: - additionalCommandArgs: - - "--max-concurrency=1" - - "--read-timeout=60" -``` - -For a complete list of supported options, refer to the -[official Barman Cloud documentation](https://docs.pgbarman.org/release/latest/). diff --git a/web/versioned_docs/version-0.8.0/object_stores.md b/web/versioned_docs/version-0.8.0/object_stores.md deleted file mode 100644 index 74e0473..0000000 --- a/web/versioned_docs/version-0.8.0/object_stores.md +++ /dev/null @@ -1,454 +0,0 @@ ---- -sidebar_position: 50 ---- - -# Object Store Providers - - - -The Barman Cloud Plugin enables the storage of PostgreSQL cluster backup files -in any object storage service supported by the -[Barman Cloud infrastructure](https://docs.pgbarman.org/release/latest/). - -Currently, Barman Cloud supports the following providers: - -- [Amazon S3](#aws-s3) -- [Microsoft Azure Blob Storage](#azure-blob-storage) -- [Google Cloud Storage](#google-cloud-storage) - -You may also use any S3- or Azure-compatible implementation of the above -services. - -To configure object storage with Barman Cloud, you must define an -[`ObjectStore` object](plugin-barman-cloud.v1.md#objectstore), which -establishes the connection between your PostgreSQL cluster and the object -storage backend. - -Configuration details β€” particularly around authentication β€” will vary depending on -the specific object storage provider you are using. - -The following sections detail the setup for each. - ---- - -## AWS S3 - -[AWS Simple Storage Service (S3)](https://aws.amazon.com/s3/) is one of the -most widely adopted object storage solutions. - -The Barman Cloud plugin for CloudNativePG integrates with S3 through two -primary authentication mechanisms: - -- [IAM Roles for Service Accounts (IRSA)](https://docs.aws.amazon.com/eks/latest/userguide/iam-roles-for-service-accounts.html) β€” - recommended for clusters running on EKS -- Access keys β€” using `ACCESS_KEY_ID` and `ACCESS_SECRET_KEY` credentials - -### Access Keys - -To authenticate using access keys, you’ll need: - -- `ACCESS_KEY_ID`: the public key used to authenticate to S3 -- `ACCESS_SECRET_KEY`: the corresponding secret key -- `ACCESS_SESSION_TOKEN`: (optional) a temporary session token, if required - -These credentials must be stored securely in a Kubernetes secret: - -```sh -kubectl create secret generic aws-creds \ - --from-literal=ACCESS_KEY_ID= \ - --from-literal=ACCESS_SECRET_KEY= -# --from-literal=ACCESS_SESSION_TOKEN= # if required -``` - -The credentials will be encrypted at rest if your Kubernetes environment -supports it. - -You can then reference the secret in your `ObjectStore` definition: - -```yaml -apiVersion: barmancloud.cnpg.io/v1 -kind: ObjectStore -metadata: - name: aws-store -spec: - configuration: - destinationPath: "s3://BUCKET_NAME/path/to/folder" - s3Credentials: - accessKeyId: - name: aws-creds - key: ACCESS_KEY_ID - secretAccessKey: - name: aws-creds - key: ACCESS_SECRET_KEY - [...] -``` - -### IAM Role for Service Account (IRSA) - -To use IRSA with EKS, configure the service account of the PostgreSQL cluster -with the appropriate annotation: - -```yaml -apiVersion: postgresql.cnpg.io/v1 -kind: Cluster -metadata: - [...] -spec: - serviceAccountTemplate: - metadata: - annotations: - eks.amazonaws.com/role-arn: arn:[...] - [...] -``` - -### S3 Lifecycle Policy - -Barman Cloud uploads backup files to S3 but does not modify them afterward. -To enhance data durability and protect against accidental or malicious loss, -it's recommended to implement the following best practices: - -- Enable object versioning -- Enable object locking to prevent objects from being deleted or overwritten - for a defined period or indefinitely (this provides an additional layer of - protection against accidental deletion and ransomware attacks) -- Set lifecycle rules to expire current versions a few days after your Barman - retention window -- Expire non-current versions after a longer period - -These strategies help you safeguard backups without requiring broad delete -permissions, ensuring both security and compliance with minimal operational -overhead. - - -### S3-Compatible Storage Providers - -You can use S3-compatible services like **MinIO**, **Linode (Akamai) Object Storage**, -or **DigitalOcean Spaces** by specifying a custom `endpointURL`. - -Example with Linode (Akamai) Object Storage (`us-east1`): - -```yaml -apiVersion: barmancloud.cnpg.io/v1 -kind: ObjectStore -metadata: - name: linode-store -spec: - configuration: - destinationPath: "s3://BUCKET_NAME/" - endpointURL: "https://us-east1.linodeobjects.com" - s3Credentials: - [...] - [...] -``` - -Recent changes to the [boto3 implementation](https://github.com/boto/boto3/issues/4392) -of [Amazon S3 Data Integrity Protections](https://docs.aws.amazon.com/sdkref/latest/guide/feature-dataintegrity.html) -may lead to the `x-amz-content-sha256` error when using the Barman Cloud -Plugin. - -If you encounter this issue (see [GitHub issue #393](https://github.com/cloudnative-pg/plugin-barman-cloud/issues/393)), -you can apply the following workaround by setting specific environment -variables in the `ObjectStore` resource: - -```yaml -apiVersion: barmancloud.cnpg.io/v1 -kind: ObjectStore -metadata: - name: linode-store -spec: - instanceSidecarConfiguration: - env: - - name: AWS_REQUEST_CHECKSUM_CALCULATION - value: when_required - - name: AWS_RESPONSE_CHECKSUM_VALIDATION - value: when_required - [...] -``` - -These settings ensure that checksum calculations and validations are only -applied when explicitly required, avoiding compatibility issues with certain -S3-compatible storage providers. - -Example with DigitalOcean Spaces (SFO3, path-style): - -```yaml -apiVersion: barmancloud.cnpg.io/v1 -kind: ObjectStore -metadata: - name: digitalocean-store -spec: - configuration: - destinationPath: "s3://BUCKET_NAME/path/to/folder" - endpointURL: "https://sfo3.digitaloceanspaces.com" - s3Credentials: - [...] - [...] -``` - -### Using Object Storage with a Private CA - -For object storage services (e.g., MinIO) that use HTTPS with certificates -signed by a private CA, set the `endpointCA` field in the `ObjectStore` -definition. Unless you already have it, create a Kubernetes `Secret` with the -CA bundle: - -```sh -kubectl create secret generic my-ca-secret --from-file=ca.crt -``` - -Then reference it: - -```yaml -apiVersion: barmancloud.cnpg.io/v1 -kind: ObjectStore -metadata: - name: minio-store -spec: - configuration: - endpointURL: - endpointCA: - name: my-ca-secret - key: ca.crt - [...] -``` - - -:::note -If you want `ConfigMaps` and `Secrets` to be **automatically** reloaded by -instances, you can add a label with the key `cnpg.io/reload` to the -`Secrets`/`ConfigMaps`. Otherwise, you will have to reload the instances using the -`kubectl cnpg reload` subcommand. -::: - ---- - -## Azure Blob Storage - -[Azure Blob Storage](https://azure.microsoft.com/en-us/services/storage/blobs/) -is Microsoft’s cloud-based object storage solution. - -Barman Cloud supports the following authentication methods: - -- [Connection String](https://learn.microsoft.com/en-us/azure/storage/common/storage-configure-connection-string) -- Storage Account Name + [Access Key](https://learn.microsoft.com/en-us/azure/storage/common/storage-account-keys-manage) -- Storage Account Name + [SAS Token](https://learn.microsoft.com/en-us/azure/storage/blobs/sas-service-create) -- [Azure AD Workload Identity](https://azure.github.io/azure-workload-identity/docs/introduction.html) - -### Azure AD Workload Identity - -This method avoids storing credentials in Kubernetes via the -`.spec.configuration.inheritFromAzureAD` option: - -```yaml -apiVersion: barmancloud.cnpg.io/v1 -kind: ObjectStore -metadata: - name: azure-store -spec: - configuration: - destinationPath: "" - azureCredentials: - inheritFromAzureAD: true - [...] -``` - -### Access Key, SAS Token, or Connection String - -Store credentials in a Kubernetes secret: - -```sh -kubectl create secret generic azure-creds \ - --from-literal=AZURE_STORAGE_ACCOUNT= \ - --from-literal=AZURE_STORAGE_KEY= \ - --from-literal=AZURE_STORAGE_SAS_TOKEN= \ - --from-literal=AZURE_STORAGE_CONNECTION_STRING= -``` - -Then reference the required keys in your `ObjectStore`: - -```yaml -apiVersion: barmancloud.cnpg.io/v1 -kind: ObjectStore -metadata: - name: azure-store -spec: - configuration: - destinationPath: "" - azureCredentials: - connectionString: - name: azure-creds - key: AZURE_CONNECTION_STRING - storageAccount: - name: azure-creds - key: AZURE_STORAGE_ACCOUNT - storageKey: - name: azure-creds - key: AZURE_STORAGE_KEY - storageSasToken: - name: azure-creds - key: AZURE_STORAGE_SAS_TOKEN - [...] -``` - -For Azure Blob, the destination path format is: - -``` -://..core.windows.net// -``` - -### Azure-Compatible Providers - -If you're using a different implementation (e.g., Azurite or emulator): - -``` -://:/// -``` - ---- - -## Google Cloud Storage - -[Google Cloud Storage](https://cloud.google.com/storage/) is supported with two -authentication modes: - -- **GKE Workload Identity** (recommended inside Google Kubernetes Engine) -- **Service Account JSON key** via the `GOOGLE_APPLICATION_CREDENTIALS` environment variable - -### GKE Workload Identity - -Use the [Workload Identity authentication](https://cloud.google.com/kubernetes-engine/docs/how-to/workload-identity) -when running in GKE: - -1. Set `googleCredentials.gkeEnvironment` to `true` in the `ObjectStore` - resource -2. Annotate the `serviceAccountTemplate` in the `Cluster` resource with the GCP - service account - -For example, in the `ObjectStore` resource: - -```yaml -apiVersion: barmancloud.cnpg.io/v1 -kind: ObjectStore -metadata: - name: google-store -spec: - configuration: - destinationPath: "gs:///" - googleCredentials: - gkeEnvironment: true -``` - -And in the `Cluster` resource: - -```yaml -apiVersion: postgresql.cnpg.io/v1 -kind: Cluster -spec: - serviceAccountTemplate: - metadata: - annotations: - iam.gke.io/gcp-service-account: [...].iam.gserviceaccount.com -``` - -### Service Account JSON Key - -Follow Google’s [authentication setup](https://cloud.google.com/docs/authentication/getting-started), -then: - -```sh -kubectl create secret generic backup-creds --from-file=gcsCredentials=gcs_credentials_file.json -``` - -```yaml -apiVersion: barmancloud.cnpg.io/v1 -kind: ObjectStore -metadata: - name: google-store -spec: - configuration: - destinationPath: "gs:///" - googleCredentials: - applicationCredentials: - name: backup-creds - key: gcsCredentials - [...] -``` - -:::important -This authentication method generates a JSON file within the container -with all the credentials required to access your Google Cloud Storage -bucket. As a result, if someone gains access to the `Pod`, they will also have -write permissions to the bucket. -::: - ---- - - -## MinIO Object Store - -In order to use the Tenant resource you first need to deploy the -[MinIO operator](https://docs.min.io/community/minio-object-store/operations/deployments/installation.html). -For the latest documentation of MinIO, please refer to the -[MinIO official documentation](https://docs.min.io/community/minio-object-store/). - -MinIO Object Store's API is compatible with S3, and the default configuration of the Tenant -will create these services: -- `-console` on port 9090 (with autocert) or 9443 (without autocert) -- `-hl` on port 9000 -Where `` is the `metadata.name` you assigned to your Tenant resource. - -:::note -The `-console` service will only be available if you have enabled the -[MinIO Console](https://docs.min.io/community/minio-object-store/administration/minio-console.html). - -For example, the following Tenant: -```yml -apiVersion: minio.min.io/v2 -kind: Tenant -metadata: - name: cnpg-backups -spec: - [...] -``` -would have services called `cnpg-backups-console` and `cnpg-backups-hl` respectively. - -The `console` service is for managing the tenant, while the `hl` service exposes the S3 -compatible API. If your tenant is configured with `requestAutoCert` you will communicate -to these services over HTTPS, if not you will use HTTP. - -For authentication you can use your username and password, or create an access key. -Whichever method you choose, it has to be stored as a secret. - -```sh -kubectl create secret generic minio-creds \ - --from-literal=MINIO_ACCESS_KEY= \ - --from-literal=MINIO_SECRET_KEY= -``` - -Finally, create the Barman ObjectStore: - -```yaml -apiVersion: barmancloud.cnpg.io/v1 -kind: ObjectStore -metadata: - name: minio-store -spec: - configuration: - destinationPath: s3://BUCKET_NAME/ - endpointURL: http://-hl:9000 - s3Credentials: - accessKeyId: - name: minio-creds - key: MINIO_ACCESS_KEY - secretAccessKey: - name: minio-creds - key: MINIO_SECRET_KEY - [...] -``` - -:::important -Verify on `s3://BUCKET_NAME/` the presence of archived WAL files before -proceeding with a backup. -::: - ---- diff --git a/web/versioned_docs/version-0.8.0/observability.md b/web/versioned_docs/version-0.8.0/observability.md deleted file mode 100644 index 274b973..0000000 --- a/web/versioned_docs/version-0.8.0/observability.md +++ /dev/null @@ -1,24 +0,0 @@ ---- -sidebar_position: 55 ---- - -# Observability - - - -The Barman Cloud Plugin exposes the following metrics through the native -Prometheus exporter of the instance manager: - -- `barman_cloud_cloudnative_pg_io_last_failed_backup_timestamp`: - the UNIX timestamp of the most recent failed backup. - -- `barman_cloud_cloudnative_pg_io_last_available_backup_timestamp`: - the UNIX timestamp of the most recent successfully available backup. - -- `barman_cloud_cloudnative_pg_io_first_recoverability_point`: - the UNIX timestamp representing the earliest point in time from which the - cluster can be recovered. - -These metrics supersede the previously available in-core metrics that used the -`cnpg_collector` prefix. The new metrics are exposed under the -`barman_cloud_cloudnative_pg_io` prefix instead. diff --git a/web/versioned_docs/version-0.8.0/parameters.md b/web/versioned_docs/version-0.8.0/parameters.md deleted file mode 100644 index ca0cd2b..0000000 --- a/web/versioned_docs/version-0.8.0/parameters.md +++ /dev/null @@ -1,19 +0,0 @@ ---- -sidebar_position: 100 ---- - -# Parameters - - - -The following parameters are available for the Barman Cloud Plugin: - -- `barmanObjectName`: references the `ObjectStore` resource to be used by the - plugin. -- `serverName`: Specifies the server name in the object store. - -:::important -The `serverName` parameter in the `ObjectStore` resource is retained solely for -API compatibility with the in-tree `barmanObjectStore` and must always be left empty. -When needed, use the `serverName` plugin parameter in the Cluster configuration instead. -::: diff --git a/web/versioned_docs/version-0.8.0/plugin-barman-cloud.v1.md b/web/versioned_docs/version-0.8.0/plugin-barman-cloud.v1.md deleted file mode 100644 index 7bd607c..0000000 --- a/web/versioned_docs/version-0.8.0/plugin-barman-cloud.v1.md +++ /dev/null @@ -1,108 +0,0 @@ -# API Reference - -## Packages -- [barmancloud.cnpg.io/v1](#barmancloudcnpgiov1) - - -## barmancloud.cnpg.io/v1 - -Package v1 contains API Schema definitions for the barmancloud v1 API group - -### Resource Types -- [ObjectStore](#objectstore) - - - -#### InstanceSidecarConfiguration - - - -InstanceSidecarConfiguration defines the configuration for the sidecar that runs in the instance pods. - - - -_Appears in:_ -- [ObjectStoreSpec](#objectstorespec) - -| Field | Description | Required | Default | Validation | -| --- | --- | --- | --- | --- | -| `env` _[EnvVar](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#envvar-v1-core) array_ | The environment to be explicitly passed to the sidecar | | | | -| `retentionPolicyIntervalSeconds` _integer_ | The retentionCheckInterval defines the frequency at which the
system checks and enforces retention policies. | | 1800 | | -| `resources` _[ResourceRequirements](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcerequirements-v1-core)_ | Resources define cpu/memory requests and limits for the sidecar that runs in the instance pods. | | | | -| `additionalContainerArgs` _string array_ | AdditionalContainerArgs is an optional list of command-line arguments
to be passed to the sidecar container when it starts.
The provided arguments are appended to the container’s default arguments. | | | | -| `logLevel` _string_ | The log level for PostgreSQL instances. Valid values are: `error`, `warning`, `info` (default), `debug`, `trace` | | info | Enum: [error warning info debug trace]
| - - -#### ObjectStore - - - -ObjectStore is the Schema for the objectstores API. - - - - - -| Field | Description | Required | Default | Validation | -| --- | --- | --- | --- | --- | -| `apiVersion` _string_ | `barmancloud.cnpg.io/v1` | True | | | -| `kind` _string_ | `ObjectStore` | True | | | -| `metadata` _[ObjectMeta](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#objectmeta-v1-meta)_ | Refer to Kubernetes API documentation for fields of `metadata`. | True | | | -| `spec` _[ObjectStoreSpec](#objectstorespec)_ | Specification of the desired behavior of the ObjectStore.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status | True | | | -| `status` _[ObjectStoreStatus](#objectstorestatus)_ | Most recently observed status of the ObjectStore. This data may not be up to
date. Populated by the system. Read-only.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status | | | | - - -#### ObjectStoreSpec - - - -ObjectStoreSpec defines the desired state of ObjectStore. - - - -_Appears in:_ -- [ObjectStore](#objectstore) - -| Field | Description | Required | Default | Validation | -| --- | --- | --- | --- | --- | -| `configuration` _[BarmanObjectStoreConfiguration](https://pkg.go.dev/github.com/cloudnative-pg/barman-cloud/pkg/api#BarmanObjectStoreConfiguration)_ | The configuration for the barman-cloud tool suite | True | | | -| `retentionPolicy` _string_ | RetentionPolicy is the retention policy to be used for backups
and WALs (i.e. '60d'). The retention policy is expressed in the form
of `XXu` where `XX` is a positive integer and `u` is in `[dwm]` -
days, weeks, months. | | | Pattern: `^[1-9][0-9]*[dwm]$`
| -| `instanceSidecarConfiguration` _[InstanceSidecarConfiguration](#instancesidecarconfiguration)_ | The configuration for the sidecar that runs in the instance pods | | | | - - -#### ObjectStoreStatus - - - -ObjectStoreStatus defines the observed state of ObjectStore. - - - -_Appears in:_ -- [ObjectStore](#objectstore) - -| Field | Description | Required | Default | Validation | -| --- | --- | --- | --- | --- | -| `serverRecoveryWindow` _object (keys:string, values:[RecoveryWindow](#recoverywindow))_ | ServerRecoveryWindow maps each server to its recovery window | True | | | - - -#### RecoveryWindow - - - -RecoveryWindow represents the time span between the first -recoverability point and the last successful backup of a PostgreSQL -server, defining the period during which data can be restored. - - - -_Appears in:_ -- [ObjectStoreStatus](#objectstorestatus) - -| Field | Description | Required | Default | Validation | -| --- | --- | --- | --- | --- | -| `firstRecoverabilityPoint` _[Time](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#time-v1-meta)_ | The first recoverability point in a PostgreSQL server refers to
the earliest point in time to which the database can be
restored. | True | | | -| `lastSuccessfulBackupTime` _[Time](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#time-v1-meta)_ | The last successful backup time | True | | | -| `lastFailedBackupTime` _[Time](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#time-v1-meta)_ | The last failed backup time | True | | | - - diff --git a/web/versioned_docs/version-0.8.0/resource-name-migration.md b/web/versioned_docs/version-0.8.0/resource-name-migration.md deleted file mode 100644 index f5c1cc3..0000000 --- a/web/versioned_docs/version-0.8.0/resource-name-migration.md +++ /dev/null @@ -1,219 +0,0 @@ ---- -sidebar_position: 90 ---- - -# Resource name migration guide - - - -:::warning -Before proceeding with the migration process, please: -1. **Read this guide in its entirety** to understand what changes will be made -2. **Test in a non-production environment** first if possible -3. **Ensure you have proper backups** of your cluster configuration - -This migration will delete old RBAC resources only after the -`plugin-barman-cloud` upgrade. While the operation is designed to be safe, you -should review and understand the changes before proceeding. The maintainers of -this project are not responsible for any issues that may arise during -migration. - -**Note:** This guide assumes you are using the default `cnpg-system` namespace. -::: - -## Overview - -Starting from version **0.8.0**, the `plugin-barman-cloud` deployment manifests -use more specific, prefixed resource names to avoid conflicts with other -components deployed in the same Kubernetes cluster. - -## What Changed - -The following resources have been renamed to use proper prefixes. - -### Cluster-scoped Resources - -| Old Name | New Name | -|----------------------------|------------------------------------------| -| `metrics-auth-role` | `barman-plugin-metrics-auth-role` | -| `metrics-auth-rolebinding` | `barman-plugin-metrics-auth-rolebinding` | -| `metrics-reader` | `barman-plugin-metrics-reader` | -| `objectstore-viewer-role` | `barman-plugin-objectstore-viewer-role` | -| `objectstore-editor-role` | `barman-plugin-objectstore-editor-role` | - -### Namespace-scoped Resources - -| Old Name | New Name | Namespace | -|-------------------------------|---------------------------------------------|---------------| -| `leader-election-role` | `barman-plugin-leader-election-role` | `cnpg-system` | -| `leader-election-rolebinding` | `barman-plugin-leader-election-rolebinding` | `cnpg-system` | - -## Why This Change? - -Using generic names for cluster-wide resources is discouraged as they may -conflict with other components deployed in the same cluster. The new names make -it clear that these resources belong to the Barman Cloud plugin and help avoid -naming collisions. - -## Migration Instructions - -This three steps migration process is straightforward and can be completed with -a few `kubectl` commands. - -### Step 1: Upgrade plugin-barman-cloud - -Please refer to the [Installation](installation.mdx) section to deploy the new -`plugin-barman-cloud` release. - -### Step 2: Delete Old Cluster-scoped Resources - -:::danger Verify Resources Before Deletion -**IMPORTANT**: The old resource names are generic and could potentially belong -to other components in your cluster. - -**Before deleting each resource, verify it belongs to the Barman Cloud plugin -by checking:** -- For `objectstore-*` roles: Look for `barmancloud.cnpg.io` in the API groups -- For `metrics-*` roles: Check if they reference the `plugin-barman-cloud` - ServiceAccount in `cnpg-system` namespace -- For other roles: Look for labels like `app.kubernetes.io/name: plugin-barman-cloud` - -If a resource doesn't have these indicators, **DO NOT DELETE IT** as it may -belong to another application. - -Carefully review the output of each verification command before proceeding with -the `delete`. -::: - -:::tip Dry Run First -You can add `--dry-run=client` to any `kubectl delete` command to preview what -would be deleted without actually removing anything. -::: - -**Only proceed if you've verified these resources belong to the Barman Cloud -plugin (see warning above).** - -For each resource below, first verify it belongs to Barman Cloud, then delete -it: - -```bash -# 1. Check metrics-auth-rolebinding FIRST (we'll check the role after) -# Look for references to plugin-barman-cloud ServiceAccount -kubectl describe clusterrolebinding metrics-auth-rolebinding -# If it references plugin-barman-cloud ServiceAccount in cnpg-system namespace, -# delete it: -kubectl delete clusterrolebinding metrics-auth-rolebinding - -# 2. Check metrics-auth-role -# Look for references to authentication.k8s.io and authorization.k8s.io -kubectl describe clusterrole metrics-auth-role -# Verify it's not being used by any other rolebindings: -kubectl get clusterrolebinding -o json \ - | jq -r '.items[] | select(.roleRef.name=="metrics-auth-role") \ - | .metadata.name' -# If the above returns nothing (role is not in use) and the role looks like the -# Barman Cloud one, delete it (see warnings section): -kubectl delete clusterrole metrics-auth-role - -# 3. Check objectstore-viewer-role -# Look for barmancloud.cnpg.io API group or -# for `app.kubernetes.io/name: plugin-barman-cloud` label -kubectl describe clusterrole objectstore-viewer-role -# If it shows barmancloud.cnpg.io in API groups, delete it: -kubectl delete clusterrole objectstore-viewer-role - -# 4. Check objectstore-editor-role -# Look for barmancloud.cnpg.io API group or -# for `app.kubernetes.io/name: plugin-barman-cloud` label -kubectl describe clusterrole objectstore-editor-role -# If it shows barmancloud.cnpg.io in API groups, delete it: -kubectl delete clusterrole objectstore-editor-role - -# 5. Check metrics-reader (MOST DANGEROUS - very generic name) -# First, check if it's being used by any rolebindings OTHER than barman's: -kubectl get clusterrolebinding -o json | jq -r '.items[] \ - | select(.roleRef.name=="metrics-reader") \ - | "\(.metadata.name) -> \(.subjects[0].name) in \(.subjects[0].namespace)"' -# If this shows ANY rolebindings, review them carefully. Only proceed if -# they're all Barman-related. Then check the role itself: -kubectl describe clusterrole metrics-reader -# If it ONLY has nonResourceURLs: /metrics and NO other rolebindings use it, -# delete it: -kubectl delete clusterrole metrics-reader -``` - -:::warning -The `metrics-reader` role is particularly dangerous to delete blindly. Many -monitoring systems use this exact name. Only delete it if: - -1. You've verified it ONLY grants access to `/metrics` -2. No other rolebindings reference it (checked with the jq command above) -3. You're certain it was created by the Barman Cloud plugin - -If you're unsure, it's safer to leave it and let the new -`barman-plugin-metrics-reader` role coexist with it. -::: - -If any resource is not found during the `describe` command, that's okay - it -means it was never created or already deleted. Simply skip the delete command -for that resource. - -### Step 3: Delete Old Namespace-scoped Resources - -Delete the old namespace-scoped resources in the `cnpg-system` namespace: - -```bash -# Delete the old leader-election resources -kubectl delete role leader-election-role -n cnpg-system -kubectl delete rolebinding leader-election-rolebinding -n cnpg-system -``` - -If any resource is not found, that's okay - it means it was never created or -already deleted. - -## Impact - -- **Permissions:** If you have custom RBAC rules or tools that reference the - old resource names, they will need to be updated. -- **External Users:** If end users have been granted the - `objectstore-viewer-role` or `objectstore-editor-role`, they will need to be - re-granted the new role names (`barman-plugin-objectstore-viewer-role` and - `barman-plugin-objectstore-editor-role`). - -## Verification - -After migration, verify that the new resources are created: - -```bash -# Check cluster-scoped resources -kubectl get clusterrole | grep barman -kubectl get clusterrolebinding | grep barman - -# Check namespace-scoped resources -kubectl get role,rolebinding -n cnpg-system | grep barman -``` - -You should see the new prefixed resource names. - -## Troubleshooting - -### Plugin Not Starting After Migration - -If the plugin fails to start after migration, check: - -1. **ServiceAccount permissions:** Ensure the `plugin-barman-cloud` ServiceAccount is bound to the new roles: - ```bash - kubectl get clusterrolebinding barman-plugin-metrics-auth-rolebinding -o yaml - kubectl get rolebinding barman-plugin-leader-election-rolebinding -n cnpg-system -o yaml - ``` - -2. **Role references:** Verify that the rolebindings reference the correct role names: - ```bash - kubectl describe rolebinding barman-plugin-leader-election-rolebinding -n cnpg-system - kubectl describe clusterrolebinding barman-plugin-metrics-auth-rolebinding - ``` - -## Support - -If you encounter issues during migration, please open an issue on the [GitHub -repository](https://github.com/cloudnative-pg/plugin-barman-cloud/issues). diff --git a/web/versioned_docs/version-0.8.0/retention.md b/web/versioned_docs/version-0.8.0/retention.md deleted file mode 100644 index fefbd08..0000000 --- a/web/versioned_docs/version-0.8.0/retention.md +++ /dev/null @@ -1,38 +0,0 @@ ---- -sidebar_position: 60 ---- - -# Retention Policies - - - -The Barman Cloud Plugin supports **automated cleanup of obsolete backups** via -retention policies, configured in the `.spec.retentionPolicy` field of the -`ObjectStore` resource. - -:::note -This feature uses the `barman-cloud-backup-delete` command with the -`--retention-policy "RECOVERY WINDOW OF {{ value }} {{ unit }}"` syntax. -::: - -#### Example: 30-Day Retention Policy - -```yaml -apiVersion: barmancloud.cnpg.io/v1 -kind: ObjectStore -metadata: - name: my-store -spec: - [...] - retentionPolicy: "30d" -```` - -:::note -A **recovery window retention policy** ensures the cluster can be restored to -any point in time between the calculated *Point of Recoverability* (PoR) and -the latest WAL archive. The PoR is defined as `current time - recovery window`. -The **first valid backup** is the most recent backup completed before the PoR. -Backups older than that are marked as *obsolete* and deleted after the next -backup completes. -::: - diff --git a/web/versioned_docs/version-0.8.0/troubleshooting.md b/web/versioned_docs/version-0.8.0/troubleshooting.md deleted file mode 100644 index 0d9852c..0000000 --- a/web/versioned_docs/version-0.8.0/troubleshooting.md +++ /dev/null @@ -1,580 +0,0 @@ ---- -sidebar_position: 90 ---- - -# Troubleshooting - - - -This guide helps you diagnose and resolve common issues with the Barman Cloud -plugin. - -:::important -We are continuously improving the integration between CloudNativePG and the -Barman Cloud plugin as it moves toward greater stability and maturity. For this -reason, we recommend using the latest available version of both components. -See the [*Requirements* section](intro.md#requirements) for details. -::: - -:::note -The following commands assume you installed the CloudNativePG operator in -the default `cnpg-system` namespace. If you installed it in a different -namespace, adjust the commands accordingly. -::: - -## Viewing Logs - -To troubleshoot effectively, you’ll often need to review logs from multiple -sources: - -```sh -# View operator logs (includes plugin interaction logs) -kubectl logs -n cnpg-system deployment/cnpg-controller-manager -f - -# View plugin manager logs -kubectl logs -n cnpg-system deployment/barman-cloud -f - -# View sidecar container logs (Barman Cloud operations) -kubectl logs -n -c plugin-barman-cloud -f - -# View all containers in a pod -kubectl logs -n --all-containers=true - -# View previous container logs (if container restarted) -kubectl logs -n -c plugin-barman-cloud --previous -``` - -## Common Issues - -### Plugin Installation Issues - -#### Plugin pods not starting - -**Symptoms:** - -- Plugin pods stuck in `CrashLoopBackOff` or `Error` -- Plugin deployment not ready - -**Possible causes and solutions:** - -1. **Certificate issues** - - ```sh - # Check if cert-manager is installed and running - kubectl get pods -n cert-manager - - # Check if the plugin certificate is created - kubectl get certificates -n cnpg-system - ``` - - If cert-manager is not installed, install it first: - - ```sh - # Note: other installation methods for cert-manager are available - kubectl apply -f \ - https://github.com/cert-manager/cert-manager/releases/latest/download/cert-manager.yaml - ``` - - If you are using your own certificates without cert-manager, you will need - to verify the entire certificate chain yourself. - - -2. **Image pull errors** - - ```sh - # Check pod events for image pull errors - kubectl describe pod -n cnpg-system -l app=barman-cloud - ``` - - Verify the image exists and you have proper credentials if using a private - registry. - - -3. **Resource constraints** - - ```sh - # Check node resources - kubectl top nodes - kubectl describe nodes - ``` - - Make sure your cluster has sufficient CPU and memory resources. - -### Backup Failures - -#### Quick Backup Troubleshooting Checklist - -When a backup fails, follow these steps in order: - -1. **Check backup status**: - - ```sh - kubectl get backups.postgresql.cnpg.io -n - ``` -2. **Get error details and target pod**: - - ```sh - kubectl describe backups.postgresql.cnpg.io \ - -n - - kubectl get backups.postgresql.cnpg.io \ - -n \ - -o jsonpath='{.status.instanceID.podName}' - ``` -3. **Check the target pod’s sidecar logs**: - - ```sh - TARGET_POD=$(kubectl get backups.postgresql.cnpg.io \ - -n \ - -o jsonpath='{.status.instanceID.podName}') - - kubectl logs \ - -n $TARGET_POD -c plugin-barman-cloud \ - --tail=100 | grep -E "ERROR|FATAL|panic" - ``` -4. **Check cluster events**: - - ```sh - kubectl get events -n \ - --field-selector involvedObject.name= \ - --sort-by='.lastTimestamp' - ``` -5. **Verify plugin is running**: - - ```sh - kubectl get pods \ - -n cnpg-system -l app=barman-cloud - ``` -6. **Check operator logs**: - - ```sh - kubectl logs \ - -n cnpg-system deployment/cnpg-controller-manager \ - --tail=100 | grep -i "backup\|plugin" - ``` -7. **Check plugin manager logs**: - - ```sh - kubectl logs \ - -n cnpg-system deployment/barman-cloud --tail=100 - ``` - -#### Backup job fails immediately - -**Symptoms:** - -- Backup pods terminate with error -- No backup files appear in object storage -- Backup shows `failed` phase with various error messages - -**Common failure modes and solutions:** - -1. **"requested plugin is not available" errors** - - ``` - requested plugin is not available: barman - requested plugin is not available: barman-cloud - requested plugin is not available: barman-cloud.cloudnative-pg.io - ``` - - **Cause:** The plugin name in the Cluster configuration doesn’t match the - deployed plugin, or the plugin isn’t registered. - - **Solution:** - - a. **Check plugin registration:** - - ```sh - # If you have the `cnpg` plugin installed (v1.27.0+) - kubectl cnpg status -n - ``` - - Look for the "Plugins status" section: - ``` - Plugins status - Name Version Status Reported Operator Capabilities - ---- ------- ------ ------------------------------ - barman-cloud.cloudnative-pg.io 0.6.0 N/A Reconciler Hooks, Lifecycle Service - ``` - - b. **Verify plugin name in `Cluster` spec**: - - ```yaml - apiVersion: postgresql.cnpg.io/v1 - kind: Cluster - spec: - plugins: - - name: barman-cloud.cloudnative-pg.io - parameters: - barmanObjectName: - ``` - - c. **Check plugin deployment is running**: - - ```sh - kubectl get deployment -n cnpg-system barman-cloud - ``` - -2. **"rpc error: code = Unknown desc = panic caught: assignment to entry in nil map" errors** - - **Cause:** Misconfiguration in the `ObjectStore` (e.g., typo or missing field). - - **Solution:** - - - Review sidecar logs for details - - Verify `ObjectStore` configuration and secrets - - Common issues include: - - Missing or incorrect secret references - - Typos in configuration parameters - - Missing required environment variables in secrets - -#### Backup performance issues - -**Symptoms:** - -- Backups take extremely long -- Backups timeout - -**Plugin-specific considerations:** - -1. **Check `ObjectStore` parallelism settings** - - Adjust `maxParallel` in `ObjectStore` configuration - - Monitor sidecar container resource usage during backups - -2. **Verify plugin resource allocation** - - Check if the sidecar container has sufficient CPU/memory - - Review plugin container logs for resource-related warnings - -:::tip -For Barman-specific features like compression, encryption, and performance -tuning, refer to the [Barman documentation](https://docs.pgbarman.org/latest/). -::: - -### WAL Archiving Issues - -#### WAL archiving stops - -**Symptoms:** - -- WAL files accumulate on the primary -- Cluster shows WAL archiving warnings -- Sidecar logs show WAL errors - -**Debugging steps:** - -1. **Check plugin sidecar logs for WAL archiving errors** - ```sh - # Check recent WAL archive operations in sidecar - kubectl logs -n -c plugin-barman-cloud \ - --tail=50 | grep -i wal - ``` - -2. **Check ObjectStore configuration for WAL settings** - - Ensure ObjectStore has proper WAL retention settings - - Verify credentials have permissions for WAL operations - -### Restore Issues - -#### Restore fails during recovery - -**Symptoms:** - -- New cluster stuck in recovery -- Plugin sidecar shows restore errors -- PostgreSQL won’t start - -**Debugging steps:** - -1. **Check plugin sidecar logs during restore** - - ```sh - # Check the sidecar logs on the recovering cluster pods - kubectl logs -n \ - -c plugin-barman-cloud --tail=100 - - # Look for restore-related errors - kubectl logs -n \ - -c plugin-barman-cloud | grep -E "restore|recovery|ERROR" - ``` - -2. **Verify plugin can access backups** - - ```sh - # Check if `ObjectStore` is properly configured for restore - kubectl get objectstores.barmancloud.cnpg.io \ - -n -o yaml - - # Check PostgreSQL recovery logs - kubectl logs -n \ - -c postgres | grep -i recovery - ``` - -:::tip -For detailed Barman restore operations and troubleshooting, refer to the -[Barman documentation](https://docs.pgbarman.org/latest/barman-cloud-restore.html). -::: - -#### Point-in-time recovery (PITR) configuration issues - -**Symptoms:** - -- PITR doesn’t reach target time -- WAL access errors -- Recovery halts early - -**Debugging steps:** - -1. **Verify PITR configuration in the `Cluster` spec** - - ```yaml - apiVersion: postgresql.cnpg.io/v1 - kind: Cluster - metadata: - name: - spec: - storage: - size: 1Gi - - bootstrap: - recovery: - source: origin - recoveryTarget: - targetTime: "2024-01-15 10:30:00" - - externalClusters: - - name: origin - plugin: - enabled: true - name: barman-cloud.cloudnative-pg.io - parameters: - barmanObjectName: - serverName: - ``` - -2. **Check sidecar logs for WAL-related errors** - - ```sh - kubectl logs -n \ - -c plugin-barman-cloud | grep -i wal - ``` - -:::note -For detailed PITR configuration and WAL management, see the -[Barman PITR documentation](https://docs.pgbarman.org/latest/). -::: - -### Plugin Configuration Issues - -#### Plugin cannot connect to object storage - -**Symptoms:** - -- Sidecar logs show connection errors -- Backups fail with authentication or network errors -- `ObjectStore` resource reports errors - -**Solution:** - -1. **Verify `ObjectStore` CRD configuration and secrets** - - ```sh - # Check ObjectStore resource status - kubectl get objectstores.barmancloud.cnpg.io \ - -n -o yaml - - # Verify the secret exists and has correct keys for your provider - kubectl get secret -n \ - -o jsonpath='{.data}' | jq 'keys' - ``` - -2. **Check sidecar logs for connectivity issues** - ```sh - kubectl logs -n \ - -c plugin-barman-cloud | grep -E "connect|timeout|SSL|cert" - ``` - -3. **Adjust provider-specific settings (endpoint, path style, etc.)** - - See [Object Store Configuration](object_stores.md) for provider-specific settings - - Ensure `endpointURL` match your storage type - - Verify network policies allow egress to your storage provider - -## Diagnostic Commands - -### Using the `cnpg` plugin for `kubectl` - -The `cnpg` plugin for `kubectl` provides extended debugging capabilities. -Keep it updated: - -```sh -# Install or update the `cnpg` plugin -kubectl krew install cnpg -# Or using an alternative method: https://cloudnative-pg.io/documentation/current/kubectl-plugin/#install - -# Check plugin status (requires CNPG 1.27.0+) -kubectl cnpg status -n - -# View cluster status in detail -kubectl cnpg status -n --verbose -``` - -## Getting Help - -If problems persist: - -1. **Check the documentation** - - - [Installation Guide](installation.mdx) - - [Object Store Configuration](object_stores.md) (for provider-specific settings) - - [Usage Examples](usage.md) - - -2. **Gather diagnostic information** - - ```sh - # Create a diagnostic bundle (⚠️ sanitize these before sharing!) - kubectl get objectstores.barmancloud.cnpg.io -A -o yaml > /tmp/objectstores.yaml - kubectl get clusters.postgresql.cnpg.io -A -o yaml > /tmp/clusters.yaml - kubectl logs -n cnpg-system deployment/barman-cloud --tail=1000 > /tmp/plugin.log - ``` - - -3. **Community support** - - - CloudNativePG Slack: [#cloudnativepg-users](https://cloud-native.slack.com/messages/cloudnativepg-users) - - GitHub Issues: [plugin-barman-cloud](https://github.com/cloudnative-pg/plugin-barman-cloud/issues) - - -4. **Include when reporting** - - - CloudNativePG version - - Plugin version - - Kubernetes version - - Cloud provider and region - - Relevant configuration (⚠️ sanitize/redact sensitive information) - - Error messages and logs - - Steps to reproduce - -## Known Issues and Limitations - -### Current Known Issues - -1. **Migration compatibility**: After migrating from in-tree backup to the - plugin, the `kubectl cnpg backup` command syntax has changed - ([#353](https://github.com/cloudnative-pg/plugin-barman-cloud/issues/353)): - - ```sh - # Old command (in-tree, no longer works after migration) - kubectl cnpg backup -n \ - --method=barmanObjectStore - - # New command (plugin-based) - kubectl cnpg backup -n \ - --method=plugin --plugin-name=barman-cloud.cloudnative-pg.io - ``` - -### Plugin Limitations - -1. **Installation method**: Currently only supports manifest and Kustomize - installation ([#351](https://github.com/cloudnative-pg/plugin-barman-cloud/issues/351) - - Helm chart requested) - -2. **Sidecar resource sharing**: The plugin sidecar container shares pod - resources with PostgreSQL - -3. **Plugin restart behavior**: Restarting the sidecar container requires - restarting the entire PostgreSQL pod - -## Recap of General Debugging Steps - -### Check Backup Status and Identify the Target Instance - -```sh -# List all backups and their status -kubectl get backups.postgresql.cnpg.io -n - -# Get detailed backup information including error messages and target instance -kubectl describe backups.postgresql.cnpg.io \ - -n - -# Extract the target pod name from a failed backup -kubectl get backups.postgresql.cnpg.io \ - -n \ - -o jsonpath='{.status.instanceID.podName}' - -# Get more details including the target pod, method, phase, and error -kubectl get backups.postgresql.cnpg.io \ - -n \ - -o jsonpath='Pod: {.status.instanceID.podName}{"\n"}Method: {.status.method}{"\n"}Phase: {.status.phase}{"\n"}Error: {.status.error}{"\n"}' - -# Check the cluster status for backup-related information -kubectl cnpg status -n --verbose -``` - -### Check Sidecar Logs on the Backup Target Pod - -```sh -# Identify which pod was the backup target (from the previous step) -TARGET_POD=$(kubectl get backups.postgresql.cnpg.io \ - -n \ - -o jsonpath='{.status.instanceID.podName}') -echo "Backup target pod: $TARGET_POD" - -# Check the sidecar logs on the specific target pod -kubectl logs -n $TARGET_POD \ - -c plugin-barman-cloud --tail=100 - -# Follow the logs in real time -kubectl logs -n $TARGET_POD \ - -c plugin-barman-cloud -f - -# Check for specific errors in the target pod around the backup time -kubectl logs -n $TARGET_POD \ - -c plugin-barman-cloud --since=10m | grep -E "ERROR|FATAL|panic|failed" - -# Alternative: List all cluster pods and their roles -kubectl get pods -n -l cnpg.io/cluster= \ - -o custom-columns=NAME:.metadata.name,ROLE:.metadata.labels.cnpg\\.io/instanceRole,INSTANCE:.metadata.labels.cnpg\\.io/instanceName - -# Check sidecar logs on ALL cluster pods (if the target is unclear) -for pod in $(kubectl get pods -n -l cnpg.io/cluster= -o name); do - echo "=== Checking $pod ===" - kubectl logs -n $pod -c plugin-barman-cloud \ - --tail=20 | grep -i error || echo "No errors found" -done -``` - -### Check Events for Backup-Related Issues - -```sh -# Check events for the cluster -kubectl get events -n \ - --field-selector involvedObject.name= - -# Check events for failed backups -kubectl get events -n \ - --field-selector involvedObject.kind=Backup - -# Get all recent events in the namespace -kubectl get events -n --sort-by='.lastTimestamp' | tail -20 -``` - -### Verify `ObjectStore` Configuration - -```sh -# Check the ObjectStore resource -kubectl get objectstores.barmancloud.cnpg.io \ - -n -o yaml - -# Verify the secret exists and has the correct keys -kubectl get secret -n -o yaml -# Alternatively -kubectl get secret -n -o jsonpath='{.data}' | jq 'keys' -``` - -### Common Error Messages and Solutions - -* **"AccessDenied" or "403 Forbidden"** β€” Check cloud credentials and bucket permissions. -* **"NoSuchBucket"** β€” Verify the bucket exists and the endpoint URL is correct. -* **"Connection timeout"** β€” Check network connectivity and firewall rules. -* **"SSL certificate problem"** β€” For self-signed certificates, verify the CA bundle configuration. - diff --git a/web/versioned_docs/version-0.8.0/upgrades.mdx b/web/versioned_docs/version-0.8.0/upgrades.mdx deleted file mode 100644 index 0ab9ddb..0000000 --- a/web/versioned_docs/version-0.8.0/upgrades.mdx +++ /dev/null @@ -1,16 +0,0 @@ ---- -sidebar_position: 25 ---- - -# Upgrades - - - -You can upgrade the plugin simply by installing the new version. Unless -explicitly stated below or in the release notes, no special steps are required. - -## Upgrading to version 0.8.x from previous versions - -Version **0.8.0** introduces breaking changes to resource naming. -To complete the upgrade successfully, follow the instructions in the -["Resource name migration guide"](resource-name-migration.md). diff --git a/web/versioned_docs/version-0.8.0/usage.md b/web/versioned_docs/version-0.8.0/usage.md deleted file mode 100644 index 6406d38..0000000 --- a/web/versioned_docs/version-0.8.0/usage.md +++ /dev/null @@ -1,283 +0,0 @@ ---- -sidebar_position: 30 ---- - -# Using the Barman Cloud Plugin - - - -After [installing the plugin](installation.mdx) in the same namespace as the -CloudNativePG operator, enabling your PostgreSQL cluster to use the Barman -Cloud Plugin involves just a few steps: - -- Defining the object store containing your WAL archive and base backups, using - your preferred [provider](object_stores.md) -- Instructing the Postgres cluster to use the Barman Cloud Plugin - -From that moment, you’ll be able to issue on-demand backups or define a backup -schedule, as well as rely on the object store for recovery operations. - -The rest of this page details each step, using MinIO as object store provider. - -## Defining the `ObjectStore` - -An `ObjectStore` resource must be created for each object store used in your -PostgreSQL architecture. Here's an example configuration using MinIO: - -```yaml -apiVersion: barmancloud.cnpg.io/v1 -kind: ObjectStore -metadata: - name: minio-store -spec: - configuration: - destinationPath: s3://backups/ - endpointURL: http://minio:9000 - s3Credentials: - accessKeyId: - name: minio - key: ACCESS_KEY_ID - secretAccessKey: - name: minio - key: ACCESS_SECRET_KEY - wal: - compression: gzip -``` - -The `.spec.configuration` schema follows the same format as the -[in-tree barman-cloud support](https://pkg.go.dev/github.com/cloudnative-pg/barman-cloud/pkg/api#BarmanObjectStoreConfiguration). -Refer to [the CloudNativePG documentation](https://cloudnative-pg.io/documentation/current/appendixes/backup_barmanobjectstore/) -for additional details. - -:::important -The `serverName` parameter in the `ObjectStore` resource is retained solely for -API compatibility with the in-tree `barmanObjectStore` and must always be left empty. -When needed, use the `serverName` plugin parameter in the Cluster configuration instead. -::: - -## Configuring WAL Archiving - -Once the `ObjectStore` is defined, you can configure your PostgreSQL cluster -to archive WALs by referencing the store in the `.spec.plugins` section: - -```yaml -apiVersion: postgresql.cnpg.io/v1 -kind: Cluster -metadata: - name: cluster-example -spec: - instances: 3 - imagePullPolicy: Always - plugins: - - name: barman-cloud.cloudnative-pg.io - isWALArchiver: true - parameters: - barmanObjectName: minio-store - storage: - size: 1Gi -``` - -This configuration enables both WAL archiving and data directory backups. - -## Performing a Base Backup - -Once WAL archiving is enabled, the cluster is ready for backups. Backups can be -created either declaratively (with YAML manifests) or imperatively (with the -`cnpg` plugin). - -### Declarative approach (YAML manifest) - -Create a backup resource by applying a YAML manifest: - -```yaml -apiVersion: postgresql.cnpg.io/v1 -kind: Backup -metadata: - name: backup-example -spec: - cluster: - name: cluster-example - method: plugin - pluginConfiguration: - name: barman-cloud.cloudnative-pg.io -``` - -### Imperative approach (using the `cnpg` plugin) - -The quickest way to trigger an on-demand backup is with the `cnpg` plugin: - -```bash -kubectl cnpg backup -n \ - --method=plugin \ - --plugin-name=barman-cloud.cloudnative-pg.io -``` - -:::note Migration from in-tree backups -If you are migrating from the in-tree backup system, note the change in syntax: - -```bash -# Old command (in-tree backup) -kubectl cnpg backup -n --method=barmanObjectStore - -# New command (plugin-based backup) -kubectl cnpg backup -n \ - --method=plugin \ - --plugin-name=barman-cloud.cloudnative-pg.io -``` -::: - -## Restoring a Cluster - -To restore a cluster from an object store, create a new `Cluster` resource that -references the store containing the backup. Below is an example configuration: - -```yaml -apiVersion: postgresql.cnpg.io/v1 -kind: Cluster -metadata: - name: cluster-restore -spec: - instances: 3 - imagePullPolicy: IfNotPresent - bootstrap: - recovery: - source: source - externalClusters: - - name: source - plugin: - name: barman-cloud.cloudnative-pg.io - parameters: - barmanObjectName: minio-store - serverName: cluster-example - storage: - size: 1Gi -``` - -:::important -The above configuration does **not** enable WAL archiving for the restored cluster. -::: - -To enable WAL archiving for the restored cluster, include the `.spec.plugins` -section alongside the `externalClusters.plugin` section, as shown below: - -```yaml -apiVersion: postgresql.cnpg.io/v1 -kind: Cluster -metadata: - name: cluster-restore -spec: - instances: 3 - imagePullPolicy: IfNotPresent - bootstrap: - recovery: - source: source - plugins: - - name: barman-cloud.cloudnative-pg.io - isWALArchiver: true - parameters: - # Backup Object Store (push, read-write) - barmanObjectName: minio-store-bis - externalClusters: - - name: source - plugin: - name: barman-cloud.cloudnative-pg.io - parameters: - # Recovery Object Store (pull, read-only) - barmanObjectName: minio-store - serverName: cluster-example - storage: - size: 1Gi -``` - -The same object store may be used for both transaction log archiving and -restoring a cluster, or you can configure separate stores for these purposes. - -## Configuring Replica Clusters - -You can set up a distributed topology by combining the previously defined -configurations with the `.spec.replica` section. Below is an example of how to -define a replica cluster: - -```yaml -apiVersion: postgresql.cnpg.io/v1 -kind: Cluster -metadata: - name: cluster-dc-a -spec: - instances: 3 - primaryUpdateStrategy: unsupervised - - storage: - storageClass: csi-hostpath-sc - size: 1Gi - - plugins: - - name: barman-cloud.cloudnative-pg.io - isWALArchiver: true - parameters: - barmanObjectName: minio-store-a - - replica: - self: cluster-dc-a - primary: cluster-dc-a - source: cluster-dc-b - - externalClusters: - - name: cluster-dc-a - plugin: - name: barman-cloud.cloudnative-pg.io - parameters: - barmanObjectName: minio-store-a - - - name: cluster-dc-b - plugin: - name: barman-cloud.cloudnative-pg.io - parameters: - barmanObjectName: minio-store-b -``` - -## Configuring the plugin instance sidecar - -The Barman Cloud Plugin runs as a sidecar container next to each PostgreSQL -instance pod. It manages backup, WAL archiving, and restore processes. - -Configuration comes from multiple `ObjectStore` resources: - -1. The one referenced in the - `.spec.plugins` section of the `Cluster`. This is the - object store used for WAL archiving and base backups. -2. The one referenced in the external cluster - used in the `.spec.replica.source` section of the `Cluster`. This is - used by the log-shipping designated primary to get the WAL files. -3. The one referenced in the - `.spec.bootstrap.recovery.source` section of the `Cluster`. Used by - the initial recovery job to create the cluster from an existing backup. - -You can fine-tune sidecar behavior in the `.spec.instanceSidecarConfiguration` -of your ObjectStore. These settings apply to all PostgreSQL instances that use -this object store. Any updates take effect at the next `Cluster` reconciliation, -and could generate a rollout of the `Cluster`. - -```yaml -apiVersion: barmancloud.cnpg.io/v1 -kind: ObjectStore -metadata: - name: minio-store -spec: - configuration: - # [...] - instanceSidecarConfiguration: - retentionPolicyIntervalSeconds: 1800 - resources: - requests: - memory: "XXX" - cpu: "YYY" - limits: - memory: "XXX" - cpu: "YYY" -``` - -:::note -If more than one `ObjectStore` applies, the `instanceSidecarConfiguration` of -the one set in `.spec.plugins` has priority. -::: diff --git a/web/versioned_docs/version-0.9.0/compression.md b/web/versioned_docs/version-0.9.0/compression.md deleted file mode 100644 index 2abbede..0000000 --- a/web/versioned_docs/version-0.9.0/compression.md +++ /dev/null @@ -1,43 +0,0 @@ ---- -sidebar_position: 80 ---- - -# Compression - - - -By default, backups and WAL files are archived **uncompressed**. However, the -Barman Cloud Plugin supports multiple compression algorithms via -`barman-cloud-backup` and `barman-cloud-wal-archive`, allowing you to optimize -for space, speed, or a balance of both. - -### Supported Compression Algorithms - -- `bzip2` -- `gzip` -- `lz4` (WAL only) -- `snappy` -- `xz` (WAL only) -- `zstd` (WAL only) - -Compression settings for base backups and WAL archives are configured -independently. For implementation details, refer to the corresponding API -definitions: - -- [`DataBackupConfiguration`](https://pkg.go.dev/github.com/cloudnative-pg/barman-cloud/pkg/api#DataBackupConfiguration) -- [`WALBackupConfiguration`](https://pkg.go.dev/github.com/cloudnative-pg/barman-cloud/pkg/api#WalBackupConfiguration) - -:::important -Compression impacts both performance and storage efficiency. Choose the right -algorithm based on your recovery time objectives (RTO), storage capacity, and -network throughput. -::: - -## Compression Benchmark (on MinIO) - -| Compression | Backup Time (ms) | Restore Time (ms) | Uncompressed Size (MB) | Compressed Size (MB) | Ratio | -| ----------- | ---------------- | ----------------- | ---------------------- | -------------------- | ----- | -| None | 10,927 | 7,553 | 395 | 395 | 1.0:1 | -| bzip2 | 25,404 | 13,886 | 395 | 67 | 5.9:1 | -| gzip | 116,281 | 3,077 | 395 | 91 | 4.3:1 | -| snappy | 8,134 | 8,341 | 395 | 166 | 2.4:1 | diff --git a/web/versioned_docs/version-0.9.0/concepts.md b/web/versioned_docs/version-0.9.0/concepts.md deleted file mode 100644 index 3832df3..0000000 --- a/web/versioned_docs/version-0.9.0/concepts.md +++ /dev/null @@ -1,177 +0,0 @@ ---- -sidebar_position: 10 ---- - -# Main Concepts - - - -:::important -Before proceeding, make sure to review the following sections of the -CloudNativePG documentation: - -- [**Backup**](https://cloudnative-pg.io/documentation/current/backup/) -- [**WAL Archiving**](https://cloudnative-pg.io/documentation/current/wal_archiving/) -- [**Recovery**](https://cloudnative-pg.io/documentation/current/recovery/) -::: - -The **Barman Cloud Plugin** enables **hot (online) backups** of PostgreSQL -clusters in CloudNativePG through [`barman-cloud`](https://pgbarman.org), -supporting continuous physical backups and WAL archiving to an **object -store**β€”without interrupting write operations. - -It also supports both **full recovery** and **Point-in-Time Recovery (PITR)** -of a PostgreSQL cluster. - -## The Object Store - -At the core is the [`ObjectStore` custom resource (CRD)](plugin-barman-cloud.v1.md#objectstorespec), -which acts as the interface between the PostgreSQL cluster and the target -object storage system. It allows you to configure: - -- **Authentication and bucket location** via the `.spec.configuration` section -- **WAL archiving** settingsβ€”such as compression type, parallelism, and - server-side encryptionβ€”under `.spec.configuration.wal` -- **Base backup options**β€”with similar settings for compression, concurrency, - and encryptionβ€”under `.spec.configuration.data` -- **Retention policies** to manage the life-cycle of archived WALs and backups - via `.spec.configuration.retentionPolicy` - -WAL files are archived in the `wals` directory, while base backups are stored -as **tarballs** in the `base` directory, following the -[Barman Cloud convention](https://docs.pgbarman.org/cloud/latest/usage/#object-store-layout). - -The plugin also offers advanced capabilities, including -[backup tagging](misc.md#backup-object-tagging) and -[extra options for backups and WAL archiving](misc.md#extra-options-for-backup-and-wal-archiving). - -:::tip -For details, refer to the -[API reference for the `ObjectStore` resource](plugin-barman-cloud.v1.md#objectstorespec). -::: - -## Integration with a CloudNativePG Cluster - -CloudNativePG can delegate continuous backup and recovery responsibilities to -the **Barman Cloud Plugin** by configuring the `.spec.plugins` section of a -`Cluster` resource. This setup requires a corresponding `ObjectStore` resource -to be defined. - -:::important -While it is technically possible to reuse the same `ObjectStore` for multiple -`Cluster` resources within the same namespace, it is strongly recommended to -dedicate one object store per PostgreSQL cluster to ensure data isolation and -operational clarity. -::: - -The following example demonstrates how to configure a CloudNativePG cluster -named `cluster-example` to use a previously defined `ObjectStore` (also named -`cluster-example`) in the same namespace. Setting `isWALArchiver: true` enables -WAL archiving through the plugin: - -```yaml -apiVersion: postgresql.cnpg.io/v1 -kind: Cluster -metadata: - name: cluster-example -spec: - # Other cluster settings... - plugins: - - name: barman-cloud.cloudnative-pg.io - isWALArchiver: true - parameters: - barmanObjectName: cluster-example -``` - -## Backup of a Postgres Cluster - -Once the object store is defined and the `Cluster` is configured to use the -Barman Cloud Plugin, **WAL archiving is activated immediately** on the -PostgreSQL primary. - -Physical base backups are seamlessly managed by CloudNativePG using the -`Backup` and `ScheduledBackup` resources, respectively for -[on-demand](https://cloudnative-pg.io/documentation/current/backup/#on-demand-backups) -and -[scheduled](https://cloudnative-pg.io/documentation/current/backup/#scheduled-backups) -backups. - -To use the Barman Cloud Plugin, you must set the `method` to `plugin` and -configure the `pluginConfiguration` section as shown: - -```yaml -[...] -spec: - method: plugin - pluginConfiguration: - name: barman-cloud.cloudnative-pg.io - [...] -``` - -With this configuration, CloudNativePG supports: - -- Backups from both **primary** and **standby** instances -- Backups from **designated primaries** in a distributed topology using - [replica clusters](https://cloudnative-pg.io/documentation/current/replica_cluster/) - -:::tip -For details on how to back up from a standby, refer to the official documentation: -[Backup from a standby](https://cloudnative-pg.io/documentation/current/backup/#backup-from-a-standby). -::: - -:::important -Both backup and WAL archiving operations are executed by sidecar containers -running in the same pod as the PostgreSQL `Cluster` primary instanceβ€”except -when backups are taken from a standby, in which case the sidecar runs alongside -the standby pod. -The sidecar containers use a [dedicated container image](images.md) that -includes only the supported version of Barman Cloud. -::: - -## Recovery of a Postgres Cluster - -In PostgreSQL, *recovery* refers to the process of starting a database instance -from an existing backup. The Barman Cloud Plugin integrates with CloudNativePG -to support both **full recovery** and **Point-in-Time Recovery (PITR)** from an -object store. - -Recovery in this context is *not in-place*: it bootstraps a brand-new -PostgreSQL cluster from a backup and replays the necessary WAL files to reach -the desired recovery target. - -To perform a recovery, define an *external cluster* that references the -appropriate `ObjectStore`, and use it as the source in the `bootstrap` section -of the target cluster: - -```yaml -[...] -spec: - [...] - bootstrap: - recovery: - source: source - externalClusters: - - name: source - plugin: - name: barman-cloud.cloudnative-pg.io - parameters: - barmanObjectName: cluster-example - serverName: cluster-example - [...] -``` - -The critical element here is the `externalClusters` section of the `Cluster` -resource, where the `plugin` stanza instructs CloudNativePG to use the Barman -Cloud Plugin to access the object store for recovery. - -This same mechanism can be used for a variety of scenarios enabled by the -CloudNativePG API, including: - -* **Full cluster recovery** from the latest backup -* **Point-in-Time Recovery (PITR)** -* Bootstrapping **replica clusters** in a distributed topology - -:::tip -For complete instructions and advanced use cases, refer to the official -[Recovery documentation](https://cloudnative-pg.io/documentation/current/recovery/). -::: diff --git a/web/versioned_docs/version-0.9.0/images.md b/web/versioned_docs/version-0.9.0/images.md deleted file mode 100644 index f6c32d3..0000000 --- a/web/versioned_docs/version-0.9.0/images.md +++ /dev/null @@ -1,37 +0,0 @@ ---- -sidebar_position: 99 ---- - -# Container Images - - - -The Barman Cloud Plugin is distributed using two container images: - -- One for deploying the plugin components -- One for the sidecar that runs alongside each PostgreSQL instance in a - CloudNativePG `Cluster` using the plugin - -## Plugin Container Image - -The plugin image contains the logic required to operate the Barman Cloud Plugin -within your Kubernetes environment with CloudNativePG. It is published on the -GitHub Container Registry at `ghcr.io/cloudnative-pg/plugin-barman-cloud`. - -This image is built from the -[`Dockerfile.plugin`](https://github.com/cloudnative-pg/plugin-barman-cloud/blob/main/containers/Dockerfile.plugin) -in the plugin repository. - -## Sidecar Container Image - -The sidecar image is used within each PostgreSQL pod in the cluster. It -includes the latest supported version of Barman Cloud and is responsible for -performing WAL archiving and backups on behalf of CloudNativePG. - -It is available at `ghcr.io/cloudnative-pg/plugin-barman-cloud-sidecar` and is -built from the -[`Dockerfile.sidecar`](https://github.com/cloudnative-pg/plugin-barman-cloud/blob/main/containers/Dockerfile.sidecar). - -These sidecar images are designed to work seamlessly with the -[`minimal` PostgreSQL container images](https://github.com/cloudnative-pg/postgres-containers?tab=readme-ov-file#minimal-images) -maintained by the CloudNativePG Community. diff --git a/web/versioned_docs/version-0.9.0/installation.mdx b/web/versioned_docs/version-0.9.0/installation.mdx deleted file mode 100644 index 027d1e8..0000000 --- a/web/versioned_docs/version-0.9.0/installation.mdx +++ /dev/null @@ -1,109 +0,0 @@ ---- -sidebar_position: 20 ---- - -# Installation - -:::important -1. The plugin **must** be installed in the same namespace as the CloudNativePG - operator (typically `cnpg-system`). - -2. Keep in mind that the operator's **listening namespaces** may differ from its - installation namespace. Double-check this to avoid configuration issues. -::: - -## Verifying the Requirements - -Before installing the plugin, make sure the [requirements](intro.md#requirements) are met. - -### CloudNativePG Version - -Ensure you're running a version of CloudNativePG that is compatible with the -plugin. If installed in the default `cnpg-system` namespace, you can verify the -version with: - -```sh -kubectl get deployment -n cnpg-system cnpg-controller-manager \ - -o jsonpath="{.spec.template.spec.containers[*].image}" -``` - -Example output: - -```output -ghcr.io/cloudnative-pg/cloudnative-pg:1.26.0 -``` - -The version **must be 1.26 or newer**. - -### cert-manager - -Use the [cmctl](https://cert-manager.io/docs/reference/cmctl/#installation) -tool to confirm that `cert-manager` is installed and available: - -```sh -cmctl check api -``` - -Example output: - -```output -The cert-manager API is ready -``` - -Both checks are required before proceeding with the installation. - -## Installing the Barman Cloud Plugin - -import { InstallationSnippet } from '@site/src/components/Installation'; - -Install the plugin using `kubectl` by applying the manifest for the latest -release: - - - -Example output: - -```output -customresourcedefinition.apiextensions.k8s.io/objectstores.barmancloud.cnpg.io created -serviceaccount/plugin-barman-cloud created -role.rbac.authorization.k8s.io/leader-election-role created -clusterrole.rbac.authorization.k8s.io/metrics-auth-role created -clusterrole.rbac.authorization.k8s.io/metrics-reader created -clusterrole.rbac.authorization.k8s.io/objectstore-editor-role created -clusterrole.rbac.authorization.k8s.io/objectstore-viewer-role created -clusterrole.rbac.authorization.k8s.io/plugin-barman-cloud created -rolebinding.rbac.authorization.k8s.io/leader-election-rolebinding created -clusterrolebinding.rbac.authorization.k8s.io/metrics-auth-rolebinding created -clusterrolebinding.rbac.authorization.k8s.io/plugin-barman-cloud-binding created -secret/plugin-barman-cloud-8tfddg42gf created -service/barman-cloud created -deployment.apps/barman-cloud configured -certificate.cert-manager.io/barman-cloud-client created -certificate.cert-manager.io/barman-cloud-server created -issuer.cert-manager.io/selfsigned-issuer created -``` - -Finally, check that the deployment is up and running: - -```sh -kubectl rollout status deployment \ - -n cnpg-system barman-cloud -``` - -Example output: - -```output -deployment "barman-cloud" successfully rolled out -``` - -This confirms that the plugin is deployed and ready to use. - -## Testing the latest development snapshot - -You can also test the latest development snapshot of the plugin with the -following command: - -```sh -kubectl apply -f \ - https://raw.githubusercontent.com/cloudnative-pg/plugin-barman-cloud/refs/heads/main/manifest.yaml -``` diff --git a/web/versioned_docs/version-0.9.0/intro.md b/web/versioned_docs/version-0.9.0/intro.md deleted file mode 100644 index 9781d0d..0000000 --- a/web/versioned_docs/version-0.9.0/intro.md +++ /dev/null @@ -1,86 +0,0 @@ ---- -sidebar_position: 1 -sidebar_label: "Introduction" ---- - -# Barman Cloud Plugin - - - -The **Barman Cloud Plugin** for [CloudNativePG](https://cloudnative-pg.io/) -enables online continuous physical backups of PostgreSQL clusters to object storage -using the `barman-cloud` suite from the [Barman](https://docs.pgbarman.org/release/latest/) -project. - -:::important -If you plan to migrate your existing CloudNativePG cluster to the new -plugin-based approach using the Barman Cloud Plugin, see -["Migrating from Built-in CloudNativePG Backup"](migration.md) -for detailed instructions. -::: - -## Requirements - -Before using the Barman Cloud Plugin, ensure that the following components are -installed and properly configured: - -- [CloudNativePG](https://cloudnative-pg.io) version 1.26 or later - - - We strongly recommend version 1.27.0 or later, which includes improved - error handling and status reporting for the plugin. - - If you are running an earlier release, refer to the - [upgrade guide](https://cloudnative-pg.io/documentation/current/installation_upgrade). - -- [cert-manager](https://cert-manager.io/) - - - The recommended way to enable secure TLS communication between the plugin - and the operator. - - Alternatively, you can provide your own certificate bundles. See the - [CloudNativePG documentation on TLS configuration](https://cloudnative-pg.io/documentation/current/cnpg_i/#configuring-tls-certificates). - -- [`kubectl-cnpg`](https://cloudnative-pg.io/documentation/current/kubectl-plugin/) - plugin (optional but recommended) - - - Simplifies debugging and monitoring with additional status and inspection - commands. - - Multiple installation options are available in the - [installation guide](https://cloudnative-pg.io/documentation/current/kubectl-plugin/#install). - -## Key Features - -This plugin provides the following capabilities: - -- Physical online backup of the data directory -- Physical restore of the data directory -- Write-Ahead Log (WAL) archiving -- WAL restore -- Full cluster recovery -- Point-in-Time Recovery (PITR) -- Seamless integration with replica clusters for bootstrap and WAL restore from archive - -:::important -The Barman Cloud Plugin is designed to **replace the in-tree object storage support** -previously provided via the `.spec.backup.barmanObjectStore` section in the -`Cluster` resource. -Backups created using the in-tree approach are fully supported and compatible -with this plugin. -::: - -## Supported Object Storage Providers - -The plugin works with all storage backends supported by `barman-cloud`, including: - -- **Amazon S3** -- **Google Cloud Storage** -- **Microsoft Azure Blob Storage** - -In addition, the following S3-compatible and simulator solutions have been -tested and verified: - -- [MinIO](https://min.io/) – An S3-compatible storage solution -- [Azurite](https://github.com/Azure/Azurite) – A simulator for Azure Blob Storage -- [fake-gcs-server](https://github.com/fsouza/fake-gcs-server) – A simulator for Google Cloud Storage - -:::tip -For more details, refer to [Object Store Providers](object_stores.md). -::: diff --git a/web/versioned_docs/version-0.9.0/migration.md b/web/versioned_docs/version-0.9.0/migration.md deleted file mode 100644 index 2c99ada..0000000 --- a/web/versioned_docs/version-0.9.0/migration.md +++ /dev/null @@ -1,274 +0,0 @@ ---- -sidebar_position: 40 ---- - -# Migrating from Built-in CloudNativePG Backup - - - -The in-tree support for Barman Cloud in CloudNativePG is **deprecated starting -from version 1.26** and will be removed in a future release. - -If you're currently relying on the built-in Barman Cloud integration, you can -migrate seamlessly to the new **plugin-based architecture** using the Barman -Cloud Plugin, without data loss. Follow these steps: - -- [Install the Barman Cloud Plugin](installation.mdx) -- Create an `ObjectStore` resource by translating the contents of the - `.spec.backup.barmanObjectStore` section from your existing `Cluster` - definition -- Modify the `Cluster` resource in a single atomic change to switch from - in-tree backup to the plugin -- Update any `ScheduledBackup` resources to use the plugin -- Update the `externalClusters` configuration, where applicable - -:::tip -For a working example, refer to [this commit](https://github.com/cloudnative-pg/cnpg-playground/commit/596f30e252896edf8f734991c3538df87630f6f7) -from the [CloudNativePG Playground project](https://github.com/cloudnative-pg/cnpg-playground), -which demonstrates a full migration. -::: - ---- - -## Step 1: Define the `ObjectStore` - -Begin by creating an `ObjectStore` resource in the same namespace as your -PostgreSQL `Cluster`. - -There is a **direct mapping** between the `.spec.backup.barmanObjectStore` -section in CloudNativePG and the `.spec.configuration` field in the -`ObjectStore` CR. The conversion is mostly mechanical, with one key difference: - -:::warning -In the plugin architecture, retention policies are defined as part of the `ObjectStore`. -In contrast, the in-tree implementation defined them at the `Cluster` level. -::: - -If your `Cluster` used `.spec.backup.retentionPolicy`, move that configuration -to `.spec.retentionPolicy` in the `ObjectStore`. - ---- - -### Example - -Here’s an excerpt from a traditional in-tree CloudNativePG backup configuration -taken from the CloudNativePG Playground project: - -```yaml -apiVersion: postgresql.cnpg.io/v1 -kind: Cluster -metadata: - name: pg-eu -spec: - # [...] - backup: - barmanObjectStore: - destinationPath: s3://backups/ - endpointURL: http://minio-eu:9000 - s3Credentials: - accessKeyId: - name: minio-eu - key: ACCESS_KEY_ID - secretAccessKey: - name: minio-eu - key: ACCESS_SECRET_KEY - wal: - compression: gzip -``` - -This configuration translates to the following `ObjectStore` resource for the -plugin: - -```yaml -apiVersion: barmancloud.cnpg.io/v1 -kind: ObjectStore -metadata: - name: minio-eu -spec: - configuration: - destinationPath: s3://backups/ - endpointURL: http://minio-eu:9000 - s3Credentials: - accessKeyId: - name: minio-eu - key: ACCESS_KEY_ID - secretAccessKey: - name: minio-eu - key: ACCESS_SECRET_KEY - wal: - compression: gzip -``` - -As you can see, the contents of `barmanObjectStore` have been copied directly -under the `configuration` field of the `ObjectStore` resource, using the same -secret references. - -## Step 2: Update the `Cluster` for plugin WAL archiving - -Once the `ObjectStore` resource is in place, update the `Cluster` resource as -follows in a single atomic change: - -- Remove the `.spec.backup.barmanObjectStore` section -- Remove `.spec.backup.retentionPolicy` if it was defined (as it is now in the - `ObjectStore`) -- Remove the entire `spec.backup` section if it is now empty -- Add `barman-cloud.cloudnative-pg.io` to the `plugins` list, as described in - [Configuring WAL archiving](usage.md#configuring-wal-archiving) - -This will trigger a rolling update of the `Cluster`, switching continuous -backup from the in-tree implementation to the plugin-based approach. - -### Example - -The updated `pg-eu` cluster will have this configuration instead of the -previous `backup` section: - -```yaml - plugins: - - name: barman-cloud.cloudnative-pg.io - isWALArchiver: true - parameters: - barmanObjectName: minio-eu -``` - ---- - -## Step 3: Update the `ScheduledBackup` - -After switching the `Cluster` to use the plugin, update your `ScheduledBackup` -resources to match. - -Set the backup `method` to `plugin` and reference the plugin name via -`pluginConfiguration`, as shown in ["Performing a base backup"](usage.md#performing-a-base-backup). - -### Example - -Original in-tree `ScheduledBackup`: - -```yaml -apiVersion: postgresql.cnpg.io/v1 -kind: ScheduledBackup -metadata: - name: pg-eu-backup -spec: - cluster: - name: pg-eu - schedule: '0 0 0 * * *' - backupOwnerReference: self -``` - -Updated version using the plugin: - -```yaml -apiVersion: postgresql.cnpg.io/v1 -kind: ScheduledBackup -metadata: - name: pg-eu-backup -spec: - cluster: - name: pg-eu - schedule: '0 0 0 * * *' - backupOwnerReference: self - method: plugin - pluginConfiguration: - name: barman-cloud.cloudnative-pg.io -``` - ---- - -## Step 4: Update the `externalClusters` configuration - -If your `Cluster` relies on one or more external clusters that use the in-tree -Barman Cloud integration, you need to update those configurations to use the -plugin-based architecture. - -When a replica cluster fetches WAL files or base backups from an external -source that used the built-in backup method, follow these steps: - -1. Create a corresponding `ObjectStore` resource for the external cluster, as - shown in [Step 1](#step-1-define-the-objectstore) -2. Update the `externalClusters` section of your replica cluster to use the - plugin instead of the in-tree `barmanObjectStore` field - -### Example - -Consider the original configuration using in-tree Barman Cloud: - -```yaml -apiVersion: postgresql.cnpg.io/v1 -kind: Cluster -metadata: - name: pg-us -spec: - # [...] - externalClusters: - - name: pg-eu - barmanObjectStore: - destinationPath: s3://backups/ - endpointURL: http://minio-eu:9000 - serverName: pg-eu - s3Credentials: - accessKeyId: - name: minio-eu - key: ACCESS_KEY_ID - secretAccessKey: - name: minio-eu - key: ACCESS_SECRET_KEY - wal: - compression: gzip -``` - -Create the `ObjectStore` resource for the external cluster: - -```yaml -apiVersion: barmancloud.cnpg.io/v1 -kind: ObjectStore -metadata: - name: minio-eu -spec: - configuration: - destinationPath: s3://backups/ - endpointURL: http://minio-eu:9000 - s3Credentials: - accessKeyId: - name: minio-eu - key: ACCESS_KEY_ID - secretAccessKey: - name: minio-eu - key: ACCESS_SECRET_KEY - wal: - compression: gzip -``` - -Update the external cluster configuration to use the plugin: - -```yaml -apiVersion: postgresql.cnpg.io/v1 -kind: Cluster -metadata: - name: pg-us -spec: - # [...] - externalClusters: - - name: pg-eu - plugin: - name: barman-cloud.cloudnative-pg.io - parameters: - barmanObjectName: minio-eu - serverName: pg-eu -``` - -## Step 5: Verify your metrics - -When migrating from the in-core solution to the plugin-based approach, you need -to monitor a different set of metrics, as described in the -["Observability"](observability.md) section. - -The table below summarizes the name changes between the old in-core metrics and -the new plugin-based ones: - -| Old metric name | New metric name | -| ------------------------------------------------ | ---------------------------------------------------------------- | -| `cnpg_collector_last_failed_backup_timestamp` | `barman_cloud_cloudnative_pg_io_last_failed_backup_timestamp` | -| `cnpg_collector_last_available_backup_timestamp` | `barman_cloud_cloudnative_pg_io_last_available_backup_timestamp` | -| `cnpg_collector_first_recoverability_point` | `barman_cloud_cloudnative_pg_io_first_recoverability_point` | diff --git a/web/versioned_docs/version-0.9.0/misc.md b/web/versioned_docs/version-0.9.0/misc.md deleted file mode 100644 index 168ff29..0000000 --- a/web/versioned_docs/version-0.9.0/misc.md +++ /dev/null @@ -1,76 +0,0 @@ ---- -sidebar_position: 90 ---- - -# Miscellaneous - - - -## Backup Object Tagging - -You can attach key-value metadata tags to backup artifactsβ€”such as base -backups, WAL files, and history filesβ€”via the `.spec.configuration` section of -the `ObjectStore` resource. - -- `tags`: applied to base backups and WAL files -- `historyTags`: applied to history files only - -### Example - -```yaml -apiVersion: barmancloud.cnpg.io/v1 -kind: ObjectStore -metadata: - name: my-store -spec: - configuration: - [...] - tags: - backupRetentionPolicy: "expire" - historyTags: - backupRetentionPolicy: "keep" - [...] -``` - -## Extra Options for Backup and WAL Archiving - -You can pass additional command-line arguments to `barman-cloud-backup` and -`barman-cloud-wal-archive` using the `additionalCommandArgs` field in the -`ObjectStore` configuration. - -- `.spec.configuration.data.additionalCommandArgs`: for `barman-cloud-backup` -- `.spec.configuration.wal.archiveAdditionalCommandArgs`: for `barman-cloud-wal-archive` - -Each field accepts a list of string arguments. If an argument is already -configured elsewhere in the plugin, the duplicate will be ignored. - -### Example: Extra Backup Options - -```yaml -kind: ObjectStore -metadata: - name: my-store -spec: - configuration: - data: - additionalCommandArgs: - - "--min-chunk-size=5MB" - - "--read-timeout=60" -``` - -### Example: Extra WAL Archive Options - -```yaml -kind: ObjectStore -metadata: - name: my-store -spec: - configuration: - wal: - archiveAdditionalCommandArgs: - - "--max-concurrency=1" - - "--read-timeout=60" -``` - -For a complete list of supported options, refer to the -[official Barman Cloud documentation](https://docs.pgbarman.org/release/latest/). diff --git a/web/versioned_docs/version-0.9.0/object_stores.md b/web/versioned_docs/version-0.9.0/object_stores.md deleted file mode 100644 index 74e0473..0000000 --- a/web/versioned_docs/version-0.9.0/object_stores.md +++ /dev/null @@ -1,454 +0,0 @@ ---- -sidebar_position: 50 ---- - -# Object Store Providers - - - -The Barman Cloud Plugin enables the storage of PostgreSQL cluster backup files -in any object storage service supported by the -[Barman Cloud infrastructure](https://docs.pgbarman.org/release/latest/). - -Currently, Barman Cloud supports the following providers: - -- [Amazon S3](#aws-s3) -- [Microsoft Azure Blob Storage](#azure-blob-storage) -- [Google Cloud Storage](#google-cloud-storage) - -You may also use any S3- or Azure-compatible implementation of the above -services. - -To configure object storage with Barman Cloud, you must define an -[`ObjectStore` object](plugin-barman-cloud.v1.md#objectstore), which -establishes the connection between your PostgreSQL cluster and the object -storage backend. - -Configuration details β€” particularly around authentication β€” will vary depending on -the specific object storage provider you are using. - -The following sections detail the setup for each. - ---- - -## AWS S3 - -[AWS Simple Storage Service (S3)](https://aws.amazon.com/s3/) is one of the -most widely adopted object storage solutions. - -The Barman Cloud plugin for CloudNativePG integrates with S3 through two -primary authentication mechanisms: - -- [IAM Roles for Service Accounts (IRSA)](https://docs.aws.amazon.com/eks/latest/userguide/iam-roles-for-service-accounts.html) β€” - recommended for clusters running on EKS -- Access keys β€” using `ACCESS_KEY_ID` and `ACCESS_SECRET_KEY` credentials - -### Access Keys - -To authenticate using access keys, you’ll need: - -- `ACCESS_KEY_ID`: the public key used to authenticate to S3 -- `ACCESS_SECRET_KEY`: the corresponding secret key -- `ACCESS_SESSION_TOKEN`: (optional) a temporary session token, if required - -These credentials must be stored securely in a Kubernetes secret: - -```sh -kubectl create secret generic aws-creds \ - --from-literal=ACCESS_KEY_ID= \ - --from-literal=ACCESS_SECRET_KEY= -# --from-literal=ACCESS_SESSION_TOKEN= # if required -``` - -The credentials will be encrypted at rest if your Kubernetes environment -supports it. - -You can then reference the secret in your `ObjectStore` definition: - -```yaml -apiVersion: barmancloud.cnpg.io/v1 -kind: ObjectStore -metadata: - name: aws-store -spec: - configuration: - destinationPath: "s3://BUCKET_NAME/path/to/folder" - s3Credentials: - accessKeyId: - name: aws-creds - key: ACCESS_KEY_ID - secretAccessKey: - name: aws-creds - key: ACCESS_SECRET_KEY - [...] -``` - -### IAM Role for Service Account (IRSA) - -To use IRSA with EKS, configure the service account of the PostgreSQL cluster -with the appropriate annotation: - -```yaml -apiVersion: postgresql.cnpg.io/v1 -kind: Cluster -metadata: - [...] -spec: - serviceAccountTemplate: - metadata: - annotations: - eks.amazonaws.com/role-arn: arn:[...] - [...] -``` - -### S3 Lifecycle Policy - -Barman Cloud uploads backup files to S3 but does not modify them afterward. -To enhance data durability and protect against accidental or malicious loss, -it's recommended to implement the following best practices: - -- Enable object versioning -- Enable object locking to prevent objects from being deleted or overwritten - for a defined period or indefinitely (this provides an additional layer of - protection against accidental deletion and ransomware attacks) -- Set lifecycle rules to expire current versions a few days after your Barman - retention window -- Expire non-current versions after a longer period - -These strategies help you safeguard backups without requiring broad delete -permissions, ensuring both security and compliance with minimal operational -overhead. - - -### S3-Compatible Storage Providers - -You can use S3-compatible services like **MinIO**, **Linode (Akamai) Object Storage**, -or **DigitalOcean Spaces** by specifying a custom `endpointURL`. - -Example with Linode (Akamai) Object Storage (`us-east1`): - -```yaml -apiVersion: barmancloud.cnpg.io/v1 -kind: ObjectStore -metadata: - name: linode-store -spec: - configuration: - destinationPath: "s3://BUCKET_NAME/" - endpointURL: "https://us-east1.linodeobjects.com" - s3Credentials: - [...] - [...] -``` - -Recent changes to the [boto3 implementation](https://github.com/boto/boto3/issues/4392) -of [Amazon S3 Data Integrity Protections](https://docs.aws.amazon.com/sdkref/latest/guide/feature-dataintegrity.html) -may lead to the `x-amz-content-sha256` error when using the Barman Cloud -Plugin. - -If you encounter this issue (see [GitHub issue #393](https://github.com/cloudnative-pg/plugin-barman-cloud/issues/393)), -you can apply the following workaround by setting specific environment -variables in the `ObjectStore` resource: - -```yaml -apiVersion: barmancloud.cnpg.io/v1 -kind: ObjectStore -metadata: - name: linode-store -spec: - instanceSidecarConfiguration: - env: - - name: AWS_REQUEST_CHECKSUM_CALCULATION - value: when_required - - name: AWS_RESPONSE_CHECKSUM_VALIDATION - value: when_required - [...] -``` - -These settings ensure that checksum calculations and validations are only -applied when explicitly required, avoiding compatibility issues with certain -S3-compatible storage providers. - -Example with DigitalOcean Spaces (SFO3, path-style): - -```yaml -apiVersion: barmancloud.cnpg.io/v1 -kind: ObjectStore -metadata: - name: digitalocean-store -spec: - configuration: - destinationPath: "s3://BUCKET_NAME/path/to/folder" - endpointURL: "https://sfo3.digitaloceanspaces.com" - s3Credentials: - [...] - [...] -``` - -### Using Object Storage with a Private CA - -For object storage services (e.g., MinIO) that use HTTPS with certificates -signed by a private CA, set the `endpointCA` field in the `ObjectStore` -definition. Unless you already have it, create a Kubernetes `Secret` with the -CA bundle: - -```sh -kubectl create secret generic my-ca-secret --from-file=ca.crt -``` - -Then reference it: - -```yaml -apiVersion: barmancloud.cnpg.io/v1 -kind: ObjectStore -metadata: - name: minio-store -spec: - configuration: - endpointURL: - endpointCA: - name: my-ca-secret - key: ca.crt - [...] -``` - - -:::note -If you want `ConfigMaps` and `Secrets` to be **automatically** reloaded by -instances, you can add a label with the key `cnpg.io/reload` to the -`Secrets`/`ConfigMaps`. Otherwise, you will have to reload the instances using the -`kubectl cnpg reload` subcommand. -::: - ---- - -## Azure Blob Storage - -[Azure Blob Storage](https://azure.microsoft.com/en-us/services/storage/blobs/) -is Microsoft’s cloud-based object storage solution. - -Barman Cloud supports the following authentication methods: - -- [Connection String](https://learn.microsoft.com/en-us/azure/storage/common/storage-configure-connection-string) -- Storage Account Name + [Access Key](https://learn.microsoft.com/en-us/azure/storage/common/storage-account-keys-manage) -- Storage Account Name + [SAS Token](https://learn.microsoft.com/en-us/azure/storage/blobs/sas-service-create) -- [Azure AD Workload Identity](https://azure.github.io/azure-workload-identity/docs/introduction.html) - -### Azure AD Workload Identity - -This method avoids storing credentials in Kubernetes via the -`.spec.configuration.inheritFromAzureAD` option: - -```yaml -apiVersion: barmancloud.cnpg.io/v1 -kind: ObjectStore -metadata: - name: azure-store -spec: - configuration: - destinationPath: "" - azureCredentials: - inheritFromAzureAD: true - [...] -``` - -### Access Key, SAS Token, or Connection String - -Store credentials in a Kubernetes secret: - -```sh -kubectl create secret generic azure-creds \ - --from-literal=AZURE_STORAGE_ACCOUNT= \ - --from-literal=AZURE_STORAGE_KEY= \ - --from-literal=AZURE_STORAGE_SAS_TOKEN= \ - --from-literal=AZURE_STORAGE_CONNECTION_STRING= -``` - -Then reference the required keys in your `ObjectStore`: - -```yaml -apiVersion: barmancloud.cnpg.io/v1 -kind: ObjectStore -metadata: - name: azure-store -spec: - configuration: - destinationPath: "" - azureCredentials: - connectionString: - name: azure-creds - key: AZURE_CONNECTION_STRING - storageAccount: - name: azure-creds - key: AZURE_STORAGE_ACCOUNT - storageKey: - name: azure-creds - key: AZURE_STORAGE_KEY - storageSasToken: - name: azure-creds - key: AZURE_STORAGE_SAS_TOKEN - [...] -``` - -For Azure Blob, the destination path format is: - -``` -://..core.windows.net// -``` - -### Azure-Compatible Providers - -If you're using a different implementation (e.g., Azurite or emulator): - -``` -://:/// -``` - ---- - -## Google Cloud Storage - -[Google Cloud Storage](https://cloud.google.com/storage/) is supported with two -authentication modes: - -- **GKE Workload Identity** (recommended inside Google Kubernetes Engine) -- **Service Account JSON key** via the `GOOGLE_APPLICATION_CREDENTIALS` environment variable - -### GKE Workload Identity - -Use the [Workload Identity authentication](https://cloud.google.com/kubernetes-engine/docs/how-to/workload-identity) -when running in GKE: - -1. Set `googleCredentials.gkeEnvironment` to `true` in the `ObjectStore` - resource -2. Annotate the `serviceAccountTemplate` in the `Cluster` resource with the GCP - service account - -For example, in the `ObjectStore` resource: - -```yaml -apiVersion: barmancloud.cnpg.io/v1 -kind: ObjectStore -metadata: - name: google-store -spec: - configuration: - destinationPath: "gs:///" - googleCredentials: - gkeEnvironment: true -``` - -And in the `Cluster` resource: - -```yaml -apiVersion: postgresql.cnpg.io/v1 -kind: Cluster -spec: - serviceAccountTemplate: - metadata: - annotations: - iam.gke.io/gcp-service-account: [...].iam.gserviceaccount.com -``` - -### Service Account JSON Key - -Follow Google’s [authentication setup](https://cloud.google.com/docs/authentication/getting-started), -then: - -```sh -kubectl create secret generic backup-creds --from-file=gcsCredentials=gcs_credentials_file.json -``` - -```yaml -apiVersion: barmancloud.cnpg.io/v1 -kind: ObjectStore -metadata: - name: google-store -spec: - configuration: - destinationPath: "gs:///" - googleCredentials: - applicationCredentials: - name: backup-creds - key: gcsCredentials - [...] -``` - -:::important -This authentication method generates a JSON file within the container -with all the credentials required to access your Google Cloud Storage -bucket. As a result, if someone gains access to the `Pod`, they will also have -write permissions to the bucket. -::: - ---- - - -## MinIO Object Store - -In order to use the Tenant resource you first need to deploy the -[MinIO operator](https://docs.min.io/community/minio-object-store/operations/deployments/installation.html). -For the latest documentation of MinIO, please refer to the -[MinIO official documentation](https://docs.min.io/community/minio-object-store/). - -MinIO Object Store's API is compatible with S3, and the default configuration of the Tenant -will create these services: -- `-console` on port 9090 (with autocert) or 9443 (without autocert) -- `-hl` on port 9000 -Where `` is the `metadata.name` you assigned to your Tenant resource. - -:::note -The `-console` service will only be available if you have enabled the -[MinIO Console](https://docs.min.io/community/minio-object-store/administration/minio-console.html). - -For example, the following Tenant: -```yml -apiVersion: minio.min.io/v2 -kind: Tenant -metadata: - name: cnpg-backups -spec: - [...] -``` -would have services called `cnpg-backups-console` and `cnpg-backups-hl` respectively. - -The `console` service is for managing the tenant, while the `hl` service exposes the S3 -compatible API. If your tenant is configured with `requestAutoCert` you will communicate -to these services over HTTPS, if not you will use HTTP. - -For authentication you can use your username and password, or create an access key. -Whichever method you choose, it has to be stored as a secret. - -```sh -kubectl create secret generic minio-creds \ - --from-literal=MINIO_ACCESS_KEY= \ - --from-literal=MINIO_SECRET_KEY= -``` - -Finally, create the Barman ObjectStore: - -```yaml -apiVersion: barmancloud.cnpg.io/v1 -kind: ObjectStore -metadata: - name: minio-store -spec: - configuration: - destinationPath: s3://BUCKET_NAME/ - endpointURL: http://-hl:9000 - s3Credentials: - accessKeyId: - name: minio-creds - key: MINIO_ACCESS_KEY - secretAccessKey: - name: minio-creds - key: MINIO_SECRET_KEY - [...] -``` - -:::important -Verify on `s3://BUCKET_NAME/` the presence of archived WAL files before -proceeding with a backup. -::: - ---- diff --git a/web/versioned_docs/version-0.9.0/observability.md b/web/versioned_docs/version-0.9.0/observability.md deleted file mode 100644 index 274b973..0000000 --- a/web/versioned_docs/version-0.9.0/observability.md +++ /dev/null @@ -1,24 +0,0 @@ ---- -sidebar_position: 55 ---- - -# Observability - - - -The Barman Cloud Plugin exposes the following metrics through the native -Prometheus exporter of the instance manager: - -- `barman_cloud_cloudnative_pg_io_last_failed_backup_timestamp`: - the UNIX timestamp of the most recent failed backup. - -- `barman_cloud_cloudnative_pg_io_last_available_backup_timestamp`: - the UNIX timestamp of the most recent successfully available backup. - -- `barman_cloud_cloudnative_pg_io_first_recoverability_point`: - the UNIX timestamp representing the earliest point in time from which the - cluster can be recovered. - -These metrics supersede the previously available in-core metrics that used the -`cnpg_collector` prefix. The new metrics are exposed under the -`barman_cloud_cloudnative_pg_io` prefix instead. diff --git a/web/versioned_docs/version-0.9.0/parameters.md b/web/versioned_docs/version-0.9.0/parameters.md deleted file mode 100644 index ca0cd2b..0000000 --- a/web/versioned_docs/version-0.9.0/parameters.md +++ /dev/null @@ -1,19 +0,0 @@ ---- -sidebar_position: 100 ---- - -# Parameters - - - -The following parameters are available for the Barman Cloud Plugin: - -- `barmanObjectName`: references the `ObjectStore` resource to be used by the - plugin. -- `serverName`: Specifies the server name in the object store. - -:::important -The `serverName` parameter in the `ObjectStore` resource is retained solely for -API compatibility with the in-tree `barmanObjectStore` and must always be left empty. -When needed, use the `serverName` plugin parameter in the Cluster configuration instead. -::: diff --git a/web/versioned_docs/version-0.9.0/plugin-barman-cloud.v1.md b/web/versioned_docs/version-0.9.0/plugin-barman-cloud.v1.md deleted file mode 100644 index 7bd607c..0000000 --- a/web/versioned_docs/version-0.9.0/plugin-barman-cloud.v1.md +++ /dev/null @@ -1,108 +0,0 @@ -# API Reference - -## Packages -- [barmancloud.cnpg.io/v1](#barmancloudcnpgiov1) - - -## barmancloud.cnpg.io/v1 - -Package v1 contains API Schema definitions for the barmancloud v1 API group - -### Resource Types -- [ObjectStore](#objectstore) - - - -#### InstanceSidecarConfiguration - - - -InstanceSidecarConfiguration defines the configuration for the sidecar that runs in the instance pods. - - - -_Appears in:_ -- [ObjectStoreSpec](#objectstorespec) - -| Field | Description | Required | Default | Validation | -| --- | --- | --- | --- | --- | -| `env` _[EnvVar](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#envvar-v1-core) array_ | The environment to be explicitly passed to the sidecar | | | | -| `retentionPolicyIntervalSeconds` _integer_ | The retentionCheckInterval defines the frequency at which the
system checks and enforces retention policies. | | 1800 | | -| `resources` _[ResourceRequirements](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcerequirements-v1-core)_ | Resources define cpu/memory requests and limits for the sidecar that runs in the instance pods. | | | | -| `additionalContainerArgs` _string array_ | AdditionalContainerArgs is an optional list of command-line arguments
to be passed to the sidecar container when it starts.
The provided arguments are appended to the container’s default arguments. | | | | -| `logLevel` _string_ | The log level for PostgreSQL instances. Valid values are: `error`, `warning`, `info` (default), `debug`, `trace` | | info | Enum: [error warning info debug trace]
| - - -#### ObjectStore - - - -ObjectStore is the Schema for the objectstores API. - - - - - -| Field | Description | Required | Default | Validation | -| --- | --- | --- | --- | --- | -| `apiVersion` _string_ | `barmancloud.cnpg.io/v1` | True | | | -| `kind` _string_ | `ObjectStore` | True | | | -| `metadata` _[ObjectMeta](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#objectmeta-v1-meta)_ | Refer to Kubernetes API documentation for fields of `metadata`. | True | | | -| `spec` _[ObjectStoreSpec](#objectstorespec)_ | Specification of the desired behavior of the ObjectStore.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status | True | | | -| `status` _[ObjectStoreStatus](#objectstorestatus)_ | Most recently observed status of the ObjectStore. This data may not be up to
date. Populated by the system. Read-only.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status | | | | - - -#### ObjectStoreSpec - - - -ObjectStoreSpec defines the desired state of ObjectStore. - - - -_Appears in:_ -- [ObjectStore](#objectstore) - -| Field | Description | Required | Default | Validation | -| --- | --- | --- | --- | --- | -| `configuration` _[BarmanObjectStoreConfiguration](https://pkg.go.dev/github.com/cloudnative-pg/barman-cloud/pkg/api#BarmanObjectStoreConfiguration)_ | The configuration for the barman-cloud tool suite | True | | | -| `retentionPolicy` _string_ | RetentionPolicy is the retention policy to be used for backups
and WALs (i.e. '60d'). The retention policy is expressed in the form
of `XXu` where `XX` is a positive integer and `u` is in `[dwm]` -
days, weeks, months. | | | Pattern: `^[1-9][0-9]*[dwm]$`
| -| `instanceSidecarConfiguration` _[InstanceSidecarConfiguration](#instancesidecarconfiguration)_ | The configuration for the sidecar that runs in the instance pods | | | | - - -#### ObjectStoreStatus - - - -ObjectStoreStatus defines the observed state of ObjectStore. - - - -_Appears in:_ -- [ObjectStore](#objectstore) - -| Field | Description | Required | Default | Validation | -| --- | --- | --- | --- | --- | -| `serverRecoveryWindow` _object (keys:string, values:[RecoveryWindow](#recoverywindow))_ | ServerRecoveryWindow maps each server to its recovery window | True | | | - - -#### RecoveryWindow - - - -RecoveryWindow represents the time span between the first -recoverability point and the last successful backup of a PostgreSQL -server, defining the period during which data can be restored. - - - -_Appears in:_ -- [ObjectStoreStatus](#objectstorestatus) - -| Field | Description | Required | Default | Validation | -| --- | --- | --- | --- | --- | -| `firstRecoverabilityPoint` _[Time](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#time-v1-meta)_ | The first recoverability point in a PostgreSQL server refers to
the earliest point in time to which the database can be
restored. | True | | | -| `lastSuccessfulBackupTime` _[Time](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#time-v1-meta)_ | The last successful backup time | True | | | -| `lastFailedBackupTime` _[Time](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#time-v1-meta)_ | The last failed backup time | True | | | - - diff --git a/web/versioned_docs/version-0.9.0/resource-name-migration.md b/web/versioned_docs/version-0.9.0/resource-name-migration.md deleted file mode 100644 index f5c1cc3..0000000 --- a/web/versioned_docs/version-0.9.0/resource-name-migration.md +++ /dev/null @@ -1,219 +0,0 @@ ---- -sidebar_position: 90 ---- - -# Resource name migration guide - - - -:::warning -Before proceeding with the migration process, please: -1. **Read this guide in its entirety** to understand what changes will be made -2. **Test in a non-production environment** first if possible -3. **Ensure you have proper backups** of your cluster configuration - -This migration will delete old RBAC resources only after the -`plugin-barman-cloud` upgrade. While the operation is designed to be safe, you -should review and understand the changes before proceeding. The maintainers of -this project are not responsible for any issues that may arise during -migration. - -**Note:** This guide assumes you are using the default `cnpg-system` namespace. -::: - -## Overview - -Starting from version **0.8.0**, the `plugin-barman-cloud` deployment manifests -use more specific, prefixed resource names to avoid conflicts with other -components deployed in the same Kubernetes cluster. - -## What Changed - -The following resources have been renamed to use proper prefixes. - -### Cluster-scoped Resources - -| Old Name | New Name | -|----------------------------|------------------------------------------| -| `metrics-auth-role` | `barman-plugin-metrics-auth-role` | -| `metrics-auth-rolebinding` | `barman-plugin-metrics-auth-rolebinding` | -| `metrics-reader` | `barman-plugin-metrics-reader` | -| `objectstore-viewer-role` | `barman-plugin-objectstore-viewer-role` | -| `objectstore-editor-role` | `barman-plugin-objectstore-editor-role` | - -### Namespace-scoped Resources - -| Old Name | New Name | Namespace | -|-------------------------------|---------------------------------------------|---------------| -| `leader-election-role` | `barman-plugin-leader-election-role` | `cnpg-system` | -| `leader-election-rolebinding` | `barman-plugin-leader-election-rolebinding` | `cnpg-system` | - -## Why This Change? - -Using generic names for cluster-wide resources is discouraged as they may -conflict with other components deployed in the same cluster. The new names make -it clear that these resources belong to the Barman Cloud plugin and help avoid -naming collisions. - -## Migration Instructions - -This three steps migration process is straightforward and can be completed with -a few `kubectl` commands. - -### Step 1: Upgrade plugin-barman-cloud - -Please refer to the [Installation](installation.mdx) section to deploy the new -`plugin-barman-cloud` release. - -### Step 2: Delete Old Cluster-scoped Resources - -:::danger Verify Resources Before Deletion -**IMPORTANT**: The old resource names are generic and could potentially belong -to other components in your cluster. - -**Before deleting each resource, verify it belongs to the Barman Cloud plugin -by checking:** -- For `objectstore-*` roles: Look for `barmancloud.cnpg.io` in the API groups -- For `metrics-*` roles: Check if they reference the `plugin-barman-cloud` - ServiceAccount in `cnpg-system` namespace -- For other roles: Look for labels like `app.kubernetes.io/name: plugin-barman-cloud` - -If a resource doesn't have these indicators, **DO NOT DELETE IT** as it may -belong to another application. - -Carefully review the output of each verification command before proceeding with -the `delete`. -::: - -:::tip Dry Run First -You can add `--dry-run=client` to any `kubectl delete` command to preview what -would be deleted without actually removing anything. -::: - -**Only proceed if you've verified these resources belong to the Barman Cloud -plugin (see warning above).** - -For each resource below, first verify it belongs to Barman Cloud, then delete -it: - -```bash -# 1. Check metrics-auth-rolebinding FIRST (we'll check the role after) -# Look for references to plugin-barman-cloud ServiceAccount -kubectl describe clusterrolebinding metrics-auth-rolebinding -# If it references plugin-barman-cloud ServiceAccount in cnpg-system namespace, -# delete it: -kubectl delete clusterrolebinding metrics-auth-rolebinding - -# 2. Check metrics-auth-role -# Look for references to authentication.k8s.io and authorization.k8s.io -kubectl describe clusterrole metrics-auth-role -# Verify it's not being used by any other rolebindings: -kubectl get clusterrolebinding -o json \ - | jq -r '.items[] | select(.roleRef.name=="metrics-auth-role") \ - | .metadata.name' -# If the above returns nothing (role is not in use) and the role looks like the -# Barman Cloud one, delete it (see warnings section): -kubectl delete clusterrole metrics-auth-role - -# 3. Check objectstore-viewer-role -# Look for barmancloud.cnpg.io API group or -# for `app.kubernetes.io/name: plugin-barman-cloud` label -kubectl describe clusterrole objectstore-viewer-role -# If it shows barmancloud.cnpg.io in API groups, delete it: -kubectl delete clusterrole objectstore-viewer-role - -# 4. Check objectstore-editor-role -# Look for barmancloud.cnpg.io API group or -# for `app.kubernetes.io/name: plugin-barman-cloud` label -kubectl describe clusterrole objectstore-editor-role -# If it shows barmancloud.cnpg.io in API groups, delete it: -kubectl delete clusterrole objectstore-editor-role - -# 5. Check metrics-reader (MOST DANGEROUS - very generic name) -# First, check if it's being used by any rolebindings OTHER than barman's: -kubectl get clusterrolebinding -o json | jq -r '.items[] \ - | select(.roleRef.name=="metrics-reader") \ - | "\(.metadata.name) -> \(.subjects[0].name) in \(.subjects[0].namespace)"' -# If this shows ANY rolebindings, review them carefully. Only proceed if -# they're all Barman-related. Then check the role itself: -kubectl describe clusterrole metrics-reader -# If it ONLY has nonResourceURLs: /metrics and NO other rolebindings use it, -# delete it: -kubectl delete clusterrole metrics-reader -``` - -:::warning -The `metrics-reader` role is particularly dangerous to delete blindly. Many -monitoring systems use this exact name. Only delete it if: - -1. You've verified it ONLY grants access to `/metrics` -2. No other rolebindings reference it (checked with the jq command above) -3. You're certain it was created by the Barman Cloud plugin - -If you're unsure, it's safer to leave it and let the new -`barman-plugin-metrics-reader` role coexist with it. -::: - -If any resource is not found during the `describe` command, that's okay - it -means it was never created or already deleted. Simply skip the delete command -for that resource. - -### Step 3: Delete Old Namespace-scoped Resources - -Delete the old namespace-scoped resources in the `cnpg-system` namespace: - -```bash -# Delete the old leader-election resources -kubectl delete role leader-election-role -n cnpg-system -kubectl delete rolebinding leader-election-rolebinding -n cnpg-system -``` - -If any resource is not found, that's okay - it means it was never created or -already deleted. - -## Impact - -- **Permissions:** If you have custom RBAC rules or tools that reference the - old resource names, they will need to be updated. -- **External Users:** If end users have been granted the - `objectstore-viewer-role` or `objectstore-editor-role`, they will need to be - re-granted the new role names (`barman-plugin-objectstore-viewer-role` and - `barman-plugin-objectstore-editor-role`). - -## Verification - -After migration, verify that the new resources are created: - -```bash -# Check cluster-scoped resources -kubectl get clusterrole | grep barman -kubectl get clusterrolebinding | grep barman - -# Check namespace-scoped resources -kubectl get role,rolebinding -n cnpg-system | grep barman -``` - -You should see the new prefixed resource names. - -## Troubleshooting - -### Plugin Not Starting After Migration - -If the plugin fails to start after migration, check: - -1. **ServiceAccount permissions:** Ensure the `plugin-barman-cloud` ServiceAccount is bound to the new roles: - ```bash - kubectl get clusterrolebinding barman-plugin-metrics-auth-rolebinding -o yaml - kubectl get rolebinding barman-plugin-leader-election-rolebinding -n cnpg-system -o yaml - ``` - -2. **Role references:** Verify that the rolebindings reference the correct role names: - ```bash - kubectl describe rolebinding barman-plugin-leader-election-rolebinding -n cnpg-system - kubectl describe clusterrolebinding barman-plugin-metrics-auth-rolebinding - ``` - -## Support - -If you encounter issues during migration, please open an issue on the [GitHub -repository](https://github.com/cloudnative-pg/plugin-barman-cloud/issues). diff --git a/web/versioned_docs/version-0.9.0/retention.md b/web/versioned_docs/version-0.9.0/retention.md deleted file mode 100644 index fefbd08..0000000 --- a/web/versioned_docs/version-0.9.0/retention.md +++ /dev/null @@ -1,38 +0,0 @@ ---- -sidebar_position: 60 ---- - -# Retention Policies - - - -The Barman Cloud Plugin supports **automated cleanup of obsolete backups** via -retention policies, configured in the `.spec.retentionPolicy` field of the -`ObjectStore` resource. - -:::note -This feature uses the `barman-cloud-backup-delete` command with the -`--retention-policy "RECOVERY WINDOW OF {{ value }} {{ unit }}"` syntax. -::: - -#### Example: 30-Day Retention Policy - -```yaml -apiVersion: barmancloud.cnpg.io/v1 -kind: ObjectStore -metadata: - name: my-store -spec: - [...] - retentionPolicy: "30d" -```` - -:::note -A **recovery window retention policy** ensures the cluster can be restored to -any point in time between the calculated *Point of Recoverability* (PoR) and -the latest WAL archive. The PoR is defined as `current time - recovery window`. -The **first valid backup** is the most recent backup completed before the PoR. -Backups older than that are marked as *obsolete* and deleted after the next -backup completes. -::: - diff --git a/web/versioned_docs/version-0.9.0/troubleshooting.md b/web/versioned_docs/version-0.9.0/troubleshooting.md deleted file mode 100644 index 0d9852c..0000000 --- a/web/versioned_docs/version-0.9.0/troubleshooting.md +++ /dev/null @@ -1,580 +0,0 @@ ---- -sidebar_position: 90 ---- - -# Troubleshooting - - - -This guide helps you diagnose and resolve common issues with the Barman Cloud -plugin. - -:::important -We are continuously improving the integration between CloudNativePG and the -Barman Cloud plugin as it moves toward greater stability and maturity. For this -reason, we recommend using the latest available version of both components. -See the [*Requirements* section](intro.md#requirements) for details. -::: - -:::note -The following commands assume you installed the CloudNativePG operator in -the default `cnpg-system` namespace. If you installed it in a different -namespace, adjust the commands accordingly. -::: - -## Viewing Logs - -To troubleshoot effectively, you’ll often need to review logs from multiple -sources: - -```sh -# View operator logs (includes plugin interaction logs) -kubectl logs -n cnpg-system deployment/cnpg-controller-manager -f - -# View plugin manager logs -kubectl logs -n cnpg-system deployment/barman-cloud -f - -# View sidecar container logs (Barman Cloud operations) -kubectl logs -n -c plugin-barman-cloud -f - -# View all containers in a pod -kubectl logs -n --all-containers=true - -# View previous container logs (if container restarted) -kubectl logs -n -c plugin-barman-cloud --previous -``` - -## Common Issues - -### Plugin Installation Issues - -#### Plugin pods not starting - -**Symptoms:** - -- Plugin pods stuck in `CrashLoopBackOff` or `Error` -- Plugin deployment not ready - -**Possible causes and solutions:** - -1. **Certificate issues** - - ```sh - # Check if cert-manager is installed and running - kubectl get pods -n cert-manager - - # Check if the plugin certificate is created - kubectl get certificates -n cnpg-system - ``` - - If cert-manager is not installed, install it first: - - ```sh - # Note: other installation methods for cert-manager are available - kubectl apply -f \ - https://github.com/cert-manager/cert-manager/releases/latest/download/cert-manager.yaml - ``` - - If you are using your own certificates without cert-manager, you will need - to verify the entire certificate chain yourself. - - -2. **Image pull errors** - - ```sh - # Check pod events for image pull errors - kubectl describe pod -n cnpg-system -l app=barman-cloud - ``` - - Verify the image exists and you have proper credentials if using a private - registry. - - -3. **Resource constraints** - - ```sh - # Check node resources - kubectl top nodes - kubectl describe nodes - ``` - - Make sure your cluster has sufficient CPU and memory resources. - -### Backup Failures - -#### Quick Backup Troubleshooting Checklist - -When a backup fails, follow these steps in order: - -1. **Check backup status**: - - ```sh - kubectl get backups.postgresql.cnpg.io -n - ``` -2. **Get error details and target pod**: - - ```sh - kubectl describe backups.postgresql.cnpg.io \ - -n - - kubectl get backups.postgresql.cnpg.io \ - -n \ - -o jsonpath='{.status.instanceID.podName}' - ``` -3. **Check the target pod’s sidecar logs**: - - ```sh - TARGET_POD=$(kubectl get backups.postgresql.cnpg.io \ - -n \ - -o jsonpath='{.status.instanceID.podName}') - - kubectl logs \ - -n $TARGET_POD -c plugin-barman-cloud \ - --tail=100 | grep -E "ERROR|FATAL|panic" - ``` -4. **Check cluster events**: - - ```sh - kubectl get events -n \ - --field-selector involvedObject.name= \ - --sort-by='.lastTimestamp' - ``` -5. **Verify plugin is running**: - - ```sh - kubectl get pods \ - -n cnpg-system -l app=barman-cloud - ``` -6. **Check operator logs**: - - ```sh - kubectl logs \ - -n cnpg-system deployment/cnpg-controller-manager \ - --tail=100 | grep -i "backup\|plugin" - ``` -7. **Check plugin manager logs**: - - ```sh - kubectl logs \ - -n cnpg-system deployment/barman-cloud --tail=100 - ``` - -#### Backup job fails immediately - -**Symptoms:** - -- Backup pods terminate with error -- No backup files appear in object storage -- Backup shows `failed` phase with various error messages - -**Common failure modes and solutions:** - -1. **"requested plugin is not available" errors** - - ``` - requested plugin is not available: barman - requested plugin is not available: barman-cloud - requested plugin is not available: barman-cloud.cloudnative-pg.io - ``` - - **Cause:** The plugin name in the Cluster configuration doesn’t match the - deployed plugin, or the plugin isn’t registered. - - **Solution:** - - a. **Check plugin registration:** - - ```sh - # If you have the `cnpg` plugin installed (v1.27.0+) - kubectl cnpg status -n - ``` - - Look for the "Plugins status" section: - ``` - Plugins status - Name Version Status Reported Operator Capabilities - ---- ------- ------ ------------------------------ - barman-cloud.cloudnative-pg.io 0.6.0 N/A Reconciler Hooks, Lifecycle Service - ``` - - b. **Verify plugin name in `Cluster` spec**: - - ```yaml - apiVersion: postgresql.cnpg.io/v1 - kind: Cluster - spec: - plugins: - - name: barman-cloud.cloudnative-pg.io - parameters: - barmanObjectName: - ``` - - c. **Check plugin deployment is running**: - - ```sh - kubectl get deployment -n cnpg-system barman-cloud - ``` - -2. **"rpc error: code = Unknown desc = panic caught: assignment to entry in nil map" errors** - - **Cause:** Misconfiguration in the `ObjectStore` (e.g., typo or missing field). - - **Solution:** - - - Review sidecar logs for details - - Verify `ObjectStore` configuration and secrets - - Common issues include: - - Missing or incorrect secret references - - Typos in configuration parameters - - Missing required environment variables in secrets - -#### Backup performance issues - -**Symptoms:** - -- Backups take extremely long -- Backups timeout - -**Plugin-specific considerations:** - -1. **Check `ObjectStore` parallelism settings** - - Adjust `maxParallel` in `ObjectStore` configuration - - Monitor sidecar container resource usage during backups - -2. **Verify plugin resource allocation** - - Check if the sidecar container has sufficient CPU/memory - - Review plugin container logs for resource-related warnings - -:::tip -For Barman-specific features like compression, encryption, and performance -tuning, refer to the [Barman documentation](https://docs.pgbarman.org/latest/). -::: - -### WAL Archiving Issues - -#### WAL archiving stops - -**Symptoms:** - -- WAL files accumulate on the primary -- Cluster shows WAL archiving warnings -- Sidecar logs show WAL errors - -**Debugging steps:** - -1. **Check plugin sidecar logs for WAL archiving errors** - ```sh - # Check recent WAL archive operations in sidecar - kubectl logs -n -c plugin-barman-cloud \ - --tail=50 | grep -i wal - ``` - -2. **Check ObjectStore configuration for WAL settings** - - Ensure ObjectStore has proper WAL retention settings - - Verify credentials have permissions for WAL operations - -### Restore Issues - -#### Restore fails during recovery - -**Symptoms:** - -- New cluster stuck in recovery -- Plugin sidecar shows restore errors -- PostgreSQL won’t start - -**Debugging steps:** - -1. **Check plugin sidecar logs during restore** - - ```sh - # Check the sidecar logs on the recovering cluster pods - kubectl logs -n \ - -c plugin-barman-cloud --tail=100 - - # Look for restore-related errors - kubectl logs -n \ - -c plugin-barman-cloud | grep -E "restore|recovery|ERROR" - ``` - -2. **Verify plugin can access backups** - - ```sh - # Check if `ObjectStore` is properly configured for restore - kubectl get objectstores.barmancloud.cnpg.io \ - -n -o yaml - - # Check PostgreSQL recovery logs - kubectl logs -n \ - -c postgres | grep -i recovery - ``` - -:::tip -For detailed Barman restore operations and troubleshooting, refer to the -[Barman documentation](https://docs.pgbarman.org/latest/barman-cloud-restore.html). -::: - -#### Point-in-time recovery (PITR) configuration issues - -**Symptoms:** - -- PITR doesn’t reach target time -- WAL access errors -- Recovery halts early - -**Debugging steps:** - -1. **Verify PITR configuration in the `Cluster` spec** - - ```yaml - apiVersion: postgresql.cnpg.io/v1 - kind: Cluster - metadata: - name: - spec: - storage: - size: 1Gi - - bootstrap: - recovery: - source: origin - recoveryTarget: - targetTime: "2024-01-15 10:30:00" - - externalClusters: - - name: origin - plugin: - enabled: true - name: barman-cloud.cloudnative-pg.io - parameters: - barmanObjectName: - serverName: - ``` - -2. **Check sidecar logs for WAL-related errors** - - ```sh - kubectl logs -n \ - -c plugin-barman-cloud | grep -i wal - ``` - -:::note -For detailed PITR configuration and WAL management, see the -[Barman PITR documentation](https://docs.pgbarman.org/latest/). -::: - -### Plugin Configuration Issues - -#### Plugin cannot connect to object storage - -**Symptoms:** - -- Sidecar logs show connection errors -- Backups fail with authentication or network errors -- `ObjectStore` resource reports errors - -**Solution:** - -1. **Verify `ObjectStore` CRD configuration and secrets** - - ```sh - # Check ObjectStore resource status - kubectl get objectstores.barmancloud.cnpg.io \ - -n -o yaml - - # Verify the secret exists and has correct keys for your provider - kubectl get secret -n \ - -o jsonpath='{.data}' | jq 'keys' - ``` - -2. **Check sidecar logs for connectivity issues** - ```sh - kubectl logs -n \ - -c plugin-barman-cloud | grep -E "connect|timeout|SSL|cert" - ``` - -3. **Adjust provider-specific settings (endpoint, path style, etc.)** - - See [Object Store Configuration](object_stores.md) for provider-specific settings - - Ensure `endpointURL` match your storage type - - Verify network policies allow egress to your storage provider - -## Diagnostic Commands - -### Using the `cnpg` plugin for `kubectl` - -The `cnpg` plugin for `kubectl` provides extended debugging capabilities. -Keep it updated: - -```sh -# Install or update the `cnpg` plugin -kubectl krew install cnpg -# Or using an alternative method: https://cloudnative-pg.io/documentation/current/kubectl-plugin/#install - -# Check plugin status (requires CNPG 1.27.0+) -kubectl cnpg status -n - -# View cluster status in detail -kubectl cnpg status -n --verbose -``` - -## Getting Help - -If problems persist: - -1. **Check the documentation** - - - [Installation Guide](installation.mdx) - - [Object Store Configuration](object_stores.md) (for provider-specific settings) - - [Usage Examples](usage.md) - - -2. **Gather diagnostic information** - - ```sh - # Create a diagnostic bundle (⚠️ sanitize these before sharing!) - kubectl get objectstores.barmancloud.cnpg.io -A -o yaml > /tmp/objectstores.yaml - kubectl get clusters.postgresql.cnpg.io -A -o yaml > /tmp/clusters.yaml - kubectl logs -n cnpg-system deployment/barman-cloud --tail=1000 > /tmp/plugin.log - ``` - - -3. **Community support** - - - CloudNativePG Slack: [#cloudnativepg-users](https://cloud-native.slack.com/messages/cloudnativepg-users) - - GitHub Issues: [plugin-barman-cloud](https://github.com/cloudnative-pg/plugin-barman-cloud/issues) - - -4. **Include when reporting** - - - CloudNativePG version - - Plugin version - - Kubernetes version - - Cloud provider and region - - Relevant configuration (⚠️ sanitize/redact sensitive information) - - Error messages and logs - - Steps to reproduce - -## Known Issues and Limitations - -### Current Known Issues - -1. **Migration compatibility**: After migrating from in-tree backup to the - plugin, the `kubectl cnpg backup` command syntax has changed - ([#353](https://github.com/cloudnative-pg/plugin-barman-cloud/issues/353)): - - ```sh - # Old command (in-tree, no longer works after migration) - kubectl cnpg backup -n \ - --method=barmanObjectStore - - # New command (plugin-based) - kubectl cnpg backup -n \ - --method=plugin --plugin-name=barman-cloud.cloudnative-pg.io - ``` - -### Plugin Limitations - -1. **Installation method**: Currently only supports manifest and Kustomize - installation ([#351](https://github.com/cloudnative-pg/plugin-barman-cloud/issues/351) - - Helm chart requested) - -2. **Sidecar resource sharing**: The plugin sidecar container shares pod - resources with PostgreSQL - -3. **Plugin restart behavior**: Restarting the sidecar container requires - restarting the entire PostgreSQL pod - -## Recap of General Debugging Steps - -### Check Backup Status and Identify the Target Instance - -```sh -# List all backups and their status -kubectl get backups.postgresql.cnpg.io -n - -# Get detailed backup information including error messages and target instance -kubectl describe backups.postgresql.cnpg.io \ - -n - -# Extract the target pod name from a failed backup -kubectl get backups.postgresql.cnpg.io \ - -n \ - -o jsonpath='{.status.instanceID.podName}' - -# Get more details including the target pod, method, phase, and error -kubectl get backups.postgresql.cnpg.io \ - -n \ - -o jsonpath='Pod: {.status.instanceID.podName}{"\n"}Method: {.status.method}{"\n"}Phase: {.status.phase}{"\n"}Error: {.status.error}{"\n"}' - -# Check the cluster status for backup-related information -kubectl cnpg status -n --verbose -``` - -### Check Sidecar Logs on the Backup Target Pod - -```sh -# Identify which pod was the backup target (from the previous step) -TARGET_POD=$(kubectl get backups.postgresql.cnpg.io \ - -n \ - -o jsonpath='{.status.instanceID.podName}') -echo "Backup target pod: $TARGET_POD" - -# Check the sidecar logs on the specific target pod -kubectl logs -n $TARGET_POD \ - -c plugin-barman-cloud --tail=100 - -# Follow the logs in real time -kubectl logs -n $TARGET_POD \ - -c plugin-barman-cloud -f - -# Check for specific errors in the target pod around the backup time -kubectl logs -n $TARGET_POD \ - -c plugin-barman-cloud --since=10m | grep -E "ERROR|FATAL|panic|failed" - -# Alternative: List all cluster pods and their roles -kubectl get pods -n -l cnpg.io/cluster= \ - -o custom-columns=NAME:.metadata.name,ROLE:.metadata.labels.cnpg\\.io/instanceRole,INSTANCE:.metadata.labels.cnpg\\.io/instanceName - -# Check sidecar logs on ALL cluster pods (if the target is unclear) -for pod in $(kubectl get pods -n -l cnpg.io/cluster= -o name); do - echo "=== Checking $pod ===" - kubectl logs -n $pod -c plugin-barman-cloud \ - --tail=20 | grep -i error || echo "No errors found" -done -``` - -### Check Events for Backup-Related Issues - -```sh -# Check events for the cluster -kubectl get events -n \ - --field-selector involvedObject.name= - -# Check events for failed backups -kubectl get events -n \ - --field-selector involvedObject.kind=Backup - -# Get all recent events in the namespace -kubectl get events -n --sort-by='.lastTimestamp' | tail -20 -``` - -### Verify `ObjectStore` Configuration - -```sh -# Check the ObjectStore resource -kubectl get objectstores.barmancloud.cnpg.io \ - -n -o yaml - -# Verify the secret exists and has the correct keys -kubectl get secret -n -o yaml -# Alternatively -kubectl get secret -n -o jsonpath='{.data}' | jq 'keys' -``` - -### Common Error Messages and Solutions - -* **"AccessDenied" or "403 Forbidden"** β€” Check cloud credentials and bucket permissions. -* **"NoSuchBucket"** β€” Verify the bucket exists and the endpoint URL is correct. -* **"Connection timeout"** β€” Check network connectivity and firewall rules. -* **"SSL certificate problem"** β€” For self-signed certificates, verify the CA bundle configuration. - diff --git a/web/versioned_docs/version-0.9.0/upgrades.mdx b/web/versioned_docs/version-0.9.0/upgrades.mdx deleted file mode 100644 index 0ab9ddb..0000000 --- a/web/versioned_docs/version-0.9.0/upgrades.mdx +++ /dev/null @@ -1,16 +0,0 @@ ---- -sidebar_position: 25 ---- - -# Upgrades - - - -You can upgrade the plugin simply by installing the new version. Unless -explicitly stated below or in the release notes, no special steps are required. - -## Upgrading to version 0.8.x from previous versions - -Version **0.8.0** introduces breaking changes to resource naming. -To complete the upgrade successfully, follow the instructions in the -["Resource name migration guide"](resource-name-migration.md). diff --git a/web/versioned_docs/version-0.9.0/usage.md b/web/versioned_docs/version-0.9.0/usage.md deleted file mode 100644 index 6406d38..0000000 --- a/web/versioned_docs/version-0.9.0/usage.md +++ /dev/null @@ -1,283 +0,0 @@ ---- -sidebar_position: 30 ---- - -# Using the Barman Cloud Plugin - - - -After [installing the plugin](installation.mdx) in the same namespace as the -CloudNativePG operator, enabling your PostgreSQL cluster to use the Barman -Cloud Plugin involves just a few steps: - -- Defining the object store containing your WAL archive and base backups, using - your preferred [provider](object_stores.md) -- Instructing the Postgres cluster to use the Barman Cloud Plugin - -From that moment, you’ll be able to issue on-demand backups or define a backup -schedule, as well as rely on the object store for recovery operations. - -The rest of this page details each step, using MinIO as object store provider. - -## Defining the `ObjectStore` - -An `ObjectStore` resource must be created for each object store used in your -PostgreSQL architecture. Here's an example configuration using MinIO: - -```yaml -apiVersion: barmancloud.cnpg.io/v1 -kind: ObjectStore -metadata: - name: minio-store -spec: - configuration: - destinationPath: s3://backups/ - endpointURL: http://minio:9000 - s3Credentials: - accessKeyId: - name: minio - key: ACCESS_KEY_ID - secretAccessKey: - name: minio - key: ACCESS_SECRET_KEY - wal: - compression: gzip -``` - -The `.spec.configuration` schema follows the same format as the -[in-tree barman-cloud support](https://pkg.go.dev/github.com/cloudnative-pg/barman-cloud/pkg/api#BarmanObjectStoreConfiguration). -Refer to [the CloudNativePG documentation](https://cloudnative-pg.io/documentation/current/appendixes/backup_barmanobjectstore/) -for additional details. - -:::important -The `serverName` parameter in the `ObjectStore` resource is retained solely for -API compatibility with the in-tree `barmanObjectStore` and must always be left empty. -When needed, use the `serverName` plugin parameter in the Cluster configuration instead. -::: - -## Configuring WAL Archiving - -Once the `ObjectStore` is defined, you can configure your PostgreSQL cluster -to archive WALs by referencing the store in the `.spec.plugins` section: - -```yaml -apiVersion: postgresql.cnpg.io/v1 -kind: Cluster -metadata: - name: cluster-example -spec: - instances: 3 - imagePullPolicy: Always - plugins: - - name: barman-cloud.cloudnative-pg.io - isWALArchiver: true - parameters: - barmanObjectName: minio-store - storage: - size: 1Gi -``` - -This configuration enables both WAL archiving and data directory backups. - -## Performing a Base Backup - -Once WAL archiving is enabled, the cluster is ready for backups. Backups can be -created either declaratively (with YAML manifests) or imperatively (with the -`cnpg` plugin). - -### Declarative approach (YAML manifest) - -Create a backup resource by applying a YAML manifest: - -```yaml -apiVersion: postgresql.cnpg.io/v1 -kind: Backup -metadata: - name: backup-example -spec: - cluster: - name: cluster-example - method: plugin - pluginConfiguration: - name: barman-cloud.cloudnative-pg.io -``` - -### Imperative approach (using the `cnpg` plugin) - -The quickest way to trigger an on-demand backup is with the `cnpg` plugin: - -```bash -kubectl cnpg backup -n \ - --method=plugin \ - --plugin-name=barman-cloud.cloudnative-pg.io -``` - -:::note Migration from in-tree backups -If you are migrating from the in-tree backup system, note the change in syntax: - -```bash -# Old command (in-tree backup) -kubectl cnpg backup -n --method=barmanObjectStore - -# New command (plugin-based backup) -kubectl cnpg backup -n \ - --method=plugin \ - --plugin-name=barman-cloud.cloudnative-pg.io -``` -::: - -## Restoring a Cluster - -To restore a cluster from an object store, create a new `Cluster` resource that -references the store containing the backup. Below is an example configuration: - -```yaml -apiVersion: postgresql.cnpg.io/v1 -kind: Cluster -metadata: - name: cluster-restore -spec: - instances: 3 - imagePullPolicy: IfNotPresent - bootstrap: - recovery: - source: source - externalClusters: - - name: source - plugin: - name: barman-cloud.cloudnative-pg.io - parameters: - barmanObjectName: minio-store - serverName: cluster-example - storage: - size: 1Gi -``` - -:::important -The above configuration does **not** enable WAL archiving for the restored cluster. -::: - -To enable WAL archiving for the restored cluster, include the `.spec.plugins` -section alongside the `externalClusters.plugin` section, as shown below: - -```yaml -apiVersion: postgresql.cnpg.io/v1 -kind: Cluster -metadata: - name: cluster-restore -spec: - instances: 3 - imagePullPolicy: IfNotPresent - bootstrap: - recovery: - source: source - plugins: - - name: barman-cloud.cloudnative-pg.io - isWALArchiver: true - parameters: - # Backup Object Store (push, read-write) - barmanObjectName: minio-store-bis - externalClusters: - - name: source - plugin: - name: barman-cloud.cloudnative-pg.io - parameters: - # Recovery Object Store (pull, read-only) - barmanObjectName: minio-store - serverName: cluster-example - storage: - size: 1Gi -``` - -The same object store may be used for both transaction log archiving and -restoring a cluster, or you can configure separate stores for these purposes. - -## Configuring Replica Clusters - -You can set up a distributed topology by combining the previously defined -configurations with the `.spec.replica` section. Below is an example of how to -define a replica cluster: - -```yaml -apiVersion: postgresql.cnpg.io/v1 -kind: Cluster -metadata: - name: cluster-dc-a -spec: - instances: 3 - primaryUpdateStrategy: unsupervised - - storage: - storageClass: csi-hostpath-sc - size: 1Gi - - plugins: - - name: barman-cloud.cloudnative-pg.io - isWALArchiver: true - parameters: - barmanObjectName: minio-store-a - - replica: - self: cluster-dc-a - primary: cluster-dc-a - source: cluster-dc-b - - externalClusters: - - name: cluster-dc-a - plugin: - name: barman-cloud.cloudnative-pg.io - parameters: - barmanObjectName: minio-store-a - - - name: cluster-dc-b - plugin: - name: barman-cloud.cloudnative-pg.io - parameters: - barmanObjectName: minio-store-b -``` - -## Configuring the plugin instance sidecar - -The Barman Cloud Plugin runs as a sidecar container next to each PostgreSQL -instance pod. It manages backup, WAL archiving, and restore processes. - -Configuration comes from multiple `ObjectStore` resources: - -1. The one referenced in the - `.spec.plugins` section of the `Cluster`. This is the - object store used for WAL archiving and base backups. -2. The one referenced in the external cluster - used in the `.spec.replica.source` section of the `Cluster`. This is - used by the log-shipping designated primary to get the WAL files. -3. The one referenced in the - `.spec.bootstrap.recovery.source` section of the `Cluster`. Used by - the initial recovery job to create the cluster from an existing backup. - -You can fine-tune sidecar behavior in the `.spec.instanceSidecarConfiguration` -of your ObjectStore. These settings apply to all PostgreSQL instances that use -this object store. Any updates take effect at the next `Cluster` reconciliation, -and could generate a rollout of the `Cluster`. - -```yaml -apiVersion: barmancloud.cnpg.io/v1 -kind: ObjectStore -metadata: - name: minio-store -spec: - configuration: - # [...] - instanceSidecarConfiguration: - retentionPolicyIntervalSeconds: 1800 - resources: - requests: - memory: "XXX" - cpu: "YYY" - limits: - memory: "XXX" - cpu: "YYY" -``` - -:::note -If more than one `ObjectStore` applies, the `instanceSidecarConfiguration` of -the one set in `.spec.plugins` has priority. -::: diff --git a/web/versioned_sidebars/version-0.10.0-sidebars.json b/web/versioned_sidebars/version-0.10.0-sidebars.json deleted file mode 100644 index 1fd014a..0000000 --- a/web/versioned_sidebars/version-0.10.0-sidebars.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "docs": [ - { - "type": "autogenerated", - "dirName": "." - } - ] -} diff --git a/web/versioned_sidebars/version-0.11.0-sidebars.json b/web/versioned_sidebars/version-0.11.0-sidebars.json deleted file mode 100644 index 1fd014a..0000000 --- a/web/versioned_sidebars/version-0.11.0-sidebars.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "docs": [ - { - "type": "autogenerated", - "dirName": "." - } - ] -} diff --git a/web/versioned_sidebars/version-0.12.0-sidebars.json b/web/versioned_sidebars/version-0.12.0-sidebars.json deleted file mode 100644 index 1fd014a..0000000 --- a/web/versioned_sidebars/version-0.12.0-sidebars.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "docs": [ - { - "type": "autogenerated", - "dirName": "." - } - ] -} diff --git a/web/versioned_sidebars/version-0.3.0-sidebars.json b/web/versioned_sidebars/version-0.3.0-sidebars.json deleted file mode 100644 index 1fd014a..0000000 --- a/web/versioned_sidebars/version-0.3.0-sidebars.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "docs": [ - { - "type": "autogenerated", - "dirName": "." - } - ] -} diff --git a/web/versioned_sidebars/version-0.4.0-sidebars.json b/web/versioned_sidebars/version-0.4.0-sidebars.json deleted file mode 100644 index 1fd014a..0000000 --- a/web/versioned_sidebars/version-0.4.0-sidebars.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "docs": [ - { - "type": "autogenerated", - "dirName": "." - } - ] -} diff --git a/web/versioned_sidebars/version-0.4.1-sidebars.json b/web/versioned_sidebars/version-0.4.1-sidebars.json deleted file mode 100644 index 1fd014a..0000000 --- a/web/versioned_sidebars/version-0.4.1-sidebars.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "docs": [ - { - "type": "autogenerated", - "dirName": "." - } - ] -} diff --git a/web/versioned_sidebars/version-0.5.0-sidebars.json b/web/versioned_sidebars/version-0.5.0-sidebars.json deleted file mode 100644 index 1fd014a..0000000 --- a/web/versioned_sidebars/version-0.5.0-sidebars.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "docs": [ - { - "type": "autogenerated", - "dirName": "." - } - ] -} diff --git a/web/versioned_sidebars/version-0.6.0-sidebars.json b/web/versioned_sidebars/version-0.6.0-sidebars.json deleted file mode 100644 index 1fd014a..0000000 --- a/web/versioned_sidebars/version-0.6.0-sidebars.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "docs": [ - { - "type": "autogenerated", - "dirName": "." - } - ] -} diff --git a/web/versioned_sidebars/version-0.7.0-sidebars.json b/web/versioned_sidebars/version-0.7.0-sidebars.json deleted file mode 100644 index 1fd014a..0000000 --- a/web/versioned_sidebars/version-0.7.0-sidebars.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "docs": [ - { - "type": "autogenerated", - "dirName": "." - } - ] -} diff --git a/web/versioned_sidebars/version-0.8.0-sidebars.json b/web/versioned_sidebars/version-0.8.0-sidebars.json deleted file mode 100644 index 1fd014a..0000000 --- a/web/versioned_sidebars/version-0.8.0-sidebars.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "docs": [ - { - "type": "autogenerated", - "dirName": "." - } - ] -} diff --git a/web/versioned_sidebars/version-0.9.0-sidebars.json b/web/versioned_sidebars/version-0.9.0-sidebars.json deleted file mode 100644 index 1fd014a..0000000 --- a/web/versioned_sidebars/version-0.9.0-sidebars.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "docs": [ - { - "type": "autogenerated", - "dirName": "." - } - ] -} diff --git a/web/versions.json b/web/versions.json index ab820ae..2290ed1 100644 --- a/web/versions.json +++ b/web/versions.json @@ -1,15 +1,4 @@ [ "0.14.0", - "0.13.0", - "0.12.0", - "0.11.0", - "0.10.0", - "0.9.0", - "0.8.0", - "0.7.0", - "0.6.0", - "0.5.0", - "0.4.1", - "0.4.0", - "0.3.0" + "0.13.0" ] From 77118ed413ecbda3d6a20152ce2fde2d7bf012fc Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 19 Aug 2026 13:01:46 +0200 Subject: [PATCH 110/134] chore(deps): update all cloudnative-pg daggerverse dependencies to 26cd57f (#1072) Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Taskfile.yml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/Taskfile.yml b/Taskfile.yml index cb18246..b80daf2 100644 --- a/Taskfile.yml +++ b/Taskfile.yml @@ -46,7 +46,7 @@ tasks: - wordlist-ordered env: # renovate: datasource=git-refs depName=spellcheck lookupName=https://github.com/cloudnative-pg/daggerverse currentValue=main - DAGGER_SPELLCHECK_SHA: 7174b66d283da487638a98b431b7707b311a9a32 + DAGGER_SPELLCHECK_SHA: 26cd57fb6ad66e88c036b675b0478d38df93962d cmds: - > GITHUB_REF= dagger -s call -m github.com/cloudnative-pg/daggerverse/spellcheck@${DAGGER_SPELLCHECK_SHA} @@ -60,7 +60,7 @@ tasks: desc: Check for conventional commits env: # renovate: datasource=git-refs depName=commitlint lookupName=https://github.com/cloudnative-pg/daggerverse currentValue=main - DAGGER_COMMITLINT_SHA: 7174b66d283da487638a98b431b7707b311a9a32 + DAGGER_COMMITLINT_SHA: 26cd57fb6ad66e88c036b675b0478d38df93962d cmds: - > GITHUB_REF= dagger -s call -m github.com/cloudnative-pg/daggerverse/commitlint@${DAGGER_COMMITLINT_SHA} @@ -74,7 +74,7 @@ tasks: - wordlist-ordered env: # renovate: datasource=git-refs depName=uncommitted lookupName=https://github.com/cloudnative-pg/daggerverse currentValue=main - DAGGER_UNCOMMITTED_SHA: 7174b66d283da487638a98b431b7707b311a9a32 + DAGGER_UNCOMMITTED_SHA: 26cd57fb6ad66e88c036b675b0478d38df93962d cmds: - GITHUB_REF= dagger -s call -m github.com/cloudnative-pg/daggerverse/uncommitted@${DAGGER_UNCOMMITTED_SHA} check-uncommitted --source . stdout sources: @@ -86,7 +86,7 @@ tasks: - controller-gen env: # renovate: datasource=git-refs depName=crd-gen-refs lookupName=https://github.com/cloudnative-pg/daggerverse currentValue=main - DAGGER_CRDGENREF_SHA: 7174b66d283da487638a98b431b7707b311a9a32 + DAGGER_CRDGENREF_SHA: 26cd57fb6ad66e88c036b675b0478d38df93962d # renovate: datasource=go depName=github.com/elastic/crd-ref-docs CRDREFDOCS_VERSION: v0.3.0 cmds: @@ -383,7 +383,7 @@ tasks: run: once env: # renovate: datasource=git-refs depName=controller-gen lookupName=https://github.com/cloudnative-pg/daggerverse currentValue=main - DAGGER_CONTROLLER_GEN_SHA: 7174b66d283da487638a98b431b7707b311a9a32 + DAGGER_CONTROLLER_GEN_SHA: 26cd57fb6ad66e88c036b675b0478d38df93962d cmds: - > GITHUB_REF= dagger -s call -m github.com/cloudnative-pg/daggerverse/controller-gen@${DAGGER_CONTROLLER_GEN_SHA} From f9a7ead831818216bfa9243df5dbbbdeedc7bde1 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 27 Aug 2026 09:27:03 +0200 Subject: [PATCH 111/134] chore(deps): update golangci/golangci-lint docker tag to v2.13.1 (#1078) Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Taskfile.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Taskfile.yml b/Taskfile.yml index b80daf2..bf3378a 100644 --- a/Taskfile.yml +++ b/Taskfile.yml @@ -23,7 +23,7 @@ tasks: # renovate: datasource=git-refs depName=golangci-lint lookupName=https://github.com/sagikazarmark/daggerverse currentValue=main DAGGER_GOLANGCI_LINT_SHA: ff27cd50f6b4eed2e3753c520632cd6099e1ce52 # renovate: datasource=docker depName=golangci/golangci-lint versioning=semver - GOLANGCI_LINT_VERSION: v2.12.2 + GOLANGCI_LINT_VERSION: v2.13.1 cmds: - > GITHUB_REF= dagger -sc "github.com/sagikazarmark/daggerverse/golangci-lint@${DAGGER_GOLANGCI_LINT_SHA} From 7bb01a865b15c0f5f608c8bfbc7561daadf2de3d Mon Sep 17 00:00:00 2001 From: Armando Ruocco Date: Thu, 27 Aug 2026 11:27:51 +0200 Subject: [PATCH 112/134] feat: serve restore hooks from the instance sidecar (#1025) CloudNativePG is moving the bootstrap of new instances from dedicated Jobs into the instance pod itself (cloudnative-pg/cloudnative-pg#11319): the restore that used to run in a recovery Job now happens in-process inside the instance pod before PostgreSQL starts. The sidecar shipped in that pod must therefore answer the same Restore RPC the operator sends over the plugin sockets, so the instance mode now registers the restore-job hooks and advertises the restore-job service capability. A cluster that only bootstraps from an object store, without continued archiving, previously received no sidecar at all in its instance pods; under the new flow that leaves the bootstrap without a plugin socket, both for the Restore RPC and for `wal-restore` during the recovery replay. The injection condition is widened to match what the plugin configuration already considers valid, so recovery-only clusters get the sidecar too. The sidecar is dropped once the instance's bootstrap completes (cluster.Status.CurrentPrimary set), which triggers one deterministic rollout to remove it, accepted rather than engineered around since it uses the same switchover/restart machinery as any other pod-spec change. Signed-off-by: Armando Ruocco Signed-off-by: Marco Nenciarini Co-authored-by: Marco Nenciarini --- internal/cnpgi/common/common.go | 5 ++ internal/cnpgi/instance/identity.go | 7 +++ internal/cnpgi/instance/identity_test.go | 51 ++++++++++++++++++ internal/cnpgi/instance/start.go | 11 ++++ internal/cnpgi/operator/config/config.go | 11 ++-- internal/cnpgi/operator/lifecycle.go | 41 +++++++++++++-- internal/cnpgi/operator/lifecycle_test.go | 63 +++++++++++++++++++++++ internal/cnpgi/restore/start.go | 5 +- 8 files changed, 184 insertions(+), 10 deletions(-) create mode 100644 internal/cnpgi/instance/identity_test.go diff --git a/internal/cnpgi/common/common.go b/internal/cnpgi/common/common.go index 9526d7e..8329d64 100644 --- a/internal/cnpgi/common/common.go +++ b/internal/cnpgi/common/common.go @@ -52,6 +52,11 @@ const ( // BarmanEndpointCACertificateFileName is the name of the file in which the barman endpoint // CA certificate is stored. BarmanEndpointCACertificateFileName = "barman-ca.crt" + + // PgWalVolumePgWalPath is the path of the pg_wal directory inside the WAL volume, + // used when a separate WAL storage is configured. During a restore the pg_wal + // directory is moved here and symlinked back into PGDATA. + PgWalVolumePgWalPath = "/var/lib/postgresql/wal/pg_wal" ) // GetRestoreCABundleEnv gets the enveronment variables to be used when custom diff --git a/internal/cnpgi/instance/identity.go b/internal/cnpgi/instance/identity.go index ea3b2fd..7563de3 100644 --- a/internal/cnpgi/instance/identity.go +++ b/internal/cnpgi/instance/identity.go @@ -70,6 +70,13 @@ func (i IdentityImplementation) GetPluginCapabilities( }, }, }, + { + Type: &identity.PluginCapability_Service_{ + Service: &identity.PluginCapability_Service{ + Type: identity.PluginCapability_Service_TYPE_RESTORE_JOB, + }, + }, + }, }, }, nil } diff --git a/internal/cnpgi/instance/identity_test.go b/internal/cnpgi/instance/identity_test.go new file mode 100644 index 0000000..b4ab5bb --- /dev/null +++ b/internal/cnpgi/instance/identity_test.go @@ -0,0 +1,51 @@ +/* +Copyright Β© contributors to CloudNativePG, established as +CloudNativePG a Series of LF Projects, LLC. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + +SPDX-License-Identifier: Apache-2.0 +*/ + +package instance + +import ( + "github.com/cloudnative-pg/cnpg-i/pkg/identity" + + . "github.com/onsi/ginkgo/v2" + . "github.com/onsi/gomega" +) + +var _ = Describe("IdentityImplementation", func() { + Describe("GetPluginCapabilities", func() { + It("declares the WAL, backup, metrics and restore-job services", func(ctx SpecContext) { + impl := IdentityImplementation{} + response, err := impl.GetPluginCapabilities(ctx, &identity.GetPluginCapabilitiesRequest{}) + Expect(err).NotTo(HaveOccurred()) + Expect(response).NotTo(BeNil()) + + var serviceTypes []identity.PluginCapability_Service_Type + for _, capability := range response.GetCapabilities() { + serviceTypes = append(serviceTypes, capability.GetService().GetType()) + } + + // Runs the phase-0 restore in-process now, hence TYPE_RESTORE_JOB below. + Expect(serviceTypes).To(ConsistOf( + identity.PluginCapability_Service_TYPE_WAL_SERVICE, + identity.PluginCapability_Service_TYPE_BACKUP_SERVICE, + identity.PluginCapability_Service_TYPE_METRICS, + identity.PluginCapability_Service_TYPE_RESTORE_JOB, + )) + }) + }) +}) diff --git a/internal/cnpgi/instance/start.go b/internal/cnpgi/instance/start.go index b222653..a68cda2 100644 --- a/internal/cnpgi/instance/start.go +++ b/internal/cnpgi/instance/start.go @@ -25,11 +25,13 @@ import ( "github.com/cloudnative-pg/cnpg-i-machinery/pkg/pluginhelper/http" "github.com/cloudnative-pg/cnpg-i/pkg/backup" "github.com/cloudnative-pg/cnpg-i/pkg/metrics" + restore "github.com/cloudnative-pg/cnpg-i/pkg/restore/job" "github.com/cloudnative-pg/cnpg-i/pkg/wal" "google.golang.org/grpc" "sigs.k8s.io/controller-runtime/pkg/client" "github.com/cloudnative-pg/plugin-barman-cloud/internal/cnpgi/common" + barmanrestore "github.com/cloudnative-pg/plugin-barman-cloud/internal/cnpgi/restore" ) // CNPGI is the implementation of the PostgreSQL sidecar @@ -60,6 +62,15 @@ func (c *CNPGI) Start(ctx context.Context) error { metrics.RegisterMetricsServer(server, &metricsImpl{ Client: c.Client, }) + // The instance pod runs the phase-0 bootstrap in-process (no separate + // recovery Job), so the same sidecar must answer the Restore RPC that + // initializes PGDATA from the object store before PostgreSQL starts. + restore.RegisterRestoreJobHooksServer(server, &barmanrestore.JobHookImpl{ + Client: c.Client, + SpoolDirectory: c.SpoolDirectory, + PgDataPath: c.PGDataPath, + PgWalFolderToSymlink: common.PgWalVolumePgWalPath, + }) common.AddHealthCheck(server) return nil } diff --git a/internal/cnpgi/operator/config/config.go b/internal/cnpgi/operator/config/config.go index 7f16dda..db9ca41 100644 --- a/internal/cnpgi/operator/config/config.go +++ b/internal/cnpgi/operator/config/config.go @@ -102,6 +102,13 @@ func (config *PluginConfiguration) GetReplicaSourceBarmanObjectKey() types.Names } } +// HasAnyBarmanObjectStore reports whether any barman object store is configured. +func (config *PluginConfiguration) HasAnyBarmanObjectStore() bool { + return len(config.BarmanObjectName) > 0 || + len(config.RecoveryBarmanObjectName) > 0 || + len(config.ReplicaSourceBarmanObjectName) > 0 +} + // GetReferredBarmanObjectsKey gets the list of barman objects referred by this // plugin configuration func (config *PluginConfiguration) GetReferredBarmanObjectsKey() []types.NamespacedName { @@ -263,9 +270,7 @@ func getReplicaSourcePlugin(cluster *cnpgv1.Cluster) *cnpgv1.PluginConfiguration func (config *PluginConfiguration) Validate() error { err := NewConfigurationError() - if len(config.BarmanObjectName) == 0 && - len(config.RecoveryBarmanObjectName) == 0 && - len(config.ReplicaSourceBarmanObjectName) == 0 { + if !config.HasAnyBarmanObjectStore() { return err.WithMessage("no reference to barmanObjectName have been included") } diff --git a/internal/cnpgi/operator/lifecycle.go b/internal/cnpgi/operator/lifecycle.go index 8bb26d8..18730fd 100644 --- a/internal/cnpgi/operator/lifecycle.go +++ b/internal/cnpgi/operator/lifecycle.go @@ -322,6 +322,42 @@ func (impl LifecycleImplementation) collectAdditionalInstanceArgs( return nil, nil } +// shouldInjectBarmanSidecar decides whether an instance pod needs the +// plugin-barman-cloud sidecar. +// +// Backup/archiving and replica-source configs need it for as long as the +// cluster exists, so those always inject it. A recovery-only cluster (only +// RecoveryBarmanObjectName set, mirroring pluginConfiguration.Validate()) +// only needs it for the one-time bootstrap restore, so it's gated on +// cluster.Status.CurrentPrimary instead. +// +// CurrentPrimary is set by the instance manager itself, from inside the pod, +// only once bootstrap completes (see instance_startup.go in cloudnative-pg). +// cluster.Status.Instances / IsInitialized() looks equivalent but flips as +// soon as the instance's PVC exists, before the pod is even created - using +// it here would mean the sidecar never reaches the pod that needs it. +// +// Once CurrentPrimary is set, the operator's drift-check +// (checkPodSpecIsOutdated) sees the running pod's spec as outdated and rolls +// it out to drop the sidecar. Accepted deliberately: one deterministic +// rollout via the same machinery used for any other pod-spec change +// (switchover if a replica exists, in-place restart otherwise), not a new +// risk. +func shouldInjectBarmanSidecar( + cluster *cnpgv1.Cluster, + pluginConfiguration *config.PluginConfiguration, +) bool { + if len(pluginConfiguration.BarmanObjectName) != 0 || len(pluginConfiguration.ReplicaSourceBarmanObjectName) != 0 { + return true + } + + if len(pluginConfiguration.RecoveryBarmanObjectName) == 0 { + return false + } + + return cluster.Status.CurrentPrimary == "" +} + func reconcileInstancePod( ctx context.Context, cluster *cnpgv1.Cluster, @@ -339,8 +375,7 @@ func reconcileInstancePod( mutatedPod := pod.DeepCopy() - if len(pluginConfiguration.BarmanObjectName) != 0 || - len(pluginConfiguration.ReplicaSourceBarmanObjectName) != 0 { + if shouldInjectBarmanSidecar(cluster, pluginConfiguration) { if err := reconcilePodSpec( cluster, &mutatedPod.Spec, @@ -353,7 +388,7 @@ func reconcileInstancePod( return nil, fmt.Errorf("while reconciling pod spec for pod: %w", err) } } else { - contextLogger.Debug("No need to mutate instance with no backup & archiving configuration") + contextLogger.Debug("No need to mutate instance, sidecar not required for this configuration and pod") } patch, err := object.CreatePatch(mutatedPod, pod) diff --git a/internal/cnpgi/operator/lifecycle_test.go b/internal/cnpgi/operator/lifecycle_test.go index a4851be..5b3264e 100644 --- a/internal/cnpgi/operator/lifecycle_test.go +++ b/internal/cnpgi/operator/lifecycle_test.go @@ -242,6 +242,69 @@ var _ = Describe("LifecycleImplementation", func() { HaveKey("value"))) }) + It("injects the sidecar for a recovery-only cluster", func(ctx SpecContext) { + recoveryOnlyConfig := &config.PluginConfiguration{ + RecoveryBarmanObjectName: "minio-store-recovery", + } + pod := &corev1.Pod{ + TypeMeta: podTypeMeta, + ObjectMeta: metav1.ObjectMeta{Name: "test-pod"}, + Spec: corev1.PodSpec{Containers: []corev1.Container{{Name: "postgres"}}}, + } + podJSON, _ := json.Marshal(pod) + request := &lifecycle.OperatorLifecycleRequest{ + ObjectDefinition: podJSON, + } + + response, err := reconcileInstancePod(ctx, cluster, request, recoveryOnlyConfig, sidecarConfiguration{}) + Expect(err).NotTo(HaveOccurred()) + Expect(response).NotTo(BeNil()) + Expect(response.JsonPatch).NotTo(BeEmpty()) + var patch []map[string]interface{} + Expect(json.Unmarshal(response.JsonPatch, &patch)).To(Succeed()) + Expect(patch).To(ContainElement(HaveKeyWithValue("path", "/spec/initContainers"))) + }) + + It("does not inject the sidecar for a recovery-only cluster that has "+ + "already completed its initial bootstrap", func(ctx SpecContext) { + recoveryOnlyConfig := &config.PluginConfiguration{ + RecoveryBarmanObjectName: "minio-store-recovery", + } + cluster.Status.CurrentPrimary = "test-pod" + pod := &corev1.Pod{ + TypeMeta: podTypeMeta, + ObjectMeta: metav1.ObjectMeta{Name: "test-pod"}, + Spec: corev1.PodSpec{Containers: []corev1.Container{{Name: "postgres"}}}, + } + podJSON, _ := json.Marshal(pod) + request := &lifecycle.OperatorLifecycleRequest{ + ObjectDefinition: podJSON, + } + + response, err := reconcileInstancePod(ctx, cluster, request, recoveryOnlyConfig, sidecarConfiguration{}) + Expect(err).NotTo(HaveOccurred()) + Expect(response).NotTo(BeNil()) + Expect(response.JsonPatch).To(BeEmpty()) + }) + + It("does not mutate the pod when no object store is configured", func(ctx SpecContext) { + emptyConfig := &config.PluginConfiguration{} + pod := &corev1.Pod{ + TypeMeta: podTypeMeta, + ObjectMeta: metav1.ObjectMeta{Name: "test-pod"}, + Spec: corev1.PodSpec{Containers: []corev1.Container{{Name: "postgres"}}}, + } + podJSON, _ := json.Marshal(pod) + request := &lifecycle.OperatorLifecycleRequest{ + ObjectDefinition: podJSON, + } + + response, err := reconcileInstancePod(ctx, cluster, request, emptyConfig, sidecarConfiguration{}) + Expect(err).NotTo(HaveOccurred()) + Expect(response).NotTo(BeNil()) + Expect(response.JsonPatch).To(BeEmpty()) + }) + It("returns an error for invalid pod definition", func(ctx SpecContext) { request := &lifecycle.OperatorLifecycleRequest{ ObjectDefinition: []byte("invalid-json"), diff --git a/internal/cnpgi/restore/start.go b/internal/cnpgi/restore/start.go index efb7828..0f78f90 100644 --- a/internal/cnpgi/restore/start.go +++ b/internal/cnpgi/restore/start.go @@ -44,9 +44,6 @@ type CNPGI struct { // Start starts the GRPC service func (c *CNPGI) Start(ctx context.Context) error { - // PgWalVolumePgWalPath is the path of pg_wal directory inside the WAL volume when present - const PgWalVolumePgWalPath = "/var/lib/postgresql/wal/pg_wal" - enrich := func(server *grpc.Server) error { wal.RegisterWALServer(server, common.WALServiceImplementation{ InstanceName: c.InstanceName, @@ -60,7 +57,7 @@ func (c *CNPGI) Start(ctx context.Context) error { Client: c.Client, SpoolDirectory: c.SpoolDirectory, PgDataPath: c.PGDataPath, - PgWalFolderToSymlink: PgWalVolumePgWalPath, + PgWalFolderToSymlink: common.PgWalVolumePgWalPath, }) common.AddHealthCheck(server) From b3d948ce821c68be1d99c84c679e020b5f3db363 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 27 Aug 2026 11:57:25 +0200 Subject: [PATCH 113/134] fix(deps): update module google.golang.org/grpc to v1.83.2 (#1073) Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- go.mod | 12 ++++++------ go.sum | 24 ++++++++++++------------ 2 files changed, 18 insertions(+), 18 deletions(-) diff --git a/go.mod b/go.mod index d08948c..fe7ec54 100644 --- a/go.mod +++ b/go.mod @@ -14,7 +14,7 @@ require ( github.com/onsi/gomega v1.42.1 github.com/spf13/cobra v1.10.2 github.com/spf13/viper v1.21.0 - google.golang.org/grpc v1.83.0 + google.golang.org/grpc v1.83.2 gopkg.in/yaml.v3 v3.0.1 k8s.io/api v0.36.3 k8s.io/apiextensions-apiserver v0.36.3 @@ -109,15 +109,15 @@ require ( go.yaml.in/yaml/v2 v2.4.4 // indirect go.yaml.in/yaml/v3 v3.0.4 // indirect golang.org/x/exp v0.0.0-20251219203646-944ab1f22d93 // indirect - golang.org/x/mod v0.37.0 // indirect - golang.org/x/net v0.56.0 // indirect + golang.org/x/mod v0.38.0 // indirect + golang.org/x/net v0.58.0 // indirect golang.org/x/oauth2 v0.36.0 // indirect golang.org/x/sync v0.22.0 // indirect golang.org/x/sys v0.47.0 // indirect - golang.org/x/term v0.44.0 // indirect - golang.org/x/text v0.40.0 // indirect + golang.org/x/term v0.45.0 // indirect + golang.org/x/text v0.41.0 // indirect golang.org/x/time v0.15.0 // indirect - golang.org/x/tools v0.47.0 // indirect + golang.org/x/tools v0.48.0 // indirect gomodules.xyz/jsonpatch/v2 v2.5.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20260526163538-3dc84a4a5aaa // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20260610212136-7ab31c22f7ad // indirect diff --git a/go.sum b/go.sum index 66b317f..ce842bf 100644 --- a/go.sum +++ b/go.sum @@ -260,24 +260,24 @@ go.yaml.in/yaml/v3 v3.0.4 h1:tfq32ie2Jv2UxXFdLJdh3jXuOzWiL1fo0bu/FbuKpbc= go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg= golang.org/x/exp v0.0.0-20251219203646-944ab1f22d93 h1:fQsdNF2N+/YewlRZiricy4P1iimyPKZ/xwniHj8Q2a0= golang.org/x/exp v0.0.0-20251219203646-944ab1f22d93/go.mod h1:EPRbTFwzwjXj9NpYyyrvenVh9Y+GFeEvMNh7Xuz7xgU= -golang.org/x/mod v0.37.0 h1:vF1DjpVEshcIqoEaauuHebaLk1O1forxjxBaVn884JQ= -golang.org/x/mod v0.37.0/go.mod h1:m8S8VeM9r4dzDwjrKO0a1sZP3YjeMamRRlD+fmR2Q/0= -golang.org/x/net v0.56.0 h1:Rw8j/hFzGvJUZwNBXnAtf5sVDVt+65SK2C7IxCxZt5o= -golang.org/x/net v0.56.0/go.mod h1:D3Ku6r+V6JROoZK144D2XfMHFcMq/0zSfLelVTCFKec= +golang.org/x/mod v0.38.0 h1:MECBjubtXD7yj4HrhIUcywNaGeNVUdfVnxmPajOk4yk= +golang.org/x/mod v0.38.0/go.mod h1:V6Xz0pq8TQ3dGqVQ1FVHuelZpAL0uNhSkk9ogYP3c40= +golang.org/x/net v0.58.0 h1:ynWG7rqYi4ccpTEuPZ2QGWHktVEM9DMCj9yzDE0Q7To= +golang.org/x/net v0.58.0/go.mod h1:YwCddHnFlT7eLQqVprV19OnhLGtc5xOKgE0RyqgfWAU= golang.org/x/oauth2 v0.36.0 h1:peZ/1z27fi9hUOFCAZaHyrpWG5lwe0RJEEEeH0ThlIs= golang.org/x/oauth2 v0.36.0/go.mod h1:YDBUJMTkDnJS+A4BP4eZBjCqtokkg1hODuPjwiGPO7Q= golang.org/x/sync v0.22.0 h1:SZjpbeLmrCk4xhRSZFNZW5gFUeCeFgjekvI/+gfScek= golang.org/x/sync v0.22.0/go.mod h1:9xrNwdLfx4jkKbNva9FpL6vEN7evnE43NNNJQ2LF3+0= golang.org/x/sys v0.47.0 h1:o7XGOvZQCADBQQ4Y7VNq2dRWQR7JmOUW8Kxx4ZsNgWs= golang.org/x/sys v0.47.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= -golang.org/x/term v0.44.0 h1:0rLvDRCtNj0gZkyIXhCyOb2OAzEhLVqc4B+hrsBhrmc= -golang.org/x/term v0.44.0/go.mod h1:7ze4MdzUzLXpSAoFP1H0bOI9aXDqveSvatT5vKcFh2Y= -golang.org/x/text v0.40.0 h1:Ub2Z6/xjgF1WrYQz2nuITOEegKFtiIy+rieRJ5lHZKs= -golang.org/x/text v0.40.0/go.mod h1:hpnzDAfGV753zIKo+wk3u1bVKCGPbrnF7+7LBF/UHVY= +golang.org/x/term v0.45.0 h1:NwWyBmoJCbfTHpxrWoZ9C6/VxOf7ic219I8xZZFdrf0= +golang.org/x/term v0.45.0/go.mod h1:9aqxs0blBcrm/n0L9QW0aRVD+ktan8ssZromtqJC43w= +golang.org/x/text v0.41.0 h1:vz/seA0lnX87Othu2f/0L24RcgrXD9/YFTSuGjj3rH8= +golang.org/x/text v0.41.0/go.mod h1:jvf1O8ajNzZqhSrQBPbutR/EB83Cc0CFrezNQIwbb5M= golang.org/x/time v0.15.0 h1:bbrp8t3bGUeFOx08pvsMYRTCVSMk89u4tKbNOZbp88U= golang.org/x/time v0.15.0/go.mod h1:Y4YMaQmXwGQZoFaVFk4YpCt4FLQMYKZe9oeV/f4MSno= -golang.org/x/tools v0.47.0 h1:7Kn5x/d1svx/PzryTsqeoZN4TZwqeH5pGWjefhLi/1Q= -golang.org/x/tools v0.47.0/go.mod h1:dFHnyTvFWY212G+h7ZY4Vsp/K3U4/7W9TyVaAul8uCA= +golang.org/x/tools v0.48.0 h1:3+hClM1aLL5mjMKm5ovokw9epgRXPuu2tILgismM6RE= +golang.org/x/tools v0.48.0/go.mod h1:08xX0orndb/F7jJxGDicx061tyd5pcMto75YMAXr6lk= gomodules.xyz/jsonpatch/v2 v2.5.0 h1:JELs8RLM12qJGXU4u/TO3V25KW8GreMKl9pdkk14RM0= gomodules.xyz/jsonpatch/v2 v2.5.0/go.mod h1:AH3dM2RI6uoBZxn3LVrfvJ3E0/9dG4cSrbuBJT4moAY= gonum.org/v1/gonum v0.17.0 h1:VbpOemQlsSMrYmn7T2OUvQ4dqxQXU+ouZFQsZOx50z4= @@ -286,8 +286,8 @@ google.golang.org/genproto/googleapis/api v0.0.0-20260526163538-3dc84a4a5aaa h1: google.golang.org/genproto/googleapis/api v0.0.0-20260526163538-3dc84a4a5aaa/go.mod h1:q4lMZS6kskjT5HvCPrnnypcDPVJqT/f4nfxmkE7gryY= google.golang.org/genproto/googleapis/rpc v0.0.0-20260610212136-7ab31c22f7ad h1:45WmJvIV6C2+O/jjLkPUH+F3aOj/1miDoU2DD0+NWbg= google.golang.org/genproto/googleapis/rpc v0.0.0-20260610212136-7ab31c22f7ad/go.mod h1:4Hqkh8ycfw05ld/3BWL7rJOSfebL2Q+DVDeRgYgxUU8= -google.golang.org/grpc v1.83.0 h1:JeNZEKJFbQxArAMl+hiytHauacDNqJUllNfmIMmpqnQ= -google.golang.org/grpc v1.83.0/go.mod h1:kDyl6SKsiHKt0uylY5gtn5cEjkrIOhQOGDgIc4JGwzQ= +google.golang.org/grpc v1.83.2 h1:EManeRomTObA0BU7I8vXgg/78uE5MJ9M8B39EX2WscU= +google.golang.org/grpc v1.83.2/go.mod h1:YPI1hK3kDked6iHvgX3tR0y+nX/qpMFKhPgFsokw1S8= google.golang.org/protobuf v1.36.12-0.20260120151049-f2248ac996af h1:+5/Sw3GsDNlEmu7TfklWKPdQ0Ykja5VEmq2i817+jbI= google.golang.org/protobuf v1.36.12-0.20260120151049-f2248ac996af/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= From 69164cbf1a43ea1cde4355c443a7cc3d804f95f7 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 27 Aug 2026 13:43:50 +0200 Subject: [PATCH 114/134] chore(deps): update dependency kind to v0.33.0 (#1080) Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Taskfile.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Taskfile.yml b/Taskfile.yml index bf3378a..7eb33e3 100644 --- a/Taskfile.yml +++ b/Taskfile.yml @@ -263,7 +263,7 @@ tasks: run: once vars: # renovate: datasource=git-refs depName=kind lookupName=https://github.com/kubernetes-sigs/kind versioning=semver - KIND_VERSION: v0.32.0 + KIND_VERSION: v0.33.0 cmds: - go install sigs.k8s.io/kind@{{.KIND_VERSION}} - kind version | grep -q {{.KIND_VERSION}} From 7ffb4e90cfd77a3ae6150e64e8e966a73461d16e Mon Sep 17 00:00:00 2001 From: Marco Nenciarini Date: Thu, 27 Aug 2026 14:56:36 +0200 Subject: [PATCH 115/134] ci: avoid race in wordlist-ordered task (#1085) wordlist-ordered is a dep of both spellcheck and uncommitted, which run in parallel. go-task only writes the checksum after a task's cmds finish, so both parents could start the task concurrently: the first mv succeeded and removed .wordlist.txt.new before the second mv ran, failing CI with "No such file or directory". Mark the task run: once so concurrent deps are deduped. Signed-off-by: Marco Nenciarini --- Taskfile.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/Taskfile.yml b/Taskfile.yml index 7eb33e3..0e29038 100644 --- a/Taskfile.yml +++ b/Taskfile.yml @@ -34,6 +34,7 @@ tasks: wordlist-ordered: desc: Order the word list file + run: once cmds: - LANG=C LC_ALL=C sort .wordlist.txt > .wordlist.txt.new - mv -f .wordlist.txt.new .wordlist.txt From 4e1b6ccb9b9b359c8d897ad6dd2e0b91b2a3f0d5 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 27 Aug 2026 15:42:59 +0200 Subject: [PATCH 116/134] chore(deps): update dependency dagger/dagger to v0.21.9 (#1079) Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/ci.yml | 4 ++-- .github/workflows/release-please.yml | 2 +- .github/workflows/release-publish.yml | 2 +- Taskfile.yml | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 576628a..8a22948 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -47,7 +47,7 @@ jobs: - name: Install Dagger env: # renovate: datasource=github-tags depName=dagger/dagger versioning=semver - DAGGER_VERSION: 0.21.8 + DAGGER_VERSION: 0.21.9 run: | curl -L https://dl.dagger.io/dagger/install.sh | BIN_DIR=$HOME/.local/bin sh - name: Run CI task @@ -71,7 +71,7 @@ jobs: - name: Install Dagger env: # renovate: datasource=github-tags depName=dagger/dagger versioning=semver - DAGGER_VERSION: 0.21.8 + DAGGER_VERSION: 0.21.9 run: | curl -L https://dl.dagger.io/dagger/install.sh | BIN_DIR=$HOME/.local/bin sh - name: Write manifest diff --git a/.github/workflows/release-please.yml b/.github/workflows/release-please.yml index 24f62d3..a010044 100644 --- a/.github/workflows/release-please.yml +++ b/.github/workflows/release-please.yml @@ -31,7 +31,7 @@ jobs: - name: Install Dagger env: # renovate: datasource=github-tags depName=dagger/dagger versioning=semver - DAGGER_VERSION: 0.21.8 + DAGGER_VERSION: 0.21.9 run: | curl -L https://dl.dagger.io/dagger/install.sh | BIN_DIR=$HOME/.local/bin sh - name: Create image and manifest diff --git a/.github/workflows/release-publish.yml b/.github/workflows/release-publish.yml index ddae857..b531a89 100644 --- a/.github/workflows/release-publish.yml +++ b/.github/workflows/release-publish.yml @@ -21,7 +21,7 @@ jobs: - name: Install Dagger env: # renovate: datasource=github-tags depName=dagger/dagger versioning=semver - DAGGER_VERSION: 0.21.8 + DAGGER_VERSION: 0.21.9 run: | curl -L https://dl.dagger.io/dagger/install.sh | BIN_DIR=$HOME/.local/bin sh - name: Create image and manifest diff --git a/Taskfile.yml b/Taskfile.yml index 0e29038..6735710 100644 --- a/Taskfile.yml +++ b/Taskfile.yml @@ -207,7 +207,7 @@ tasks: - start-build-network vars: # renovate: datasource=github-tags depName=dagger/dagger versioning=semver - DAGGER_VERSION: 0.21.8 + DAGGER_VERSION: 0.21.9 DAGGER_ENGINE_IMAGE: registry.dagger.io/engine:v{{ .DAGGER_VERSION }} cmds: - > From cc57d1bd58e004023817f7930cabc5e47a8198f0 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 27 Aug 2026 16:03:16 +0200 Subject: [PATCH 117/134] chore(deps): update fsouza/fake-gcs-server docker tag to v1.56.1 (#1081) Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- test/e2e/internal/objectstore/fakegcsserver.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/e2e/internal/objectstore/fakegcsserver.go b/test/e2e/internal/objectstore/fakegcsserver.go index 9ee2791..7474a6b 100644 --- a/test/e2e/internal/objectstore/fakegcsserver.go +++ b/test/e2e/internal/objectstore/fakegcsserver.go @@ -72,8 +72,8 @@ func newGCSDeployment(namespace, name string) *appsv1.Deployment { { Name: name, // renovate: datasource=docker depName=fsouza/fake-gcs-server versioning=docker - // Version: 1.55.1 - Image: "fsouza/fake-gcs-server@sha256:91afded49de804aa61b5f3eb6c7cd65205acf9e5c5e047cf0ba7d9507af806c8", + // Version: 1.56.1 + Image: "fsouza/fake-gcs-server@sha256:797ce226d62f947c009dc40246b30cfb456b8473d8241407f9d6f2c04e4d69ef", Ports: []corev1.ContainerPort{ { ContainerPort: 4443, From 3cefc7f03bb8e14fda42a874413fbe4ae8939565 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 27 Aug 2026 16:30:42 +0200 Subject: [PATCH 118/134] chore(deps): update mcr.microsoft.com/azure-storage/azurite docker tag to v3.37.0 (#1083) Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- test/e2e/internal/objectstore/azurite.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/e2e/internal/objectstore/azurite.go b/test/e2e/internal/objectstore/azurite.go index a795f26..d0b94aa 100644 --- a/test/e2e/internal/objectstore/azurite.go +++ b/test/e2e/internal/objectstore/azurite.go @@ -72,8 +72,8 @@ func newAzuriteDeployment(namespace, name string) *appsv1.Deployment { { Name: name, // renovate: datasource=docker depName=mcr.microsoft.com/azure-storage/azurite versioning=docker - // Version: 3.36.0 - Image: "mcr.microsoft.com/azure-storage/azurite@sha256:76b8127d608fab8287a14a4bfeb9a5502cdcffb4bf1e86f09f324ebb0e70edba", + // Version: 3.37.0 + Image: "mcr.microsoft.com/azure-storage/azurite@sha256:830430c1da1a2d537e08f3e6764dd1f5ae00cf0346bcaf625b968ec3f0971fd5", Args: []string{ "azurite-blob", "--blobHost", From d8f34e5de4bf8daf1f32ecefcde0f07058f94a05 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 27 Aug 2026 16:44:49 +0200 Subject: [PATCH 119/134] chore(deps): update kindest/node docker tag to v1.37.0 (#1082) Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Taskfile.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Taskfile.yml b/Taskfile.yml index 6735710..fe8d247 100644 --- a/Taskfile.yml +++ b/Taskfile.yml @@ -9,7 +9,7 @@ vars: GO_VERSION: sh: sed -n 's/^toolchain go//p' go.mod | grep . || sed -n 's/^go //p' go.mod # renovate: datasource=docker depName=kindest/node versioning=semver - E2E_KUBERNETES_VERSION: v1.36.1 + E2E_KUBERNETES_VERSION: v1.37.0 E2E_CLUSTER_NAME: barman-cloud-plugin-e2e-{{.E2E_KUBERNETES_VERSION}} REGISTRY_NETWORK: barman-cloud-plugin REGISTRY_NAME: registry.barman-cloud-plugin From b15b661648792cb2cb899ee628b8a3aa909c3fc8 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 27 Aug 2026 17:25:50 +0200 Subject: [PATCH 120/134] fix(deps): update kubernetes monorepo to v0.37.0 (#1084) Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Signed-off-by: Marco Nenciarini Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Marco Nenciarini --- .../barmancloud.cnpg.io_objectstores.yaml | 4 +- go.mod | 68 ++++---- go.sum | 156 +++++++++--------- manifest.yaml | 4 +- 4 files changed, 118 insertions(+), 114 deletions(-) diff --git a/config/crd/bases/barmancloud.cnpg.io_objectstores.yaml b/config/crd/bases/barmancloud.cnpg.io_objectstores.yaml index c5cf971..bb7db1e 100644 --- a/config/crd/bases/barmancloud.cnpg.io_objectstores.yaml +++ b/config/crd/bases/barmancloud.cnpg.io_objectstores.yaml @@ -460,7 +460,9 @@ spec: description: Selects a key of a ConfigMap. properties: key: - description: The key to select. + description: |- + The key to select from the ConfigMap's Data field. + Keys in the BinaryData field are not currently propagated to container env vars. type: string name: default: "" diff --git a/go.mod b/go.mod index fe7ec54..f7ad4fb 100644 --- a/go.mod +++ b/go.mod @@ -16,10 +16,10 @@ require ( github.com/spf13/viper v1.21.0 google.golang.org/grpc v1.83.2 gopkg.in/yaml.v3 v3.0.1 - k8s.io/api v0.36.3 - k8s.io/apiextensions-apiserver v0.36.3 - k8s.io/apimachinery v0.36.3 - k8s.io/client-go v0.36.3 + k8s.io/api v0.37.0 + k8s.io/apiextensions-apiserver v0.37.0 + k8s.io/apimachinery v0.37.0 + k8s.io/client-go v0.37.0 k8s.io/utils v0.0.0-20260707023825-cf1189d6abe3 sigs.k8s.io/controller-runtime v0.24.1 sigs.k8s.io/kustomize/api v0.21.1 @@ -45,30 +45,30 @@ require ( github.com/go-logr/logr v1.4.3 // indirect github.com/go-logr/stdr v1.2.2 // indirect github.com/go-logr/zapr v1.3.0 // indirect - github.com/go-openapi/jsonpointer v0.23.1 // indirect - github.com/go-openapi/jsonreference v0.21.5 // indirect - github.com/go-openapi/swag v0.26.0 // indirect - github.com/go-openapi/swag/cmdutils v0.26.0 // indirect - github.com/go-openapi/swag/conv v0.26.0 // indirect - github.com/go-openapi/swag/fileutils v0.26.0 // indirect - github.com/go-openapi/swag/jsonname v0.26.0 // indirect - github.com/go-openapi/swag/jsonutils v0.26.0 // indirect - github.com/go-openapi/swag/loading v0.26.0 // indirect - github.com/go-openapi/swag/mangling v0.26.0 // indirect - github.com/go-openapi/swag/netutils v0.26.0 // indirect - github.com/go-openapi/swag/stringutils v0.26.0 // indirect - github.com/go-openapi/swag/typeutils v0.26.0 // indirect - github.com/go-openapi/swag/yamlutils v0.26.0 // indirect + github.com/go-openapi/jsonpointer v1.0.0 // indirect + github.com/go-openapi/jsonreference v1.0.0 // indirect + github.com/go-openapi/swag v0.27.1 // indirect + github.com/go-openapi/swag/cmdutils v0.27.1 // indirect + github.com/go-openapi/swag/conv v0.27.1 // indirect + github.com/go-openapi/swag/fileutils v0.27.1 // indirect + github.com/go-openapi/swag/jsonutils v0.27.1 // indirect + github.com/go-openapi/swag/loading v0.27.1 // indirect + github.com/go-openapi/swag/mangling v0.27.1 // indirect + github.com/go-openapi/swag/netutils v0.27.1 // indirect + github.com/go-openapi/swag/pools v0.27.1 // indirect + github.com/go-openapi/swag/stringutils v0.27.1 // indirect + github.com/go-openapi/swag/typeutils v0.27.1 // indirect + github.com/go-openapi/swag/yamlutils v0.27.1 // indirect github.com/go-task/slim-sprig/v3 v3.0.0 // indirect github.com/go-viper/mapstructure/v2 v2.4.0 // indirect - github.com/google/cel-go v0.29.0 // indirect + github.com/google/cel-go v0.29.2 // indirect github.com/google/gnostic-models v0.7.1 // indirect github.com/google/go-cmp v0.7.0 // indirect github.com/google/pprof v0.0.0-20260402051712-545e8a4df936 // indirect github.com/google/uuid v1.6.0 // indirect github.com/gorilla/websocket v1.5.4-0.20250319132907-e064f32e3674 // indirect github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.3.3 // indirect - github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.7 // indirect + github.com/grpc-ecosystem/grpc-gateway/v2 v2.29.0 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/json-iterator/go v1.1.12 // indirect github.com/kubernetes-csi/external-snapshotter/client/v8 v8.6.0 // indirect @@ -81,10 +81,10 @@ require ( github.com/pelletier/go-toml/v2 v2.2.4 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring v0.92.0 // indirect - github.com/prometheus/client_golang v1.23.2 // indirect + github.com/prometheus/client_golang v1.24.0 // indirect github.com/prometheus/client_model v0.6.2 // indirect - github.com/prometheus/common v0.67.5 // indirect - github.com/prometheus/procfs v0.19.2 // indirect + github.com/prometheus/common v0.70.0 // indirect + github.com/prometheus/procfs v0.21.1 // indirect github.com/sagikazarmark/locafero v0.11.0 // indirect github.com/snorwin/jsonpatch v1.5.0 // indirect github.com/sourcegraph/conc v0.3.1-0.20240121214520-5f936abd7ae8 // indirect @@ -96,19 +96,19 @@ require ( github.com/x448/float16 v0.8.4 // indirect github.com/xlab/treeprint v1.2.0 // indirect go.opentelemetry.io/auto/sdk v1.2.1 // indirect - go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.67.0 // indirect + go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.69.0 // indirect go.opentelemetry.io/otel v1.44.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.40.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.40.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.44.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.44.0 // indirect go.opentelemetry.io/otel/metric v1.44.0 // indirect go.opentelemetry.io/otel/sdk v1.44.0 // indirect go.opentelemetry.io/otel/trace v1.44.0 // indirect - go.opentelemetry.io/proto/otlp v1.9.0 // indirect + go.opentelemetry.io/proto/otlp v1.10.0 // indirect go.uber.org/multierr v1.11.0 // indirect go.uber.org/zap v1.28.0 // indirect go.yaml.in/yaml/v2 v2.4.4 // indirect go.yaml.in/yaml/v3 v3.0.4 // indirect - golang.org/x/exp v0.0.0-20251219203646-944ab1f22d93 // indirect + golang.org/x/exp v0.0.0-20260410095643-746e56fc9e2f // indirect golang.org/x/mod v0.38.0 // indirect golang.org/x/net v0.58.0 // indirect golang.org/x/oauth2 v0.36.0 // indirect @@ -124,15 +124,15 @@ require ( google.golang.org/protobuf v1.36.12-0.20260120151049-f2248ac996af // indirect gopkg.in/evanphx/json-patch.v4 v4.13.0 // indirect gopkg.in/inf.v0 v0.9.1 // indirect - k8s.io/apiserver v0.36.3 // indirect - k8s.io/component-base v0.36.3 // indirect + k8s.io/apiserver v0.37.0 // indirect + k8s.io/component-base v0.37.0 // indirect k8s.io/klog/v2 v2.140.0 // indirect - k8s.io/kube-openapi v0.0.0-20260603220949-865597e52e25 // indirect - k8s.io/streaming v0.36.3 // indirect - sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.34.0 // indirect + k8s.io/kube-openapi v0.0.0-20260721132016-d427ff9ee9ad // indirect + k8s.io/streaming v0.37.0 // indirect + sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.36.0 // indirect sigs.k8s.io/gateway-api v1.6.0 // indirect sigs.k8s.io/json v0.0.0-20250730193827-2d320260d730 // indirect sigs.k8s.io/randfill v1.0.0 // indirect - sigs.k8s.io/structured-merge-diff/v6 v6.4.0 // indirect + sigs.k8s.io/structured-merge-diff/v6 v6.4.2 // indirect sigs.k8s.io/yaml v1.6.0 // indirect ) diff --git a/go.sum b/go.sum index ce842bf..37d4531 100644 --- a/go.sum +++ b/go.sum @@ -66,40 +66,40 @@ github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= github.com/go-logr/zapr v1.3.0 h1:XGdV8XW8zdwFiwOA2Dryh1gj2KRQyOOoNmBy4EplIcQ= github.com/go-logr/zapr v1.3.0/go.mod h1:YKepepNBd1u/oyhd/yQmtjVXmm9uML4IXUgMOwR8/Gg= -github.com/go-openapi/jsonpointer v0.23.1 h1:1HBACs7XIwR2RcmItfdSFlALhGbe6S92p0ry4d1GWg4= -github.com/go-openapi/jsonpointer v0.23.1/go.mod h1:iWRmZTrGn7XwYhtPt/fvdSFj1OfNBngqRT2UG3BxSqY= -github.com/go-openapi/jsonreference v0.21.5 h1:6uCGVXU/aNF13AQNggxfysJ+5ZcU4nEAe+pJyVWRdiE= -github.com/go-openapi/jsonreference v0.21.5/go.mod h1:u25Bw85sX4E2jzFodh1FOKMTZLcfifd1Q+iKKOUxExw= -github.com/go-openapi/swag v0.26.0 h1:GVDXCmfvhfu1BxiHo8/FA+BbKmhecHnG3varjON5/RI= -github.com/go-openapi/swag v0.26.0/go.mod h1:82g3193sZJRbocs7bNCqGfIgq8pkuwVwCfhKIRlEQF0= -github.com/go-openapi/swag/cmdutils v0.26.0 h1:iowihOcvq7y4egO8cOq0dmfohz6wfeQ63U1EnuhO2TU= -github.com/go-openapi/swag/cmdutils v0.26.0/go.mod h1:Sm1MVFMkF6guJJ+pQqHnQA3N0j9qALV3NxzDSv6bETM= -github.com/go-openapi/swag/conv v0.26.0 h1:5yGGsPYI1ZCva93U0AoKi/iZrNhaJEjr324YVsiD89I= -github.com/go-openapi/swag/conv v0.26.0/go.mod h1:tpAmIL7X58VPnHHiSO4uE3jBeRamGsFsfdDeDtb5ECE= -github.com/go-openapi/swag/fileutils v0.26.0 h1:WJoPRvsA7QRiiWluowkLJa9jaYR7FCuxmDvnCgaRRxU= -github.com/go-openapi/swag/fileutils v0.26.0/go.mod h1:0WDJ7lp67eNjPMO50wAWYlKvhOb6CQ37rzR7wrgI8Tc= -github.com/go-openapi/swag/jsonname v0.26.0 h1:gV1NFX9M8avo0YSpmWogqfQISigCmpaiNci8cGECU5w= -github.com/go-openapi/swag/jsonname v0.26.0/go.mod h1:urBBR8bZNoDYGr653ynhIx+gTeIz0ARZxHkAPktJK2M= -github.com/go-openapi/swag/jsonutils v0.26.0 h1:FawFML2iAXsPqmERscuMPIHmFsoP1tOqWkxBaKNMsnA= -github.com/go-openapi/swag/jsonutils v0.26.0/go.mod h1:2VmA0CJlyFqgawOaPI9psnjFDqzyivIqLYN34t9p91E= -github.com/go-openapi/swag/jsonutils/fixtures_test v0.26.0 h1:apqeINu/ICHouqiRZbyFvuDge5jCmmLTqGQ9V95EaOM= -github.com/go-openapi/swag/jsonutils/fixtures_test v0.26.0/go.mod h1:AyM6QT8uz5IdKxk5akv0y6u4QvcL9GWERt0Jx/F/R8Y= -github.com/go-openapi/swag/loading v0.26.0 h1:Apg6zaKhCJurpJer0DCxq99qwmhFddBhaMX7kilDcko= -github.com/go-openapi/swag/loading v0.26.0/go.mod h1:dBxQ/6V2uBaAQdevN18VELE6xSpJWZxLX4txe12JwDg= -github.com/go-openapi/swag/mangling v0.26.0 h1:Du2YC4YLA/Y5m/YKQd7AnY5qq0wRKSFZTTt8ktFaXcQ= -github.com/go-openapi/swag/mangling v0.26.0/go.mod h1:jifS7W9vbg+pw63bT+GI53otluMQL3CeemuyCHKwVx0= -github.com/go-openapi/swag/netutils v0.26.0 h1:CmZp+ZT7HrmFwrC3GdGsXBq2+42T1bjKBapcqVpIs3c= -github.com/go-openapi/swag/netutils v0.26.0/go.mod h1:5iK+Ok3ZohWWex1C50BFTPexi03UaPwjW4Oj8kgrpwo= -github.com/go-openapi/swag/stringutils v0.26.0 h1:qZQngLxs5s7SLijc3N2ZO+fUq2o8LjuWAASSrJuh+xg= -github.com/go-openapi/swag/stringutils v0.26.0/go.mod h1:sWn5uY+QIIspwPhvgnqJsH8xqFT2ZbYcvbcFanRyhFE= -github.com/go-openapi/swag/typeutils v0.26.0 h1:2kdEwdiNWy+JJdOvu5MA2IIg2SylWAFuuyQIKYybfq4= -github.com/go-openapi/swag/typeutils v0.26.0/go.mod h1:oovDuIUvTrEHVMqWilQzKzV4YlSKgyZmFh7AlfABNVE= -github.com/go-openapi/swag/yamlutils v0.26.0 h1:H7O8l/8NJJQ/oiReEN+oMpnGMyt8G0hl460nRZxhLMQ= -github.com/go-openapi/swag/yamlutils v0.26.0/go.mod h1:1evKEGAtP37Pkwcc7EWMF0hedX0/x3Rkvei2wtG/TbU= -github.com/go-openapi/testify/enable/yaml/v2 v2.4.2 h1:5zRca5jw7lzVREKCZVNBpysDNBjj74rBh0N2BGQbSR0= -github.com/go-openapi/testify/enable/yaml/v2 v2.4.2/go.mod h1:XVevPw5hUXuV+5AkI1u1PeAm27EQVrhXTTCPAF85LmE= -github.com/go-openapi/testify/v2 v2.4.2 h1:tiByHpvE9uHrrKjOszax7ZvKB7QOgizBWGBLuq0ePx4= -github.com/go-openapi/testify/v2 v2.4.2/go.mod h1:SgsVHtfooshd0tublTtJ50FPKhujf47YRqauXXOUxfw= +github.com/go-openapi/jsonpointer v1.0.0 h1:kR9tHqY0CtZaOPVFm622dPVNhrvYpwr4uCxgL3h1H8s= +github.com/go-openapi/jsonpointer v1.0.0/go.mod h1:Z3rw7dWu1p9IgitXCFamSlA5lmDiklEB6vkaxcNZW5Y= +github.com/go-openapi/jsonreference v1.0.0 h1:jlmTr6torcd1YgDQvSfNmRtKzYDO4FGBkrAdlAVWnpY= +github.com/go-openapi/jsonreference v1.0.0/go.mod h1:jtwdyGbJk0Xhe5Y+rwtglQP6Sb1WZST4rT32LWB+sv0= +github.com/go-openapi/swag v0.27.1 h1:VotvOLWW8q/EAxB0YdsBBGC8XYyeL1YwBj2ungAGPNg= +github.com/go-openapi/swag v0.27.1/go.mod h1:GTkJPwHfhJp6MWr4/rCh64HVI3Ofu+tcsbfjfHmTxpE= +github.com/go-openapi/swag/cmdutils v0.27.1 h1:I7sYqaWVl5mq0NEmNQkAmFDyNin9ufvMX/p2zwtQaOE= +github.com/go-openapi/swag/cmdutils v0.27.1/go.mod h1:Sm1MVFMkF6guJJ+pQqHnQA3N0j9qALV3NxzDSv6bETM= +github.com/go-openapi/swag/conv v0.27.1 h1:8wi9ZG+olmY1wXphl93EWniPtbSPkXM/feH7FgjsvrU= +github.com/go-openapi/swag/conv v0.27.1/go.mod h1:QbqMivkpKhC3g1B1GGGOJ6ANewI3S62dbzYu3Duowqs= +github.com/go-openapi/swag/fileutils v0.27.1 h1:QQqBSoi5mW4XpU85nS0mLcA+zAE6vLzrb0QkmLKf9oM= +github.com/go-openapi/swag/fileutils v0.27.1/go.mod h1:VvJFZLTZS0AI854gEQz5tk7dBESdLjiNUMSZ/th2ry8= +github.com/go-openapi/swag/jsonutils v0.27.1 h1:SVgK3i4USzCU5mibOOS/l4ea2h9UQXy7J7RNLTjuXjU= +github.com/go-openapi/swag/jsonutils v0.27.1/go.mod h1:tdlEpZqdcQ17uj6J4YdK9vd8It5qWMwjWXOs0tjpRlk= +github.com/go-openapi/swag/jsonutils/fixtures_test v0.27.1 h1:mJu3COL9WEaZVp/Kf2PRMi7tPszPEJfSr/OO75ynCs8= +github.com/go-openapi/swag/jsonutils/fixtures_test v0.27.1/go.mod h1:mofwUWx70wvskwESqRJ//k/9kURmCgyJl5m5Ppoh5kY= +github.com/go-openapi/swag/loading v0.27.1 h1:/DxUgDXKbBX4bcn7r9uEXfJyzN5XpiJmZplzQTjrRCY= +github.com/go-openapi/swag/loading v0.27.1/go.mod h1:jvGh3iA2+zyUUycB5fgJWzeHnhrpvGnJJM0RVE9ZShE= +github.com/go-openapi/swag/mangling v0.27.1 h1:yC9D0HyUE8gbP+BfmGx9+AA89ikwZTMjESK3OnnoaqA= +github.com/go-openapi/swag/mangling v0.27.1/go.mod h1:jtBE2+V+3pILxOR7Vgce+Cwp6A2PgZbvVqfNntbVs0w= +github.com/go-openapi/swag/netutils v0.27.1 h1:mICMFoS82F5TZ4Zy3cqmcQk+BFeCp3Uyq3Np7GI0/qU= +github.com/go-openapi/swag/netutils v0.27.1/go.mod h1:J+WYyFMLtvtCGqa6jLv+YNUmIKI3ZRQRrvfNDMoQoEQ= +github.com/go-openapi/swag/pools v0.27.1 h1:9LeadcMyb2GJCbXX5hVQDbZ2Lq9TL4dCs/nx1j5DO0E= +github.com/go-openapi/swag/pools v0.27.1/go.mod h1:kVQefhSK5RWuRe7BXsL8htgBPAMpN7HDGpGEknqugeE= +github.com/go-openapi/swag/stringutils v0.27.1 h1:ZXePZ0r2p1qSjo8tD3Un4vFj8+FqlCkczxDrJIhYUp8= +github.com/go-openapi/swag/stringutils v0.27.1/go.mod h1:lzRN95CxXmA03XcDWHLOb6nOMcxCqR5rGY0lOgsfRoM= +github.com/go-openapi/swag/typeutils v0.27.1 h1:KSTdFlfnse4r6dP9IrEnwMldjE+zs71UeEB3//PtVXc= +github.com/go-openapi/swag/typeutils v0.27.1/go.mod h1:Srm0xFNRZ1Y+vCxJclo5qzx8aj+1pAKda/YfFPrG0dQ= +github.com/go-openapi/swag/yamlutils v0.27.1 h1:ftxv6xvXb1E3zohUc+okZ9nSqNb9StQX/FXnKZ98sQA= +github.com/go-openapi/swag/yamlutils v0.27.1/go.mod h1:bnxFIB1qewGRiZHypXGZ3fNgf13/0HfRgnS/iZBDrOo= +github.com/go-openapi/testify/enable/yaml/v2 v2.6.0 h1:gGHwAJ0R/5jU8BEGDbfRNR3hL68dAVi84WuOApp29B0= +github.com/go-openapi/testify/enable/yaml/v2 v2.6.0/go.mod h1:tY+St1SGq4NFl0QIqdTY4aEdbChAHxhyB77XQi9iJCo= +github.com/go-openapi/testify/v2 v2.6.0 h1:5PKH2HE7YJ/LuRPQGvSxBRlFXNQhSetBLlGAgUEu3ug= +github.com/go-openapi/testify/v2 v2.6.0/go.mod h1:SgsVHtfooshd0tublTtJ50FPKhujf47YRqauXXOUxfw= github.com/go-task/slim-sprig/v3 v3.0.0 h1:sUs3vkvUymDpBKi3qH1YSqBQk9+9D/8M2mN1vB6EwHI= github.com/go-task/slim-sprig/v3 v3.0.0/go.mod h1:W848ghGpv3Qj3dhTPRyJypKRiqCdHZiAzKg9hl15HA8= github.com/go-viper/mapstructure/v2 v2.4.0 h1:EBsztssimR/CONLSZZ04E8qAkxNYq4Qp9LvH92wZUgs= @@ -108,8 +108,8 @@ github.com/goccy/go-yaml v1.18.0 h1:8W7wMFS12Pcas7KU+VVkaiCng+kG8QiFeFwzFb+rwuw= github.com/goccy/go-yaml v1.18.0/go.mod h1:XBurs7gK8ATbW4ZPGKgcbrY1Br56PdM69F7LkFRi1kA= github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= -github.com/google/cel-go v0.29.0 h1:fEG+Ja3YRwNOqnQxTyJwoByAUAvTuxUGiro/jhrm4F4= -github.com/google/cel-go v0.29.0/go.mod h1:X0bD6iVNR8pkROSOoHVdgTkzmRcosof7WQqCD6wcMc8= +github.com/google/cel-go v0.29.2 h1:ZtDxkeiMmz0mxbKDYiNkE5Lk7V5edMRcaaDf2jX002k= +github.com/google/cel-go v0.29.2/go.mod h1:X0bD6iVNR8pkROSOoHVdgTkzmRcosof7WQqCD6wcMc8= github.com/google/gnostic-models v0.7.1 h1:SisTfuFKJSKM5CPZkffwi6coztzzeYUhc3v4yxLWH8c= github.com/google/gnostic-models v0.7.1/go.mod h1:whL5G0m6dmc5cPxKc5bdKdEN3UjI7OUGxBlw57miDrQ= github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= @@ -125,16 +125,16 @@ github.com/gorilla/websocket v1.5.4-0.20250319132907-e064f32e3674 h1:JeSE6pjso5T github.com/gorilla/websocket v1.5.4-0.20250319132907-e064f32e3674/go.mod h1:r4w70xmWCQKmi1ONH4KIaBptdivuRPyosB9RmPlGEwA= github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.3.3 h1:B+8ClL/kCQkRiU82d9xajRPKYMrB7E0MbtzWVi1K4ns= github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.3.3/go.mod h1:NbCUVmiS4foBGBHOYlCT25+YmGpJ32dZPi75pGEUpj4= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.7 h1:X+2YciYSxvMQK0UZ7sg45ZVabVZBeBuvMkmuI2V3Fak= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.7/go.mod h1:lW34nIZuQ8UDPdkon5fmfp2l3+ZkQ2me/+oecHYLOII= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.29.0 h1:5VipnvEpbqr2gA2VbM+nYVbkIF28c5ZQfqCBQ5g2xfk= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.29.0/go.mod h1:Hyl3n6Twe1hvtd9XUXDec4pTvgMSEixRuQKPTMH2bNs= github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= github.com/joshdk/go-junit v1.0.0 h1:S86cUKIdwBHWwA6xCmFlf3RTLfVXYQfvanM5Uh+K6GE= github.com/joshdk/go-junit v1.0.0/go.mod h1:TiiV0PqkaNfFXjEiyjWM3XXrhVyCa1K4Zfga6W52ung= github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= -github.com/klauspost/compress v1.18.0 h1:c/Cqfb0r+Yi+JtIEq73FWXVkRonBlf0CRNYc8Zttxdo= -github.com/klauspost/compress v1.18.0/go.mod h1:2Pp+KzxcywXVXMr50+X0Q/Lsb43OQHYWRCY2AiWywWQ= +github.com/klauspost/compress v1.19.0 h1:sXLILfc9jV2QYWkzFOPWStmcUVH2RHEB1JCdY2oVvCQ= +github.com/klauspost/compress v1.19.0/go.mod h1:cwPg85FWrGar70rWktvGQj8/hthj3wpl0PGDogxkrSQ= github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= @@ -174,14 +174,14 @@ github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRI github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring v0.92.0 h1:cgcHnhpMbk86QzIe23vwUiIUNBB0kftdOA9JJA83ASA= github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring v0.92.0/go.mod h1:eGo3VN8Kq5Fd0M7Cdx0oqbIxo753t99ojUZFVQkO1UM= -github.com/prometheus/client_golang v1.23.2 h1:Je96obch5RDVy3FDMndoUsjAhG5Edi49h0RJWRi/o0o= -github.com/prometheus/client_golang v1.23.2/go.mod h1:Tb1a6LWHB3/SPIzCoaDXI4I8UHKeFTEQ1YCr+0Gyqmg= +github.com/prometheus/client_golang v1.24.0 h1:5XStIklKuAtJSNpdD3s8XJj/Yv78IQmE1kbNk87JrAI= +github.com/prometheus/client_golang v1.24.0/go.mod h1:QcsNdotprC2nS4BTM2ucbcqxd2CeXTEa9jW7zHO9iDE= github.com/prometheus/client_model v0.6.2 h1:oBsgwpGs7iVziMvrGhE53c/GrLUsZdHnqNwqPLxwZyk= github.com/prometheus/client_model v0.6.2/go.mod h1:y3m2F6Gdpfy6Ut/GBsUqTWZqCUvMVzSfMLjcu6wAwpE= -github.com/prometheus/common v0.67.5 h1:pIgK94WWlQt1WLwAC5j2ynLaBRDiinoAb86HZHTUGI4= -github.com/prometheus/common v0.67.5/go.mod h1:SjE/0MzDEEAyrdr5Gqc6G+sXI67maCxzaT3A2+HqjUw= -github.com/prometheus/procfs v0.19.2 h1:zUMhqEW66Ex7OXIiDkll3tl9a1ZdilUOd/F6ZXw4Vws= -github.com/prometheus/procfs v0.19.2/go.mod h1:M0aotyiemPhBCM0z5w87kL22CxfcH05ZpYlu+b4J7mw= +github.com/prometheus/common v0.70.0 h1:bcpru3tWPVnxGnETLgOV5jbp/JRXgYEyv65CuBLAMMI= +github.com/prometheus/common v0.70.0/go.mod h1:S/SFasQmgGiYH6C81LKCtYa8QACgthGg5zxL2udV7SY= +github.com/prometheus/procfs v0.21.1 h1:GljZCt+zSTS+NZq88cyQ1LjZ+RCHp3uVuabBWA5+OJI= +github.com/prometheus/procfs v0.21.1/go.mod h1:aB55Cww9pdSJVHk0hUf0inxWyyjPogFIjmHKYgMKmtY= github.com/rogpeppe/go-internal v1.14.1 h1:UQB4HGPB6osV0SQTLymcB4TgvyWu6ZyliaW0tI/otEQ= github.com/rogpeppe/go-internal v1.14.1/go.mod h1:MaRKkUm5W0goXpeCfT7UZI6fk/L7L7so1lCWt35ZSgc= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= @@ -205,8 +205,8 @@ github.com/spf13/pflag v1.0.10/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3A github.com/spf13/viper v1.21.0 h1:x5S+0EU27Lbphp4UKm1C+1oQO+rKx36vfCoaVebLFSU= github.com/spf13/viper v1.21.0/go.mod h1:P0lhsswPGWD/1lZJ9ny3fYnVqxiegrlNrEmgLjbTCAY= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/objx v0.5.2 h1:xuMeJ0Sdp5ZMRXx/aWO6RZxdr3beISkG5/G/aIRr3pY= -github.com/stretchr/objx v0.5.2/go.mod h1:FRsXN1f5AsAjCGJKqEizvkpNtU+EGNCLh3NxZ/8L+MA= +github.com/stretchr/objx v0.5.3 h1:jmXUvGomnU1o3W/V5h2VEradbpJDwGrzugQQvL0POH4= +github.com/stretchr/objx v0.5.3/go.mod h1:rDQraq+vQZU7Fde9LOZLr8Tax6zZvy4kuNKF+QYS+U0= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= @@ -230,14 +230,14 @@ github.com/xlab/treeprint v1.2.0 h1:HzHnuAF1plUN2zGlAFHbSQP2qJ0ZAD3XF5XD7OesXRQ= github.com/xlab/treeprint v1.2.0/go.mod h1:gj5Gd3gPdKtR1ikdDK6fnFLdmIS0X30kTTuNd/WEJu0= go.opentelemetry.io/auto/sdk v1.2.1 h1:jXsnJ4Lmnqd11kwkBV2LgLoFMZKizbCi5fNZ/ipaZ64= go.opentelemetry.io/auto/sdk v1.2.1/go.mod h1:KRTj+aOaElaLi+wW1kO/DZRXwkF4C5xPbEe3ZiIhN7Y= -go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.67.0 h1:OyrsyzuttWTSur2qN/Lm0m2a8yqyIjUVBZcxFPuXq2o= -go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.67.0/go.mod h1:C2NGBr+kAB4bk3xtMXfZ94gqFDtg/GkI7e9zqGh5Beg= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.69.0 h1:8tvICD4vSTOOsNrsI4Ljf6C+6UKvpTEH5XY3JMoyPoo= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.69.0/go.mod h1:z9+yiacE0IHRqM4qFfkbt/JYlmYXgss8GY/jXoNuPJI= go.opentelemetry.io/otel v1.44.0 h1:JjwHmHpA4iZ3wBxluu2fbbE7j4kqlE8jXyAyPXH7HqU= go.opentelemetry.io/otel v1.44.0/go.mod h1:BMgjTHL9WPRlRjL2oZCBTL4whCGtXch2H4BhOPIAyYc= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.40.0 h1:QKdN8ly8zEMrByybbQgv8cWBcdAarwmIPZ6FThrWXJs= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.40.0/go.mod h1:bTdK1nhqF76qiPoCCdyFIV+N/sRHYXYCTQc+3VCi3MI= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.40.0 h1:DvJDOPmSWQHWywQS6lKL+pb8s3gBLOZUtw4N+mavW1I= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.40.0/go.mod h1:EtekO9DEJb4/jRyN4v4Qjc2yA7AtfCBuz2FynRUWTXs= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.44.0 h1:4YsVu3B8+3qtWYYrsUYgn0OG78pN0rnNPRGX4SbokQI= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.44.0/go.mod h1:+wnlSn0mD1ADVMe3v9Z/WIaiz6q6gL2J/ejaAmdmv80= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.44.0 h1:qazEJlUOQzhCpzQpFETGby7EdqjI1wsd0W+6Gg1SCTU= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.44.0/go.mod h1:fOD2Yefuxixkx3ahVNf0O/PERb6r4OlbxfATVnYvzCo= go.opentelemetry.io/otel/metric v1.44.0 h1:1w0gILTcHdr3YI+ixLyjemwrVnsMURbTZFrSYCdDdmc= go.opentelemetry.io/otel/metric v1.44.0/go.mod h1:8O7hanEPBNgEMmybD3s2VBKcgWOCsA6tzHBPODAiquo= go.opentelemetry.io/otel/sdk v1.44.0 h1:nHYwb9lK+fJPU/dnT6s7W7Z8itMWyqrnVfbheVYrZ58= @@ -246,8 +246,8 @@ go.opentelemetry.io/otel/sdk/metric v1.44.0 h1:3LlKgI+VjbVsjNRFZJZAJ30WjXC5VkNRk go.opentelemetry.io/otel/sdk/metric v1.44.0/go.mod h1:5B5pMARnXxKhltooO4xUuCBorl65a4EpnTalObqOigA= go.opentelemetry.io/otel/trace v1.44.0 h1:jxF5CsGYCe74MCRx2X4g7WsY/VBKRqqpNvXlX/6gtIk= go.opentelemetry.io/otel/trace v1.44.0/go.mod h1:oLl1jrMQAVo6v3GAggN+1VH9VIz9iUSvW53sW1Q8PIE= -go.opentelemetry.io/proto/otlp v1.9.0 h1:l706jCMITVouPOqEnii2fIAuO3IVGBRPV5ICjceRb/A= -go.opentelemetry.io/proto/otlp v1.9.0/go.mod h1:xE+Cx5E/eEHw+ISFkwPLwCZefwVjY+pqKg1qcK03+/4= +go.opentelemetry.io/proto/otlp v1.10.0 h1:IQRWgT5srOCYfiWnpqUYz9CVmbO8bFmKcwYxpuCSL2g= +go.opentelemetry.io/proto/otlp v1.10.0/go.mod h1:/CV4QoCR/S9yaPj8utp3lvQPoqMtxXdzn7ozvvozVqk= go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE= go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0= @@ -258,8 +258,8 @@ go.yaml.in/yaml/v2 v2.4.4 h1:tuyd0P+2Ont/d6e2rl3be67goVK4R6deVxCUX5vyPaQ= go.yaml.in/yaml/v2 v2.4.4/go.mod h1:gMZqIpDtDqOfM0uNfy0SkpRhvUryYH0Z6wdMYcacYXQ= go.yaml.in/yaml/v3 v3.0.4 h1:tfq32ie2Jv2UxXFdLJdh3jXuOzWiL1fo0bu/FbuKpbc= go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg= -golang.org/x/exp v0.0.0-20251219203646-944ab1f22d93 h1:fQsdNF2N+/YewlRZiricy4P1iimyPKZ/xwniHj8Q2a0= -golang.org/x/exp v0.0.0-20251219203646-944ab1f22d93/go.mod h1:EPRbTFwzwjXj9NpYyyrvenVh9Y+GFeEvMNh7Xuz7xgU= +golang.org/x/exp v0.0.0-20260410095643-746e56fc9e2f h1:W3F4c+6OLc6H2lb//N1q4WpJkhzJCK5J6kUi1NTVXfM= +golang.org/x/exp v0.0.0-20260410095643-746e56fc9e2f/go.mod h1:J1xhfL/vlindoeF/aINzNzt2Bket5bjo9sdOYzOsU80= golang.org/x/mod v0.38.0 h1:MECBjubtXD7yj4HrhIUcywNaGeNVUdfVnxmPajOk4yk= golang.org/x/mod v0.38.0/go.mod h1:V6Xz0pq8TQ3dGqVQ1FVHuelZpAL0uNhSkk9ogYP3c40= golang.org/x/net v0.58.0 h1:ynWG7rqYi4ccpTEuPZ2QGWHktVEM9DMCj9yzDE0Q7To= @@ -301,28 +301,28 @@ gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -k8s.io/api v0.36.3 h1:NxB+05W2UGqXWFXcLO0RB5cnqnUPP5v5sVlaOH0Iz4w= -k8s.io/api v0.36.3/go.mod h1:JzLQKqRHC5+I8RVj/lS3lCg0mg6nWI9Fo/Sk3ElxHzg= -k8s.io/apiextensions-apiserver v0.36.3 h1:dPmOAPhwTtqb1bTxbFPsy18KHPhktQeO3WUPXunZIB0= -k8s.io/apiextensions-apiserver v0.36.3/go.mod h1:KTXFqgXiuw2pRoL+Wpmttqc+up9Xt/GohadPWeLLOa4= -k8s.io/apimachinery v0.36.3 h1:PkzMRBRG8joFD8EhCuQAtNPvJlxb82FwplP26HIzvAM= -k8s.io/apimachinery v0.36.3/go.mod h1:cTSjBWgPe/6CQyBKzY/hDIRWCQQQeK0mfLbml0UYFHE= -k8s.io/apiserver v0.36.3 h1:MGSg2SkdfuytiDEcRylT5mQFmmSsbx90XFUO67Y4bsQ= -k8s.io/apiserver v0.36.3/go.mod h1:fVH7zv9EUNUA7Fl7LtDKh8aB9W7u1VQPSGtWV5SjUxg= -k8s.io/client-go v0.36.3 h1:M4JdVzXxYcZk4fGpfDdYnxSwhLKWCFoQsHW6t+z8Hfg= -k8s.io/client-go v0.36.3/go.mod h1:gcPwr0c87vjjG6HB6pWEqOeuYVoXSsREjzux2j6GF30= -k8s.io/component-base v0.36.3 h1:vc/UFvPCkW0irPz84LAodAL1j3f4xktPM6dDJIEheAY= -k8s.io/component-base v0.36.3/go.mod h1:hZbNFG+gCMl9EbykDGEu73feKP9/Cq6JsV4pTo9GTO8= +k8s.io/api v0.37.0 h1:Z//Vj9N7RA/yS2sDmxyeo7h+RR4zbUrd2vrd3Z0TbB4= +k8s.io/api v0.37.0/go.mod h1:LKXgcJWMc+f4OLbP5SFR8rulEg07zZhpi/zMULiBImk= +k8s.io/apiextensions-apiserver v0.37.0 h1:zRMQ3+/LIE5oZ0tVvXwYHC+dIkSP5cjNWju7AZU1LOI= +k8s.io/apiextensions-apiserver v0.37.0/go.mod h1:HU0PfSBwchHL5iDau6jjt9zU6ryWkDDlaVUiq91NK80= +k8s.io/apimachinery v0.37.0 h1:Np2AbDtf8x6RDHiD8T9LbKJ9gaegeVNa8yNm5FuGKm0= +k8s.io/apimachinery v0.37.0/go.mod h1:RN3nhprFSCxOi5Selxd7oMTXOe/c+ZbcE7Im+TS2zkE= +k8s.io/apiserver v0.37.0 h1:TXg7OxsOWrAH8J4Zi/gBAZuMw1Dfdd+6cca2h4qjRqo= +k8s.io/apiserver v0.37.0/go.mod h1:OddHDF4gy9qyIb8o/3+qaeP6S0vEObWLgOygVqXksv0= +k8s.io/client-go v0.37.0 h1:nsN31fy8wBySuZ+QRnKmrjRSQLOG2rvoGN0tKd12zhQ= +k8s.io/client-go v0.37.0/go.mod h1:FcGqw+Ll/gNQiq+nPGY1Oyt9y7SgDh1d3MW3RFDEbn0= +k8s.io/component-base v0.37.0 h1:3SdSa4+itMdFTDFTeR8CxKGmSTSMXFlKL4ky8OqjguM= +k8s.io/component-base v0.37.0/go.mod h1:LjOebp4R9y6LODWZQv102ZQxGheLcDO2ZJLAw6bbh4I= k8s.io/klog/v2 v2.140.0 h1:Tf+J3AH7xnUzZyVVXhTgGhEKnFqye14aadWv7bzXdzc= k8s.io/klog/v2 v2.140.0/go.mod h1:o+/RWfJ6PwpnFn7OyAG3QnO47BFsymfEfrz6XyYSSp0= -k8s.io/kube-openapi v0.0.0-20260603220949-865597e52e25 h1:mPMaPMpBij2V1Wv/fR+HW124vVGXXvOSS9ver/9yjWs= -k8s.io/kube-openapi v0.0.0-20260603220949-865597e52e25/go.mod h1:V/QaCUYDa+0QpcHhVVc5l99Uz56wEMEXBSj9oCDkNDY= -k8s.io/streaming v0.36.3 h1:9rAaqBk0C0Pc7+/fqGekj07NV+/Xrew58p647A0JT8w= -k8s.io/streaming v0.36.3/go.mod h1:z6fV3D+NVkoeqRMtWwlUZK6U17SY/LqNzOxWL6GyR/s= +k8s.io/kube-openapi v0.0.0-20260721132016-d427ff9ee9ad h1:oXImqH8mQNk7PmvzKhmN3ddJoY6OnyM225MXwGHPm0A= +k8s.io/kube-openapi v0.0.0-20260721132016-d427ff9ee9ad/go.mod h1:0/mqHCVhlumdJ3BhCfnjSZQE037nAhNodh1/hK0T8/I= +k8s.io/streaming v0.37.0 h1:iPBUZLZiKt5bV+lxJurASMOV07VuBhNpiwJt2//AWrM= +k8s.io/streaming v0.37.0/go.mod h1:APlJR26ZWRcVy5bIEj0QRrKUXROtBHPcxl2NT7EAzPU= k8s.io/utils v0.0.0-20260707023825-cf1189d6abe3 h1:jVkFFVfXdXP74B/zbO3hM3hpSFD0xvhQ5U686DPurkE= k8s.io/utils v0.0.0-20260707023825-cf1189d6abe3/go.mod h1:M2s5JB1lIYP3jzZdorPLHXIPJzt9vv2muW5a6L9DtNM= -sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.34.0 h1:hSfpvjjTQXQY2Fol2CS0QHMNs/WI1MOSGzCm1KhM5ec= -sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.34.0/go.mod h1:Ve9uj1L+deCXFrPOk1LpFXqTg7LCFzFso6PA48q/XZw= +sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.36.0 h1:/YpDJ4vReG7ZmzSpBGxduXgywWkJU9zHubgJG03MT+Y= +sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.36.0/go.mod h1:tJo1aepTXyR+8Xs3sUsGBDk4Ub2AM5dPAPKJx0mpm5c= sigs.k8s.io/controller-runtime v0.24.1 h1:miPEwrmirImAvgME1L9qebGHrOnGJoVmVdtOU9fRfo4= sigs.k8s.io/controller-runtime v0.24.1/go.mod h1:vFkfY5fGt5xAC/sKb8IBFKgWPNKG9OUG29dR8Y2wImw= sigs.k8s.io/gateway-api v1.6.0 h1:735YBRj5NXFrOGX0GoSjwzUIzbz8kiEOfADsqHFmHgE= @@ -335,7 +335,7 @@ sigs.k8s.io/kustomize/kyaml v0.21.1 h1:IVlbmhC076nf6foyL6Taw4BkrLuEsXUXNpsE+ScX7 sigs.k8s.io/kustomize/kyaml v0.21.1/go.mod h1:hmxADesM3yUN2vbA5z1/YTBnzLJ1dajdqpQonwBL1FQ= sigs.k8s.io/randfill v1.0.0 h1:JfjMILfT8A6RbawdsK2JXGBR5AQVfd+9TbzrlneTyrU= sigs.k8s.io/randfill v1.0.0/go.mod h1:XeLlZ/jmk4i1HRopwe7/aU3H5n1zNUcX6TM94b3QxOY= -sigs.k8s.io/structured-merge-diff/v6 v6.4.0 h1:qmp2e3ZfFi1/jJbDGpD4mt3wyp6PE1NfKHCYLqgNQJo= -sigs.k8s.io/structured-merge-diff/v6 v6.4.0/go.mod h1:M3W8sfWvn2HhQDIbGWj3S099YozAsymCo/wrT5ohRUE= +sigs.k8s.io/structured-merge-diff/v6 v6.4.2 h1:qdOxHwrl2Kaag1aQEarlYcOA9vSyGCp3CIki3aW8c4Q= +sigs.k8s.io/structured-merge-diff/v6 v6.4.2/go.mod h1:M3W8sfWvn2HhQDIbGWj3S099YozAsymCo/wrT5ohRUE= sigs.k8s.io/yaml v1.6.0 h1:G8fkbMSAFqgEFgh4b1wmtzDnioxFCUgTZhlbj5P9QYs= sigs.k8s.io/yaml v1.6.0/go.mod h1:796bPqUfzR/0jLAl6XjHl3Ck7MiyVv8dbTdyT3/pMf4= diff --git a/manifest.yaml b/manifest.yaml index 85115ea..118beaf 100644 --- a/manifest.yaml +++ b/manifest.yaml @@ -459,7 +459,9 @@ spec: description: Selects a key of a ConfigMap. properties: key: - description: The key to select. + description: |- + The key to select from the ConfigMap's Data field. + Keys in the BinaryData field are not currently propagated to container env vars. type: string name: default: "" From 0ebb41ae075e49ea7b436e85f987e2e0c08c4d4a Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 27 Aug 2026 17:40:49 +0200 Subject: [PATCH 121/134] chore(deps): lock file maintenance (#1068) Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- web/yarn.lock | 514 ++++++++++++++++++++++++-------------------------- 1 file changed, 244 insertions(+), 270 deletions(-) diff --git a/web/yarn.lock b/web/yarn.lock index 67a300b..52c219f 100644 --- a/web/yarn.lock +++ b/web/yarn.lock @@ -12,15 +12,15 @@ section-matter "^1.0.0" strip-bom-string "^1.0.0" -"@algolia/abtesting@1.22.0": - version "1.22.0" - resolved "https://registry.yarnpkg.com/@algolia/abtesting/-/abtesting-1.22.0.tgz#7537637f52d2fe00b3714fe2d5ce8cb856be35ff" - integrity sha512-BFR6zNowNKcY7Ou7TaJc9QWexES4YKPbmf/OTFofpdsdhz4x6q0lbxp3duO0EHnyrN7rE4ba/TSXuY+BDGu4+g== +"@algolia/abtesting@1.23.0": + version "1.23.0" + resolved "https://registry.yarnpkg.com/@algolia/abtesting/-/abtesting-1.23.0.tgz#810a23366284c4d3f3496e3f8fa7f1a24ec47206" + integrity sha512-j45MBISstltys9QyQ4xf6quRiN1g7vMuwQL9VM4dx8YuRZvCQ173b9royZAx6iAbRX3IB1VnG1z//NuwyQ8jpQ== dependencies: - "@algolia/client-common" "5.56.0" - "@algolia/requester-browser-xhr" "5.56.0" - "@algolia/requester-fetch" "5.56.0" - "@algolia/requester-node-http" "5.56.0" + "@algolia/client-common" "5.57.0" + "@algolia/requester-browser-xhr" "5.57.0" + "@algolia/requester-fetch" "5.57.0" + "@algolia/requester-node-http" "5.57.0" "@algolia/autocomplete-core@1.19.2": version "1.19.2" @@ -62,126 +62,126 @@ resolved "https://registry.yarnpkg.com/@algolia/autocomplete-shared/-/autocomplete-shared-1.19.9.tgz#c5b05e23c71027e4e45a301f286593dffdcdfbdf" integrity sha512-YosP9Uoek6y/Ur1r1qeogk4biMe/hzkyNcgMCciw0//3XpCM7VlYLSHnyt/vOnEOGhCCc0+3v+unEiH6zz+Z1A== -"@algolia/client-abtesting@5.56.0": - version "5.56.0" - resolved "https://registry.yarnpkg.com/@algolia/client-abtesting/-/client-abtesting-5.56.0.tgz#25be0db6f97ae91dfdbaffbe9eae99e963310891" - integrity sha512-7r4Z3NC7yU1oAQVWJNA2HX7tX481F3pJvCGyLIXiTdBcthz4Q/o21jwcMYDFkuI92UWTNBQQmHYgwHo1zS5dzg== +"@algolia/client-abtesting@5.57.0": + version "5.57.0" + resolved "https://registry.yarnpkg.com/@algolia/client-abtesting/-/client-abtesting-5.57.0.tgz#dbd3f01148bdf2648133563021671e3d3628e4d4" + integrity sha512-JVFFujiZUCguk5tz3LZr4fTQxqpIrj4/Jw3SI7kMljSqtfLxYn/s/TWH0J2s4iNfsDpxPhgFGMotCpmDI4kZ8w== dependencies: - "@algolia/client-common" "5.56.0" - "@algolia/requester-browser-xhr" "5.56.0" - "@algolia/requester-fetch" "5.56.0" - "@algolia/requester-node-http" "5.56.0" + "@algolia/client-common" "5.57.0" + "@algolia/requester-browser-xhr" "5.57.0" + "@algolia/requester-fetch" "5.57.0" + "@algolia/requester-node-http" "5.57.0" -"@algolia/client-analytics@5.56.0": - version "5.56.0" - resolved "https://registry.yarnpkg.com/@algolia/client-analytics/-/client-analytics-5.56.0.tgz#bcace36358cda26ca285f3a100544db0ce29aabe" - integrity sha512-avmjXQSq+jadFO8Xl2em05/uQdQnEmHsJyOAdVbZkmVgpMfxL12aJwVVfGNwYr9nulcpuJN1X0lTaQ5wxuNGcA== +"@algolia/client-analytics@5.57.0": + version "5.57.0" + resolved "https://registry.yarnpkg.com/@algolia/client-analytics/-/client-analytics-5.57.0.tgz#e172c6ec3cdc7bfc5d305ba6190161cd9dfd3d1d" + integrity sha512-6KqECK4ED3JJQEoDrQWnGPQzElA828xAD4qK5ceawNNyP/LcSvzAoLHjFkoTPksZ/kxj6VUtCRH+IHZesLltng== dependencies: - "@algolia/client-common" "5.56.0" - "@algolia/requester-browser-xhr" "5.56.0" - "@algolia/requester-fetch" "5.56.0" - "@algolia/requester-node-http" "5.56.0" + "@algolia/client-common" "5.57.0" + "@algolia/requester-browser-xhr" "5.57.0" + "@algolia/requester-fetch" "5.57.0" + "@algolia/requester-node-http" "5.57.0" -"@algolia/client-common@5.56.0": - version "5.56.0" - resolved "https://registry.yarnpkg.com/@algolia/client-common/-/client-common-5.56.0.tgz#6190221a7091dfa1a0e0a3b5964e92b1b59968ba" - integrity sha512-v2TPStUhY//ripPjIVclZ8AWc7DEGooXULZGFlFu37zNatgHjw34oZZ+OSbbc/YHO+xZwPl62I1k8xH1m4S2eg== +"@algolia/client-common@5.57.0": + version "5.57.0" + resolved "https://registry.yarnpkg.com/@algolia/client-common/-/client-common-5.57.0.tgz#e41ddfd7b2428c882077fb27e9bd44921fe8dc85" + integrity sha512-uqpGF3oXYsoCbQq5d7BzNrNTfIfuvJyGP1CKvSW27T9boUg7KOwyxsAw1AX0a3jSW2HrYEJ/NN+Z4MiGivbpeQ== -"@algolia/client-insights@5.56.0": - version "5.56.0" - resolved "https://registry.yarnpkg.com/@algolia/client-insights/-/client-insights-5.56.0.tgz#2ff179c8924ff188d4604e32aef645c709cc76be" - integrity sha512-P0ehROpM4Sem3Sqo5x2cKPgj67D3G3jy0rh1Amwkcvsfr6tkvIcdCmerieanqTF7NxUMPNFLkpIFeMO8Rpa50w== +"@algolia/client-insights@5.57.0": + version "5.57.0" + resolved "https://registry.yarnpkg.com/@algolia/client-insights/-/client-insights-5.57.0.tgz#8bd281560f2d2a0b09d2c22a3ff8522c6fcb0e80" + integrity sha512-u5NboJVJXDEFplvNnqqX4CxkXPYysjJRj47hOSh9329H8kG5gFLKJBIiS5utMQ+GZm8xQl3Te7NInDk6elEADQ== dependencies: - "@algolia/client-common" "5.56.0" - "@algolia/requester-browser-xhr" "5.56.0" - "@algolia/requester-fetch" "5.56.0" - "@algolia/requester-node-http" "5.56.0" + "@algolia/client-common" "5.57.0" + "@algolia/requester-browser-xhr" "5.57.0" + "@algolia/requester-fetch" "5.57.0" + "@algolia/requester-node-http" "5.57.0" -"@algolia/client-personalization@5.56.0": - version "5.56.0" - resolved "https://registry.yarnpkg.com/@algolia/client-personalization/-/client-personalization-5.56.0.tgz#64f8197c46c60306a115bc4024f6ebce2d8140d8" - integrity sha512-SXK3Vn3WVxyzbm31oePZBJkp1wpOyuWdd4B/Pv7n0aXDxmeSWhC1R1FC1517mMrFAIaPH4Rt0x6RUe7ZNjz8FA== +"@algolia/client-personalization@5.57.0": + version "5.57.0" + resolved "https://registry.yarnpkg.com/@algolia/client-personalization/-/client-personalization-5.57.0.tgz#31b963e1aad90e270712618476ee1b288f12f8d8" + integrity sha512-uzc0b2LmHAK9/QID4xeo35OG84AkZl4YewkCqawqAOGLjT2eZpM/OZx45ESygMHG30Ws+ZTSdluPtMJcUnrbWQ== dependencies: - "@algolia/client-common" "5.56.0" - "@algolia/requester-browser-xhr" "5.56.0" - "@algolia/requester-fetch" "5.56.0" - "@algolia/requester-node-http" "5.56.0" + "@algolia/client-common" "5.57.0" + "@algolia/requester-browser-xhr" "5.57.0" + "@algolia/requester-fetch" "5.57.0" + "@algolia/requester-node-http" "5.57.0" -"@algolia/client-query-suggestions@5.56.0": - version "5.56.0" - resolved "https://registry.yarnpkg.com/@algolia/client-query-suggestions/-/client-query-suggestions-5.56.0.tgz#e4a28bc249e9c69f0b5ef280b72a12e32e8c53c8" - integrity sha512-5+ZdX8garFnmycnZgKhtXHePEaLj5zqDxI/0lkhhluzCcvTn0/PvvTirTg8hHYetQHvn7GDyeAiqTAieMvMW4A== +"@algolia/client-query-suggestions@5.57.0": + version "5.57.0" + resolved "https://registry.yarnpkg.com/@algolia/client-query-suggestions/-/client-query-suggestions-5.57.0.tgz#16895dc10abf228bd5ed136463273ed262b151b0" + integrity sha512-dIAhnM6ue/ssa5PjgNfu4g8A4yTojl9ZOUzZU3wIaIKRerL2R/3Emuf9n/D6ICXXP167KC6XCeC7nliSw7cuSw== dependencies: - "@algolia/client-common" "5.56.0" - "@algolia/requester-browser-xhr" "5.56.0" - "@algolia/requester-fetch" "5.56.0" - "@algolia/requester-node-http" "5.56.0" + "@algolia/client-common" "5.57.0" + "@algolia/requester-browser-xhr" "5.57.0" + "@algolia/requester-fetch" "5.57.0" + "@algolia/requester-node-http" "5.57.0" -"@algolia/client-search@5.56.0": - version "5.56.0" - resolved "https://registry.yarnpkg.com/@algolia/client-search/-/client-search-5.56.0.tgz#66b19d5382bf47a16105817b78e372f5e9039508" - integrity sha512-+mKUdYvqOi0BcvpAEyCEw49vSBptufIcfibtHz2bdr1pI789M46Yt0uQEk/sxtK3teh71OQvVFHaTDzShUWewQ== +"@algolia/client-search@5.57.0": + version "5.57.0" + resolved "https://registry.yarnpkg.com/@algolia/client-search/-/client-search-5.57.0.tgz#50363185ac641b5712ec5e3e81eba63a64d7e755" + integrity sha512-2TTPTTKSJmCptvhCm4Xf3bBYMqZni+Pgc2hVdqc4l9wsBpSJNVTVIKpnd10OubUgkGcmppVDj1XQqYaf6EnPSQ== dependencies: - "@algolia/client-common" "5.56.0" - "@algolia/requester-browser-xhr" "5.56.0" - "@algolia/requester-fetch" "5.56.0" - "@algolia/requester-node-http" "5.56.0" + "@algolia/client-common" "5.57.0" + "@algolia/requester-browser-xhr" "5.57.0" + "@algolia/requester-fetch" "5.57.0" + "@algolia/requester-node-http" "5.57.0" "@algolia/events@^4.0.1": version "4.0.1" resolved "https://registry.yarnpkg.com/@algolia/events/-/events-4.0.1.tgz#fd39e7477e7bc703d7f893b556f676c032af3950" integrity sha512-FQzvOCgoFXAbf5Y6mYozw2aj5KCJoA3m4heImceldzPSMbdyS4atVjJzXKMsfX3wnZTFYwkkt8/z8UesLHlSBQ== -"@algolia/ingestion@1.56.0": - version "1.56.0" - resolved "https://registry.yarnpkg.com/@algolia/ingestion/-/ingestion-1.56.0.tgz#1b3c41b8f1c5a2d309610683e3d1b99f962d92df" - integrity sha512-9g/zj+AZx5moFcdFIrYQoVrueXivjUcc3MQHtCYT8WhIuk1lUh1AyEhvJCS0XBZld09cLvd1AZ3BvDBpVpX2UA== +"@algolia/ingestion@1.57.0": + version "1.57.0" + resolved "https://registry.yarnpkg.com/@algolia/ingestion/-/ingestion-1.57.0.tgz#0646edeaf3e63942301489fbd77ed9b55234558a" + integrity sha512-W4JseHKt+pzOxlFV+T3MWEG0h4Z2Se5zjoXUD0ewlw8aOWMG/yjRdopUdLQsXULepB/My2tDuZjkwk2sMfsUrQ== dependencies: - "@algolia/client-common" "5.56.0" - "@algolia/requester-browser-xhr" "5.56.0" - "@algolia/requester-fetch" "5.56.0" - "@algolia/requester-node-http" "5.56.0" + "@algolia/client-common" "5.57.0" + "@algolia/requester-browser-xhr" "5.57.0" + "@algolia/requester-fetch" "5.57.0" + "@algolia/requester-node-http" "5.57.0" -"@algolia/monitoring@1.56.0": - version "1.56.0" - resolved "https://registry.yarnpkg.com/@algolia/monitoring/-/monitoring-1.56.0.tgz#11cc9198e778466eafde5a12d02fd02cfcbd1710" - integrity sha512-Qf3Sr6f9A9uxCZUf3MXS0d2b877uYzEB5yxqpVGXAhcJnBCQjrRRon0KvefpGkxy+BshrIJs96OUoMtGqXTFDA== +"@algolia/monitoring@1.57.0": + version "1.57.0" + resolved "https://registry.yarnpkg.com/@algolia/monitoring/-/monitoring-1.57.0.tgz#a4adacfcb699dcc1a7297942db6655e5a7509ee6" + integrity sha512-BrxJVE0/eLinEPICCD7BKN/2xnt0nkjge70u8zzE2ISP3fuB3tjLgcwpanUycvlHBFLI4gK0l5ol54p6IYuR/Q== dependencies: - "@algolia/client-common" "5.56.0" - "@algolia/requester-browser-xhr" "5.56.0" - "@algolia/requester-fetch" "5.56.0" - "@algolia/requester-node-http" "5.56.0" + "@algolia/client-common" "5.57.0" + "@algolia/requester-browser-xhr" "5.57.0" + "@algolia/requester-fetch" "5.57.0" + "@algolia/requester-node-http" "5.57.0" -"@algolia/recommend@5.56.0": - version "5.56.0" - resolved "https://registry.yarnpkg.com/@algolia/recommend/-/recommend-5.56.0.tgz#6c96193cb91cf5c9f3c884fdf064e15dfe6cb742" - integrity sha512-GXWG1rWc5wu8hY4N33Y3b6ernY6sAdAvmKWN/zHAiACOx40WnpG0TVX5YazCAr/9gOYGInSiM2A0y2jy2xbiDA== +"@algolia/recommend@5.57.0": + version "5.57.0" + resolved "https://registry.yarnpkg.com/@algolia/recommend/-/recommend-5.57.0.tgz#d0714fd2dd20c5b90d1c5f7facc3c32136e48218" + integrity sha512-Gc29jkeiLKlVfHvyrIgyUHHE+aYTdXEeLfK42rjr5/1TTVsYwUJz0XkvoIBIqfMjcDg6gXeHb1jTUZ0H+SYIlQ== dependencies: - "@algolia/client-common" "5.56.0" - "@algolia/requester-browser-xhr" "5.56.0" - "@algolia/requester-fetch" "5.56.0" - "@algolia/requester-node-http" "5.56.0" + "@algolia/client-common" "5.57.0" + "@algolia/requester-browser-xhr" "5.57.0" + "@algolia/requester-fetch" "5.57.0" + "@algolia/requester-node-http" "5.57.0" -"@algolia/requester-browser-xhr@5.56.0": - version "5.56.0" - resolved "https://registry.yarnpkg.com/@algolia/requester-browser-xhr/-/requester-browser-xhr-5.56.0.tgz#b1f4705c53f1602ec14339999bfbf0e3e9a7bbc8" - integrity sha512-7t24cBxaInS3mZb7ddEaZT/tp6q+/aR4YttsQVyP1/i+LmwPR34atO35KjaLFCcRVrlP7sYOAqkCfg6lIRB+ew== +"@algolia/requester-browser-xhr@5.57.0": + version "5.57.0" + resolved "https://registry.yarnpkg.com/@algolia/requester-browser-xhr/-/requester-browser-xhr-5.57.0.tgz#4aee6fa45b792f0f57898bc556ff214a1c3457e3" + integrity sha512-PIPnPN7MP3fp2VAi01BVXhCWmD366ZB2Hkq5TlYKtThd4KxUtMmaaNDpFgVCTXtSIqWVZLJntOHRvxg/sIPd8Q== dependencies: - "@algolia/client-common" "5.56.0" + "@algolia/client-common" "5.57.0" -"@algolia/requester-fetch@5.56.0": - version "5.56.0" - resolved "https://registry.yarnpkg.com/@algolia/requester-fetch/-/requester-fetch-5.56.0.tgz#03f0aeea08efc991ab9f0663f1ea63df720fd9ba" - integrity sha512-R7ePHgVYmDFjZpvrsVAfbDz/d4RxKAYZ5/vgLfIsCVRZRryjWl/3INOxpOICzitehQ5FjNtNjcLQTrmHPTcHBQ== +"@algolia/requester-fetch@5.57.0": + version "5.57.0" + resolved "https://registry.yarnpkg.com/@algolia/requester-fetch/-/requester-fetch-5.57.0.tgz#7715e53e330990343dad20577ad83d22aa32e60a" + integrity sha512-AX3RlOudXMdTwtwUqdAf5hAVLvXfOZZH1FZh6ALDdrhVLT0TtAIe48N6nYcWcTnwoTxK/wDIQqZ19IMjK8zJAA== dependencies: - "@algolia/client-common" "5.56.0" + "@algolia/client-common" "5.57.0" -"@algolia/requester-node-http@5.56.0": - version "5.56.0" - resolved "https://registry.yarnpkg.com/@algolia/requester-node-http/-/requester-node-http-5.56.0.tgz#238bfa98ed145e261c1db7e133bee6390ba58c94" - integrity sha512-PIOUXlSnrqM0S+WOgDRb4RzotydJH7ZoT6tOyL7tAO7qJOfvX5wsEW8Pe+PMKMwvuI4/gIyK9cg2H7lJXqnc4Q== +"@algolia/requester-node-http@5.57.0": + version "5.57.0" + resolved "https://registry.yarnpkg.com/@algolia/requester-node-http/-/requester-node-http-5.57.0.tgz#fe979862e069f25fc99ddcdc8c5646abb5dba642" + integrity sha512-cWZc1dKb7wy9/wPpwMtL1y89gK2G7y2A47Coa7zwf1ydtIeJm4+S+XxoQ2b/ZRiQnrC1YHavLjYUPDCdnT7Khg== dependencies: - "@algolia/client-common" "5.56.0" + "@algolia/client-common" "5.57.0" "@babel/code-frame@^7.0.0", "@babel/code-frame@^7.29.7": version "7.29.7" @@ -2103,7 +2103,7 @@ resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz#6912b00d2c631c0d15ce1a7ab57cd657f2a8f8ba" integrity sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og== -"@jridgewell/trace-mapping@^0.3.18", "@jridgewell/trace-mapping@^0.3.24", "@jridgewell/trace-mapping@^0.3.25", "@jridgewell/trace-mapping@^0.3.28": +"@jridgewell/trace-mapping@^0.3.18", "@jridgewell/trace-mapping@^0.3.24", "@jridgewell/trace-mapping@^0.3.25", "@jridgewell/trace-mapping@^0.3.28", "@jridgewell/trace-mapping@^0.3.31": version "0.3.31" resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz#db15d6781c931f3a251a3dac39501c98a6082fd0" integrity sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw== @@ -2442,108 +2442,108 @@ "@nodelib/fs.scandir" "2.1.5" fastq "^1.6.0" -"@peculiar/asn1-cms@^2.6.0", "@peculiar/asn1-cms@^2.9.0": - version "2.9.0" - resolved "https://registry.yarnpkg.com/@peculiar/asn1-cms/-/asn1-cms-2.9.0.tgz#3b7f6c02bc0d05bb742afe1c921b4cb62f87c9d0" - integrity sha512-VKQz6sJYgSxtGaK6UdnNBUx7hmSdg0K331qrEWh5qxpQsyZGWBjxbq05AJ2bTWWjd7d+nJIxFzwvsR5T7DWC/A== +"@peculiar/asn1-cms@^2.6.0", "@peculiar/asn1-cms@^2.9.4": + version "2.9.4" + resolved "https://registry.yarnpkg.com/@peculiar/asn1-cms/-/asn1-cms-2.9.4.tgz#1c0b42ba5dcbaf8e1e060a1e76cd2442affbc37c" + integrity sha512-cben7oxmQsUGZqotus7yt0srYdncOT6RNWcTQ77T2RFOXejYVYkXadrfePdRcrVpO9K95IRLKKglG2k38jKXuw== dependencies: - "@peculiar/asn1-schema" "^2.9.0" - "@peculiar/asn1-x509" "^2.9.0" - "@peculiar/asn1-x509-attr" "^2.9.0" + "@peculiar/asn1-schema" "^2.9.4" + "@peculiar/asn1-x509" "^2.9.4" + "@peculiar/asn1-x509-attr" "^2.9.4" asn1js "^3.0.10" tslib "^2.8.1" "@peculiar/asn1-csr@^2.6.0": - version "2.9.0" - resolved "https://registry.yarnpkg.com/@peculiar/asn1-csr/-/asn1-csr-2.9.0.tgz#52d473be6d3e7a1ac18fda2605f1ca03aa1783c3" - integrity sha512-SbxRzHiWnRdiDuiiji/RLsJxu2au4hmSZSKK7GQOgNr2BVvheAlFQST9qqzRchUcZ6wvcyRuPXIfYXVzLoZ/5g== + version "2.9.4" + resolved "https://registry.yarnpkg.com/@peculiar/asn1-csr/-/asn1-csr-2.9.4.tgz#d306964f97bd7eb4edc6e3dc5e5ac87b2414e858" + integrity sha512-xd4YN4vpRjkDAQWVfZZkeu12IEND7DOpkqaHSIHxZl1uggUNa9Ju0QxY2jHvDAS9pP0zhRBytg8ifsnGo3V0jw== dependencies: - "@peculiar/asn1-schema" "^2.9.0" - "@peculiar/asn1-x509" "^2.9.0" + "@peculiar/asn1-schema" "^2.9.4" + "@peculiar/asn1-x509" "^2.9.4" asn1js "^3.0.10" tslib "^2.8.1" "@peculiar/asn1-ecc@^2.6.0": - version "2.9.0" - resolved "https://registry.yarnpkg.com/@peculiar/asn1-ecc/-/asn1-ecc-2.9.0.tgz#ac52378f6bfb3df62cbca014ade41cc40e91bdd6" - integrity sha512-vNspHtTd9h6e8c2lMW+B/VHEUD+HRFV0fj/Gvz7SaJbwiecA8dxd96UTFPYI1PR8k7qwjjW9AFEyI+LuyVi4Kw== + version "2.9.4" + resolved "https://registry.yarnpkg.com/@peculiar/asn1-ecc/-/asn1-ecc-2.9.4.tgz#2bf1bd8734584689a2d3f43c57b25ce3a60a0ce2" + integrity sha512-JJXefFshRAuVAjWQo/39bkg1ywc1VaiO44S8RRC+Ykvf/u2KDmYffoDb0ZBPCR5uJy4AGKQhl8mX+Q8ShcWaXQ== dependencies: - "@peculiar/asn1-schema" "^2.9.0" - "@peculiar/asn1-x509" "^2.9.0" + "@peculiar/asn1-schema" "^2.9.4" + "@peculiar/asn1-x509" "^2.9.4" asn1js "^3.0.10" tslib "^2.8.1" -"@peculiar/asn1-pfx@^2.9.0": - version "2.9.0" - resolved "https://registry.yarnpkg.com/@peculiar/asn1-pfx/-/asn1-pfx-2.9.0.tgz#c6faec5f52e76dd6263479a5a257d5d4ff4b57ad" - integrity sha512-A6bX+gZr69U38Pg1mWvPrM1eRba6L6kLR8iVG+bJtKj3qSv2rSNmlXLtej7ZOkEWt6xL6PiJD73uFEdQI3BXCg== +"@peculiar/asn1-pfx@^2.9.4": + version "2.9.4" + resolved "https://registry.yarnpkg.com/@peculiar/asn1-pfx/-/asn1-pfx-2.9.4.tgz#795ddfe7ee3669b50f42cdaed42cc82b22a5d440" + integrity sha512-khuGzHTzNzk4GDlIBEILyIs6Lce0yn0ZBdoI9v93kmNncfZRhD+AQ5ODFqdhvoE8cMJF/JMTQ8yA+t1D14kqCw== dependencies: - "@peculiar/asn1-cms" "^2.9.0" - "@peculiar/asn1-pkcs8" "^2.9.0" - "@peculiar/asn1-rsa" "^2.9.0" - "@peculiar/asn1-schema" "^2.9.0" + "@peculiar/asn1-cms" "^2.9.4" + "@peculiar/asn1-pkcs8" "^2.9.4" + "@peculiar/asn1-rsa" "^2.9.4" + "@peculiar/asn1-schema" "^2.9.4" asn1js "^3.0.10" tslib "^2.8.1" -"@peculiar/asn1-pkcs8@^2.9.0": - version "2.9.0" - resolved "https://registry.yarnpkg.com/@peculiar/asn1-pkcs8/-/asn1-pkcs8-2.9.0.tgz#3a94024e6abd489a680e135e72324ab73ec82157" - integrity sha512-1JH4FliKQ3trkMD17X+bKGsph5TsiM+AiiqnVKr1wxA/GoUSDHiWG/zROzLAbDIA7eclBCjQsp8hrBEJk7LRUQ== +"@peculiar/asn1-pkcs8@^2.9.4": + version "2.9.4" + resolved "https://registry.yarnpkg.com/@peculiar/asn1-pkcs8/-/asn1-pkcs8-2.9.4.tgz#79ac7696eb7acf3fe68b121ac39fcb265f8b219e" + integrity sha512-duRdotlUx9eDZe6QrQpQKl61RbWykCHBCkKayP8V8XdEFwlKHZ8qGGDMyS6Pye7OX7nLFttTTpRkJeet78ckwQ== dependencies: - "@peculiar/asn1-schema" "^2.9.0" - "@peculiar/asn1-x509" "^2.9.0" + "@peculiar/asn1-schema" "^2.9.4" + "@peculiar/asn1-x509" "^2.9.4" asn1js "^3.0.10" tslib "^2.8.1" "@peculiar/asn1-pkcs9@^2.6.0": - version "2.9.0" - resolved "https://registry.yarnpkg.com/@peculiar/asn1-pkcs9/-/asn1-pkcs9-2.9.0.tgz#96b007ac7eb9c8efacc0c0e40cb047b52fd14e70" - integrity sha512-igArY6bpCI6tOPm2EU9QPrXuKq2s1iraLCTym4UlooYdzcRDIPCRUN9TAEcqZ5rZhA+HiPdFKTbDP9vneN/tsg== + version "2.9.4" + resolved "https://registry.yarnpkg.com/@peculiar/asn1-pkcs9/-/asn1-pkcs9-2.9.4.tgz#18c89ab8d5e34469d43497bdbde7fc84cf437991" + integrity sha512-kaL4cNxBpdQE2dKlyZBqz4ygCrwffO+8wfoxTEqM1Z8RadvCeELBRzcv0dzM8aY9azHMwODO5nxU65zXmhToOQ== dependencies: - "@peculiar/asn1-cms" "^2.9.0" - "@peculiar/asn1-pfx" "^2.9.0" - "@peculiar/asn1-pkcs8" "^2.9.0" - "@peculiar/asn1-schema" "^2.9.0" - "@peculiar/asn1-x509" "^2.9.0" - "@peculiar/asn1-x509-attr" "^2.9.0" + "@peculiar/asn1-cms" "^2.9.4" + "@peculiar/asn1-pfx" "^2.9.4" + "@peculiar/asn1-pkcs8" "^2.9.4" + "@peculiar/asn1-schema" "^2.9.4" + "@peculiar/asn1-x509" "^2.9.4" + "@peculiar/asn1-x509-attr" "^2.9.4" asn1js "^3.0.10" tslib "^2.8.1" -"@peculiar/asn1-rsa@^2.6.0", "@peculiar/asn1-rsa@^2.9.0": - version "2.9.0" - resolved "https://registry.yarnpkg.com/@peculiar/asn1-rsa/-/asn1-rsa-2.9.0.tgz#dfa6f8b57ef18e0c4e5b66cff14bdfa49398957e" - integrity sha512-vOD7Q4UmQWhlMYuWJawS2sD+/JcPKJNtyQuFZx09r+KFhm5/HxfGak63y/m56cpBjmb5k6PeRlQf1fvLQAieUA== +"@peculiar/asn1-rsa@^2.6.0", "@peculiar/asn1-rsa@^2.9.4": + version "2.9.4" + resolved "https://registry.yarnpkg.com/@peculiar/asn1-rsa/-/asn1-rsa-2.9.4.tgz#0547359f09b10876a21a96ef32b70af6db9855ad" + integrity sha512-pZ96eD1PptovcWQ/GSmuNFXd/7EQJNlKfDaNCyE2rx3W0v6QFelkzquVqRSRyyDXXCYD69ZXJDzZ8GhIiQzKoA== dependencies: - "@peculiar/asn1-schema" "^2.9.0" - "@peculiar/asn1-x509" "^2.9.0" + "@peculiar/asn1-schema" "^2.9.4" + "@peculiar/asn1-x509" "^2.9.4" asn1js "^3.0.10" tslib "^2.8.1" -"@peculiar/asn1-schema@^2.6.0", "@peculiar/asn1-schema@^2.9.0": - version "2.9.0" - resolved "https://registry.yarnpkg.com/@peculiar/asn1-schema/-/asn1-schema-2.9.0.tgz#a5dcc18fc0afbe35925a3c6de28d667d6f9c4ea3" - integrity sha512-AKvPMOM7LfK0uFe1m7o7+veOa8xQGPqsqOrKi3QKgCElzwjGp39mbhr2g7mt/v/mXQHiIvJmDj5cJS173x8Q9Q== +"@peculiar/asn1-schema@^2.6.0", "@peculiar/asn1-schema@^2.9.4": + version "2.9.4" + resolved "https://registry.yarnpkg.com/@peculiar/asn1-schema/-/asn1-schema-2.9.4.tgz#99003d4bc87ec2ed2c4deb2843404496a912c3cf" + integrity sha512-GjzePcT9Iw8NzeOPf73iNS9xM+TBhd/FilAfP+RQGkTMQJTVWtytN3JHJACCjf/ABNau5S7mS3g+DcuxmRgYEg== dependencies: "@peculiar/utils" "^2.0.2" asn1js "^3.0.10" tslib "^2.8.1" -"@peculiar/asn1-x509-attr@^2.9.0": - version "2.9.0" - resolved "https://registry.yarnpkg.com/@peculiar/asn1-x509-attr/-/asn1-x509-attr-2.9.0.tgz#1db76666d745e76e56517c974c50947bd5da50d6" - integrity sha512-f+u+EyGjfPvPzvr0+rlh/TFEO7LWt84mEwQynCUYr4F6urf/8s6+ESJ23qfSn1aamkZR6AuBNaC62iEsGvp0+w== +"@peculiar/asn1-x509-attr@^2.9.4": + version "2.9.4" + resolved "https://registry.yarnpkg.com/@peculiar/asn1-x509-attr/-/asn1-x509-attr-2.9.4.tgz#c74094ffb97442c3fac7b965bd1345f9a0b59d48" + integrity sha512-ehQXbpQaQYycgu8OrvigwSPTFfVRcu0ECNYCWw+yzBp02Lw5paRqzzhUpfOgO2K38+WfFZuEz/0RPtam5g0OMg== dependencies: - "@peculiar/asn1-schema" "^2.9.0" - "@peculiar/asn1-x509" "^2.9.0" + "@peculiar/asn1-schema" "^2.9.4" + "@peculiar/asn1-x509" "^2.9.4" asn1js "^3.0.10" tslib "^2.8.1" -"@peculiar/asn1-x509@^2.6.0", "@peculiar/asn1-x509@^2.9.0": - version "2.9.0" - resolved "https://registry.yarnpkg.com/@peculiar/asn1-x509/-/asn1-x509-2.9.0.tgz#e7095d8f7db8a5e3a489fa46945b45cdffc555f8" - integrity sha512-b9Na83rhRFQBd5CuMmuEqokYhmyWUbG7mNZl/thGhBwLpCdiZ85TZ3WFhF7OVgOekC5uKhLk4C3HKtdiScCMdQ== +"@peculiar/asn1-x509@^2.6.0", "@peculiar/asn1-x509@^2.9.4": + version "2.9.4" + resolved "https://registry.yarnpkg.com/@peculiar/asn1-x509/-/asn1-x509-2.9.4.tgz#f997898c48ba6536bed640f788734d36477c21ad" + integrity sha512-CxhBo/RdEbMMob7T31ZdQjGuoyRFLVwrDzTn25bihzBasRg9kRm/0IxIPvhgQtcK/9dNcO1XQL2fuPugwELL0Q== dependencies: - "@peculiar/asn1-schema" "^2.9.0" + "@peculiar/asn1-schema" "^2.9.4" "@peculiar/utils" "^2.0.2" asn1js "^3.0.10" tslib "^2.8.1" @@ -2928,9 +2928,9 @@ integrity sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA== "@types/node@*": - version "26.2.0" - resolved "https://registry.yarnpkg.com/@types/node/-/node-26.2.0.tgz#5a4875a862fda8fdc57de8faa579bb81ecba1685" - integrity sha512-5IviulTZeRNp2vAJ514cc/HUlY5nZ9fCbq9DMyC52BrhFZACo3nI0R7qBxhQmo/d27NFe96ur/b7Wwxklda+kg== + version "26.4.0" + resolved "https://registry.yarnpkg.com/@types/node/-/node-26.4.0.tgz#4c4ca071c42241fe602741d02999f16b4e64c468" + integrity sha512-faiGnoIrLH/V8cibOMEAZ8pMw6oXqSukl29ra4mN8GdaB2ZewzeaLj+INpV5N+Z1eKWzY+IzaIZH2EIR6YZRNQ== dependencies: undici-types "~8.3.0" @@ -3175,9 +3175,9 @@ integrity sha512-0BQ3HkAHHlKLSp1qRvf3SUhGpGsDuhB/jgFw75guyqbxJqEaS0Cw/VFO8i2nHglJUzQCRtMMR/IBAKE3ETMC4g== "@ungap/structured-clone@^1.0.0": - version "1.3.3" - resolved "https://registry.yarnpkg.com/@ungap/structured-clone/-/structured-clone-1.3.3.tgz#094041e1a4cb1987f038335421281ac8be390bcc" - integrity sha512-60YRaenCQcVjYEKOcG824+DRGGIQ3VKErcBoAEDJZz5bKIs2ZG+X/H9Nk+Q6EVkwJk5QNApxbrc5QtBSwtrXAg== + version "1.4.0" + resolved "https://registry.yarnpkg.com/@ungap/structured-clone/-/structured-clone-1.4.0.tgz#5e2e1374c0a30b5a42e8b083523a225c6945f88a" + integrity sha512-1mEZtMKPM09vDmQt5y7YvmN2+DFTP7Tg0EWXdic8/C6VRnpb33e4ghisCIE3WZjsE2N8mf+QV1Zqh7ZFYLWInQ== "@webassemblyjs/ast@1.14.1", "@webassemblyjs/ast@^1.14.1": version "1.14.1" @@ -3395,24 +3395,24 @@ algoliasearch-helper@^3.26.0: "@algolia/events" "^4.0.1" algoliasearch@^5.37.0: - version "5.56.0" - resolved "https://registry.yarnpkg.com/algoliasearch/-/algoliasearch-5.56.0.tgz#042f1a39dfa951356206f43dece1c8d1ea1721bd" - integrity sha512-PrqppUmhT4ENdas2pH9caE7efUcxy6EcSFhWzosiVuQBzu2tQ5yLTI6jwomT/1cuBnivzGfxiJCqDNN9FRRh+Q== + version "5.57.0" + resolved "https://registry.yarnpkg.com/algoliasearch/-/algoliasearch-5.57.0.tgz#79b103088c1addccb707bafcd8623827dd62c0cf" + integrity sha512-HpND7MBGctOAkd1GoQoDZCGoCpqNTS5NG1LuhElFet3RdLJkwnyTYZXZhXwtpAQPrI36fqQ3eT6KQrdKDTKu3A== dependencies: - "@algolia/abtesting" "1.22.0" - "@algolia/client-abtesting" "5.56.0" - "@algolia/client-analytics" "5.56.0" - "@algolia/client-common" "5.56.0" - "@algolia/client-insights" "5.56.0" - "@algolia/client-personalization" "5.56.0" - "@algolia/client-query-suggestions" "5.56.0" - "@algolia/client-search" "5.56.0" - "@algolia/ingestion" "1.56.0" - "@algolia/monitoring" "1.56.0" - "@algolia/recommend" "5.56.0" - "@algolia/requester-browser-xhr" "5.56.0" - "@algolia/requester-fetch" "5.56.0" - "@algolia/requester-node-http" "5.56.0" + "@algolia/abtesting" "1.23.0" + "@algolia/client-abtesting" "5.57.0" + "@algolia/client-analytics" "5.57.0" + "@algolia/client-common" "5.57.0" + "@algolia/client-insights" "5.57.0" + "@algolia/client-personalization" "5.57.0" + "@algolia/client-query-suggestions" "5.57.0" + "@algolia/client-search" "5.57.0" + "@algolia/ingestion" "1.57.0" + "@algolia/monitoring" "1.57.0" + "@algolia/recommend" "5.57.0" + "@algolia/requester-browser-xhr" "5.57.0" + "@algolia/requester-fetch" "5.57.0" + "@algolia/requester-node-http" "5.57.0" ansi-align@^3.0.1: version "3.0.1" @@ -3564,9 +3564,9 @@ balanced-match@^1.0.0: integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== baseline-browser-mapping@^2.11.12: - version "2.11.14" - resolved "https://registry.yarnpkg.com/baseline-browser-mapping/-/baseline-browser-mapping-2.11.14.tgz#d51bb92285608b0e6356841a2eea76842a771d52" - integrity sha512-JyJ954WzuIR8/FFzX0o5krdSTrBAkcCSRfWSleRsIHSWV+cZe2FI1PKggVkFke1hBldRs+LRxUczzE9iPmgZww== + version "2.11.19" + resolved "https://registry.yarnpkg.com/baseline-browser-mapping/-/baseline-browser-mapping-2.11.19.tgz#4711abac48b88ccb56b5817e86f1b3a9a0764276" + integrity sha512-Grytf1xOxOEMTGRwx6rLGKkTabd4vMg3VrKdj/7joCmV0qgh4QwMMO6xh34YEXQqirAuUdgQGa5orJQQ+69RBw== batch@0.6.1: version "0.6.1" @@ -3773,9 +3773,9 @@ caniuse-api@^3.0.0: lodash.uniq "^4.5.0" caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001806, caniuse-lite@^1.0.30001809: - version "1.0.30001809" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001809.tgz#e6cf71f14ddfe008f114dd2a846923be3c03a07b" - integrity sha512-xxWVywk6a6Arlk+hymeycyn/VgqEfLDxupvhH/xiY5SJ/18kmi9o6MiO320DCUzypORHLtvh0I4i04tUhCNHNQ== + version "1.0.30001810" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001810.tgz#4970b477dea3278374de9bc43aa8f5d39fc3cda2" + integrity sha512-TITQPUkaz+aVk5GL6NhOdwk1aEaNTSDPsGFWrTuhKGtjTF70jL/Oht2W4c6rXUe5fu7Ie19VIahAXHIIiWWNeg== ccount@^2.0.0: version "2.0.1" @@ -3945,9 +3945,9 @@ color-name@~1.1.4: integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== colord@^2.9.3: - version "2.9.3" - resolved "https://registry.yarnpkg.com/colord/-/colord-2.9.3.tgz#4f8ce919de456f1d5c1c368c307fe20f3e59fb43" - integrity sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw== + version "2.10.0" + resolved "https://registry.yarnpkg.com/colord/-/colord-2.10.0.tgz#56c9050e6b06b4b6c62ddec366a48d65ef57e860" + integrity sha512-AidJptpBJmjTclAp9BkLwJi0T93fo5epJnbaZslpg6QVzpHjAiveF55mE9AcUJiGMqRHgMDY8soMsQtuNYMHfw== colorette@^2.0.10: version "2.0.20" @@ -4241,9 +4241,9 @@ css-what@^6.0.1, css-what@^6.1.0: integrity sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA== cssdb@^8.6.0: - version "8.9.0" - resolved "https://registry.yarnpkg.com/cssdb/-/cssdb-8.9.0.tgz#e24d44824895957a4a5c75ba72c910f94e7aed77" - integrity sha512-J8jOU/hLjaXcO1LldOLraJSQpfLXRKof0I7mtbRyOy2AAXgqst0x9rlgi2qXeD6d0ou3ZLqcPAMqYVbpCbrxEw== + version "8.10.0" + resolved "https://registry.yarnpkg.com/cssdb/-/cssdb-8.10.0.tgz#fdb9cc7af72c81839265811ad8ca4e0a4db919c1" + integrity sha512-+JWEEjjoqkPY7iGHps3SaCT2w67Zpaj9zHvhCJ2iPBavKHwgtOOD2YEbZSCU8VO2uVGpKdYjVz+j6bhkNSjZ0g== cssesc@^3.0.0: version "3.0.0" @@ -4373,9 +4373,9 @@ default-browser-id@^5.0.0: integrity sha512-x1VCxdX4t+8wVfd1so/9w+vQ4vx7lKd2Qp5tDRutErwmR85OgmfX7RlLRMWafRMY7hbEiXIbudNrjOAPa/hL8Q== default-browser@^5.2.1: - version "5.5.0" - resolved "https://registry.yarnpkg.com/default-browser/-/default-browser-5.5.0.tgz#2792e886f2422894545947cc80e1a444496c5976" - integrity sha512-H9LMLr5zwIbSxrmvikGuI/5KGhZ8E2zH3stkMgM5LpOWDutGM2JZaj460Udnf1a+946zc7YBgrqEWwbk7zHvGw== + version "5.5.1" + resolved "https://registry.yarnpkg.com/default-browser/-/default-browser-5.5.1.tgz#1790affc52680fbb11e17cab2752d69aa2a37d2c" + integrity sha512-m1pAzaJgZ/gssEqlOhJkPJp8Xly7QyW6xcrkUa2KKcDeDSEMP7X8xipU3snUcfisTQx0w1AGae+9UtJSfVnXGw== dependencies: bundle-name "^4.1.0" default-browser-id "^5.0.0" @@ -4568,9 +4568,9 @@ ee-first@1.1.1: integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== electron-to-chromium@^1.5.402: - version "1.5.406" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.406.tgz#c1d2ddac21d01e92f0ddd2951d37642501d4a7f1" - integrity sha512-hWH5ORBi3d0IipnMh7BN5GDTaAmrSSSWmznwt2zltdiRNEWoEQyTwF0FFSBxzHO7hLSRT6loQu3IQGV0wg/Tvg== + version "1.5.415" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.415.tgz#edd7356bfb4752a12c8293f8e38a00778b13bbb4" + integrity sha512-958V+Kbhtgz+SxXeEVKBjrlKRBIDAYvUJfwhjxMZ5S6ut9jAl7l9ZKBkBrvjyjZE36PabLUo2L8kEeV5O4vgJg== emoji-regex@^8.0.0: version "8.0.0" @@ -4656,9 +4656,9 @@ es-errors@^1.3.0: integrity sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw== es-module-lexer@^2.1.0: - version "2.3.1" - resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-2.3.1.tgz#5bf2df06999dbbe5f006a5f46a11fb9f5b7b391b" - integrity sha512-shc1dbU90Yl/xq1QrC7QRtfcwURZuVRfPhZbDoldJ1cn1gzDvBaBWlv0eFolj5+0znnPJz5TXLxsN77X/12KTA== + version "2.3.2" + resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-2.3.2.tgz#311fa4f40168c1975c505477c51b23234d41ad55" + integrity sha512-poHGpORABojJJucnV9KbOavETW8lBVnphkW77ER5/BQ5Fz7oXSoCNek7IH3vR5nRjdsEz926ibFYX8KtLQmdyw== es-object-atoms@^1.0.0, es-object-atoms@^1.1.1: version "1.1.2" @@ -4712,31 +4712,6 @@ escape-string-regexp@^5.0.0: resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz#4683126b500b61762f2dbebace1806e8be31b1c8" integrity sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw== -eslint-scope@5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" - integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== - dependencies: - esrecurse "^4.3.0" - estraverse "^4.1.1" - -esrecurse@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" - integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== - dependencies: - estraverse "^5.2.0" - -estraverse@^4.1.1: - version "4.3.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" - integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== - -estraverse@^5.2.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" - integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== - estree-util-attach-comments@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/estree-util-attach-comments/-/estree-util-attach-comments-3.0.0.tgz#344bde6a64c8a31d15231e5ee9e297566a691c2d" @@ -4760,9 +4735,9 @@ estree-util-is-identifier-name@^3.0.0: integrity sha512-hFtqIDZTIUZ9BXLb8y4pYGyk6+wekIivNVTcmvk8NoOh+VeRn5y6cEHzbURrWbfp1fIqdVipilzj+lfaadNZmg== estree-util-scope@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/estree-util-scope/-/estree-util-scope-1.0.0.tgz#9cbdfc77f5cb51e3d9ed4ad9c4adbff22d43e585" - integrity sha512-2CAASclonf+JFWBNJPndcOpA8EMJwa0Q8LUFJEKqXLW6+qBvbFZuF5gItbQOs/umBUkjviCSDCbBwU2cXbmrhQ== + version "1.0.1" + resolved "https://registry.yarnpkg.com/estree-util-scope/-/estree-util-scope-1.0.1.tgz#28e1e124b5d792f463f43ef3d1690236434b05ea" + integrity sha512-B0np3dcdxqILX5e9nEi5/Fr4K7gL4oYFVPV1zRa2e9wRCbQoZZNWOZFYyoInvXUPJXBXjss+QXlWLJChDEHDkA== dependencies: "@types/estree" "^1.0.0" devlop "^1.0.0" @@ -4917,9 +4892,9 @@ fast-json-stable-stringify@^2.0.0: integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== fast-uri@^3.0.1: - version "3.1.5" - resolved "https://registry.yarnpkg.com/fast-uri/-/fast-uri-3.1.5.tgz#610f37419a030270430cecd68d74e3d4d96725d0" - integrity sha512-gHwA1O9LDIcKunMKhObS/HimwtehO1nPUECKAu5TpKgaO19fcWEl4bliWe1jWxVFvIXztJjjQ4L8XQ1EU9f7Jw== + version "3.1.6" + resolved "https://registry.yarnpkg.com/fast-uri/-/fast-uri-3.1.6.tgz#bfdd308ef763f835fed059f3c6c925f708e33e3a" + integrity sha512-7Ical1vFEMr0onbVzEDIreM22I4khW+fzyQPwvAFWBp1iwdshSZRsL4jjRvPG9JP1uiqMHRto+YU6R2/CzDz5Q== fastq@^1.6.0: version "1.20.1" @@ -5860,9 +5835,9 @@ jiti@^1.20.0: integrity sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A== joi@^17.9.2: - version "17.13.4" - resolved "https://registry.yarnpkg.com/joi/-/joi-17.13.4.tgz#ad6153d97ce558eb3a3b593e0d43eab51df1c474" - integrity sha512-1RuuER6kmt8K8I3nIWvPZKi5RQCb568ZPyY4Pwjlua+yo+63ZTmIwxLZH0heBmiKN4uxjvCiarDrjaeH84xicQ== + version "17.13.6" + resolved "https://registry.yarnpkg.com/joi/-/joi-17.13.6.tgz#3fa166ca4b7feac442340c1522ea2f51cca3d425" + integrity sha512-ImNZaq/LSysofih+xIGYfR0WUXMA9GLUNB//YTCSrZptoRmVgaNAdJyi6K1kXi9pkLEoSkoI8I4UwtNiu/D7nw== dependencies: "@hapi/hoek" "^9.3.0" "@hapi/topo" "^5.1.0" @@ -5876,9 +5851,9 @@ joi@^17.9.2: integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== js-yaml@^4.1.0: - version "4.3.1" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.3.1.tgz#01216c001d67f48e2cd560d708c7af21090a3848" - integrity sha512-CY6crGq313MX8GkwvB7tzgp99vjQxY1++5y10/BKN/GUfHqWaOGQMNZkBvqSzsZKWk/ijwHlWzzkLulsGHhjWQ== + version "4.3.2" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.3.2.tgz#8e44fb14a2643c59726bb15787b5f1512cb3d3fb" + integrity sha512-SFNOvSJ+Dgf/9An904Yx+CgSlIPCkIpao4qo51lpee25TIRejdH3rhR4EZMGoNx3/TP3O+wzWuiTFl4sqbltzA== dependencies: argparse "^2.0.1" @@ -6850,15 +6825,15 @@ minimist@^1.2.0: resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== -minimizer-webpack-plugin@^5.6.1: - version "5.6.1" - resolved "https://registry.yarnpkg.com/minimizer-webpack-plugin/-/minimizer-webpack-plugin-5.6.1.tgz#289922a4c96c4ed1ddb76b8a00bd8074e89a2f7f" - integrity sha512-DoeAZz8Q1C1znwsUzej1fdoi4jCf7/+Em27ouLqfK/+3m8G+D7yDhUwrc3CNhjSzGUN1kn7Iv4sWmjflQHenpw== +minimizer-webpack-plugin@^5.7.0: + version "5.8.0" + resolved "https://registry.yarnpkg.com/minimizer-webpack-plugin/-/minimizer-webpack-plugin-5.8.0.tgz#744f0e28da888aa1708e2be32b4ddcf2eeb09e58" + integrity sha512-2cT9+goJfBhtMz+gJqejSf09ClgmYhPhccRb/fb0ztVbixt0BkO8mRuI26FoPPuUNkRk6iEDryWAIouc5W8eJA== dependencies: - "@jridgewell/trace-mapping" "^0.3.25" + "@jridgewell/trace-mapping" "^0.3.31" jest-worker "^27.4.5" - schema-utils "^4.3.0" - terser "^5.31.1" + schema-utils "^4.3.3" + terser "^5.51.0" mrmime@^2.0.0: version "2.0.1" @@ -6922,9 +6897,9 @@ node-emoji@^2.1.0: skin-tone "^2.0.0" node-releases@^2.0.53: - version "2.0.53" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.53.tgz#0fe5ad8a7935e075172f574e56f0c20f07fa41af" - integrity sha512-D9UOmYG3UH1V+ENW56t5QXBwJw1YEY18ruVeus89Rw+SyIgjPkCO84bRzO3uNIYosJbNwiabWVn48o3uJLjxFQ== + version "2.0.54" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.54.tgz#09af17d5647aa9f221ec5cf2becb95b68a981afe" + integrity sha512-YHs7BmmcsdAI5Ozuf8JZo6PT0mv2GIWC9vMfvUC3dp65M8hn7Ux8CPL+2oBI7juNuj9d0ndhTcznq2ODBps9cQ== normalize-path@^3.0.0, normalize-path@~3.0.0: version "3.0.0" @@ -8861,14 +8836,14 @@ supports-preserve-symlinks-flag@^1.0.0: integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== svg-parser@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/svg-parser/-/svg-parser-2.0.4.tgz#fdc2e29e13951736140b76cb122c8ee6630eb6b5" - integrity sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ== + version "2.1.0" + resolved "https://registry.yarnpkg.com/svg-parser/-/svg-parser-2.1.0.tgz#f808c50953207b230fea6200d866697af61617a4" + integrity sha512-bwLf38YmY+TDYHJw1Ex0Co8c4yeXuJAo8YnXGZrscxrvYoVVIvLeniEkV1Ks/54VteMnL4FtyN1+P+TZJdUPmQ== svgo@^3.0.2, svgo@^3.2.0: - version "3.3.4" - resolved "https://registry.yarnpkg.com/svgo/-/svgo-3.3.4.tgz#fd2aa10ff585b3bd2b83ce3602f5582bc0718bb5" - integrity sha512-GsNRis4e8jxn2Y9ENz/8lbJ93CstG8svtMnuRaHbiF2LTJ5tK0/q3t/URPq9Zc7zVWBJnNnJMIp6bevK7bSmNg== + version "3.3.5" + resolved "https://registry.yarnpkg.com/svgo/-/svgo-3.3.5.tgz#8a3d9557ab2f386eca7e24760385849554985a1c" + integrity sha512-8SQMzdrvWaD8deUmrnYB+ASyxBVgWUOilg+A75nE/76WdLpj6LopCwiAVvkzkcqy/9b7t2Mg7faFLjg0ZRcZ3w== dependencies: commander "^7.2.0" css-select "^5.1.0" @@ -8893,10 +8868,10 @@ terser-webpack-plugin@^5.3.9: schema-utils "^4.3.0" terser "^5.31.1" -terser@^5.10.0, terser@^5.15.1, terser@^5.31.1: - version "5.50.0" - resolved "https://registry.yarnpkg.com/terser/-/terser-5.50.0.tgz#4e560a46704f9172f96ba31c3bd6dc108ad2cead" - integrity sha512-CN9BVxWhgS/hRxtUMjtC2uRWSTcSfQFHMDWma6sKKfIivCD91sM+FOPfvwoaRMqCSrUpe1nv3jDamd9eEQ4y+w== +terser@^5.10.0, terser@^5.15.1, terser@^5.31.1, terser@^5.51.0: + version "5.51.2" + resolved "https://registry.yarnpkg.com/terser/-/terser-5.51.2.tgz#555912425a7f2ff7737425c3718fa76c7069f6ef" + integrity sha512-bWnjSNscmuI+GJze6ZupnHP8G/cTcsJF+bXCeQknk2SHQsgbNJnLrqiH9jZ2W4STPVXH2mDKKRX3iwPhc9Cn/Q== dependencies: "@jridgewell/source-map" "^0.3.3" acorn "^8.15.0" @@ -9206,9 +9181,9 @@ utils-merge@1.0.1: integrity sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA== uuid@>=11.1.1, uuid@^8.3.2: - version "14.0.1" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-14.0.1.tgz#8a5975b3e038902bfd169a10b5202f5ec0cf3faf" - integrity sha512-6ZxzVpzDXDa3bJWaHilVayA+BH/1zmxCJoVgvmqJnid/gPoKHxUrS/aC/T6LGQtNHT+XHG9fXPJB4d+IrU30Ew== + version "14.0.2" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-14.0.2.tgz#d5ae03e4db0881c87271f8b0b9bd7312d02c799a" + integrity sha512-xZe/16rV4aa+HGSOCiY2YeLT1OybRLrrkL/Rqaq7p7GMVXjFh+6wN4oMYgjFmnSnhY8t6Xpdl2l9qmnHYuMHwQ== value-equal@^1.0.1: version "1.0.1" @@ -9351,9 +9326,9 @@ webpack-sources@^3.5.1: integrity sha512-jyuiGJdtvY434z5bUZrjz67v76/ePNvFZTp9Mdz29IlH4+GPsgyGjiv0fKI+M7BdkU6ADjulUcKAd3tUK3WlEw== webpack@^5.88.1, webpack@^5.95.0: - version "5.109.2" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.109.2.tgz#b58dc289561c3282db35c210a99379a836a4c28d" - integrity sha512-U9/cvLzxObKNEZ9+TtdqrHM5/9z3lgl2c+c4BzbqGxFQvQvBAq87yql5A8pQ+rrMbS496MZJeF5enVBndIy2hw== + version "5.110.0" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.110.0.tgz#504e6195f3a729ed3904b24961e43f0f51e1b79b" + integrity sha512-vzGjrgzXNYRs0MBVkdF288cJt0RIJMxlZy+3pLFo6KIeZI57sBGCgjBp+yNQWf5g9c1us34rjivM1sfNLijQYg== dependencies: "@types/estree" "^1.0.8" "@types/json-schema" "^7.0.15" @@ -9365,11 +9340,10 @@ webpack@^5.88.1, webpack@^5.95.0: chrome-trace-event "^1.0.2" enhanced-resolve "^5.24.4" es-module-lexer "^2.1.0" - eslint-scope "5.1.1" events "^3.2.0" graceful-fs "^4.2.11" mime-db "^1.54.0" - minimizer-webpack-plugin "^5.6.1" + minimizer-webpack-plugin "^5.7.0" neo-async "^2.6.2" schema-utils "^4.3.3" tapable "^2.3.0" From 021cb5ddf34fe51d373c99f1617951de144e5a1b Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 27 Aug 2026 18:14:54 +0200 Subject: [PATCH 122/134] chore(deps): refresh pip-compile outputs (#1069) Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- containers/sidecar-requirements.txt | 903 +++++++++++++++------------- 1 file changed, 484 insertions(+), 419 deletions(-) diff --git a/containers/sidecar-requirements.txt b/containers/sidecar-requirements.txt index 47ac62c..fcad905 100644 --- a/containers/sidecar-requirements.txt +++ b/containers/sidecar-requirements.txt @@ -2,7 +2,7 @@ # This file is autogenerated by pip-compile with Python 3.13 # by the following command: # -# pip-compile --allow-unsafe --generate-hashes --output-file=sidecar-requirements.txt --strip-extras sidecar-requirements.in +# pip-compile --allow-unsafe --generate-hashes --no-index --output-file=sidecar-requirements.txt --strip-extras sidecar-requirements.in # azure-core==1.41.0 \ --hash=sha256:522b4011e8180b1a3dcd2024396a4e7fe9ac37fb8597db47163d230b5efe892d \ @@ -22,13 +22,13 @@ barman==3.19.1 \ --hash=sha256:0a6a9e1babf97687732d8b2a3eb79ea95d55246a5257b9433865cb6e755221c0 \ --hash=sha256:2f71c4a1f1ba53f694cbdf838bb9906d8ba02b97d1fd3041196e8999bec7a1ee # via -r sidecar-requirements.in -boto3==1.43.56 \ - --hash=sha256:57c90df9fb026f2e6ae22530861198130203733c5c9ec4e5cca3a4037f5a8db4 \ - --hash=sha256:feb699d4ab241ef5c1b80bb58277be2aaad365cd4b672d7817e0bc59ee45131b +boto3==1.43.81 \ + --hash=sha256:62ecf695088e06f37500d6cc49a240dc1331379bd5ae992d185fef212038ca29 \ + --hash=sha256:6e24f98974400a3845223bba77f457be92517f78e2cffadfa273e18ea1fe1944 # via barman -botocore==1.43.56 \ - --hash=sha256:6c01f85f0ff9863076f4c761e74ee3aa96c5ccc1ad09fc1efd62ef8f2d22bf57 \ - --hash=sha256:aafc741f1b10f6fd63253eaf6ea029680c1ff436d87e1b8969d62aefa0c76976 +botocore==1.43.81 \ + --hash=sha256:49eb02dac7eb4418ae589dc0da816d47bf40be1a7ccfdbed5f772c7a2efcf64d \ + --hash=sha256:a5d343674b63a619b7f1f3caef4eedb403500c7a8b95a9e7d8cac98b95501adb # via # boto3 # s3transfer @@ -36,413 +36,478 @@ certifi==2026.7.22 \ --hash=sha256:62f22742b58a1a33014a2b6b706588a8d7e2a88ae7bd1a6ebe8c992928483775 \ --hash=sha256:741e2c3b351ddf169a738da9f2c048608ff7f2c5cc02f1ebc6b118bb090d5d55 # via requests -cffi==2.1.0 \ - --hash=sha256:02cb7ff33ded4f1532476731f89ede53e2e488a8e6205515a82144246ffa7dcc \ - --hash=sha256:03e9810d18c646077e501f661b682fbf5dee4676048527ca3cffe66faa9960dd \ - --hash=sha256:0520e1f4c35f44e209cbbb421b67eec42e6a157f59444dfb6058874ff3610e5d \ - --hash=sha256:0582a58f3051372229ca8e7f5f589f9e5632678208d8636fea3676711fdf7fe5 \ - --hash=sha256:0611e7ebf90573a535ebdc33ae9da222d037853983e13359f580fab781ca017f \ - --hash=sha256:0a42c688d19fca6e095a53c6a6e2295a5b050a8b289f109adab02a9e61a25de6 \ - --hash=sha256:0a96b74cda968eebbad56d973efe5098974f0a9fb323865bf99ea1fd24e3e64c \ - --hash=sha256:10537b1df4967ca26d21e5072d7d54188354483b91dc75058968d3f0cf13fbda \ - --hash=sha256:11b3fb55f4f8ad92274ed26705f65d8f91457de71f5380061eb6d125a768fecd \ - --hash=sha256:15faec4adfff450819f3aee0e2e02c812de6edb88203aa58807955db2003472a \ - --hash=sha256:164bff1657b2a74f0b6d54e11c9b375bc97b931f2ca9c43fcf875838da1570dd \ - --hash=sha256:1854b724d00f6654c742097d5387569021be12d3a0f770eae1df8f8acfcc6acd \ - --hash=sha256:19c54ac121cad98450b4896fa9a43ee0180d57bc4bc911a33db6cab1efab6cd3 \ - --hash=sha256:1b96bfe2c4bd825681b7d311ad6d9b7280a091f43e8f63da5729638083cd3bfb \ - --hash=sha256:1e9f50d192a3e525b15a75ab5114e442d83d657b7ec29182a991bc9a88fd3a66 \ - --hash=sha256:1ff3456eab0d889592d1936d6125bbfbc7ae4d3354a700f8bd80450a66445d4d \ - --hash=sha256:2282cd5e38aa8accd03e99d1256af8411c84cdbee6a89d841b563fdbd1f3e50f \ - --hash=sha256:276f20fffd7b396e12516ba8edf9509210ac248cbbc5acbc39cd512f9f59ebe6 \ - --hash=sha256:2b71d409cccee78310ab5dec549aed052aaea483346e282c7b02362596e01bb0 \ - --hash=sha256:2e9dabb9abcb7ad15938c7196ad5c1718a4e6d33cc79b4c0209bdb64c4a54a5c \ - --hash=sha256:30b65779d598c370374fefabf138d456fd6f3216bfa7bedfab1ba82025b0cd93 \ - --hash=sha256:33eb1ad83ebe8f313e0df035c406227d55a79456704a863fad9842136af5ad7d \ - --hash=sha256:35aaea0c7ee0e58a5cd8c2fd1a48fdf7ece0d2699b7ecdda08194e9ce5dd9b3d \ - --hash=sha256:3681e031db29958a7502f5c0c9d6bbc4c36cb20f7b104086fa642d1799631ff8 \ - --hash=sha256:379de10ce1ba048b1448599d1b37b24caee16309d1ac98d3982fc997f768700b \ - --hash=sha256:37f525a7e7e50c017fdebe58b787be310ad59357ae43a053943a6e1a6c526001 \ - --hash=sha256:3b926723c13eba9f81d2ef3820d63aeceec3b2d4639906047bf675cb8a7a500d \ - --hash=sha256:3d7f118b5adbfdfead90c25822690b02bc8074fba949bb7858bec4ebd55adb43 \ - --hash=sha256:46b1c8db8f6122420f32d02fffb924c2fe9bc772d228c7c711748fff56aabb2b \ - --hash=sha256:47ff3a8bfd8cb9da1af7524b965127095055654c177fcfc7578debcb015eecd0 \ - --hash=sha256:4d433a51f1870e43a13b6732f92aaf540ff77c2015097c78556f75a2d6c030e0 \ - --hash=sha256:4f26194e3d95e06501b942642855aed4f953d55e95d7d01b7c4483db3ecff458 \ - --hash=sha256:510aeeeac94811b138077451da1fb18b308a5feab47dd2b603af55804155e1c8 \ - --hash=sha256:5972433ad71a9e46516584ef60a0fda12d9dc459938d1539c3ddecf9bdc1368d \ - --hash=sha256:5ecbd0499275d57506d397eebe1981cee87b47fcd9ef5c22cab7ed7644a39a94 \ - --hash=sha256:6274dcb2d15cef48daa73ed1be5a40d501d74dccd0cd6db364776d12cb6ba022 \ - --hash=sha256:63960549e4f8dc41e31accb97b975abaecfc44c03e396c093a6436763c2ea7db \ - --hash=sha256:64c753a0f87a256020004f37a1c8c02c480e725f910f0b2a0f3f07debd1b2479 \ - --hash=sha256:6af371f3767faeffc6ac1ef57cdfd25844403e9d3f476c5537caee499de96376 \ - --hash=sha256:6ca4919c6e4f89aa99c42510b42cf54596892c00b3f9077f6bdd1505e24b9c8d \ - --hash=sha256:6d194185eabd279f1c05ebe3504265ddfc5ad2b58d0714f7db9f01da592e9eb6 \ - --hash=sha256:702c436735fbe99d59ada02a1f65cfc0d31c0ee8b7290912f8fbc5cd1e4b16c3 \ - --hash=sha256:716ff8ec22f20b4d988b12884086bcef0fc99737043e503f7a3935a6be99b1ea \ - --hash=sha256:762f99479dcb369f60ab9017ad4ab97a36a1dd7c1ee5a3b15db0f4b8659120cd \ - --hash=sha256:7762faa47e8ff7eb80bd261d9a7d8eea2d8baa69de5e95b70c1f338bbe712f02 \ - --hash=sha256:78474632761faa0fb96f30b1c928c84ebcf68713cbb80d15bab09dfe61640fde \ - --hash=sha256:799416bae98336e400981ff6e532d67d5c709cfb30afb79865a1315f94b0e224 \ - --hash=sha256:7d034dcffa09e9a46c93fa3a3be402096cb5354ac6e41ab8e5cc9cd8b642ad76 \ - --hash=sha256:7d28dff1db6764108bc30788d85d61c876beff416d9a49cb9dd7c5a9f34f5804 \ - --hash=sha256:7d3538f9c0e50670f4deb93dbb696576e60590369cae2faf7de681e597a8a1f1 \ - --hash=sha256:7d5980a3433d4b71a5e120f9dd551403d7824e31e2e67124fe2769c404c06913 \ - --hash=sha256:7ea6b3e2c4250ff1de21c630fe72d0f63eb95c2c32ffbf64a358cf4a8836d714 \ - --hash=sha256:86cf8755a791f72c85dc287128cc62d4f24d392e3f1e15837245623f4a33cccc \ - --hash=sha256:88023dfe18799507b73f1dbb0d14326a17465de1bc9c9c7655c22845e9ddc3a2 \ - --hash=sha256:89095c1968b4ba8285840e131bf2891b09ae137fe2146905acae0354fbce1b5e \ - --hash=sha256:8d35c139744adb3e727cd51b1a18324bbe44b8bd41bf8322bca4d41289f48eda \ - --hash=sha256:8e74a6135550c4748af665b1b1118b6aab33b1fc6a16f9aff630af107c3b4512 \ - --hash=sha256:8f9ec95b8a043d3dfbc74d9abc6f7baf524dd27a8dc160b0a32ff9cdab650c28 \ - --hash=sha256:90bec57cf82089383bd06a605b3eb8daebf7e5a668520beaf6e327a83a947699 \ - --hash=sha256:95f2954c2c9473d892eca6e0409f3568b37ab62a8eedb122461f73cc273476e3 \ - --hash=sha256:961be50688f7fba2fa65f63712d3b9b341a22311f5253460ce933f52f0de1c8c \ - --hash=sha256:98fff996e983a36d3aa2eca83af40c5821202e7e6f32d13ae94e3d2286f10cfe \ - --hash=sha256:9b8f0f26ca4e7513c534d351eca551947d053fac438f2a04ac96d882909b0d3a \ - --hash=sha256:9d72af0cf10a76a600a9690078fe31c63b9588c8e86bf9fd353f713c84b5db0f \ - --hash=sha256:9d8272c0e483b024e1b9ad029821470ed8ec65631dbd90217469da0e7cd89f1c \ - --hash=sha256:a016194dbe13d14ee9556e734b772d8d67b947092b268d757fd4290e3ba2dfc2 \ - --hash=sha256:a5781494d4d400a3f47f8f1da94b324f6e6b440a53387774002890a2a2f4b50f \ - --hash=sha256:a95b05f9baf29b91171b3a8bd2020b028835243e7b0ff6bb23e2a3c228518b1b \ - --hash=sha256:aa7a1b53a2a4452ada2d1b5dade9960b2522f1e61293a811a077439e39029565 \ - --hash=sha256:ac0f1a2d0cfa7eea3f2aaf006ab6e70e8feeb16b75d65b7e5939982ca2f11056 \ - --hash=sha256:af5e2915d41fe6c961694d7bfdc8562942638200f3ce2765dfb8b745cf997629 \ - --hash=sha256:b6422532152adf4e59b110cb2808cee7a033800952f5c036b4af047ee43199e7 \ - --hash=sha256:b65f590ef2a44640f9a05dbb548a429b4ade77913ce683ac8b1480777658a6c0 \ - --hash=sha256:ba00f661f8ba35d075c937174e27c2c421cec3942fd2e0ea3e66996757c0fdd9 \ - --hash=sha256:bccbbb5ee76a61f9d99b5bf3846a51d7fca4b6a732fe46f89295610edaf41853 \ - --hash=sha256:bf01d8c84cbea96b944c73b22182e6c7c432b3475632b8111dbfdc95ddad6e13 \ - --hash=sha256:bf5c6cf48238b0eb4c086978c492ad1cbc22373fc5b2d7353b3a598ce6db887a \ - --hash=sha256:c16914df9fb7f500e440e6875fa23ff5e0b31db01fa9c06af98d59a91f0dc2e4 \ - --hash=sha256:c351efb95e832a853a29361675f33a7ce53de1a109cd73fd47af0712213aa4ce \ - --hash=sha256:c4165821e131d6d4ca444347c2b694e2311bcfa3fe5a861cc72968f28867beac \ - --hash=sha256:c5f5df567f6eb216de69be06ce55c8b714090fae02b18a3b40da8163b8c5fa9c \ - --hash=sha256:c941bb58d5a6e1c3892d86e42927ed6c180302f07e6d395d08c416e594b98b46 \ - --hash=sha256:c97f080ea627e2863524c5af3836e2270b5f5dfff1f104392b959f8df0c5d384 \ - --hash=sha256:cb96698e3c7413d906ce83f8ffd245ec1bd94707541f299d0ce4d6b0193e982b \ - --hash=sha256:cbb7640ce37159548d2147b5b8c241f962143d4c71231431820783f4dc78f210 \ - --hash=sha256:cdf2448aab5f661c9315308ec8b93f4e8a1a67a3c733f8631067a2b67d5913dc \ - --hash=sha256:d2117334c3af3bdcb9a88522b844a2bdb5efdc4f71c6c822df55486ae1c3347a \ - --hash=sha256:d53d10f7da99ae46f7373b9150393e9c5eab9b224909982b43832668de4779f5 \ - --hash=sha256:d9fafc5aa2e2a39aaf7f8cc0c1f044a9b07fca12e558dca53a3cc5c654ad67a7 \ - --hash=sha256:db3eb7d46527159a878ec3460e9d40615bc25ba337d477db681aea6e4f05c5d2 \ - --hash=sha256:dbf7c7a88e2bac086f06d14577332760bdeecc42bdec8ac4077f6260557d9326 \ - --hash=sha256:df2b82571a1b30f58a87bf4e5a9e78d2b1eff6c6ce8fd3aa3757221f93f0863f \ - --hash=sha256:df92f2aba50eb4d96718b68ef76f2e57a57b54f2fa62333496d16c6d585a85ca \ - --hash=sha256:eb4e8997a49aa2c08a3e43c9045d224448b8941d88e7ac163c7d383e560cbf98 \ - --hash=sha256:efc1cdd798b1aaf39b4610bba7aad28c9bea9b910f25c784ccf9ec1fa719d1f9 \ - --hash=sha256:f146d154428a2523f9cc7936c02353c2459b8f6cf07d3cd1ee1c0a611109c5d5 \ - --hash=sha256:f5bce581e6b8c235e566a14768a943b172ada3ed73537bb0c0be1edee312d4e7 \ - --hash=sha256:f9912624a0c0b834b7520d7769b3644453aabc0a7e1c839da7359f050750e9bc \ - --hash=sha256:fb62edb5bb52cca65fab91a63afa7561607120d26090a7e8fda6fb9f064726da \ - --hash=sha256:ff067a8d8d880e7809e4ac88eb009bb848870115317b306666502ccad30b147f +cffi==2.1.1 \ + --hash=sha256:046bfc24911b37851ee1b51aab8bffe713d89c68c6a057b09484ce9fd5f69b4e \ + --hash=sha256:06c72bb76605a4b0cd0aad6930b69d4baf7dd5d806cfc409b824191099700e66 \ + --hash=sha256:0beceaabe56af686895136a2de78db54ecd8e4046b236b8fd6d6cb61389e9bf2 \ + --hash=sha256:154852545011f779917b11c78db2358d095da62a9a172b78ad0a583ee5adc0d0 \ + --hash=sha256:194cffa889098ced9976c3fc6340305e43f6303657d298da55366907c05c22d6 \ + --hash=sha256:19ee6127ee34de7d83ce3d371ebc5ed91addbdcc39f9ab15ce4eb35a4e534971 \ + --hash=sha256:1a18a57b58cfb21fc28d72e876acf10eaed67a1ed96226f92af4df681d571c4c \ + --hash=sha256:1aa5645c30469b09530c4ebca77ebf8f17618293c58f8549cb1a543a50236e7d \ + --hash=sha256:1dea0e4d7d4f11f619fe8c1d76caf49e24405b4b5743c0e3be16a500ecd930c9 \ + --hash=sha256:208f941bb9d18e768138677f0a6d2ce01f590df56043dda1df1535ac57c88517 \ + --hash=sha256:210019b6c7cf07f081b4c54635c8cf744377001350e29cc0f81c4377b4797735 \ + --hash=sha256:246fa40ce8645a614ff682e0b70f37134e460eaf93a775e0cbe3cca585a67a80 \ + --hash=sha256:25792eac27877609e7bb06d42ff88278a6624fff2ba9bbb523c09616b117e80f \ + --hash=sha256:27350daa11d4f10c540e6e89dada4c54feb7256ad03e9a4dc075ebad7ba360d1 \ + --hash=sha256:28907ab9bfb6aa13184cfc17c6b8e1023c5ab6fd7076d8c20a35e59fe04f8f29 \ + --hash=sha256:2ae64be792b8966f2c69538199728b290e34726562896df1e5dc8ffd8d8188e8 \ + --hash=sha256:31348097ff5bbe827ccc41795d4dd099d9f0625e7def00ee653c137a490c2a6c \ + --hash=sha256:3143d81e29e1e20a9ce10901ec369012947876596f75a222235965f2b7ae832e \ + --hash=sha256:3222ba5d678f80a030e6afbcc33dc1ae5cb45facabb61cee2c7016b8432fde48 \ + --hash=sha256:3311ed60d36f83378794e1009ac6258bafbf81f7888b4caa7b35a521e3f95813 \ + --hash=sha256:334644fbac4eff73d985a17a91226df55d0f394160c4cfb880e084c8f7161cac \ + --hash=sha256:34e261f78cb6ceaaa36f42f2613f4380d94d9c759a9c73c769ee6e0247364632 \ + --hash=sha256:363e05fa78e15116c3c32c210ee36884fd6b9afa6d440e47112c3bd511d64cb6 \ + --hash=sha256:398aff33cee2767e3e781d2554c54bd0dff386bb437581e0d8011fde1a942ec1 \ + --hash=sha256:3d22a20b1fb1632cc72c22f95f7b0d2961c3e1c235f245ba4c606c4771035659 \ + --hash=sha256:42a494cee34437f05546455144f2b5d9ac09b1face62bcfce597d2e521066688 \ + --hash=sha256:42e2f76b9455f5a9a844f770bf3e200ed3da0e15f5df3db9c31fe80b04b3d004 \ + --hash=sha256:42f6930c31dc7f50732c9ae793c2786c7b6b044195967bbdde40bb9be81c4cc0 \ + --hash=sha256:456a61fa52d579ebf9df2e9552ead5129855dbaff6c1e5a9b1bc408809bdc062 \ + --hash=sha256:471cee653ae88de62096552e6d24ccb4a5adb8c8c9f10b5054d0122c15bf2779 \ + --hash=sha256:49cbc70e6542d4ccccb936558d1064a8012541e78f821f955cff24e357776c94 \ + --hash=sha256:4a7c934f7360e8cd64fe9efadcbd10c7c6364f531e432b9a4bf5ccbc9e0e8b50 \ + --hash=sha256:4be96343e422f2dfcd12ab5c9f5aebe03f82f737c6bffeca6830b3875cb44aab \ + --hash=sha256:4f42141fc14250de6dde5ee7ea4432be017252d91f19c5ad043c084cea629cac \ + --hash=sha256:507a24c282e0f42f8ed737cf048572cbf580468da5555764a8331735e9c736b6 \ + --hash=sha256:51b31d1c98274844cfd7838ce00bfc27c7423a4dc00fc0772fc3331c2cc90676 \ + --hash=sha256:58acb8ab8e295e6c5ea12f888cbb13cf21511ef2a3303a23f4325c29d17fe5c1 \ + --hash=sha256:5a59cc1c4442bc3d5c703bf720b51138d0bfc173618807c9ee2490a7541dd3d9 \ + --hash=sha256:5bb4e7ea95dcd6a014a6fef62e62467d67d8e582326443f3d68e71d6320a9fcf \ + --hash=sha256:5c58fe613dc5e5336357eff555824a314d8e43282600435c8d1cb6a7a2fedd13 \ + --hash=sha256:5e7cecbaadb83884793e05828cee59b210b24583b9c7425d0ba6a754fe22eb4e \ + --hash=sha256:616f097f2fe415bc92a247f02e11f634e1f9e9a83d327e3c915c15089c87869e \ + --hash=sha256:63bbfd5ded17c4840ac07cd8f1c21ba9d9708141f840b324f422f41b207e3973 \ + --hash=sha256:64faea20f4e2613363a1a9b9c7dd73058f3ecd00133a511e72ad7c511658f527 \ + --hash=sha256:661c298b4821edebead0c91edd2b00374d67ad7c5a1f7a91d4442633b79d6a72 \ + --hash=sha256:68e62fe11f30d5ca8289242866f0a5291402d8529ca2178ab8afc5c9694ae890 \ + --hash=sha256:6a8dddef476fab96d066d578fc88526767b836ab5ab21754e1d5bf3879c31c7c \ + --hash=sha256:6e192623c49c94421616a5778fba35cf0d5a8d000650c1967ef4448ee5cdd990 \ + --hash=sha256:7225e4514edb64eb6740324353e0da0711954fd8d7da4576755b1c6e09b697cd \ + --hash=sha256:75f80557d1389eddbd0de2681f6a390a0c5338c31ddaa821381c203fc3fd50d9 \ + --hash=sha256:770de9db11e84213beec501cfcaa013b019820ca881e03344dea5844f7876d94 \ + --hash=sha256:7750c6449dff7864bb9bb27ddfb0267756189201a3afc911d82b3caacd70dfc3 \ + --hash=sha256:7bde5e4cc5c10140859842b9d383af292b22639a4dffb725314baf45968cef80 \ + --hash=sha256:7ce713ace7c0e4520535b42b77eaa742c16dab813978064913e5a3cf82973b41 \ + --hash=sha256:7da0c5eff80f0197f3b3d1232ec5a682a9325f4ae9016a78f5f5ca35f9ced1f5 \ + --hash=sha256:7dbb61fe3a7699468030f71bbe5f8a0e326a151daa91beb11a6fc1f980c55e1c \ + --hash=sha256:811bd1e21d32de12efca32393a0ab3f5133b54fce9bd44b8bd77ab07da14bf6a \ + --hash=sha256:8ef53b2de9bcb9197d31854256575d59dbac0cba72ac627bb291ef5eceb74be4 \ + --hash=sha256:937c0052c05a31ca1daf18de3158eed4dbfcb9cc107adbea227728d647be701e \ + --hash=sha256:9d2055050ea716bd38b7f7f1579c275386646b4894c155a3e2f3cd62ed41b7c6 \ + --hash=sha256:9f8d177621de5cb38ee3e731eda45d421db093ec0739f46a5594babda7987a98 \ + --hash=sha256:a2d7755bef5a12ed488f4ef1f1b69ee9191d7396083b755a5d2295f6edb4768b \ + --hash=sha256:a48d62ab9d6f4f98c983223a547af44be6ca3691074c31cecced6facd3ba2dc1 \ + --hash=sha256:a4f00aa42f75d6e4595e8866e748cc1705adc0cddfeb2ca86d0d03993d63ba03 \ + --hash=sha256:a6e721d4b0e45d5b65e87534470e67b18dcd092c83f68fba09f152b9cbc061af \ + --hash=sha256:a730a083190634c65cca36ba5f489531576ebd79bcd5c8e172130f6453127231 \ + --hash=sha256:a931079504ecc49efed7744c476a5c343a92fabf66dec2db95edb1b2fdc770e2 \ + --hash=sha256:aa9511c62d14da7aacc9b4bf51f3f697a621e83b2d6919008243c3aad168eea3 \ + --hash=sha256:ab36d55f9ed2d067327667c2fea18dda018eb628dd6347aa01dda6cf1f5d3836 \ + --hash=sha256:ad2c86c495b899d862ea0f4b42891b8713a3bd45dd4105c7fd51c2a72f39f3a5 \ + --hash=sha256:aeae0e330c9f6acd681f647d46cefd30c29f93e3392882e792e82080c9691399 \ + --hash=sha256:b0431303acaea1089ad4b3e9ce4e6518193def1118d4073ca848635ee4ea2e96 \ + --hash=sha256:b5bdfd1c873d4e093aabc0ca84c4ca6dbc4f752afb5c86f146d9742580c9da2e \ + --hash=sha256:baed1e86cc735622097354b9d1281406caf42ff42a886d29faa8e8d1630333be \ + --hash=sha256:c1453022f490d2459a11819d83ad1d586e9ff65a12ac3e705ffebd46d3685dcf \ + --hash=sha256:c26608d2222fb1e94487e4a387d85f13eb55d5ed725cb25a0c589ac4ee60e7bc \ + --hash=sha256:c7659f22557c5a0bc4855cd635f55edec690cc008a40768527762cb9fb263455 \ + --hash=sha256:c8c69575568085ba0b1b10c0249d779a214aea6f6522e949a0fc9fb0fcb449d0 \ + --hash=sha256:c8d2c9fd1f2d16f780d15127abb050d13d1a76c03a4bd87d7e4980e45e511e12 \ + --hash=sha256:ca82be1a1d406ecfe1d25dc16cb33488e5a16bf4438c9fb590484ea29d92478b \ + --hash=sha256:cc572dace3f60ef98d7b12ff411d20f5362feb31a0439eab0085bbfd349982d7 \ + --hash=sha256:d18e5ac0f2f03f4f518d3e23db0f0cad7faa1da8620e9c09461d443bbf6e6692 \ + --hash=sha256:d28630f5854ab07ab1fd4aba756de52326c82e6be15d414b12793f1975048b54 \ + --hash=sha256:d9c275eaacd24aa73f94ffd6de08fc3f932424d8b6c376f4bed7cde376fe7bc3 \ + --hash=sha256:da0e573f9f97159390c89d9f1a9e41908b66d408cc5b58d08cf3847d844c531b \ + --hash=sha256:dd31f52ea1086513bb9df30f8fcee9b8918323ae067a3d5b78bc826a000712be \ + --hash=sha256:dddad92b554513a31f272570678ba307fb9f618f05e3d4a5eacafff9eae03e1d \ + --hash=sha256:df423d40ee8654634421812bc3b196da3f9bd7d32929da813f8394c4348a5358 \ + --hash=sha256:df913725b79db7bcf03448f36b7bf8815363417d5b58deecf9305e3e30f0f21a \ + --hash=sha256:e0bcb7e0f677f543555d2adff3bf19c05f66cdb4796e5ff602442ab2fe3c4ef7 \ + --hash=sha256:e2d65b31f36619cda3999b78b2aa9632e76b78448e7a56fc4240824200e7c4fc \ + --hash=sha256:e6e8cff14d6fb0be70a09c0bdc58096f501952d04624ebf867e0e56da2df8960 \ + --hash=sha256:f16c709686a78c727bbbf059f92b0bf41c6fc60deec706d2dc19f529175a6125 \ + --hash=sha256:f24fb43132a4c6b4cb4eb029492919b2db645be6808d738f244fd146c03c32cb \ + --hash=sha256:f53e442b08449d42821fa4a4fba000095af9f62742a500f978a9f557ec44339a \ + --hash=sha256:f5cfbc5fe74540d335175b656c725d74d90e3730c626d92575eea35029d9afaa \ + --hash=sha256:f81b3b8f3d4e343550fa4baa0e479bba9f2d29ce9c2e9b51d1ce1718d7442fcf \ + --hash=sha256:f8ec5e643a9a937f64e1999eb9f75d072263751912dc5cd06d3c85f8f44be7c3 \ + --hash=sha256:fb92203a88b3d3053034db775110081c49d28be6551923805e039924093761e4 \ + --hash=sha256:fcd22650c908d7b7da162bbfaab594a1227a15d1643a98c68b122ac642fa2264 # via cryptography -charset-normalizer==3.4.9 \ - --hash=sha256:0327fcd59a935777d83410750c50600ee9571af2846f71ce40f25b13da1ef380 \ - --hash=sha256:03d07803992c6c7bbc976327f34b18b6160327fc81cb82c9d504720ac0be3b62 \ - --hash=sha256:04ce310cb89c15df659582aee80a0603788732a5e017d5bd5c81158106ce249c \ - --hash=sha256:0d861473f743244d349b50f850d10eb87aeb22bbdcc8e64f79273c94af5a8226 \ - --hash=sha256:0e94703ec9684807f20cfb5eed95c70f67f2a8f21ad620146d7b5a13677b93e5 \ - --hash=sha256:0fa1aec2d32bcc03c8fa0f6f1712caad1adc38509f31142112e5c9daf5b9c833 \ - --hash=sha256:16b65ea0f2465b6fb52aa22de5eca612aa964ddfec00a912e26f4656cbef890b \ - --hash=sha256:16d10d789dd9bcca1173c95af82c58433122564b7bc39385124be735a35cbe99 \ - --hash=sha256:19ac87f93086ce37b86e098888555c4b4bc48102279bae3350098c0ed664b501 \ - --hash=sha256:1d22856ffbe153a602df38e4a5464f0b748a54002e0d69ac6d2ad0a197cc99ec \ - --hash=sha256:21e764fd1e70b6a3e205a0e46f3051701f98a8cb3fad66eeb80e48bb502f8698 \ - --hash=sha256:231ddcbb35e2ff8973e1365db41fe0572662893b99a05deb183b68ad4c0c8bd4 \ - --hash=sha256:253a4a220747e8b5faf57ec320c4f5efb0cef05f647420bf267143ec15dba10a \ - --hash=sha256:280081916dc341820640489a66e4696049401ef1cf6dd672f672e70ad915aca3 \ - --hash=sha256:2a441ea71902098ffe78c5abe6c494f44160b4af614ed16c3d9a3b1d17fd8ee2 \ - --hash=sha256:304b13570067b2547562e308af560b3963857b1fa90bd6afd978130130fe2d6a \ - --hash=sha256:32286a2c8d167e897177b673176c1e3e00d4057caf5d2b64eef9a3666b03018e \ - --hash=sha256:33bdcc2a32c0a0e861f60841a512c8acc658c87c2ac59d89e3a46dacf7d866e4 \ - --hash=sha256:375b83ed0aecfce76c16d198fbc21f3b11b337d68662bea0a995046682a11419 \ - --hash=sha256:3c09a49d6cde137258beb3d551994a2927fd35ad5cf96aed573f61bbd67c5f84 \ - --hash=sha256:3d92613ec25e43b05f042302531ec0f00b8445190e43325880cbd6ab7c2581da \ - --hash=sha256:40a126142a56b2dfc0aacbad1de8310cbf60da7656db0e6b16eebd48e3e93519 \ - --hash=sha256:416c229f77e5ea25b3dfd4b582f8d73d7e43c22320302b9ab128a2d3a0b38efe \ - --hash=sha256:432786d3561e69aeeae6c7e8648964ce0ad05736120135601f87ac26b9c83381 \ - --hash=sha256:43b9e366a31fdd1c87d0eb08f579b4a82b723ea54338f040d6b4e518a026ea29 \ - --hash=sha256:440eede837960000d74978f0eba527be106b5b9aee0daf779d395276ed0b0614 \ - --hash=sha256:45b0cc4e3556cd875e09102988d1ab8356c998b596c9fced84547c8138b487a0 \ - --hash=sha256:476743fe6dfe14a2da12e3ac79125dc84a3b2cf8094369a47a1529b0cd8549fe \ - --hash=sha256:4773092f8019072343a7447203308b176e10199920eb02d6195e81bbb3274c29 \ - --hash=sha256:4b3dac63058cc36820b0dd072f89898604e2d39686fe05321729d00d8ac185a0 \ - --hash=sha256:4d1c96a7a18b9690a4d46df09e3e3382406ae3213727cd1019ebade1c4a81917 \ - --hash=sha256:51307f5c71007673a2bf8232ad973483d281e74cb99c8c5a990af1eefa6277d9 \ - --hash=sha256:51447e9aa2684679af07ca5021c3db526e0284347ebf4ffcec1154c3350cfe32 \ - --hash=sha256:58150c9f9b9a552505912d182ccdf26f6396fb6094816ceebcbb20eecabaed94 \ - --hash=sha256:5b10cd92fc5c498b35a8635df6d5a100207f88b63a4dc1de7ef9a548e1e2cd63 \ - --hash=sha256:5e226f6218febc71f6c1fc2fafb91c226f75bdc1d8fb12d66823716e891608fd \ - --hash=sha256:609b3ba8fcc0fb5ab7af00719d0fb6ad0cb518e48e7712d12fd68f1327951198 \ - --hash=sha256:60f44ade2cf573dad7a277e6f8ca9a51a21dda572b13bd7d8539bb3cd5dbedde \ - --hash=sha256:611057cc5d5c0afc743ba8be6bd828c17e0aaa8643f9d0a9b9bb7dea80eb8012 \ - --hash=sha256:6366a16e1a25018694d6a5d784d09b046edc9eac40ea2b54065c3052672516a1 \ - --hash=sha256:65a7ff3f705e57d392f7261b6d0550fe137c3019477431f1c355e0db0a7d3e15 \ - --hash=sha256:673611bbd43f0810bec0b0f028ddeaaa501190339cac411f347ac76917c3ae7b \ - --hash=sha256:67830fc78e67501f47bb950471b2dcb9b35b140084429318e862895a8e89c993 \ - --hash=sha256:68ce9f4d6b26d5ccbf7fd4459bf75f74a0a146677ebba80597df60cbdb20e6f4 \ - --hash=sha256:68e5f26a1ad57ded6d1cfb85331d1c1a195314756471d97758c48498bb4dcdf5 \ - --hash=sha256:69b157c5d3292bcd443faca052f3096f637f1e074b98212a933c074ae23dc3b8 \ - --hash=sha256:75286256590a6320cf106a0d28970d3560aad9ee09aa7b34fb40524792436d35 \ - --hash=sha256:78841cccf1af7b40f6f716338d50c0902dbe88d9f800b3c973b7a9a0a693a642 \ - --hash=sha256:78fa18e436a1a0e58dbd7e02fc4473f3f32cceb12df9dfca542d075961c307d2 \ - --hash=sha256:79580094b00d1789d1f93ea55bc43cb2f611910c72235b7657f3482ddcc1b22d \ - --hash=sha256:7b86a2b16095d250c6f58b3d9b2eee6f4147754344f3dab0922f7c9bf7d226c9 \ - --hash=sha256:83aed2c10721ddd90f68140685391b50811a880af20654c59af6b6c66c40513c \ - --hash=sha256:84fd18bcc17526fc2b3c1af7d2b9217d32c9c04448c16ec693b9b4f1985c3d33 \ - --hash=sha256:871ff67ea1aad4dfd91736464934d56b32dac49f9fbe16cddba36198a7b3a0db \ - --hash=sha256:898f0e9068ca27d37f8e83a5b962821df851532e6c4a7d615c1c033f9da6eedf \ - --hash=sha256:8a79d9f4d8001473a30c163556b3c3bfebec837495a412dde78b51672f6134f9 \ - --hash=sha256:8c041122946b7ba21bb32c45b1aa57b1be35527690aeb3c5c234521085632eee \ - --hash=sha256:90c44bc373b7687f6948b693cceaea1348ae0975d7474746559494468e3c1d84 \ - --hash=sha256:9104ed0bd76a429d46f9ec0dbc9b08ad1d2dcdf2b00a5a0daa1c145329b35b44 \ - --hash=sha256:920079c3f7456fa213e0829ed2073aaa727fd39d889ead5b4f35d0de5460d04f \ - --hash=sha256:93d59d504b230e83c7a843251681959a0b6a9cd76f6e146ce1b8a80eb8739af9 \ - --hash=sha256:9b2aff1c7b3884512b9512c3eaadd9bab39fb45042ffaaa1dd08ff2b9f8109d9 \ - --hash=sha256:9b8e0f3107e2200b76f6054de99016eac3ee6762713587b36baaa7e4bd2ae177 \ - --hash=sha256:9bb41182d93ea91f60b4bc8fbf4c820c69ef8a12ab2d917f3f1834f1acad07e8 \ - --hash=sha256:9cdef90ae47919cae358d8ab15797a800ed41da7aba5d72419fb510729e2ed4b \ - --hash=sha256:a1786910334ed46ab1dd73222f2cd1e05c2c3bb39f6dddb4f8b36fc382058a39 \ - --hash=sha256:a4cfde78a9f2880208d16a93b795726a3017d5977e08d1e162a7a31322479c41 \ - --hash=sha256:a4fbdde9dd4a9ce5fd52c2b3a347bb50cc89483ef783f1cb00d408c13f7a96c0 \ - --hash=sha256:aa99adc8f081b475a12843953db36831eaf83ec33eb46a90629ca6a5de45a616 \ - --hash=sha256:ac351b3b8014eead140e77e9717e2992c6bbe30b63bc3422422eb84865412e3d \ - --hash=sha256:ad41ba96094304aa090f5a30cb6e4fb3b3f1c264c523394b4c39bbacc4dc92ba \ - --hash=sha256:b5314963fce9b0b12743891de876e724997864ee22aa496f903f426c7e2fa5b2 \ - --hash=sha256:bcf74c1df76758a395bf0af608c04c82257523f55c9868b334f06270d0f2112b \ - --hash=sha256:bd47ba7fc3ca94896759ea0109775132d3e7ab921fbf54038e1bab2e46c313c9 \ - --hash=sha256:c0323c9daef75ef2e5083624b4585018a0c9d5e3b40f607eed81a311270b934b \ - --hash=sha256:c1225416b463483160e4af85d5fc3a9690ccb53fd4b1865a6437825f5ede3209 \ - --hash=sha256:c1c948747b03be832dceed96ca815cef7360de9aa19d37c730f8e3f6101aca48 \ - --hash=sha256:c25fe15c70c59eb7c5ce8c06a1f3fa1da0ecc5ea1e7a5922c40fd2fa9b0d5046 \ - --hash=sha256:cc1b0fff8ead343dae06305f954eb8468ba0ec1a97881f42489d198e4ce3c632 \ - --hash=sha256:cd6280cf040f233bd7d3407b743b4b4c74f70e8e1c4199cb112a62c941c0772a \ - --hash=sha256:cd6c3d4b783c556fa00bf540854e42f135e2f256abd29669fcd0da0f2dec79c2 \ - --hash=sha256:d4d6fcde76f94f5cb9e43e9e9a61f16dacefd228cbbf6f1a09bd9b219a92f1a1 \ - --hash=sha256:ddf4af30b417d9fe16481e9b81c27ab2a7cde1ff7ba3e85653b02db7d145dc7b \ - --hash=sha256:df115d4d83168fdf2cae48ef1ff6d1cb4c466364e30861b37121de0f3bf1b990 \ - --hash=sha256:df7276909358e5635ae203673ab7e509ddd224225a8d6b0790bf13eb2bde1cc5 \ - --hash=sha256:e4fd89cc178bced6ad29cb3e6dd4aa63fa5017c3524dbd0b25998fb64a87cc8b \ - --hash=sha256:e9701d0049d92c16703a42771b98d560b95248949f23f8cf7b4eddd201814fb9 \ - --hash=sha256:ee2f2a527e3c1a6e6411eb4209642e138b544a2d72fe5d0d76daf77b24063534 \ - --hash=sha256:f7fb7d750cfa0a070d2c24e831fd3481019a60dd317ea2b39acbcebc08b6ed81 \ - --hash=sha256:f840ed6d8ecba8255df8c42b87fadeda98ddfc6eeec05e2dc66e26d46dd6f58a \ - --hash=sha256:f86c6358749bd4fda175388691e3ba8c46e24c5347d0afd20f9b7edfc9faf07d \ - --hash=sha256:fa36ec09ef71d158186bc79e359ff5fdd6e7996fe8ab638f00d6b93139ba4fcf \ - --hash=sha256:fe2c7201c642b7c308f1675355ad7ff7b66acfe3541625efe5a3ad38f29d6115 +charset-normalizer==3.5.1 \ + --hash=sha256:00668ebb0609751758682eb0b5857e7c35b9f00e84dfdef062e103244ec94d45 \ + --hash=sha256:012a22b88a77ca2e59b98ac5889b0deb604147666032f45e6d6e217634d2550d \ + --hash=sha256:01e93745f7f219b703b60ba7afead36cfc4242782be5af484673fc500df12da5 \ + --hash=sha256:04368edf83514385ffc3e1cfd4546e595f4f1272dd23ba437a93a9cc3741d47b \ + --hash=sha256:0722590aabf9dc6a6c0343d523c05458fa2b5047dbe6302fd526bb570600753f \ + --hash=sha256:07ffd07412fc5d5e84cd8952acf9ff7e4ed7a708e69d1bada19d8ba91711353f \ + --hash=sha256:09a7bba9f739468c8e78c36a75c33768e53cb1959fc638f510454c14683f00d5 \ + --hash=sha256:0b2b1b3fa5670c127b246df1d0c059defd41f689a868a3b9d79df9b1cac42d22 \ + --hash=sha256:0c6dfb5ca6723eeed15aa8e564a014d69fcb8812f94eef11fe3631e0508199f5 \ + --hash=sha256:0d929fc574b4d6fd9e7c0f5c2ede8716a41911923aa7fa5fce38e0818aa4a1ac \ + --hash=sha256:13e3afe97712e8887cd516e960c63f0b93122971e5b5e4b2622fe7701771e838 \ + --hash=sha256:15f024313246a4ed976c60f440bb8d257815513a681d212ff74fd46f7d715a90 \ + --hash=sha256:195ce897c6153c0700078142cf8efe3e6454ca4cf4357499e4078dfd83396626 \ + --hash=sha256:19a3dd5aa73cef1c99687c4fc57db016a9c17104ae1185da88ba566a5d3bebe4 \ + --hash=sha256:1d1c7a53a6c2103925cdd6d7229f8c567379f211c869793df679f2e9f738c369 \ + --hash=sha256:1f5883d77fd409a261abb5dc8ccbe335720d798b1de4abb3b1d47ccbbc76b53b \ + --hash=sha256:21b82d8082f6f5e7f456ef0bd16323d08de1266efbfeb476e64b2a91d1471a4e \ + --hash=sha256:252d099029bcbea642f2a06c4ed5046bdf8b5a8150b64afa5e027e88b106e5ee \ + --hash=sha256:256dd4d85d9e4dc595e2bc983c980e73f62ddeb3165c58b4c3dfe78c5c8548c1 \ + --hash=sha256:26422d45fd13551cf564c58932f7d72b4f58b93b0fcf18c35ba6be12b46bb102 \ + --hash=sha256:2679de311c7946dde5d3b6f44941844133ff5c7cb86099c0061ab1e8901c20a8 \ + --hash=sha256:29880d17a8eb0b5cfdfd8944b468322928059aa35f1f5fa8ff22b149ec0b42f8 \ + --hash=sha256:2bced4061f000f7187254a02ad3433ae17eaf991747ceea2f478422590a5bba9 \ + --hash=sha256:2e9cf9253119d8e5d111f05d71626786fd3d6193817316eab1ca088cdb8593cf \ + --hash=sha256:2f06b7eae9dbe77fe1d644ca244dad508de8d302870a43f3c559b521270938a0 \ + --hash=sha256:2f293479cce755c75f1697e87c409b7ae4c555c7dfecb6e988ad13abba943031 \ + --hash=sha256:329fc3ccb63ad22d867d84c2adea759a64079a37ba4a343433b02c7a2816871e \ + --hash=sha256:343fb4f2821043bd87095f7b08a1a181febc8e36ac64212143bbfd0a0e1bc235 \ + --hash=sha256:3588e376b3ea2eea84976f67273d679f229e24c66dce7b82ae45aef04ff6e072 \ + --hash=sha256:35aea775dc2bd5f54cd84a1cd2696cc3207c479cb9cf0bd346f0d343e4300ddb \ + --hash=sha256:35fe081843b35aad20ffeccec3eeffbe637b15d14f3fb22cc1b59cd8ec17e93c \ + --hash=sha256:36047af20e17097c3bb9476c2b7655f2f7aa51322c0ba58c07695bedf755a950 \ + --hash=sha256:3617ac3cfd8b9888f145ad89dd6e692285834b0201c6074a5eeaad3fd4d668c2 \ + --hash=sha256:366ec70f5547c640d3ce1985722490f23faf4eb5216a7eeba78277490e78dacb \ + --hash=sha256:394fea06235c8543390050ed5f529187074b029fb027213f6c46ac11ab5d950e \ + --hash=sha256:3d27167433c0d5f18dc850f07d0b3816221984fecdc405d6c157a6f0b8f8e9e6 \ + --hash=sha256:3e5e1224c0a6a90e05843e07adfec669edebec17801c67072f51e59561d63c0b \ + --hash=sha256:41876ee62a3dddf48ff1121ad8f0798032aa03f2fd35f21f34a4cab14f18d8d2 \ + --hash=sha256:433c5a81eade63b47e522303bad236f59dba55ea6951746f5558355eeed8c75d \ + --hash=sha256:4582c27e8c889d64811987b5967fbd3ae0c823fe1fd933b543d55ac20bb475fa \ + --hash=sha256:485a0d363cafefcd2538a73c7c838daa2035f09b2c9f9b5e3133f80c6aeb84c2 \ + --hash=sha256:494b70049a4d69aec6e8137c13af4cf8db8c9f9820a1392ac293b0dd2987a818 \ + --hash=sha256:496846868fea80e479324862fa877f02411f2fd0f83b79ccee2607aa68b2a032 \ + --hash=sha256:4abdc5f9ad448c1ecbfae2974b820535d6bc6e7eef63babbab3d81cf46968c71 \ + --hash=sha256:4b599739b93b2cbeded49645ae3c8d1405c29ddfbceac1545c87a3f9580a9e96 \ + --hash=sha256:4bea7f8ebe90bbd7f0e4a2de42ca6924ba23e3e76418c408ff82f1d46fabd687 \ + --hash=sha256:4c4fb141a727957c93edfe5c32a26ceb6b5f6461d67146e2d39f51e16170bea8 \ + --hash=sha256:4c9548dc78002099910abaebc0a72ac58b7d30931869e0351c09b507dff4ece3 \ + --hash=sha256:4d26f14f041e83dd8edfd61f4cd4fa7285d31798b5bf1f28e70c367ba6c41d61 \ + --hash=sha256:4f298bdadb8f0b9e5672877f647d1be9373ef5320c9e2f049795e26cad28b6a9 \ + --hash=sha256:52ec005752a56ae79547a05c0139ca2501a0c866390b6115008456b9f0e7cde1 \ + --hash=sha256:55261ac0d2941c42f196dd576f543d87a8ee03cd6f5e30dfb4d807b2e3b9121a \ + --hash=sha256:56490c595a28b1bb27dfc583e816152a9767721ef58b2c03b13f954d2f707420 \ + --hash=sha256:58d3e12c88e0950bca850ae1f7c256055c097639c2edb9eb123af9807d8b15e4 \ + --hash=sha256:58d4aa13a59c969dbfdf9e6a9560e242cbfd9e8a8f50c2747714df1a423adf65 \ + --hash=sha256:59171c6e45bf07d0d5cab3b0bf81d945035530f6873398b3b531c31184d46663 \ + --hash=sha256:5b6d1386bf0096d26d3a863dc0a487a5b4eb9aa93cf5ba69683d29dde6b9d60f \ + --hash=sha256:5c0ea61a470e070686aa30892fed79e297d2c8d0ab46b8bcdf027d38c51da591 \ + --hash=sha256:5c84bec0ab5ae0c64bfe73a7d2adcb5ce73b467523fc27fd6a28ab2aa6cbe35a \ + --hash=sha256:5ca0555312ae2fe82715cada7fac375530c2f3349e1eaa1bcb33d0283ac79a18 \ + --hash=sha256:5d8531a6569d025f68e2321e7638fb7978f23db58e5f69f56913837aae03816e \ + --hash=sha256:5e2d0e146dcb57034f8b97dc58d2d512cb90aba253960ce449f695fec6a82c6f \ + --hash=sha256:5fc45d653ea8c9a20479167e11d4a0f8cb2fa3470737ab6f9c827532313187b7 \ + --hash=sha256:6117b84ea48435e5356dc737f5121485c30920ba43375fa7b434fd753df0eac3 \ + --hash=sha256:6199d5606e2bbf2b096cf64d03f8b6790c91081d5ac866b8e7bb6422738cc60c \ + --hash=sha256:62b55f6722735a6c472f88361cde6640608773d9443cebdbb51abf436a1fcdd3 \ + --hash=sha256:687c9ca3035544b113bea2055e180af96fb63c0c476e22a9180f51925186e7b7 \ + --hash=sha256:6b7430cf5728e68f6c462254009a6ef4086e1bea43cf2f57aa9c55fb4f50ff96 \ + --hash=sha256:6ba32c4d2abf1d2fe7cf27d280f4cca5664233b0f885549c7761719eb977f486 \ + --hash=sha256:6c9cdde8becb25a7fde49924511aa2644d6f8081cc8df8e9452724303348d8e3 \ + --hash=sha256:6df0ec430f9a831772c23ca5a224cba36517a58a84bb32c32bb59a9fa67c47f6 \ + --hash=sha256:6e2912d4babbc65196ac13c2f53468dc57fb8b9c25ef913e8c59ddf7c6dc0e1b \ + --hash=sha256:6e5e4d73d588ca5ed09df1b7dcd1b203d1df3c542e3f50d126c947d432b10731 \ + --hash=sha256:70055ff39b97c99e7ae40ea3e393fb62aa2e44dbd9b29f8d14f42fb0025c3959 \ + --hash=sha256:706bfd38730a5ac7a365793269a00f4e988178cec121391f4248d84ad8c972e9 \ + --hash=sha256:7235dc28fc6dd9d832ac7c7bce95367dedb85929f17368a0c2bee1e080b9acbf \ + --hash=sha256:774d157f112367ff4abd29019f38f023c24e00e56edc7829c20e358a5a913ad8 \ + --hash=sha256:77efcff2b23071c349402ac1066667a3d011f62398d81408c9b88ad991747c9e \ + --hash=sha256:789b8982559ae28dad2356519f841655756cdcd96616410590ae0b17454ee64f \ + --hash=sha256:7ac76cf9afd34929d76eb7fcb63be476a4853d8a96f0dcf2d0db68a0cbdf9885 \ + --hash=sha256:7c0c10730342b0c9b35dd1d619beb8214e520bd96a1f870f452680b238aab3e0 \ + --hash=sha256:823f82903d189af463d7df250ef1f7f696f3cee08cc8d91deb565e8d425f6506 \ + --hash=sha256:838648accb3a7fd9803fd45c87bce8509648eb0c11bc34e216141300977244f2 \ + --hash=sha256:854066be00447fa8de2ccbbe893e2ffc4b123ef16d897af794c1e18bd4a714b0 \ + --hash=sha256:85d5855daafc240cc045c026d7a15fd198a09b0fc8ff6f5ecbb5297b509cb11e \ + --hash=sha256:85de3134b5379856e323ba37c19c9256d39425f7b76a63af52b09fb4664c2e8f \ + --hash=sha256:87e4f41d375c0b9be2fb5251aee4b8a689169e134535aed81bf085c3b647451e \ + --hash=sha256:88ca277405c2d3b71c4e1c2ee0e7966e807bcba86a69d11e19ba199d18ae4491 \ + --hash=sha256:88e85ab89cb822c1e635f51d6d32e488f94e002e70e2f492bdb8b945543f345a \ + --hash=sha256:8ac8c94b6539074e0f40899301273ac8402b9b3e01c7b7ba269ff30340aaaf20 \ + --hash=sha256:8fe532b3c966d1fb794e0698e4589d0444017ae77fc0b31edea13c0e35bcc449 \ + --hash=sha256:9085f87b0e38a2b92b8923059b4e8789fe40d9279712d15dcc670048d77079af \ + --hash=sha256:90b7481fb62fbe172c558bc6fd1c4c98d82004a54a7551f20e11ac9bf0b8708c \ + --hash=sha256:92caef967d287a407085d61176fce4012b1dd62daed4eb6d5ceb26d3d2538712 \ + --hash=sha256:9362dd90aa7dab48c0054a21187791ccf05473f7dba5d92b8033ae62164675e7 \ + --hash=sha256:94d78ecec2605a8d0398b0f365d5f12a63248438516f5dac536a5eff7337df4a \ + --hash=sha256:94fbf1c0c6cc0d3d5e50f9a9313a8cdca90dd696d34b381cd1704f8c9e939f20 \ + --hash=sha256:950f23cb393f85543777b0433f082cddd25b51ab398eac7971146495679efe5f \ + --hash=sha256:96eefc178f8636b9c760c5829345307fd81cfae9ab1e80997dbddeb0f54ee9a3 \ + --hash=sha256:96fef3e886d6a9874b14f27fc193fbdc69d5d8035783d86aa4e1cea594e695f9 \ + --hash=sha256:977cdbd483a9cff38179bea4fd754289a6f2195c7abd414aba85410b3e66cc5e \ + --hash=sha256:978eab16f55b4ab2c2a745be9a0a840bf8f09a7f227d9c76eb30214d078865a5 \ + --hash=sha256:994e883d17c559cdfd38c84003c8b27d25424a1077272a17e7cd27bfe0bf57b2 \ + --hash=sha256:9ac4444d8d4fd4c4bd08bf451ed3167aa9e7ec6cdb41b648794f1d1103652e36 \ + --hash=sha256:9b5db6052055d34d41230fb78d7c439c23dc536a9896f6cb039e8dd92cfc1263 \ + --hash=sha256:9d9a0dc7cbe9bec24c3f767c9122c41fe5a1bc43f47cd099d00d393e09769de4 \ + --hash=sha256:9dbdd9205662134957cf0c324f639bdc5031c0ca056e2369e238db75187c0f11 \ + --hash=sha256:9eea3ab2597a5e65fe65296e2d6a84570845a6b55532d90333d740d48bbc850a \ + --hash=sha256:a2028475ba855475b8b4d3cfeb4994269c967aea8b9892dfba907f4263a863a3 \ + --hash=sha256:a3a370082ce34d0612f421e15fe011c53bb1feff21a26d06ad4fb244dab5a375 \ + --hash=sha256:a545775cfe815855ea32d7c27731d79da358ef2055b4a25830231b1622dd18aa \ + --hash=sha256:a5cbd90ecf0fc62e64726917ad083b73001f0563657a87ec3c0b504e277dc90d \ + --hash=sha256:a6d095662e73e74f0a49988e0593373e243e3a52e27bfeea0a859e88acf4a0f5 \ + --hash=sha256:a6dac12ff6b846103483683f60c5f8fee205121adc58ffd87e90a90a3af69e99 \ + --hash=sha256:a951ad59cad9145664a730d3036b40b844e74d2d3683da40111463cd3a83845d \ + --hash=sha256:aa1099b956fb795e686d073568f6dc002a0bb89765ea6d5b055dd7d9bf1b116c \ + --hash=sha256:aa2bb0b37202dca27175591f761108b5d34096ade1191ffe4808bdf6b1571488 \ + --hash=sha256:aae2ee51122d3ae968a3837d97dc24a0aeebb0dea23694422cd172bd30017cd6 \ + --hash=sha256:ab743e9bc90c1f73552ec33e10e3331315acd2c397b36065b591b0181de533cc \ + --hash=sha256:ac00177c4831ffa650f8609e4bdddd5fe09c03b1c0c47acece7e6ea20421598b \ + --hash=sha256:ac13b004224fb341e1e25a1ed5e19d32f57cdb2a403e01f003b46f051a550f6f \ + --hash=sha256:acaf604462bf330b0d07e7a07c1d6e4adac79e5fb13e9c5140590542cafacc00 \ + --hash=sha256:ae31a1a1db2ee6cc2942fccaf695c934bc7f3db9f2133a3fef1f367cf1a4ab10 \ + --hash=sha256:ae4a097991662cd4fff0ddc74e0fe7874f82e00042fa0ea00855645ed0c79598 \ + --hash=sha256:aea996a6aba25260827c9ea511d1addfde2da9eb686ac961838509086188b7e6 \ + --hash=sha256:b39b69b347e5e47a3b5b8cfc005c68c1ba347474e3960236c4944a8ecd174962 \ + --hash=sha256:b54e7e13267d49ffbfe68e25b3cbd774dab38fa37238f71265e91b36146eb21c \ + --hash=sha256:b9af956078716df40d985fb0dfeb2c2120c5ca92ba4ff4b388acfd01cdc14d08 \ + --hash=sha256:ba2f37ee79e6338845261a3c5b1784e5d1acdff2c0785b284f1b633033d136ab \ + --hash=sha256:ba501e667c17d8411f98e67a022d9604ef179aff0e459b7e292c796837c13573 \ + --hash=sha256:baf3775a2635e5a11fbd5e4e64ee69c7e86875d224a5c72aca4c141064589a90 \ + --hash=sha256:bb57753e36e4855b8ca375069482250a6246372331a3e4f3407eaebb007443f5 \ + --hash=sha256:bd6c173f04743d483881bffa1478d5a4624475b8cd1d2194956a75548e191c18 \ + --hash=sha256:be47f99644b208bff7766314013f9acf57b056b04191d570d68ad14022cf5b1d \ + --hash=sha256:c010f5581d9c612804cc59fcf7b524b707fbcb72828551237ab545bb5c7034af \ + --hash=sha256:c1dcc36dcb96abc02236e182d17e0f71430152a6c2c7447421da2d2dc144edea \ + --hash=sha256:c428c6c31eb5f4277d7f8eccaf767fbd548ddd5ce3c8b4f4cbbfab3d96b5904c \ + --hash=sha256:c658c50ac0c98cd755a2dd50b7977d3bca7df401dcc47fbdfa87db53ef7d4e8b \ + --hash=sha256:c71fb0d56c920c269cd3e2e3fe7c610e3f1fdb21a6ce60efa6430ff63676cea6 \ + --hash=sha256:c7b742bf31c88566b4bb6335a7f393bb322e580b6bb98df7bd0c25e6e3519ce8 \ + --hash=sha256:cc0329df4caaceb950d2f580b5ac716a377f7059624a0bafaeaf8a218c6ed774 \ + --hash=sha256:cc5d36d96478aa9c60654bd932525bf32964c62a7281eafdf16d85003a8d6004 \ + --hash=sha256:ce854f5f478050ade5a238731c4ca985a7d3b3cb53ff600a9b5c3b689b5f0a7a \ + --hash=sha256:ced3fdd71aaa83ce593746c2edb42b7a59cb4c19c8b5c407781c72e493aae55a \ + --hash=sha256:cee5dd7c6fb5dd52a0fe2a740f9bc6e3593f5f8b1788bde49de02086f30182b2 \ + --hash=sha256:cfa1c0cc3a8f9f53f1243a5a99ac36fd003880199383b37672e86ddda9cb07e2 \ + --hash=sha256:d1ee1e296209fdce05b81b663250eefa02213a2da7b41bf26f7829b8ba3545aa \ + --hash=sha256:d59b75732e9b6f27388e10c14b0259cc5f2e48c78627d185e6a177b58ad3cffe \ + --hash=sha256:d63600d620ad0064c3a748b950ac5ea38a80190e5498532efefa4b7b3f1da1f3 \ + --hash=sha256:dd732602a7009217f658d5863d12d79d373a4de0eebc111094bcdd3bb8e0a6cc \ + --hash=sha256:e06efa066f7dbadbc84ebc126a97c452a6451dfcf589d89d788484949e1cf795 \ + --hash=sha256:e199fb99720074809a7720f1c0b4d919eea8b87e88713e0f8f602f7bef543d9d \ + --hash=sha256:e4b018dc5a0eee4676e38fe84a47a427816c590b93b55d9025274ec4d6ffc2dc \ + --hash=sha256:e6621fb2a4988d6e53eedc455e5903e2679f3967b8acb3d639f1b63c14a2e893 \ + --hash=sha256:e71c909f353863b2b89c83de2ebed71ea6d0df8a6ef65a128193c5e650766bef \ + --hash=sha256:e90251c0c7bdd54a100a0dce3c07b7e637278c93af29dbf78ebb89a58c4bac7d \ + --hash=sha256:e9fbdce1e47394b09bc9f26ab117dfc8d6491977a11d86f592bb42c779db2fda \ + --hash=sha256:eb12fb2ba69ffa05f8695f61c69e591dc4b4a12ac3757ac8af8adb259bf56d17 \ + --hash=sha256:eda059b6bc8bc0812d626fd91a7ce01bf583df0a61296eff390fd94141a34e30 \ + --hash=sha256:f03ac127268b43ef4fe9e6ab6794a6794b49485a0cc0c1db79876d2f33f75bc7 \ + --hash=sha256:f298e218441525d3794428b4c8b8fb8662c6d3ea79925d4807ee6b9a96a3bca5 \ + --hash=sha256:f5542f9b941279d82d41eb0aa9f98eba36fe4df5c7086c651df7944935b37182 \ + --hash=sha256:f6f7deae3feb4edfa2efaf7c574fe88cbf055038a6abdb40188e4fff66d5699f \ + --hash=sha256:f9b1e28d0e8dbfa858abdba91d6b547beaf2df1a59bec6da6faae7b96a4991a9 \ + --hash=sha256:f9f8405c2c758532c74fed975dbee57be1f31a6e865c031870c79a6ed3212ada \ + --hash=sha256:fa48b1b63d639f9483e0633e092f5851e2348c352f1f9bb6c8182f87884ef876 \ + --hash=sha256:fb78f6e7fcd8ad785d28cd577168bc1aaee827b25bb8755638f694794ea98f0a \ + --hash=sha256:fbc597639158fd7c14d55e808718848319540f51b0e6746e3eefa59723a4a348 \ + --hash=sha256:fce8cbd4997efeb450bd298b54f755dcdff18d496f7a5ddbb4867c6d7c88fdc3 \ + --hash=sha256:fd0350afdc3aabd5576f60ea109228bd5538139713c7b094c5cd27c73a98bc6f \ + --hash=sha256:fd0a274c0e5f9a21565cd9d3dd749b61f96b7aa1e20a93aa1ba4029518f2e5c0 \ + --hash=sha256:fdb8a068947befafba9952162645dc2fecaeb400e64584829ed5e9b2fbe21a7f # via requests -cramjam==2.11.0 \ - --hash=sha256:028400d699442d40dbda02f74158c73d05cb76587a12490d0bfedd958fd49188 \ - --hash=sha256:033be66fdceb3d63b2c99b257a98380c4ec22c9e4dca54a2bfec3718cd24e184 \ - --hash=sha256:03a7316c6bf763dfa34279335b27702321da44c455a64de58112968c0818ec4a \ - --hash=sha256:045201ee17147e36cf43d8ae2fa4b4836944ac672df5874579b81cf6d40f1a1f \ - --hash=sha256:04cfa39118570e70e920a9b75c733299784b6d269733dbc791d9aaed6edd2615 \ - --hash=sha256:092a3ec26e0a679305018380e4f652eae1b6dfe3fc3b154ee76aa6b92221a17c \ - --hash=sha256:0a70ff17f8e1d13f322df616505550f0f4c39eda62290acb56f069d4857037c8 \ - --hash=sha256:0cf1b5a81b21ea175c976c3ab09e00494258f4b49b7995efc86060cced3f0b2e \ - --hash=sha256:0ee47c220f0f5179ddc923ab91fc9e282c27b29fabc60c433dfe06f08084f798 \ - --hash=sha256:11eb40722b3fcf3e6890fba46c711bf60f8dc26360a24876c85e52d76c33b25b \ - --hash=sha256:13240b3dea41b1174456cb9426843b085dc1a2bdcecd9ee2d8f65ac5703374b0 \ - --hash=sha256:1789a057b6d09acf112c1c84701fc03ba5cc0fcf2ada786ce02a7e73dd466ca5 \ - --hash=sha256:17eb39b1696179fb471eea2de958fa21f40a2cd8bf6b40d428312d5541e19dc4 \ - --hash=sha256:193c6488bd2f514cbc0bef5c18fad61a5f9c8d059dd56edf773b3b37f0e85496 \ - --hash=sha256:19eb43e21db9dc42613599703c1a8e40b0170514a313f11f4c8be380425a1019 \ - --hash=sha256:1c6cea67f6000b81f6bd27d14c8a6f62d00336ca7252fd03ee16f6b70eb5c0d2 \ - --hash=sha256:1d77b9b0aca02a3f6eeeff27fcd315ca5972616c0919ee38e522cce257bcd349 \ - --hash=sha256:1e2400c09ba620e2ca91a903dbe907d75f6a1994d8337e9f3026778daa92b08d \ - --hash=sha256:1f6449f6de52dde3e2f1038284910c8765a397a25e2d05083870f3f5e7fc682c \ - --hash=sha256:1f71989668458fc327ac15396db28d92df22f8024bb12963929798b2729d2df5 \ - --hash=sha256:20c8684d2a693e3052532b9730d4399ba2ee212cacf3b961349aad35d13b0c8c \ - --hash=sha256:244c2ed8bd7ccbb294a2abe7ca6498db7e89d7eb5e744691dc511a7dc82e65ca \ - --hash=sha256:24758375cc5414d3035ca967ebb800e8f24604ececcba3c67d6f0218201ebf2d \ - --hash=sha256:2581e82dca742b55d8b1d7f33892394c06b057a74f2853ffcb0802dcddcbf694 \ - --hash=sha256:261e9200942189d8201a005ffa1e29339479364b5b0013ab0758b03229d9ac67 \ - --hash=sha256:26cb45c47d71982d76282e303931c6dd4baee1753e5d48f9a89b3a63e690b3a3 \ - --hash=sha256:28952fbbf8b32c0cb7fa4be9bcccfca734bf0d0989f4b509dc7f2f70ba79ae06 \ - --hash=sha256:2c289729cc1c04e88bafa48b51082fb462b0a57dbc96494eab2be9b14dca62af \ - --hash=sha256:2fa2fe41f48c4d58d923803383b0737f048918b5a0d10390de9628bb6272b107 \ - --hash=sha256:309e95bf898829476bccf4fd2c358ec00e7ff73a12f95a3cdeeba4bb1d3683d5 \ - --hash=sha256:320d61938950d95da2371b46c406ec433e7955fae9f396c8e1bf148ffc187d11 \ - --hash=sha256:360c00338ecf48921492455007f904be607fc7818de3d681acbcc542aae2fb36 \ - --hash=sha256:362fcf4d6f5e1242a4540812455f5a594949190f6fbc04f2ffbfd7ae0266d788 \ - --hash=sha256:36aa5a798aa34e11813a80425a30d8e052d8de4a28f27bfc0368cfc454d1b403 \ - --hash=sha256:3705888b7acacddd46886926fa390dd3df0e1d9e6fe273fd4edb4cbf8eb64735 \ - --hash=sha256:37bed927abc4a7ae2d2669baa3675e21904d8a038ed8e4313326ea7b3be62b2b \ - --hash=sha256:382dec4f996be48ed9c6958d4e30c2b89435d7c2c4dbf32480b3b8886293dd65 \ - --hash=sha256:387f09d647a0d38dcb4539f8a14281f8eb6bb1d3e023471eb18a5974b2121c86 \ - --hash=sha256:3c1aa56aef2c8af55a21ed39040a94a12b53fb23beea290f94d19a76027e2ffb \ - --hash=sha256:3d1ba626dd5f81f7f09bbf59f70b534e2b75e0d6582b056b7bd31b397f1c13e9 \ - --hash=sha256:405f8790bad36ce0b4bbdb964ad51507bfc7942c78447f25cb828b870a1d86a0 \ - --hash=sha256:40a75b95e05e38a2a055b2446f09994ce1139151721659315151d4ad6289bbff \ - --hash=sha256:41eafc8c1653a35a5c7e75ad48138f9f60085cc05cd99d592e5298552d944e9f \ - --hash=sha256:449fca52774dc0199545fbf11f5128933e5a6833946707885cf7be8018017839 \ - --hash=sha256:4526c4313306a264049e03e6c17b4e728a0647166dddbc1af7baf8e78a65721c \ - --hash=sha256:4820516366d455b549a44d0e2210ee7c4575882dda677564ce79092588321d54 \ - --hash=sha256:4b86f8e6d9c1b3f9a75b2af870c93ceee0f1b827cd2507387540e053b35d7459 \ - --hash=sha256:4b9a46eca804a51e8eb7b243c8e4513afc3b63aa60b69bc48e0efe6c648c4de0 \ - --hash=sha256:4efe919d443c2fd112fe25fe636a52f9628250c9a50d9bddb0488d8a6c09acc6 \ - --hash=sha256:4f8d82081ed7d8fe52c982bd1f06e4c7631a73fe1fb6d4b3b3f2404f87dc40fe \ - --hash=sha256:50e4a58635fa8c6897d84847d6e065eb69f92811670fc5e9f2d9e3b6279a02b6 \ - --hash=sha256:50e7d65533857736cd56f6509cf2c4866f28ad84dd15b5bdbf2f8a81e77fa28a \ - --hash=sha256:514e2c008a8b4fa823122ca3ecab896eac41d9aa0f5fc881bd6264486c204e32 \ - --hash=sha256:5251585608778b9ac8effed544933df7ad85b4ba21ee9738b551f17798b215ac \ - --hash=sha256:529d6d667c65fd105d10bd83d1cd3f9869f8fd6c66efac9415c1812281196a92 \ - --hash=sha256:52d5db3369f95b27b9f3c14d067acb0b183333613363ed34268c9e04560f997f \ - --hash=sha256:53fed080476d5f6ad7505883ec5d1ec28ba36c2273db3b3e92d7224fe5e463db \ - --hash=sha256:54c4637122e7cfd7aac5c1d3d4c02364f446d6923ea34cf9d0e8816d6e7a4936 \ - --hash=sha256:555eb9c90c450e0f76e27d9ff064e64a8b8c6478ab1a5594c91b7bc5c82fd9f0 \ - --hash=sha256:57286b289cd557ac76c24479d8ecfb6c3d5b854cce54ccc7671f9a2f5e2a2708 \ - --hash=sha256:5c82500ed91605c2d9781380b378397012e25127e89d64f460fea6aeac4389b4 \ - --hash=sha256:5eb0603d8f8019451fc00e1daf4022dfc9df59c16d2e68f925c77ac94555493b \ - --hash=sha256:5eb4ed3cea945b164b0513fd491884993acac2153a27b93a84019c522e8eda82 \ - --hash=sha256:5edf4c9e32493035b514cf2ba0c969d81ccb31de63bd05490cc8bfe3b431674e \ - --hash=sha256:619cd195d74c9e1d2a3ad78d63451d35379c84bd851aec552811e30842e1c67a \ - --hash=sha256:62ab4971199b2270005359cdc379bc5736071dc7c9a228581c5122d9ffaac50c \ - --hash=sha256:66425bc25b5481359b12a6719b6e7c90ffe76d85d0691f1da7df304bfb8ce45c \ - --hash=sha256:665b0d8fbbb1a7f300265b43926457ec78385200133e41fef19d85790fc1e800 \ - --hash=sha256:66a18f68506290349a256375d7aa2f645b9f7993c10fc4cc211db214e4e61d2b \ - --hash=sha256:6b1b751a5411032b08fb3ac556160229ca01c6bbe4757bb3a9a40b951ebaac23 \ - --hash=sha256:6c2eea545fef1065c7dd4eda991666fd9c783fbc1d226592ccca8d8891c02f23 \ - --hash=sha256:6eb3ae5ab72edb2ed68bdc0f5710f0a6cad7fd778a610ec2c31ee15e32d3921e \ - --hash=sha256:724aa7490be50235d97f07e2ca10067927c5d7f336b786ddbc868470e822aa25 \ - --hash=sha256:72524cd27e67cf95d9c6bb5eacf47cf78473554f74685f57ccabb368988d91bc \ - --hash=sha256:753710ae1f33b1a34178d104b7e1ac0a94a3f386d14dc24305663f63dc67cabc \ - --hash=sha256:75b07d36ee034f05e3566878d83f3043d8297dad67937ada15c504ac3e50f9fd \ - --hash=sha256:7855bc4df5ed5f7fb1c98ea3fd98292e9acd3c097b1b21d596a69e1e60455400 \ - --hash=sha256:78ed2e4099812a438b545dfbca1928ec825e743cd253bc820372d6ef8c3adff4 \ - --hash=sha256:7a6ed7926a5cca28edebad7d0fedd2ad492710ae3524d25fc59a2b20546d9ce1 \ - --hash=sha256:7ba5e38c9fbd06f086f4a5a64a1a5b7b417cd3f8fc07a20e5c03651f72f36100 \ - --hash=sha256:7d5c8bfb438d94e7b892d1426da5fc4b4a5370cc360df9b8d9d77c33b896c37e \ - --hash=sha256:7d9aecd5c3845d415bd6c9957c93de8d93097e269137c2ecb0e5a5256374bdc8 \ - --hash=sha256:84265f2221e83fb1e41a8e33788c06e3ba22629e88644d0841a470cc28baa3f7 \ - --hash=sha256:86dca35d2f15ef22922411496c220f3c9e315d5512f316fe417461971cc1648d \ - --hash=sha256:9115f7a4ba2f110e9dcda72a43adaeba202f42cf181877bcf3eecca359576bfe \ - --hash=sha256:966ac9358b23d21ecd895c418c048e806fd254e46d09b1ff0cdad2eba195ea3e \ - --hash=sha256:98aa4a351b047b0f7f9e971585982065028adc2c162c5c23c5d5734c5ccc1077 \ - --hash=sha256:9ca14cf1cabdb0b77d606db1bb9e9ca593b1dbd421fcaf251ec9a5431ec449f3 \ - --hash=sha256:9f995c6b638255c9301166ed7033cb8fe0f34043a46b8e6a055a56b8a38c2114 \ - --hash=sha256:a24c61f1fad56ca68aee53bf67b6a84cd762a2c71ee4b71064378547c2411ae6 \ - --hash=sha256:a4963dac24213690183110d6b41125fdc4af871a5a213589d6c6606d49e1b949 \ - --hash=sha256:a6d9a23a35b3a105c42a8de60fc2e80281ae6e758f05a3baea0b68eb1ddcb679 \ - --hash=sha256:a88bc9b191422cd5b22a1521b28607008590628b6b2a8a7db5c54ec04dc82fa1 \ - --hash=sha256:a8949f97ab445d8aa2ccbeab244b46257114d38b6860210b2109b7e5b3ff2c5e \ - --hash=sha256:a9994a42cd12f07ece04eff94dbf6e127b3986f7af9b26db1eb4545c477a6604 \ - --hash=sha256:ab86d22f69a21961f35d1a1b02278b5bb9a95c5f5b4722c6904bca343c8d219f \ - --hash=sha256:ad52784120e7e4d8a0b5b0517d185b8bf7f74f5e17272857ddc8951a628d9be1 \ - --hash=sha256:aeb26e2898994b6e8319f19a4d37c481512acdcc6d30e1b5ecc9d8ec57e835cb \ - --hash=sha256:b1f893014f00fe5e89a660a032e813bf9f6d91de74cd1490cdb13b2b59d0c9a3 \ - --hash=sha256:b820004db8b22715cee2ef154d4b47b3d76c4677ff217c587dd46f694a3052f9 \ - --hash=sha256:b8adeee57b41fe08e4520698a4b0bd3cc76dbd81f99424b806d70a5256a391d3 \ - --hash=sha256:b96a74fa03a636c8a7d76f700d50e9a8bc17a516d6a72d28711225d641e30968 \ - --hash=sha256:bd748d3407ec63e049b3aea1595e218814fccab329b7fb10bb51120a30e9fb7e \ - --hash=sha256:bf81b2e517baadf41eb85c4762ae596dd1dd2c852988ce86a2df6aa7e31d9228 \ - --hash=sha256:c26a1eb487947010f5de24943bd7c422dad955b2b0f8650762539778c380ca89 \ - --hash=sha256:c3811a56fa32e00b377ef79121c0193311fd7501f0fb378f254c7f083cc1fbe0 \ - --hash=sha256:c54eed83726269594b9086d827decc7d2015696e31b99bf9b69b12d9063584fe \ - --hash=sha256:c5d927e87461f8a0d448e4ab5eb2bca9f31ca5d8ea86d70c6f470bb5bc666d7e \ - --hash=sha256:c71e140d5eb3145d61d59d0be0bf72f07cc4cf4b32cb136b09f712a3b1040f5f \ - --hash=sha256:c77570660abcf3b8931b258d57b600b3484795977797009bed112f0d7b6933bf \ - --hash=sha256:c9af16f0b07d851b968c54e52d19430d820bb47c26d10a09cfb5c7127de26773 \ - --hash=sha256:ca905387c7a371531b9622d93471be4d745ef715f2890c3702479cd4fc85aa51 \ - --hash=sha256:cb148b35ab20c75b19a06c27f05732e2a321adbd86fadc93f9466dbd7b1154a7 \ - --hash=sha256:cb1fb8c9337ab0da25a01c05d69a0463209c347f16512ac43be5986f3d1ebaf4 \ - --hash=sha256:ccec3524ea41b9abd5600e3e27001fd774199dbb4f7b9cb248fcee37d4bda84c \ - --hash=sha256:ccf30e3fe6d770a803dcdf3bb863fa44ba5dc2664d4610ba2746a3c73599f2e4 \ - --hash=sha256:cec977d673ad596bae6bdfc0091ee386cef05b515b23f2ce52f9fadd0156186a \ - --hash=sha256:d0859c65775e8ebf2cbc084bfd51bd0ffda10266da6f9306451123b89f8e5a63 \ - --hash=sha256:d388bd5723732c3afe1dd1d181e4213cc4e1be210b080572e7d5749f6e955656 \ - --hash=sha256:d87d37b3d476f4f7623c56a232045d25bd9b988314702ea01bd9b4a94948a778 \ - --hash=sha256:d9e5db525dc0a950a825202f84ee68d89a072479e07da98795a3469df942d301 \ - --hash=sha256:dba5c14b8b4f73ea1e65720f5a3fe4280c1d27761238378be8274135c60bbc6e \ - --hash=sha256:dca88bc8b68ce6d35dafd8c4d5d59a238a56c43fa02b74c2ce5f9dfb0d1ccb46 \ - --hash=sha256:dcc3b15b97f3054964b47e2a5fcfb4f5ff569e9af0a7af19f1d4c5f4231bbf3b \ - --hash=sha256:df7da3f4b19e3078f9635f132d31b0a8196accb2576e3213ddd7a77f93317c20 \ - --hash=sha256:e5d042c376d2025300da37d65192d06a457918b63b31140f697f85fd8e310b29 \ - --hash=sha256:e5db59c1cdfaa2ab85cc988e602d6919495f735ca8a5fd7603608eb1e23c26d5 \ - --hash=sha256:ee36348a204f0a68b03400f4736224e9f61d1c6a1582d7f875c1ca56f0254268 \ - --hash=sha256:ee77ac543f1e2b22af1e8be3ae589f729491b6090582340aacd77d1d757d9569 \ - --hash=sha256:f1f5c450121430fd89cb5767e0a9728ecc65997768fd4027d069cb0368af62f9 \ - --hash=sha256:f31fcc0d30dc3f3e94ea6b4d8e1a855071757c6abf6a7b1e284050ab7d4c299c \ - --hash=sha256:f6a32313a5fdbc4fc4fd681a1895d55ee4bf81275e88638b1643b54ecf850cbe \ - --hash=sha256:f8195006fdd0fc0a85b19df3d64a3ef8a240e483ae1dfc7ac6a4316019eb5df2 +cramjam==2.12.1 \ + --hash=sha256:008930cffbdfd2a18c4697bb61c896d7377f8c487c717ab98d9e6f6d4dec74c9 \ + --hash=sha256:00a25d19ce07fd1b61c6bd0baa37075d28a04189c7f3788ae57d0e04a4a53106 \ + --hash=sha256:0166c41fa7d2f983cb4a5ecc324c48642bb6b60aa6a8651ad08a17e3f9189049 \ + --hash=sha256:02f3a775664c0330092012e23abeaf207778da90313e17986659ab437444bac8 \ + --hash=sha256:03fdeda1720ad18f36dd18774e17080e07edc6bbefbccfaeae0b8f59ccb1dca9 \ + --hash=sha256:05085e6d5a834c5c206fdead7caa1ef6f38fd24a44b8fa2e00c8f29726b3132f \ + --hash=sha256:054ee4a23680acca4419e3303e79b41278d9dbe187f833c98ffc66cc24f10a05 \ + --hash=sha256:09ba4e60d8d7b18858966552bd5f8ea16425be634ffd31ed3b087cc17be32aff \ + --hash=sha256:0f31c95f4e2ca5c7a1af055046cffa5bfac8b437fdb251ef9aa859bfd500a9d0 \ + --hash=sha256:11437b53e8dd41024841c2c00cb1f9bccb0293f75cbd45ccea8a4c82d5d03784 \ + --hash=sha256:140e6427ba2fc57bb03b9b60b8e306217490328868320a49b94c7edda5e647f3 \ + --hash=sha256:1a04c8fd5530cece11f7f6562a7b6646201a6cd2d334daf99b1be1ab2a32f0a7 \ + --hash=sha256:1ff538a7792f79d1332f592e044f779dbbc1398a09769821791e4f287c3c3075 \ + --hash=sha256:2070ab4e49a0e55593cf4e92f94a9c276913e0d987af4ceb153a090861566333 \ + --hash=sha256:20d8e2a9a11bc9a9028fffb72c8fe001c4ff2665b028e390ecc0572859d77d93 \ + --hash=sha256:25f4870ce08440d7918e7105f48ea93cb0ffebbe458212ab6aef82c91451832c \ + --hash=sha256:28d28ea81661d0c75d0b8be1b31242ef2b7a042bcd51454981353fcf882e019c \ + --hash=sha256:28efcc63ade34a177d8a60cab6f1b3a69424bfbc9583f96f65a9aa1f464e5cbb \ + --hash=sha256:2b5f9cb05ac9b4a4a42331c3422265f4b1291a110c8cd4740085f0e5551e8227 \ + --hash=sha256:2e681c732d0370982f88695895f37be5a3f3a89475083a0f431bc1ce859b7396 \ + --hash=sha256:2f7e8960f8abc9c908a72690f17c16c214a63bba0f5e81b9f0d937b7ec191f18 \ + --hash=sha256:343fba082fa90b97f46d37430cbdef8954388e8df9754221193f70707cab7b98 \ + --hash=sha256:348e2bba38fa475852de524793bb5fb899cfee22c7999291eb8faf79f79c9b37 \ + --hash=sha256:35eb2c91a1859fe33dbf9debeb6b4d4fa208bfb2cb42647f8319d1e783f0eee5 \ + --hash=sha256:36a385c11e456fdd8dfc5d981293b377cfba2a222f296f9174160515afc67e46 \ + --hash=sha256:377ca108d47cca68c99517a4e3f194c2f3d791f99950c44646b1a96a1a4b83e8 \ + --hash=sha256:3d1888fdbd7ca1d6d96395e50bccdeb0116084c0cd228960e261a7fc8dc808f0 \ + --hash=sha256:3dc304c9dc93b762bb7be076506c2c155443272c0b7e9070d06be85bfc16dadd \ + --hash=sha256:3e6c1dbc80df326377f02695d10ebb53177dbf7922769c8f437c0fec89fbc93c \ + --hash=sha256:3f044601adee91bdf49c317525dbfb611022e40ded18ac5bacba8e807fbb472b \ + --hash=sha256:40abc3370b39dbde97c6d990eb2bc7bdd65b85f71528f6f4be827f845c151296 \ + --hash=sha256:440731ef40c3644f1b9054adc31cf09d48f02fb31ec2eb158ef6409719915fe6 \ + --hash=sha256:46565666daf5804591d43a92ac0888493e671d2555da2825120475253be73124 \ + --hash=sha256:4ad150da01eda998bae9e42020e2906bc9af97d08d905d29252f930c0472d059 \ + --hash=sha256:4b5ead26851dda08b395e670a9c040d02eddbf2cc8953e23f9d60f4ac46df336 \ + --hash=sha256:4bb60168d79f047f3bf228c5e702cd2d8e0d31c096a93b1f6054b5b964b8a2c4 \ + --hash=sha256:4f0cc6a64a708c5ee21e1fdbafd9dfcd76c7a0d574f0e21020ad3808ccfc6ce6 \ + --hash=sha256:4fbfca45193e28d9699221cd20485b8b18de15a4f96daf7ffced32e2cca2d9aa \ + --hash=sha256:5415696bcd0dfa516468fb713e7b1d05f7ded2bb75499b0e591687add4612c0f \ + --hash=sha256:5756ecb9bd8e96a0d0163f17a1282038228485da55c6010917db23cb199335c3 \ + --hash=sha256:598c4c37fe01c4f49e6faec1eb1a07bbe07b1ef552b2e5d3551835396b77f8a4 \ + --hash=sha256:599b7bbfe4103fa748e5cee63633ccdddca6cc01f2638f65386b4ac6c6344dc6 \ + --hash=sha256:5f44d68af44b21c023e9911d01a9a42ce03d3a8fb1c5317586643aad6c9147cf \ + --hash=sha256:5fcac413b41f86cf8daf8198bbc6ec8554f47f37697c73dc9b872ce6b56224aa \ + --hash=sha256:60327eb3cc88603aa734f0b42e7567fdb26659a2348847a832c9cac6eccfcf4d \ + --hash=sha256:60a8cf168e1ca1088a31392fb4f59cba8b41a5b707cc9f30d551259776c86c74 \ + --hash=sha256:62ec7747b142edf7d66c9d6be7f074cbd586d3a377aa26e675f5f1d99fba9ce5 \ + --hash=sha256:68ec92ea10901e9333ac4869c7fe40809b3a72a967b503f8dad1810e1f5c9f1d \ + --hash=sha256:690a825bbe1cb2407afcf19c4ec75a347ae51834ae2afb83649dde4f32feb152 \ + --hash=sha256:6e2a0e00123ac380db2d7394d6c0f5b22339ca20f2648810a72586d48a6bd46a \ + --hash=sha256:6ef52f454e8895bea898233a497a3c2185a2682c9da4c799589e4509b7484fbc \ + --hash=sha256:6f3e601384aa497f01f81831fffc146aca6c4800014fed7529bccbe7d5ce5c03 \ + --hash=sha256:6f809c30971a16ec3ff6993d99a9f72591b8817fdaba2c460383022015e8e02f \ + --hash=sha256:6f9a90eee999853205a8c724c479e6dec3806529a44dc8a4c4dbc94ac5ccdc23 \ + --hash=sha256:7191d2863edbb088ab5a0daad59ba0db279eccc53fe637ec071cf9a7b65927c3 \ + --hash=sha256:75187b77a84b1f457f9555604775b70d04102af312224d03c873da59011bba31 \ + --hash=sha256:764d9b861177692903ba375ec19a928141248ff003457575d037c444c7e3db53 \ + --hash=sha256:783c99558ec28169238628f978f92dafced2880d5d7f6ba0c39a915bc73ae004 \ + --hash=sha256:78dd4df4b8ff8cf61e799ea9733326316b84168bac41bb5e46d6ce787a48b581 \ + --hash=sha256:7ce9752480f74caa6c4cd04e785d797b0c59a229f6bc3f729b57f61230a2adc7 \ + --hash=sha256:7d87d950b2ec18569b41da81b2f9f69f48479a80a9277e291d7666c7bfb427f0 \ + --hash=sha256:7f09aef5c179b1e854987c38e36a396ebd7674cb6f2033bf5104c0933ac4a3a5 \ + --hash=sha256:7f41d1ecd2ced56c8bbef126de7b435261acb234ac7a5c3878869e20cbdf1615 \ + --hash=sha256:7f5bd025f16496fe09eb486cecf25e372fd72126ca68562cb6d860e51224bd69 \ + --hash=sha256:8165ccc5eb262f75313290943c70727c3dd008feb63281dc904b84bc8db719c1 \ + --hash=sha256:8437daf3e46579f491308c8aa14757654c2e3e167b727ec1292fbd5e32119dda \ + --hash=sha256:84756b4f9a1c30d360d7845f4de25c969918f45349ac1423da9341e17ee18143 \ + --hash=sha256:85fbb6e2ad6d5cab797dd2f017c221291d37b7db034ca34979c80aaddf9f26cf \ + --hash=sha256:889d80b5cc72ffeeeedd85522c8958a83b34754f578b5bc7cb6c19f55333f500 \ + --hash=sha256:8ddda5576d75095eac4066d1847a9f9904800cdf224dfea8a6e420e60661ee32 \ + --hash=sha256:8e6e9ee3086c5c0b0ef7595e39962e55c1a8b562af54bfc00c274f5ee41d8fa7 \ + --hash=sha256:914d76aa04cbda1cc7e5a0563421ade8437f801852b6d5528b43e6e82e3f7910 \ + --hash=sha256:92e2a6745e269daaacd02aeae32179e947d6a9ba8f1fa3d5262ee7bd93460165 \ + --hash=sha256:947398b58ae69fe454a71e4e97aff1eab322b3a5c4576a9736439f22a38d39b4 \ + --hash=sha256:95790cbbcf781b7c3375e3964ff6ada45b25a32dc575813c248bd43cf65ec13c \ + --hash=sha256:9590b6f9343e827f9fcb77c8f396f2631fc9c606fe6340995493f0470b91b2b1 \ + --hash=sha256:9fbe33b8db9231f33162d75ce410e83f46ae958b7d450c1c38dc67d9c595a6f3 \ + --hash=sha256:a2e8825e1e6c4d5b62bf3b230a7791524ad5298edd7f356747f30d39ebee773e \ + --hash=sha256:a62be7c3dd446f6f6eb28bdf161abd0b0c7b16bca8500f7811343226706daff4 \ + --hash=sha256:a84aec18381c50d7146053f6ccf755692a0e38c0ba6dc235fec69eb58768b0ec \ + --hash=sha256:a9ae100163d54fe8dfd6f6c7db14064201509792ac475ba1b7360f06e2e378dc \ + --hash=sha256:a9d1c23fe785aa0f64948d55cb661a29b8e5d5d9b436c69c128c98d9ced7677d \ + --hash=sha256:abdf50e656c67552a05d946990aeeb3ec4ece30ad7697f8f9e5290b2abb6eb25 \ + --hash=sha256:b007d8fe7ee73b72c937dbafcc1dc9de244ad04c94333f4c7dfa208c6388f669 \ + --hash=sha256:b14588df54bcbc92da4f85bb3eba966f8128ad2dc2804775b5ebc1a65aab44ca \ + --hash=sha256:b14c95b38cefdcaa86c9234e926e316fe12f2aae86bcf6d91ad0acb771be7dd1 \ + --hash=sha256:b38c275f30969fdb5e874f694af278b5996396912c9ed0330632e81807377d02 \ + --hash=sha256:b593485a58e6985b4e14389a4503c0ea14309ed5875cecf3b3cb8cce608bd315 \ + --hash=sha256:babc29b143bb6ba35d2e485352feee006318c8c24292998e742c2d3bbe7b00a2 \ + --hash=sha256:bbc71437302a2cb025704c80ef721c26d27cc37f0b37fcb2ee70fd456f05f1fd \ + --hash=sha256:bc7d657e59500a54ef28e392ecc8a078aef704a8336eb6065a467ea15eecc779 \ + --hash=sha256:bd2c74cf81bda2a13f1c77245a5b24987505e292731adb3c6b1d945cd9006981 \ + --hash=sha256:becebcd0107bce9771b4fbdaf2630020aea2eeacf2263ee5f47559c5248ad8f1 \ + --hash=sha256:bed5a14340fa65de61f60d92617e9431b361f2cb82e655520029e0bd7a03d68b \ + --hash=sha256:c6560234b5eee2eda62329a25d7a28ac612b1a2de5b8f5d4eed3f06223d56354 \ + --hash=sha256:cb24a349c16cd3b084a2c2c23a4c5c4f606740d451159e2dd160b3a27a5ba1bf \ + --hash=sha256:d12eb332123b6789e853ad7123f8d7a13e1d0361d507b292c6ba6ef0e1ffba39 \ + --hash=sha256:d4c3e3d7241f317957e03c4b915f90dbbbfa7570a87bffa8634138755d12b4db \ + --hash=sha256:d54e58f18148b5ac4386c77a9aa891351903ada3814a87d476583d9d0f9228bb \ + --hash=sha256:d712d547049de46635da1fb4ebfa705f626d165bade0387f568252d719e808f9 \ + --hash=sha256:d75a49543e869e7798400f9509cf90ff0c9feeba6a903df62b7f2dfe133bac7e \ + --hash=sha256:dd1521d73ed6e227c6aa23ba973495f22d8f340d5b1023771b756c7f4b9883a0 \ + --hash=sha256:e4bbf559b68390a545ce573c89f7de9b99ef69fc7e754f7c265774e26ff95a8e \ + --hash=sha256:e4ff19b7a43b81d93966b961dbc69782ea84f4d6501cd2f9b6d0e662b3d64c2a \ + --hash=sha256:e539e4abac01774cb315d9aeedba155459e6b3ece725fcc06a8a1a061a7bb7aa \ + --hash=sha256:eae41b8a4b113af20dcdf73ea16c489da59f8aaf552a6a1f5811ed90bc254365 \ + --hash=sha256:eb686cbca9d319d9abef488e45286c5e616189ed895859f1f0f04c01f541a418 \ + --hash=sha256:ec0444e1f198eba41ce69d0e75cf18042c38f348b9ca741d263e60793a4f3cbf \ + --hash=sha256:ec63d233defb2b89af03d2bfb27c1ad0409f23f923d402ba20f4d9a8bc94fe5d \ + --hash=sha256:ee0320d563f6e6b94965f32abe321b62354072b12736c49b7eb0ab398a80878e \ + --hash=sha256:f011b86eed5a4576712b89df31f36e0f1e3903dbf6b4497a0b0e224c67a9a9c6 \ + --hash=sha256:f33e61bef3b8f22986f4f5f9ca1ec547b953175d3f5bf85abcf54695394f4058 \ + --hash=sha256:f7609bd99095ca3a660c8b2061c45daab6ac1f1b277afb3dce5aeef20e9295db \ + --hash=sha256:f77e29ce051fcac3a001fc40262d456c315a27d93f5922e4f525c308479fc557 \ + --hash=sha256:f833a121f11380ad6f6970336b28e0e72fb5cd1219f71d5adefbc0d09cdd75bc \ + --hash=sha256:f8b1fa9526a3e2de5422b9775fa4e98a7abb703e5f38d408540a52195c479eb5 \ + --hash=sha256:f9bdf71a9c12907b417370f9d52924e6ce4f1d65ea437cce564a6858c5ba482e \ + --hash=sha256:fc1fd7229800ec7a33373df09762d146c67836e56648243fb1d87d205147fce6 \ + --hash=sha256:ff91934c38306c82321b56576d4dab3583fc7dd83b37d09d2906b0648c91538c # via # barman # python-snappy -cryptography==50.0.0 \ - --hash=sha256:031e2d5dd4bb9caa3ca9c82e5a197fd8ae680232cee62603d1a813f3f07e3d03 \ - --hash=sha256:06a32a980526a6ab9a4b9bf8f7385800791e2bb960903cb6b530e4817509a3b7 \ - --hash=sha256:07479a1cb08219ab719147e742e76090c9c773321959bb94946fffdd397a6437 \ - --hash=sha256:07949c449a1abcf60d1ee6e88956d89404c7df3c8258f46589e912988e551987 \ - --hash=sha256:105110f43a471dbd0060b9c9516cb8a6a79233631a04cc2ba16f28323ac6e025 \ - --hash=sha256:11b74db56cdbe3cdee6e3f6982ecb70334fa10dce99ed58bf7894aaaa3b2a037 \ - --hash=sha256:12b9c6996425c76ea6c457ace4f3073e715b8c545add07cd1a8f3a4f90691269 \ - --hash=sha256:1489e263a8048bb8b6a8bac662eb2d402ea5d2b7b4699b72f385f1e2772db105 \ - --hash=sha256:19736989797678c6af1e55cd49055cdbcb55d8f6b5583ac5335f933aba9101dc \ - --hash=sha256:1b4a266766514614f8aa60416e71f2fc6e575d36e7bdc90f644fadb2f4b75b95 \ - --hash=sha256:2a8183b489dc1f7f80f135780fadc1108f14b31b8a40411c7a5b17425f65f28b \ - --hash=sha256:37fdb0d0111f1e2ff07139dfb79f1b49531f8e213c46f1163dd7642979b58c47 \ - --hash=sha256:3f5735ffe4996d28b809371756219f5354864902a3b9e7c0b9ee87041209fc9c \ - --hash=sha256:49e7d93abdbd2990caced757e5fade25302f719c3c8fb6e6fff2dde98999fc41 \ - --hash=sha256:5e34edd123674534acd70147f0ca331eaa2c74e6325fb2028c886aa26ba0b68c \ - --hash=sha256:62598a8a57f815db4c6259a4e97d857dab56697e7de8e8ab02352ab74da1995d \ - --hash=sha256:65c2c3add92b45fd0709db8594536aea39c2a67af0e27ffcf049c498501140b7 \ - --hash=sha256:6ba6a53445bd3cfa809ef3ef5f1589aa6ba08784a1d962bf47d0940e871dab1c \ - --hash=sha256:6e7d61120573a7f2cd94cc095f9e81f6967c61ccdf194285aa143ecec8e0b708 \ - --hash=sha256:7cec5b856506da6defb290f30c9ee687d5f5e8cb0bd3f6459dde43b0b4fa40ef \ - --hash=sha256:80b63928fa35083b33966ce1efb70e5b9607181e49dcd1c22c8c005e319f667f \ - --hash=sha256:82148ec5bddac30b51a5b3c1945075f896fa022cb93f8e4a01e9f6ee95292c5f \ - --hash=sha256:828743d939e9629bc267b8e2d08d8bb67cd4319c771a33d4b18b22dd8fb7440a \ - --hash=sha256:8d89f3976b10b4ce31118de72329025f70d2c6ead14a8217c5514dd2c6d5a78f \ - --hash=sha256:8eb5e1172eb569ea8a872796576e6a67c276351728b6455d5beb01242b027c6a \ - --hash=sha256:900131fafd8aead39ac7dd3a7e833be754c17a95cfd91221636949fe4eb0aa8a \ - --hash=sha256:910d11e1a385c654bf738bf3e6b8e6ed5de0f5610fcae2be9e5b398d8081d20e \ - --hash=sha256:910e1d2668e7de9648f2bcee30e180db2a6b15c30f887d7c4c93ddf96e3992e3 \ - --hash=sha256:9aa87839c383bdbab6ef865787a1fb877af8dd03464c4400322726feaaadfc6d \ - --hash=sha256:a1b30560f2acc95aa8b2e06e716a13dbfc97314747b80d9707e307f77b40d6b3 \ - --hash=sha256:a91296cb61e8df6f86d0c19cc4068228da256bf59bf86049fbd821084565327f \ - --hash=sha256:b42a28c1844fd9de8f3f7d540e36b66f3a9c83fceac7170ebc7a6a19edd9dcae \ - --hash=sha256:bd1c592e4d5974f0d08d4888e432157adba757c66da0246918e43677fafa2d30 \ - --hash=sha256:c87f62a3d3b9888ed0fdde100ec06aa61ca9cd44bad9057d1dff9a516b5f5bb9 \ - --hash=sha256:c99c003e088647b8a5b7c145d6f78c335f6348332b62e142d411c4b63d1460b9 \ - --hash=sha256:ccdc4a71a4dabae05de219404f9f4abc38e3b58422177ff93d0da05967dafa07 \ - --hash=sha256:d24fead1d4d076e1bfb006dcec392074a3cd8d7b4fc8a595aa64073b2b7a96ba \ - --hash=sha256:d58c3db7cd6eed54e6c06744db55456b65ebd7492ddeae9c1e93cfca7aa857d3 \ - --hash=sha256:d764dcf130c428ef66786f866dd750f53182bc608813489915e9fc106bb0c82f \ - --hash=sha256:df2a58a472f332225671c35b0a830208b86d004f82baa8530fa3782c85646533 \ - --hash=sha256:e722f16708d854fe924790e051061f6704a472c3bac347b6fd88033ea8dd0dc5 \ - --hash=sha256:ecfed7367f965a0328cfbdd70da860f15441f002f613185668c6e6ebf5a0ac11 \ - --hash=sha256:eeac2acb5a20ed25e0ad6d1df9891a520b78b404266b6d11778f25d5d691a6c9 \ - --hash=sha256:f59e38625469987d7ef6d495323c55e7db6c212eaf6112267e0d3b565a2e9c9f \ - --hash=sha256:f89831ef99dd7dd169ab06d63a831adb9e20a87aac6d380266bbda5823349169 \ - --hash=sha256:fd9192b7b70c573d7f214eb1ae35e00d359f6f5e4b27c7e21e30de1fc6204645 +cryptography==50.0.1 \ + --hash=sha256:01f41478cf33fc605a6a089cd56d28b45c6c0b45a1928b61797f2621a04bac71 \ + --hash=sha256:05ba322c4da95b262a212c345af888ef2c37c88c0509756ea00a0e6d68850f23 \ + --hash=sha256:16c5ecd954b3330ebfb6605eca4fd952da8bef376551d5cc264534e3770a9ee6 \ + --hash=sha256:2a93d05e34d5f67fba6f891fe85d929999baa7195e853923ea6d7576c9e68c5e \ + --hash=sha256:2b34d76a652ea2b6faf777c35df230c5637842cd904e04f16230c3f9f03e4361 \ + --hash=sha256:2ebbfb0f1fed745e91796e3e1080a1440423fdae8ece1b995a1d80883a409054 \ + --hash=sha256:30a125032e5642a21ff816e021152bd4e7e94f03eff3f4b7fca41cd22bc3110f \ + --hash=sha256:330fbb252391c596f1ae42c5754449dc924e6ad012dca8efe0d703f9f2d12ec6 \ + --hash=sha256:359e62deae718bce96170e223fdcb6357e4fbd3bb7a3a75f4430763532560e49 \ + --hash=sha256:407fe2b6db00939c05c0e945e9914238f2f0a430974839429dafc82b1ee6bee5 \ + --hash=sha256:42be3bb70596b3abe4ac097b75be223e8b3ab614a0e5de068e3dcc54d71d6149 \ + --hash=sha256:4c4188f7c0cf655be5c06342b817ed0f9595b69ffa2b12026e5353eed29dea88 \ + --hash=sha256:51593d180cf6d179bde5c5d065bed81386b1f381656ae7d042b7ffc87a9895ad \ + --hash=sha256:51afcfceb15597cf2635068e4ac9a56b2abde622edde17f37d85fd7b5306497a \ + --hash=sha256:53e279950892dc102c6b4e52af03ae5ea92fac572a1ddab78ca73a997f62b69f \ + --hash=sha256:55d16b1ef3ee0958d893a977b19777887e546c9954ea81b200c3301a864013f2 \ + --hash=sha256:5dd9bda1c12b4162f6ff568eeb5e0ff956c28d14406e875cfe8a63a2d414ff20 \ + --hash=sha256:5fe002589592ed749ce77fe0695fcbd3500dd61d7d6db5858a7544c612fa8e45 \ + --hash=sha256:5fe939deeb161024a6be98229c953b6591fef1f41214497a78fe793a244c017f \ + --hash=sha256:693c99b49bd37d0d096e4334c10232c77248c415b98d35236094cdf96d57258b \ + --hash=sha256:76de83fbd91ac49c0feaaa983d0748fd7a53176afac5fb3bf7478d244f0eb527 \ + --hash=sha256:79bf008d1f9af6071c797ad133e39915dfee7614f18f18f4db9072eb715064a3 \ + --hash=sha256:804728ce710890870f3aaa344b2e161172d258d768ac139d02cfd9092d0d94e6 \ + --hash=sha256:8921d58f426793c5f1b47f0b59575780de9a095214958d0eb37d909593db8367 \ + --hash=sha256:8df2de9102026855887e4587084f6eabd80ed0f345b8ad8a7ac27ab9bf4723e0 \ + --hash=sha256:9cb3cb952cf5a8abd50c782a98a89d71699715e802fe349704b47f2425b42a94 \ + --hash=sha256:9dde0a357190eb3b1da1bb9ab750e9c85cba82ca5977aa0836cbb94e92611239 \ + --hash=sha256:9ebcdd5519be9b652a46f507817a74591774fc3d6923ac364e4dfa64e36b291b \ + --hash=sha256:a0b1a59e3a089064a0ec309e9428c8e3ae4e161419d20ac33600767e83fc658a \ + --hash=sha256:a255449073358275b64b67d3f595f268bbef70e72b6edb65e0c70c735bf739c9 \ + --hash=sha256:a8f40ea47330e71b594a7e246898f93177c259490c63183dbaf9e571d71ed9a5 \ + --hash=sha256:ac02b07824d4d1001bd4367599f839c19cb171924c796e52c23508ac14c2c0cc \ + --hash=sha256:aed8db4f6d71c51efb89530e12d9464e7bf2923d46c3205dc794a2a93f8c0648 \ + --hash=sha256:b8f852c65863251b9e3a1b8c150ce21e59b522dbb6a7d4bc80e680d38388e986 \ + --hash=sha256:be224a65493ec5b74a158ff22a5522ce4a5ca1e543c647a3a4730d4a09e5f959 \ + --hash=sha256:ca83d00d9e69cd5eb63f2e69c3a5a59e0cecae5ae14c6ae0b35830fe3b37bad0 \ + --hash=sha256:cbf74a81765ee67413503ca6e26dcc4f6f5a519822436cc0a1b97aab6c1b8a17 \ + --hash=sha256:d63ae8f6481fec907ac0f588eee8a90aefde112c633131fe540e5711ddbb5a4e \ + --hash=sha256:e22dfed744bd4002e909464cb23d2f0b05c6f3113a79ef2e9864a53db737c733 \ + --hash=sha256:e2ca8fd1b6b4b82a1c4cb02841d0837e3c12336c2e24b520ab8ab3b969733d8f \ + --hash=sha256:e74591e283fe6eb956416c929eb58262a719fe0311fd9054c62c3350ed8760d8 \ + --hash=sha256:f74455bb086a85d5e81246412602aaa97ed095e504cd40dd261ef50be42205bf \ + --hash=sha256:fb4b9672d389c738b175c4166e78310f8a70358886aacd9173ee03a85ffdc671 \ + --hash=sha256:fc3ed7ebd2a8c96f5b166de0ab9b624996bef3b07bbeb19364dfb78222c22c80 \ + --hash=sha256:fd3718b960d0b5dd213cdf03f3bcb7000e69dda0de8b956061947ff6bcff5558 \ + --hash=sha256:ff838d62ec1bfce4f9ba7fa16f4a7b554cd8d0c299e6be37502161a660c84eef # via # azure-identity # azure-storage-blob # google-auth # msal # pyjwt -google-api-core==2.33.0 \ - --hash=sha256:3a36bcc3e319783f4c97da41f6f45ea6ffcaa55848e341de16e09cb70243c2bb \ - --hash=sha256:a2e22a0c1d0f03eafff1858b38cf46f832d5902b0c052235bf0ab8402929fbdc +google-api-core==2.34.0 \ + --hash=sha256:98a779fe72de956eb1c9c2f47ff4c4432a668ece1a002ec38bed07ec2698ae59 \ + --hash=sha256:cdf9c67e7ca2402d86ccbfde5f2503fc83e3cc3f58cc78456ae96cad24a6d2de # via # google-cloud-core # google-cloud-storage -google-auth==2.56.2 \ - --hash=sha256:c8270ea95b2697b74e3d8438ae9c5b898e38b623b915c7b5c5635921e7de68a6 \ - --hash=sha256:e28f103ca8091fb7012b99c44243d7366c29863713b8e34a220c3322b7a07051 +google-auth==2.57.0 \ + --hash=sha256:180dafe015cfb62193bea26b677500fab5b9fd51a1e825ebf3ad9b182047ae59 \ + --hash=sha256:9b4f96d6a1feb5f7201231f47cfb3de08d8f176f8a61f9e461555116e95a8789 # via # google-api-core # google-cloud-core # google-cloud-storage -google-cloud-core==2.6.0 \ - --hash=sha256:6d63ac8e5eca6d9e4319d0a1e2265fadcd7f1049904378caecfa01cf52dd869e \ - --hash=sha256:e76149739f90fac1fc6757c09f47eaccb3145b54adbd7759b0f7c4b235f46c83 +google-cloud-core==2.7.0 \ + --hash=sha256:874aaf89765db87a9b911b7a2ca7c5068554868eed9e75c7766affe342a2913d \ + --hash=sha256:c18a250904cfdda021eb3ae8b8238c9f9ca272a4cbbfb5cba946b3fe3022eed1 # via google-cloud-storage -google-cloud-storage==3.13.0 \ - --hash=sha256:648af3ef8a6acc674e1359d3c920c67eb89a7a5ab66b336bd3ac43fed6b5ab84 \ - --hash=sha256:d11d8706ea1520fba0f21043bcb7897caf7015d76ce1ad9a4f60237e4d7a9f6c +google-cloud-storage==3.13.1 \ + --hash=sha256:98208de6c21e85cecd3eb44551894efff33d98365500e178867d4305854a770a \ + --hash=sha256:a80bf8cac2794808aa61c50c5f769ecbbe2d10331bacd0d69d30e59b14b346b2 # via barman google-crc32c==1.8.0 \ --hash=sha256:014a7e68d623e9a4222d663931febc3033c5c7c9730785727de2a81f87d5bab8 \ @@ -481,17 +546,17 @@ google-crc32c==1.8.0 \ # via # google-cloud-storage # google-resumable-media -google-resumable-media==2.10.0 \ - --hash=sha256:88152884bee37b2bf36a0ab81ad8c7fd12212c9803dd981d77c1b35b02d34e7c \ - --hash=sha256:e324bc9d0fdae4c52a08ae90456edc4e71ece858399e1217ac0eb3a51d6bc6ee +google-resumable-media==2.10.2 \ + --hash=sha256:1de441703cd298d75a419bfdc0066e9fc7b0a1de630df96eea8ce8f5c759358c \ + --hash=sha256:e3cedc827a4ea41e216582d74346f1fb9fceb625a8c3c53912f2ca1d663334d7 # via google-cloud-storage -googleapis-common-protos==1.75.0 \ - --hash=sha256:53a062ff3c32552fbd62c11fe23768b78e4ddf0494d5e5fd97d3f4689c75fbbd \ - --hash=sha256:961ed60399c457ceb0ee8f285a84c870aabc9c6a832b9d37bb281b5bebde43ed +googleapis-common-protos==1.75.2 \ + --hash=sha256:6b83302f554ea93a0f48409c7fc2050f954bcbcddb7e3a9c76d4a823cb22920e \ + --hash=sha256:8829a3d1e4508c5b7b9a6b9525f7fccff611f8531644579a76466c29295d4bb2 # via google-api-core -idna==3.18 \ - --hash=sha256:7f952cbe720b688055e3f87de14f5c3e5fdaa8bc3928985c4077ca689de849a2 \ - --hash=sha256:ffb385a7e039654cef1ab9ef32c6fafe283c0c0467bba1d9029738ce4a14a848 +idna==3.19 \ + --hash=sha256:5e0811a4383b21dc5838069f801c4fb62113b7447663d2530d2bd6e77b49bf15 \ + --hash=sha256:815e7be7a7806d54abb586dc943addc79e8b2ee16915059658cbeff4b1b43bf4 # via requests isodate==0.7.2 \ --hash=sha256:28009937d8031054830160fce6d409ed342816b543597cece116d966c6d99e15 \ @@ -562,9 +627,9 @@ lz4==4.4.5 \ --hash=sha256:f9b8bde9909a010c75b3aea58ec3910393b758f3c219beed67063693df854db0 \ --hash=sha256:ff1b50aeeec64df5603f17984e4b5be6166058dcf8f1e26a3da40d7a0f6ab547 # via barman -msal==1.37.0 \ - --hash=sha256:1b1672a33ee467c1d70b341bb16cafd51bb3c817147a95b93263794b03971bec \ - --hash=sha256:dd17e95a7c71bce75e8108113438ba7c4a086b3bcad4f57a8c09b7af3d753c2d +msal==1.38.0 \ + --hash=sha256:4f10ff1257bacfd1781f22e85bd2b8d43ad1b490f3b6aafd7906671cadedd464 \ + --hash=sha256:765b9b98b6aa380ee8b8f1c75636e08863edaf0a953498955bd668650dde5d49 # via # azure-identity # msal-extensions @@ -572,19 +637,19 @@ msal-extensions==1.3.1 \ --hash=sha256:96d3de4d034504e969ac5e85bae8106c8373b5c6568e4c8fa7af2eca9dbe6bca \ --hash=sha256:c5b0fd10f65ef62b5f1d62f4251d51cbcaf003fcedae8c91b040a488614be1a4 # via azure-identity -proto-plus==1.28.2 \ - --hash=sha256:26d843eb99c1e32fdf1d20ff0faae56607f7748fe774acf9ecd5cfe6c6472501 \ - --hash=sha256:b874236fcac2358f601e4330bcb76cb8b89c851303ccf4078408b3d4774d1c52 +proto-plus==1.28.4 \ + --hash=sha256:4b01341272f8a348db3f003b6143109f83ab43091019d5181b3fcdf500ab32aa \ + --hash=sha256:5ff7ecad828e032a491fcb86947801768e32237f99dd049b649965b892ae9a63 # via google-api-core -protobuf==7.35.1 \ - --hash=sha256:11d6b0ec246892d85215b0a13ca6e0233cf5284b68f0ac02646427f4ff88a799 \ - --hash=sha256:230a75ddfc2de4806e56696ce9640c1cdfdb6543b7cfce98d42a4c0a0e7bdb87 \ - --hash=sha256:24f857477359a85c0c235261b8ba905fd51b2562f4a64ca1df5473f29850cbf6 \ - --hash=sha256:353652e4efd0bca5b5fc2656abf8307ef351f0cf938c9eba09f0e09c20a25c30 \ - --hash=sha256:4bc97768d8fe4ad6743c8a19403e314511ed9f6d13205b687e52421c023ac1b9 \ - --hash=sha256:74758715c53d7158fb76caf4f0cfdacc5329a4b1bb994f865d6cf302d413a1c4 \ - --hash=sha256:b73f9489a4b8b1c9cb1f8ed951c736392592edb24b9d6819f36d2e10b171d5b4 \ - --hash=sha256:ce115a26fe0c39a2c29973d914d327e516a6455464489fe3cd1e51a1b354f81a +protobuf==7.36.0 \ + --hash=sha256:1781cc1de61249b750848029bca452c0a8b7e990080316b9bbc2518b2117b488 \ + --hash=sha256:3297e60abdff301e5f74393d87f6cc59dacab5f024a89548a6e8de1d26576b16 \ + --hash=sha256:53374d53fc29a67f7dbbf0ade47d7526a0f0137bf0f9c90e48d8a60790ef748c \ + --hash=sha256:70f5ec8eb0da81a44360c0dc0beac99a0d78071d21956a7076bae8bd2051841b \ + --hash=sha256:7326fd717bdc419162a735938d89d4032332bcc3408804012b24ff3a37086071 \ + --hash=sha256:9103532dffd80c6fab7e50c65a31007680a06eb57537d437bb1b35812c138a37 \ + --hash=sha256:bf94a5917c71058262de683669bc0a797a7669d3de71f0b36d058e3194f47b44 \ + --hash=sha256:e8e09cb0d794c6687926fa558a8a6e72aa10edb997d5ca61da0765f12a3e00ea # via # google-api-core # googleapis-common-protos From 99926b1db61b04079ac05addb0b60b3695ded635 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 27 Aug 2026 18:31:40 +0200 Subject: [PATCH 123/134] chore(deps): update amazon/aws-cli docker tag to v2.36.32 (#1070) Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- test/e2e/internal/tests/walrestore/fixtures.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/e2e/internal/tests/walrestore/fixtures.go b/test/e2e/internal/tests/walrestore/fixtures.go index 4380601..c0634ad 100644 --- a/test/e2e/internal/tests/walrestore/fixtures.go +++ b/test/e2e/internal/tests/walrestore/fixtures.go @@ -121,8 +121,8 @@ func newS3ClientDeployment(namespace string) *appsv1.Deployment { { Name: s3ClientName, // renovate: datasource=docker depName=amazon/aws-cli versioning=docker - // Version: 2.36.24 - Image: "docker.io/amazon/aws-cli@sha256:cd11f6e909d42f066a03e15f072853fcc19f033e343cb83b2d553e2082cbb5a7", + // Version: 2.36.32 + Image: "docker.io/amazon/aws-cli@sha256:f630107e3eadb6479fa441631bbf50d15cf354a6ace85b6028bf6b3e5c69c605", Command: []string{"sleep", "infinity"}, Env: []corev1.EnvVar{ { From ad5311efa5fc26b0b1fce55e7c09538fb438b1de Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 28 Aug 2026 10:29:19 +0200 Subject: [PATCH 124/134] chore(deps): update golangci/golangci-lint docker tag to v2.13.2 (#1088) Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Taskfile.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Taskfile.yml b/Taskfile.yml index fe8d247..9d72314 100644 --- a/Taskfile.yml +++ b/Taskfile.yml @@ -23,7 +23,7 @@ tasks: # renovate: datasource=git-refs depName=golangci-lint lookupName=https://github.com/sagikazarmark/daggerverse currentValue=main DAGGER_GOLANGCI_LINT_SHA: ff27cd50f6b4eed2e3753c520632cd6099e1ce52 # renovate: datasource=docker depName=golangci/golangci-lint versioning=semver - GOLANGCI_LINT_VERSION: v2.13.1 + GOLANGCI_LINT_VERSION: v2.13.2 cmds: - > GITHUB_REF= dagger -sc "github.com/sagikazarmark/daggerverse/golangci-lint@${DAGGER_GOLANGCI_LINT_SHA} From a95197e648263339082bb4bb7e267903e2d7d8ea Mon Sep 17 00:00:00 2001 From: dblugeon Date: Fri, 28 Aug 2026 12:29:47 +0200 Subject: [PATCH 125/134] docs(web): fix retention policy path in concepts documentation (#1059) Corrected path for retention policy in documentation. Closes #1061 Signed-off-by: dblugeon --- web/docs/concepts.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/web/docs/concepts.md b/web/docs/concepts.md index 388714a..b2f2ce6 100644 --- a/web/docs/concepts.md +++ b/web/docs/concepts.md @@ -35,7 +35,7 @@ object storage system. It allows you to configure: - **Base backup options**β€”with similar settings for compression, concurrency, and encryptionβ€”under `.spec.configuration.data` - **Retention policies** to manage the life-cycle of archived WALs and backups - via `.spec.configuration.retentionPolicy` + via `.spec.retentionPolicy` WAL files are archived in the `wals` directory, while base backups are stored as **tarballs** in the `base` directory, following the From cd71e7d5fd8ef0211e938fb2e7b37f7793b14dac Mon Sep 17 00:00:00 2001 From: Marco Nenciarini Date: Mon, 31 Aug 2026 11:14:07 +0200 Subject: [PATCH 126/134] docs(web): use active doc version for install manifest link (#1074) The install snippet always linked to the manifest of the latest released version, regardless of which versioned docs page it was rendered on. Viewing the 0.13.0 installation page therefore pointed at the 0.14.0 manifest. Build the manifest URL from the active doc version directly: each versioned page links its own release tag, and the unreleased "current" docs link the manifest built off `main` instead of a (nonexistent) release tag. --------- Signed-off-by: Marco Nenciarini Signed-off-by: Danish Co-authored-by: Danish --- web/docs/installation.mdx | 13 ++--- web/src/components/Installation/index.tsx | 49 +++++++++++++++++-- web/src/hooks/versions.ts | 36 -------------- .../version-0.13.0/installation.mdx | 13 ++--- .../version-0.14.0/installation.mdx | 13 ++--- 5 files changed, 56 insertions(+), 68 deletions(-) delete mode 100644 web/src/hooks/versions.ts diff --git a/web/docs/installation.mdx b/web/docs/installation.mdx index 027d1e8..4c1c48a 100644 --- a/web/docs/installation.mdx +++ b/web/docs/installation.mdx @@ -54,10 +54,9 @@ Both checks are required before proceeding with the installation. ## Installing the Barman Cloud Plugin -import { InstallationSnippet } from '@site/src/components/Installation'; +import { InstallationSnippet, ManifestVersion } from '@site/src/components/Installation'; -Install the plugin using `kubectl` by applying the manifest for the latest -release: +Install the plugin using `kubectl` by applying the manifest for : @@ -100,10 +99,6 @@ This confirms that the plugin is deployed and ready to use. ## Testing the latest development snapshot -You can also test the latest development snapshot of the plugin with the -following command: +import { DevSnapshotSection } from '@site/src/components/Installation'; -```sh -kubectl apply -f \ - https://raw.githubusercontent.com/cloudnative-pg/plugin-barman-cloud/refs/heads/main/manifest.yaml -``` + diff --git a/web/src/components/Installation/index.tsx b/web/src/components/Installation/index.tsx index 064a0ea..359bd95 100644 --- a/web/src/components/Installation/index.tsx +++ b/web/src/components/Installation/index.tsx @@ -1,16 +1,55 @@ import {ReactElement} from 'react'; import CodeBlock from '@theme/CodeBlock'; -import {useCurrentVersion} from '@site/src/hooks/versions'; +import {useActiveVersion} from '@docusaurus/plugin-content-docs/client'; -// InstallationSnippet is the kubectl incantation to install the lastest -// available version of the Barman Cloud Plugin. +// DEV_MANIFEST_URL is the URL of the manifest.yaml on the main branch of the plugin repo. +const DEV_MANIFEST_URL = + 'https://raw.githubusercontent.com/cloudnative-pg/plugin-barman-cloud/refs/heads/main/manifest.yaml'; + +// InstallationSnippet is the kubectl incantation to install the Barman +// Cloud Plugin: the manifest matching the doc version being viewed, or +// (on the unreleased "current" docs) the latest manifest on main. export function InstallationSnippet(): ReactElement { - const latest = useCurrentVersion('latestReleased'); + const activeVersion = useActiveVersion('default'); + const url = activeVersion && activeVersion.name !== 'current' + ? `https://github.com/cloudnative-pg/plugin-barman-cloud/releases/download/v${activeVersion.name}/manifest.yaml` + : DEV_MANIFEST_URL; return ( {`kubectl apply -f \\ - https://github.com/cloudnative-pg/plugin-barman-cloud/releases/download/v${latest}/manifest.yaml`} + ${url}`} ); } +// ManifestVersion names the manifest the snippet below installs: the +// release tag for a versioned docs page, or the main branch on Dev docs. +export function ManifestVersion(): ReactElement { + const activeVersion = useActiveVersion('default'); + return activeVersion && activeVersion.name !== 'current' + ? v{activeVersion.name} + : <>the latest development snapshot from the main branch; +} + +// DevSnapshotSection offers the main-branch manifest as an alternative; +// on the Dev docs the main install already is that manifest, so hide it. +export function DevSnapshotSection(): ReactElement { + const activeVersion = useActiveVersion('default'); + if (!activeVersion || activeVersion.name === 'current') { + return ( +

The install + command above already applies the latest development + snapshot from the main branch.

+ ); + } + return ( + <> +

You can also test the latest development snapshot of the plugin + with the following command:

+ + {`kubectl apply -f \\ + ${DEV_MANIFEST_URL}`} + + + ); +} diff --git a/web/src/hooks/versions.ts b/web/src/hooks/versions.ts deleted file mode 100644 index 785cc2f..0000000 --- a/web/src/hooks/versions.ts +++ /dev/null @@ -1,36 +0,0 @@ -import {useActiveVersion, useLatestVersion, useVersions} from '@docusaurus/plugin-content-docs/client'; - - -export function useCurrentVersion(fallback: 'latest' | 'latestReleased' = 'latest'): string { - switch (fallback) { - case 'latestReleased': - return useLatestReleasedVersion(); - case 'latest': { - const version = useActiveVersion('default'); - return version?.name ?? useLatestVersion('default')?.name; - } - default: - // The following line ensures that if `fallback` is not 'latest' or 'latestReleased', - // an error is thrown. This can be useful for catching unexpected states. - throw new Error(`Unhandled fallback type: ${fallback}`); - } -} - -export function useLatestReleasedVersion(): string { - const allVersions = useVersions('default'); - - // Filter out "current" to only consider versioned docs - const versionedDocs = allVersions.filter(version => version.name !== 'current'); - - // Handle the case where no versioned documents are found - if (versionedDocs.length === 0) { - return "unknown_version"; - } - - const sortedVersions = versionedDocs.sort((a, b) => { - return b.name.localeCompare(a.name, undefined, { numeric: true, sensitivity: 'base' }); - }); - - // The latest version is the first in the sorted list since versionedDocs was not empty, - return sortedVersions[0].name; -} diff --git a/web/versioned_docs/version-0.13.0/installation.mdx b/web/versioned_docs/version-0.13.0/installation.mdx index 027d1e8..4c1c48a 100644 --- a/web/versioned_docs/version-0.13.0/installation.mdx +++ b/web/versioned_docs/version-0.13.0/installation.mdx @@ -54,10 +54,9 @@ Both checks are required before proceeding with the installation. ## Installing the Barman Cloud Plugin -import { InstallationSnippet } from '@site/src/components/Installation'; +import { InstallationSnippet, ManifestVersion } from '@site/src/components/Installation'; -Install the plugin using `kubectl` by applying the manifest for the latest -release: +Install the plugin using `kubectl` by applying the manifest for : @@ -100,10 +99,6 @@ This confirms that the plugin is deployed and ready to use. ## Testing the latest development snapshot -You can also test the latest development snapshot of the plugin with the -following command: +import { DevSnapshotSection } from '@site/src/components/Installation'; -```sh -kubectl apply -f \ - https://raw.githubusercontent.com/cloudnative-pg/plugin-barman-cloud/refs/heads/main/manifest.yaml -``` + diff --git a/web/versioned_docs/version-0.14.0/installation.mdx b/web/versioned_docs/version-0.14.0/installation.mdx index 027d1e8..4c1c48a 100644 --- a/web/versioned_docs/version-0.14.0/installation.mdx +++ b/web/versioned_docs/version-0.14.0/installation.mdx @@ -54,10 +54,9 @@ Both checks are required before proceeding with the installation. ## Installing the Barman Cloud Plugin -import { InstallationSnippet } from '@site/src/components/Installation'; +import { InstallationSnippet, ManifestVersion } from '@site/src/components/Installation'; -Install the plugin using `kubectl` by applying the manifest for the latest -release: +Install the plugin using `kubectl` by applying the manifest for : @@ -100,10 +99,6 @@ This confirms that the plugin is deployed and ready to use. ## Testing the latest development snapshot -You can also test the latest development snapshot of the plugin with the -following command: +import { DevSnapshotSection } from '@site/src/components/Installation'; -```sh -kubectl apply -f \ - https://raw.githubusercontent.com/cloudnative-pg/plugin-barman-cloud/refs/heads/main/manifest.yaml -``` + From e7905b9da9521f72be748dc6d977a67c9ddc4d17 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 1 Sep 2026 09:31:43 +0200 Subject: [PATCH 127/134] chore(deps): update dependency serialize-javascript to v7.1.1 (#1040) Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- web/yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/web/yarn.lock b/web/yarn.lock index 52c219f..2934139 100644 --- a/web/yarn.lock +++ b/web/yarn.lock @@ -8446,9 +8446,9 @@ send@~0.19.0, send@~0.19.1: statuses "~2.0.2" serialize-javascript@>=7.0.5, serialize-javascript@^6.0.0, serialize-javascript@^6.0.1: - version "7.1.0" - resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-7.1.0.tgz#9e462c5c6dec5dbc8b55d90c52a4ad6aff985b9f" - integrity sha512-RNEqWOyhhUQYN9V1GfHwu9AR/g+NTciH6Z5u3/no6X3/w+04J2lVDL+svFQVXgXrEGBMG2puMVN3gq2SNGuTGw== + version "7.1.1" + resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-7.1.1.tgz#c3b0a7ac13df6cf2fcda71cbb142ba9392a710b9" + integrity sha512-k3CMsaIvvdSwm8oLB4MXSl0wH2/cwlH7xGcnRd2DaeRmBkbzYmyT8j0tsX60DwD1eRwHTpNpH8ljKu9oUT1MeQ== serve-handler@^6.1.7: version "6.1.7" From 3958ee480531f08cfab3958a759186dd7f90480d Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 1 Sep 2026 09:46:28 +0200 Subject: [PATCH 128/134] chore(deps): lock file maintenance (#1089) Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- web/yarn.lock | 160 +++++++++++++++++++++++++------------------------- 1 file changed, 80 insertions(+), 80 deletions(-) diff --git a/web/yarn.lock b/web/yarn.lock index 2934139..9a8925e 100644 --- a/web/yarn.lock +++ b/web/yarn.lock @@ -2099,9 +2099,9 @@ "@jridgewell/trace-mapping" "^0.3.25" "@jridgewell/sourcemap-codec@^1.4.14", "@jridgewell/sourcemap-codec@^1.5.0": - version "1.5.5" - resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz#6912b00d2c631c0d15ce1a7ab57cd657f2a8f8ba" - integrity sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og== + version "1.6.0" + resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.6.0.tgz#f4c663e862f06dc98ca4d453862c46902789a18d" + integrity sha512-T7jf+5zgsZHwNJ4lvQ7/aezbyk0nNX+zJVWpmHA7VYsEx7a7qr5Rg5IbtJFqkgze5Y2sruq1RUY8Q837Od7iFw== "@jridgewell/trace-mapping@^0.3.18", "@jridgewell/trace-mapping@^0.3.24", "@jridgewell/trace-mapping@^0.3.25", "@jridgewell/trace-mapping@^0.3.28", "@jridgewell/trace-mapping@^0.3.31": version "0.3.31" @@ -2141,75 +2141,75 @@ resolved "https://registry.yarnpkg.com/@jsonjoy.com/codegen/-/codegen-1.0.0.tgz#5c23f796c47675f166d23b948cdb889184b93207" integrity sha512-E8Oy+08cmCf0EK/NMxpaJZmOxPqM+6iSe2S4nlSBrPZOORoDJILxtbSUEDKQyTamm/BVAhIGllOBNU79/dwf0g== -"@jsonjoy.com/fs-core@4.68.1": - version "4.68.1" - resolved "https://registry.yarnpkg.com/@jsonjoy.com/fs-core/-/fs-core-4.68.1.tgz#15fed282af2a8efbd1a335a83ae1bd3507fa0237" - integrity sha512-V5oZ4Gt9WJKyQef0n9cAd0N9qjSkIBm3E4MYsgNIWBk5aINCDPKxMPo1i29rBxqiT4Ixf1epklqV9VJMKIxwlw== +"@jsonjoy.com/fs-core@4.68.2": + version "4.68.2" + resolved "https://registry.yarnpkg.com/@jsonjoy.com/fs-core/-/fs-core-4.68.2.tgz#ea3e3e3e07e0d808844ba7ee908dd47ad121eddf" + integrity sha512-PoBeUNEbjyLKKwCap2z8LkkqdhdfttS4rTHCALVuP65BdF+sAoyBqHo1m+uGTRBiQWv3H7MGfr8f7lY4pDwanw== dependencies: - "@jsonjoy.com/fs-node-builtins" "4.68.1" - "@jsonjoy.com/fs-node-utils" "4.68.1" + "@jsonjoy.com/fs-node-builtins" "4.68.2" + "@jsonjoy.com/fs-node-utils" "4.68.2" thingies "^2.5.0" -"@jsonjoy.com/fs-fsa@4.68.1": - version "4.68.1" - resolved "https://registry.yarnpkg.com/@jsonjoy.com/fs-fsa/-/fs-fsa-4.68.1.tgz#009ebc90396622d37df984691fbe8bad51fdedea" - integrity sha512-HCG72UioncuO7Gw09XNVG+S85e3cq2hrUC/mexBrsWsa3mI7eePkkqWie3uVYbtsb64OR9YGQs5SqaufDRYBcg== +"@jsonjoy.com/fs-fsa@4.68.2": + version "4.68.2" + resolved "https://registry.yarnpkg.com/@jsonjoy.com/fs-fsa/-/fs-fsa-4.68.2.tgz#01d59e3bedb3cfe4b32334abbb1004a75b481a76" + integrity sha512-h6eGXlLGGMyPfNliDQrbuHKTB9Z29ksCLjreAmdBqrDOBdfrTrHssi+b9WLfrF+J2KzAbIt9OMjJu6AEpTnYkg== dependencies: - "@jsonjoy.com/fs-core" "4.68.1" - "@jsonjoy.com/fs-node-builtins" "4.68.1" - "@jsonjoy.com/fs-node-utils" "4.68.1" + "@jsonjoy.com/fs-core" "4.68.2" + "@jsonjoy.com/fs-node-builtins" "4.68.2" + "@jsonjoy.com/fs-node-utils" "4.68.2" thingies "^2.5.0" -"@jsonjoy.com/fs-node-builtins@4.68.1": - version "4.68.1" - resolved "https://registry.yarnpkg.com/@jsonjoy.com/fs-node-builtins/-/fs-node-builtins-4.68.1.tgz#3c4ee9877e12d76eab8611663bea127d0e261fc5" - integrity sha512-HK1BTksysokNZxNspqDH0yPaqN9YgR/AYIlYiIaU2Ys4BOk5CdybI7r6BgiZuiiPiV8n4sK/kZdice7Znpy2Kw== +"@jsonjoy.com/fs-node-builtins@4.68.2": + version "4.68.2" + resolved "https://registry.yarnpkg.com/@jsonjoy.com/fs-node-builtins/-/fs-node-builtins-4.68.2.tgz#ef82d558a6894b54537857ba153daa38a5326a05" + integrity sha512-V8WzQsW2YIrH3RxBGY6HZisxn+dDUltHgksVRuCdPEOXEkAfXuhL/01eHFrabNu84Dn13XuLqvcQUKOYVKAUOA== -"@jsonjoy.com/fs-node-to-fsa@4.68.1": - version "4.68.1" - resolved "https://registry.yarnpkg.com/@jsonjoy.com/fs-node-to-fsa/-/fs-node-to-fsa-4.68.1.tgz#d0dab7f007f9e01dcd1e62d2e27ec0fdd0126554" - integrity sha512-lpKmU4X9e/oh8GIuAI7EXaS5QiLNM3KD15CkdhfS6PYmrGvoJqKQcyEfnLgnnaGslh/PFUMYSIZBCf2ejJGw8g== +"@jsonjoy.com/fs-node-to-fsa@4.68.2": + version "4.68.2" + resolved "https://registry.yarnpkg.com/@jsonjoy.com/fs-node-to-fsa/-/fs-node-to-fsa-4.68.2.tgz#faf01a277752868d90681f6dcb86d3e01f05a296" + integrity sha512-4O1K4w5G4oJIpKpoa3WSLG83AsQYVnGv+aUSBGOvIUph9Axm6bB1mPlvldkNg2tBx/4dkiTlZnqNrK5SQ21Wtg== dependencies: - "@jsonjoy.com/fs-fsa" "4.68.1" - "@jsonjoy.com/fs-node-builtins" "4.68.1" - "@jsonjoy.com/fs-node-utils" "4.68.1" + "@jsonjoy.com/fs-fsa" "4.68.2" + "@jsonjoy.com/fs-node-builtins" "4.68.2" + "@jsonjoy.com/fs-node-utils" "4.68.2" -"@jsonjoy.com/fs-node-utils@4.68.1": - version "4.68.1" - resolved "https://registry.yarnpkg.com/@jsonjoy.com/fs-node-utils/-/fs-node-utils-4.68.1.tgz#25fa70c1c11986eef75c1e6c52caea9fe2e69778" - integrity sha512-/GxfW1DWm9SCdkfbvqevLO/P5duobQfmKkHXxdMIDbcZMQeAgooAstIfZhkXpATzq9QbCQsnoWFM/dGHdZfndw== +"@jsonjoy.com/fs-node-utils@4.68.2": + version "4.68.2" + resolved "https://registry.yarnpkg.com/@jsonjoy.com/fs-node-utils/-/fs-node-utils-4.68.2.tgz#78311a84df4e4edc51f8e41fc042d3eed21cb0d4" + integrity sha512-CxFwyG9fJr7dAKAd1uanNRNrRMtDDqbYJA8do53+M4LY7SxcBEEmMjC1zi9MOsBlVLHTXvA7OP9+n639UqtIcw== dependencies: - "@jsonjoy.com/fs-node-builtins" "4.68.1" + "@jsonjoy.com/fs-node-builtins" "4.68.2" glob-to-regex.js "^1.0.1" -"@jsonjoy.com/fs-node@4.68.1": - version "4.68.1" - resolved "https://registry.yarnpkg.com/@jsonjoy.com/fs-node/-/fs-node-4.68.1.tgz#0ca716e6c3ef5ed8887fbd4b4557094f99293d19" - integrity sha512-R5D9mWtqdURzcOWj1vdXr3APCwX0xchtFT+kmW7fXLNDifWdDrnh26jSID8pdnUfFBxTyfHtFtTL/NWKzIH7kQ== +"@jsonjoy.com/fs-node@4.68.2": + version "4.68.2" + resolved "https://registry.yarnpkg.com/@jsonjoy.com/fs-node/-/fs-node-4.68.2.tgz#166b641f7c810e12cbf92c483e9c7084123ed669" + integrity sha512-Kpj519Qk4OXG4+mZ8vTf9BEflliJrPueIDEVcbx8tAOufMJJ8IxR0WwdbcEvJol2KQog3PJjtALXVclorE+xbQ== dependencies: - "@jsonjoy.com/fs-core" "4.68.1" - "@jsonjoy.com/fs-node-builtins" "4.68.1" - "@jsonjoy.com/fs-node-utils" "4.68.1" - "@jsonjoy.com/fs-print" "4.68.1" - "@jsonjoy.com/fs-snapshot" "4.68.1" + "@jsonjoy.com/fs-core" "4.68.2" + "@jsonjoy.com/fs-node-builtins" "4.68.2" + "@jsonjoy.com/fs-node-utils" "4.68.2" + "@jsonjoy.com/fs-print" "4.68.2" + "@jsonjoy.com/fs-snapshot" "4.68.2" glob-to-regex.js "^1.0.0" thingies "^2.5.0" -"@jsonjoy.com/fs-print@4.68.1": - version "4.68.1" - resolved "https://registry.yarnpkg.com/@jsonjoy.com/fs-print/-/fs-print-4.68.1.tgz#bd830f90764155fb131320624248d33e720d6130" - integrity sha512-oGeZOGPYKK9v1CgeVeEDsLomH1lCnslSpqUN5GmPzrmAVGQlsmsdcXNA2O4lV8Y4xkuSuynx2ITBkUHJVaTbow== +"@jsonjoy.com/fs-print@4.68.2": + version "4.68.2" + resolved "https://registry.yarnpkg.com/@jsonjoy.com/fs-print/-/fs-print-4.68.2.tgz#1562c2481393359644e2840c25a5082274378f39" + integrity sha512-cBABQmZJXig6bahwNka3+yPNGUF1GeMWbR76ZM1N2ajgCd+S+twZigCoe9+0ueZmkhM9xd2a7688Gy/ch7T+2w== dependencies: - "@jsonjoy.com/fs-node-utils" "4.68.1" + "@jsonjoy.com/fs-node-utils" "4.68.2" tree-dump "^1.1.0" -"@jsonjoy.com/fs-snapshot@4.68.1": - version "4.68.1" - resolved "https://registry.yarnpkg.com/@jsonjoy.com/fs-snapshot/-/fs-snapshot-4.68.1.tgz#672d82cb65dad18c3a1fcf7d22254d037e6a794a" - integrity sha512-XZfP0FDZN32bbc4t2bZN2qRrYHg5AktJnzk22HRoKGK4BprrbNRH2k5ceSNS/kupKYcofCs+O841+xaAbjnxwQ== +"@jsonjoy.com/fs-snapshot@4.68.2": + version "4.68.2" + resolved "https://registry.yarnpkg.com/@jsonjoy.com/fs-snapshot/-/fs-snapshot-4.68.2.tgz#6f1b2e5aa6827a1075f82162055ca8bedee0fe58" + integrity sha512-Aix7+NM38LzvewM0T3PICSgFdF5BVCtVgsjNsrlDPGc9hiMgJzReTDDl2/elgl0A9USMl3QP27x5WwxZSOtrfw== dependencies: "@jsonjoy.com/buffers" "^17.65.0" - "@jsonjoy.com/fs-node-utils" "4.68.1" + "@jsonjoy.com/fs-node-utils" "4.68.2" "@jsonjoy.com/json-pack" "^17.65.0" "@jsonjoy.com/util" "^17.65.0" @@ -3564,9 +3564,9 @@ balanced-match@^1.0.0: integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== baseline-browser-mapping@^2.11.12: - version "2.11.19" - resolved "https://registry.yarnpkg.com/baseline-browser-mapping/-/baseline-browser-mapping-2.11.19.tgz#4711abac48b88ccb56b5817e86f1b3a9a0764276" - integrity sha512-Grytf1xOxOEMTGRwx6rLGKkTabd4vMg3VrKdj/7joCmV0qgh4QwMMO6xh34YEXQqirAuUdgQGa5orJQQ+69RBw== + version "2.11.20" + resolved "https://registry.yarnpkg.com/baseline-browser-mapping/-/baseline-browser-mapping-2.11.20.tgz#26078c7a4b08299656ea7ddceaebec955dc44303" + integrity sha512-H0ulySigv6icDJ1F7SjtdCD6PrhTpdYCmP0CactWy1+ekh0AFd0o1Wn5T8b+hnTmdBx19u9yhL6wvCylXMY7zw== batch@0.6.1: version "0.6.1" @@ -4241,9 +4241,9 @@ css-what@^6.0.1, css-what@^6.1.0: integrity sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA== cssdb@^8.6.0: - version "8.10.0" - resolved "https://registry.yarnpkg.com/cssdb/-/cssdb-8.10.0.tgz#fdb9cc7af72c81839265811ad8ca4e0a4db919c1" - integrity sha512-+JWEEjjoqkPY7iGHps3SaCT2w67Zpaj9zHvhCJ2iPBavKHwgtOOD2YEbZSCU8VO2uVGpKdYjVz+j6bhkNSjZ0g== + version "8.11.0" + resolved "https://registry.yarnpkg.com/cssdb/-/cssdb-8.11.0.tgz#e03c9cdc9c5e99d8cddf64a917bfc427b20c143a" + integrity sha512-VzY/8kcK5M8oCVr/cwh24J8XVlCOITpmzCizKBC28o7Z1s23MMojXoJ3q7a+TQQoMKvxC3YlG0Z9yU10kJF1uQ== cssesc@^3.0.0: version "3.0.0" @@ -4568,9 +4568,9 @@ ee-first@1.1.1: integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== electron-to-chromium@^1.5.402: - version "1.5.415" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.415.tgz#edd7356bfb4752a12c8293f8e38a00778b13bbb4" - integrity sha512-958V+Kbhtgz+SxXeEVKBjrlKRBIDAYvUJfwhjxMZ5S6ut9jAl7l9ZKBkBrvjyjZE36PabLUo2L8kEeV5O4vgJg== + version "1.5.418" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.418.tgz#40ccbf6d572447663041611e05924b53bc9a0331" + integrity sha512-UzS26r3AEbG5wSoGVpJKqwHIU9zwQN7LHdVIThDrJpS0I5KdlXFMEb8543fhc9dVnIIAST6ar8rhwa00AL5MlA== emoji-regex@^8.0.0: version "8.0.0" @@ -4897,9 +4897,9 @@ fast-uri@^3.0.1: integrity sha512-7Ical1vFEMr0onbVzEDIreM22I4khW+fzyQPwvAFWBp1iwdshSZRsL4jjRvPG9JP1uiqMHRto+YU6R2/CzDz5Q== fastq@^1.6.0: - version "1.20.1" - resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.20.1.tgz#ca750a10dc925bc8b18839fd203e3ef4b3ced675" - integrity sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw== + version "1.20.3" + resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.20.3.tgz#7ab8731e647b56abcfeee997dae333ca3ee1d04d" + integrity sha512-XKv5nnLs6nLF71NgiKJLIZFLkPyIEuOselLG7ujZnGrRfQK8HpvY+WqKhAJUAdLomwVHErVS4LfxFlPq0/FTAw== dependencies: reusify "^1.0.4" @@ -6281,18 +6281,18 @@ media-typer@0.3.0: integrity sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ== memfs@^4.43.1: - version "4.68.1" - resolved "https://registry.yarnpkg.com/memfs/-/memfs-4.68.1.tgz#e42fa69c873305a9cd0b28a8d230b96efacd8b5d" - integrity sha512-OD+IDRUvIxu3QHL+nFm9gdyugInD27FDJ+sl4B5QgomPHXMlbw+GP918P8VNKu2FkNlVeqBkpzkwROpamVifRw== + version "4.68.2" + resolved "https://registry.yarnpkg.com/memfs/-/memfs-4.68.2.tgz#26aeb07f3774ccf79bf9d79483ea3241e1383254" + integrity sha512-Un1ElEBoIdPI9kg0sm3LebVEuEViodfIvlaG8Z1MFXa7ZnR9vWuPKUo3dt/vuWY2ivc05l76B5QOjdgCzAzmGw== dependencies: - "@jsonjoy.com/fs-core" "4.68.1" - "@jsonjoy.com/fs-fsa" "4.68.1" - "@jsonjoy.com/fs-node" "4.68.1" - "@jsonjoy.com/fs-node-builtins" "4.68.1" - "@jsonjoy.com/fs-node-to-fsa" "4.68.1" - "@jsonjoy.com/fs-node-utils" "4.68.1" - "@jsonjoy.com/fs-print" "4.68.1" - "@jsonjoy.com/fs-snapshot" "4.68.1" + "@jsonjoy.com/fs-core" "4.68.2" + "@jsonjoy.com/fs-fsa" "4.68.2" + "@jsonjoy.com/fs-node" "4.68.2" + "@jsonjoy.com/fs-node-builtins" "4.68.2" + "@jsonjoy.com/fs-node-to-fsa" "4.68.2" + "@jsonjoy.com/fs-node-utils" "4.68.2" + "@jsonjoy.com/fs-print" "4.68.2" + "@jsonjoy.com/fs-snapshot" "4.68.2" "@jsonjoy.com/json-pack" "^1.11.0" "@jsonjoy.com/util" "^1.9.0" glob-to-regex.js "^1.0.1" @@ -9117,9 +9117,9 @@ unpipe@~1.0.0: integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ== update-browserslist-db@^1.3.0: - version "1.3.1" - resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.3.1.tgz#a71c28dd22f505481dbc4689087b18d933e90afd" - integrity sha512-ZZ61DsRsOnakl74HAmp3oSN4aXUmEWXf+i/yv0h7tIBfICc3VdrFErQKUUKPgu3AMsTUMbcongALEN4l6GSUrQ== + version "1.3.2" + resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.3.2.tgz#9d99fbff56c50bb11ba5fd35cece5916da595836" + integrity sha512-UQ+MSxlhRm1bzjhU+DcuXfjFO1FzNtqhK5+9Yvlp90ItDLk5vT932A0rFu619nf7RVS+Y/VeaUW1jaRDqZ8VJw== dependencies: escalade "^3.2.0" picocolors "^1.1.1" @@ -9326,9 +9326,9 @@ webpack-sources@^3.5.1: integrity sha512-jyuiGJdtvY434z5bUZrjz67v76/ePNvFZTp9Mdz29IlH4+GPsgyGjiv0fKI+M7BdkU6ADjulUcKAd3tUK3WlEw== webpack@^5.88.1, webpack@^5.95.0: - version "5.110.0" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.110.0.tgz#504e6195f3a729ed3904b24961e43f0f51e1b79b" - integrity sha512-vzGjrgzXNYRs0MBVkdF288cJt0RIJMxlZy+3pLFo6KIeZI57sBGCgjBp+yNQWf5g9c1us34rjivM1sfNLijQYg== + version "5.110.2" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.110.2.tgz#ef23a0e62fe5e1ba71b033e3505b7f005d8d5c6e" + integrity sha512-TciLrfM7zgEjqGdY851HkirDsSPQgTFsWQpl9oHqMAMYsHhEC0bKjscvjpnz+pzx10hLC8qISApGrsnrCP4UtQ== dependencies: "@types/estree" "^1.0.8" "@types/json-schema" "^7.0.15" From 1bb6bab640f5adf038c86e33c96d42765d2aa708 Mon Sep 17 00:00:00 2001 From: Tao Li Date: Wed, 2 Sep 2026 23:07:32 +0800 Subject: [PATCH 129/134] chore(deps): bump barman version to 3.20.0 (#1090) Bump barman to 3.20.0 and regenerate the sidecar's pip lockfile with the same Python 3.13 used by the sidecar's venv. barman 3.20.0 dropped fake-gcs-server support (EnterpriseDB/barman#1218), so the GCS backup/restore and replica-cluster e2e specs are skipped at runtime until that's fixed upstream. Also bundles tar into the sidecar image: barman 3.20.0's restore path now shells out to it, and the distroless base doesn't ship it. Signed-off-by: Tao Li Signed-off-by: Marco Nenciarini Co-authored-by: Marco Nenciarini --- containers/Dockerfile.sidecar | 9 +++++++-- containers/sidecar-requirements.in | 2 +- containers/sidecar-requirements.txt | 8 ++++---- test/e2e/internal/tests/backup/backup_restore.go | 6 ++++++ .../e2e/internal/tests/replicacluster/replica_cluster.go | 5 +++++ 5 files changed, 23 insertions(+), 7 deletions(-) diff --git a/containers/Dockerfile.sidecar b/containers/Dockerfile.sidecar index bc7678f..3ad1217 100644 --- a/containers/Dockerfile.sidecar +++ b/containers/Dockerfile.sidecar @@ -63,6 +63,9 @@ RUN python3 -m venv /venv && \ # already present in the distroless base image. # Distroless package list from: https://github.com/GoogleContainerTools/distroless/blob/main/base/config.bzl # and https://github.com/GoogleContainerTools/distroless/blob/main/python3/config.bzl +# libselinux1/libpcre2-8-0 are pulled in transitively by python3.13-venv's apt metadata, +# but the actual distroless base does not ship them, so they are excluded from the +# "already present" set below to force them to be bundled (tar needs them at runtime). RUN mkdir -p /dependencies /build/downloads && \ cd /build/downloads && \ DISTROLESS_PACKAGES="libc6 libssl3t64 libzstd1 zlib1g libgcc-s1 libstdc++6 \ @@ -73,10 +76,11 @@ RUN mkdir -p /dependencies /build/downloads && \ libpython3.13-stdlib python3.13-minimal python3.13-venv" && \ apt-cache depends --recurse --no-recommends --no-suggests \ --no-conflicts --no-breaks --no-replaces --no-enhances \ - $DISTROLESS_PACKAGES 2>/dev/null | grep "^\w" | sort -u > /tmp/distroless.txt && \ + $DISTROLESS_PACKAGES 2>/dev/null | grep "^\w" | sort -u | \ + grep -v -x -E 'libselinux1|libpcre2-8-0' > /tmp/distroless.txt && \ apt-cache depends --recurse --no-recommends --no-suggests \ --no-conflicts --no-breaks --no-replaces --no-enhances \ - libpq5 liblz4-1 libsnappy1v5 2>/dev/null | grep "^\w" | sort -u | \ + libpq5 liblz4-1 libsnappy1v5 tar 2>/dev/null | grep "^\w" | sort -u | \ grep -v -F -x -f /tmp/distroless.txt > /tmp/packages.txt && \ apt-get download $(cat /tmp/packages.txt) && \ for deb in *.deb; do \ @@ -102,6 +106,7 @@ LABEL summary="$SUMMARY" \ COPY --from=pythonbuilder /venv /venv COPY --from=pythonbuilder /dependencies/usr/lib /usr/lib +COPY --from=pythonbuilder /dependencies/usr/bin/tar /usr/bin/tar COPY --from=gobuilder /workspace/manager /manager # Compile all Python bytecode as root to avoid runtime compilation diff --git a/containers/sidecar-requirements.in b/containers/sidecar-requirements.in index 2f84b93..0c8b976 100644 --- a/containers/sidecar-requirements.in +++ b/containers/sidecar-requirements.in @@ -1,2 +1,2 @@ -barman[azure,cloud,google,snappy,zstandard,lz4]==3.19.1 +barman[azure,cloud,google,snappy,zstandard,lz4]==3.20.0 zipp>=3.19.1 # not directly required, pinned by Snyk to avoid a vulnerability diff --git a/containers/sidecar-requirements.txt b/containers/sidecar-requirements.txt index fcad905..3322a29 100644 --- a/containers/sidecar-requirements.txt +++ b/containers/sidecar-requirements.txt @@ -2,7 +2,7 @@ # This file is autogenerated by pip-compile with Python 3.13 # by the following command: # -# pip-compile --allow-unsafe --generate-hashes --no-index --output-file=sidecar-requirements.txt --strip-extras sidecar-requirements.in +# pip-compile --allow-unsafe --generate-hashes --output-file=sidecar-requirements.txt --strip-extras sidecar-requirements.in # azure-core==1.41.0 \ --hash=sha256:522b4011e8180b1a3dcd2024396a4e7fe9ac37fb8597db47163d230b5efe892d \ @@ -18,9 +18,9 @@ azure-storage-blob==12.30.0 \ --hash=sha256:2cd74d4d5731e5eb6b8d5c5056ee115a5e88f8fdf22517b739836fda685018be \ --hash=sha256:d415ac50b67a8da6b3ae7e9f1014b1b55cd7aafa0b8d4ca9b380568dc7360423 # via barman -barman==3.19.1 \ - --hash=sha256:0a6a9e1babf97687732d8b2a3eb79ea95d55246a5257b9433865cb6e755221c0 \ - --hash=sha256:2f71c4a1f1ba53f694cbdf838bb9906d8ba02b97d1fd3041196e8999bec7a1ee +barman==3.20.0 \ + --hash=sha256:02dd8936e62c1829c78597eefedfcab0aa820f5618da2871f38b5bc684891a54 \ + --hash=sha256:1aa92df452f39c357d6547fd0abd3885a8c243ea95002e6fc0b7f66f8e8c24d5 # via -r sidecar-requirements.in boto3==1.43.81 \ --hash=sha256:62ecf695088e06f37500d6cc49a240dc1331379bd5ae992d185fef212038ca29 \ diff --git a/test/e2e/internal/tests/backup/backup_restore.go b/test/e2e/internal/tests/backup/backup_restore.go index 09892d0..c0f9b91 100644 --- a/test/e2e/internal/tests/backup/backup_restore.go +++ b/test/e2e/internal/tests/backup/backup_restore.go @@ -56,6 +56,12 @@ var _ = Describe("Backup and restore", func() { ctx SpecContext, factory testCaseFactory, ) { + switch factory.(type) { + case *gcsBackupPluginBackupPluginRestore, *gcsBackupPluginBackupInTreeRestore, + *gcsBackupPluginInTreeBackupPluginRestore: + Skip("GCS e2e tests are disabled until https://github.com/EnterpriseDB/barman/issues/1218 is fixed") + } + testResources := factory.createBackupRestoreTestResources(namespace.Name) By("starting the ObjectStore deployment") diff --git a/test/e2e/internal/tests/replicacluster/replica_cluster.go b/test/e2e/internal/tests/replicacluster/replica_cluster.go index 8888334..e4cf598 100644 --- a/test/e2e/internal/tests/replicacluster/replica_cluster.go +++ b/test/e2e/internal/tests/replicacluster/replica_cluster.go @@ -57,6 +57,11 @@ var _ = Describe("Replica cluster", func() { ctx SpecContext, factory testCaseFactory, ) { + switch factory.(type) { + case gcsReplicaClusterFactory: + Skip("GCS e2e tests are disabled until https://github.com/EnterpriseDB/barman/issues/1218 is fixed") + } + testResources := factory.createReplicaClusterTestResources(namespace.Name) By("starting the ObjectStore deployments") From 31b25538bf6d8fadf2cd28c15b23c9c81ae22fac Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 2 Sep 2026 18:13:49 +0200 Subject: [PATCH 130/134] fix(deps): update all non-major go dependencies (#1086) Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- go.mod | 8 ++++---- go.sum | 16 ++++++++-------- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/go.mod b/go.mod index f7ad4fb..84565bc 100644 --- a/go.mod +++ b/go.mod @@ -5,13 +5,13 @@ go 1.26.4 require ( github.com/cert-manager/cert-manager v1.21.1 github.com/cloudnative-pg/api v1.30.0 - github.com/cloudnative-pg/barman-cloud v0.5.2-0.20260806065336-5aa56cd49543 + github.com/cloudnative-pg/barman-cloud v0.6.0 github.com/cloudnative-pg/cloudnative-pg v1.30.0 github.com/cloudnative-pg/cnpg-i v0.6.0 github.com/cloudnative-pg/cnpg-i-machinery v0.4.2 - github.com/cloudnative-pg/machinery v0.5.0 + github.com/cloudnative-pg/machinery v0.6.0 github.com/onsi/ginkgo/v2 v2.32.1 - github.com/onsi/gomega v1.42.1 + github.com/onsi/gomega v1.43.0 github.com/spf13/cobra v1.10.2 github.com/spf13/viper v1.21.0 google.golang.org/grpc v1.83.2 @@ -42,7 +42,7 @@ require ( github.com/fsnotify/fsnotify v1.9.0 // indirect github.com/fxamacker/cbor/v2 v2.9.2 // indirect github.com/go-errors/errors v1.5.1 // indirect - github.com/go-logr/logr v1.4.3 // indirect + github.com/go-logr/logr v1.4.4 // indirect github.com/go-logr/stdr v1.2.2 // indirect github.com/go-logr/zapr v1.3.0 // indirect github.com/go-openapi/jsonpointer v1.0.0 // indirect diff --git a/go.sum b/go.sum index 37d4531..4607e0c 100644 --- a/go.sum +++ b/go.sum @@ -20,16 +20,16 @@ github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UF github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/cloudnative-pg/api v1.30.0 h1:L8hnvV/tPEQA1xYEi41FUBFA7FUNVGju8+SlgFlDDjI= github.com/cloudnative-pg/api v1.30.0/go.mod h1:XrKBbOWObL33si0FNuwX4uHNf5JShiZyOUqd6LxbJQo= -github.com/cloudnative-pg/barman-cloud v0.5.2-0.20260806065336-5aa56cd49543 h1:QNddaYyvyw14Ky/oxeI3cBiMMg7h6J0LI8VLCaxTUCY= -github.com/cloudnative-pg/barman-cloud v0.5.2-0.20260806065336-5aa56cd49543/go.mod h1:ZQLkdpk44FW5/BGWzABTOEcV9qPbwC+rbdscg2I8mBI= +github.com/cloudnative-pg/barman-cloud v0.6.0 h1:OtBFmCDyVUAcgFa++FIoCCJwPfd5TtqK3PH6DGPcpkA= +github.com/cloudnative-pg/barman-cloud v0.6.0/go.mod h1:eqSPRGz/s8M0Mea8mkqiVQUTkoSquAhvJF49feh+Ks4= github.com/cloudnative-pg/cloudnative-pg v1.30.0 h1:fnhVq44xXx97MNiuvJsPrX1vSjYbgdyBK5MSGfdHdp0= github.com/cloudnative-pg/cloudnative-pg v1.30.0/go.mod h1:QkolwBOWZ+GvAiJt6KpDSymwkpf0K19/p4Q6MQlTM8U= github.com/cloudnative-pg/cnpg-i v0.6.0 h1:LA//DLkFOLIjU0ASOpFkydZhGir9IAIDfgSsTTX9IpU= github.com/cloudnative-pg/cnpg-i v0.6.0/go.mod h1:4kcpLAj+feMTnh0TVadXRASdVnEhBytNSm/BvktLgmI= github.com/cloudnative-pg/cnpg-i-machinery v0.4.2 h1:0reS9MtyLYINHXQ/MfxJ9jp39hhBf8e3Qdj+T5Nsq6I= github.com/cloudnative-pg/cnpg-i-machinery v0.4.2/go.mod h1:gvrKabgxXq0zGthXGucemDdsxakLEQDMxn43M4HLW30= -github.com/cloudnative-pg/machinery v0.5.0 h1:hhTnkzn+AiN3NmbjCQ6RXj5rfqV3K6arzq6kdXAzcnQ= -github.com/cloudnative-pg/machinery v0.5.0/go.mod h1:uuFjqBUjWn0a9uvAk1ixTSzPM0PrjaS+QiKLOIBqLm4= +github.com/cloudnative-pg/machinery v0.6.0 h1:faHxS1AK75XkzppOcAKdOexKmzX7iGK6jX2b9itssb4= +github.com/cloudnative-pg/machinery v0.6.0/go.mod h1:wyw9E/0uYGAixp9+0PLsJ6qHiEiFKDkeXb9O2dRi2w0= github.com/cpuguy83/go-md2man/v2 v2.0.6/go.mod h1:oOW0eioCTA6cOiMLiUPZOpcVxMig6NIQQ7OS05n1F4g= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= @@ -60,8 +60,8 @@ github.com/go-errors/errors v1.5.1/go.mod h1:sIVyrIiJhuEF+Pj9Ebtd6P/rEYROXFi3Bop github.com/go-faker/faker/v4 v4.4.1 h1:LY1jDgjVkBZWIhATCt+gkl0x9i/7wC61gZx73GTFb+Q= github.com/go-faker/faker/v4 v4.4.1/go.mod h1:HRLrjis+tYsbFtIHufEPTAIzcZiRu0rS9EYl2Ccwme4= github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= -github.com/go-logr/logr v1.4.3 h1:CjnDlHq8ikf6E492q6eKboGOC0T8CDaOvkHCIg8idEI= -github.com/go-logr/logr v1.4.3/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= +github.com/go-logr/logr v1.4.4 h1:tG4xh9yMsRCAiodLVTxyrkzSZ9+o0L1Kg/+cPVcbP/8= +github.com/go-logr/logr v1.4.4/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= github.com/go-logr/zapr v1.3.0 h1:XGdV8XW8zdwFiwOA2Dryh1gj2KRQyOOoNmBy4EplIcQ= @@ -163,8 +163,8 @@ github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= github.com/onsi/ginkgo/v2 v2.32.1 h1:6tlvcDm/3sE8lGJbZ4+d4mO3RLy24/tQWOFzVSQNIfw= github.com/onsi/ginkgo/v2 v2.32.1/go.mod h1:+aXOY+vzZ5mu2iI2HpTZUPmM//oQfsNFX6gU9kNcA44= -github.com/onsi/gomega v1.42.1 h1:iN1rCUX+44NZ1Dc97MPoeFYbFR0vh8zxoxMFwKdyZ6I= -github.com/onsi/gomega v1.42.1/go.mod h1:REff/hsDsodHoKlWsP2mAPhu1+5/6hVYNf9rIEBpeSg= +github.com/onsi/gomega v1.43.0 h1:VlG/1FxqNxhSO+lq/OHBNaaqwiBK/mO8JbVkX9Y+FeU= +github.com/onsi/gomega v1.43.0/go.mod h1:REff/hsDsodHoKlWsP2mAPhu1+5/6hVYNf9rIEBpeSg= github.com/pelletier/go-toml/v2 v2.2.4 h1:mye9XuhQ6gvn5h28+VilKrrPoQVanw5PMw/TB0t5Ec4= github.com/pelletier/go-toml/v2 v2.2.4/go.mod h1:2gIqNv+qfxSVS7cM2xJQKtLSTLUE9V8t9Stt+h56mCY= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= From f459a304726345976351683dc29b0dc8a856ba14 Mon Sep 17 00:00:00 2001 From: Marco Nenciarini Date: Thu, 3 Sep 2026 09:25:33 +0200 Subject: [PATCH 131/134] build(deps): pin pip-compile to the sidecar's Python version via dagger (#1093) The sidecar's lockfile (`containers/sidecar-requirements.txt`) was being regenerated with whatever python3 happened to be on the contributor's machine, drifting from the python3.13 venv the sidecar image actually ships (this surfaced in #1090, where the lockfile ended up regenerated with Python 3.12). Adds a `task pip-compile-sidecar` that runs pip-compile inside a debian:trixie-slim dagger container, the same base image family the sidecar build uses, so regeneration always targets the right Python version regardless of the local machine. Signed-off-by: Marco Nenciarini --- Taskfile.yml | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/Taskfile.yml b/Taskfile.yml index 9d72314..eaff88b 100644 --- a/Taskfile.yml +++ b/Taskfile.yml @@ -67,6 +67,26 @@ tasks: GITHUB_REF= dagger -s call -m github.com/cloudnative-pg/daggerverse/commitlint@${DAGGER_COMMITLINT_SHA} lint --source . --args "--from=origin/main" stdout + pip-compile-sidecar: + desc: Regenerate containers/sidecar-requirements.txt with the same Python version as the sidecar image + cmds: + - > + GITHUB_REF= dagger call --no-mod + container from --address=debian:trixie-slim + with-env-variable --name=DEBIAN_FRONTEND --value=noninteractive + with-exec --args="apt-get,update,-qq" + with-exec --args="apt-get,install,-y,-qq,python3,python3-venv,python3-pip,gcc,libpq-dev" + with-exec --args="pip,install,--quiet,--break-system-packages,pip-tools,click<8.5.0" + with-directory --path=/work --source=containers + with-workdir --path=/work + with-exec --args="pip-compile,--allow-unsafe,--generate-hashes,--output-file=sidecar-requirements.txt,--strip-extras,sidecar-requirements.in" + file --path=/work/sidecar-requirements.txt + export --path=containers/sidecar-requirements.txt + sources: + - containers/sidecar-requirements.in + generates: + - containers/sidecar-requirements.txt + uncommitted: desc: Check for uncommitted changes deps: From 6f712151df9f6dd8fe0e8f0f374de92f90827c7e Mon Sep 17 00:00:00 2001 From: Krypton Date: Thu, 3 Sep 2026 17:35:45 +0200 Subject: [PATCH 132/134] docs: add Helm chart installation (#599) Add Helm chart install steps next to kubectl, for the current docs and the 0.13.0 and 0.14.0 versioned snapshots. Pin the chart's image tag to the plugin version on older releases. The chart ships after the plugin, so its own version numbers don't map to ours, and we skip the pin on the latest release since the chart already defaults to itself there. On the current docs, make clear the Helm tab installs the latest release, not a main-branch build. Only kubectl can test a main-branch build. Closes #351 Signed-off-by: Krypton Signed-off-by: danishedb Signed-off-by: Marco Nenciarini Co-authored-by: danishedb Co-authored-by: Marco Nenciarini --- web/docs/installation.mdx | 48 ++++++++++++++++++- web/docs/troubleshooting.md | 9 +--- web/src/components/HelmInstallation/index.tsx | 36 ++++++++++++++ web/src/components/Installation/index.tsx | 13 +++-- .../version-0.13.0/installation.mdx | 46 +++++++++++++++++- .../version-0.13.0/troubleshooting.md | 9 +--- .../version-0.14.0/installation.mdx | 44 ++++++++++++++++- .../version-0.14.0/troubleshooting.md | 9 +--- 8 files changed, 183 insertions(+), 31 deletions(-) create mode 100644 web/src/components/HelmInstallation/index.tsx diff --git a/web/docs/installation.mdx b/web/docs/installation.mdx index 4c1c48a..bff100b 100644 --- a/web/docs/installation.mdx +++ b/web/docs/installation.mdx @@ -54,7 +54,47 @@ Both checks are required before proceeding with the installation. ## Installing the Barman Cloud Plugin +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; import { InstallationSnippet, ManifestVersion } from '@site/src/components/Installation'; +import { HelmInstallationSnippet } from '@site/src/components/HelmInstallation'; + + + + +The plugin can be installed using the provided [Helm chart](https://github.com/cloudnative-pg/charts/tree/main/charts/plugin-barman-cloud). +This installs the latest published chart release; to test an unreleased +development snapshot instead, switch to the [**Manifest (kubectl)**](./?install-method=kubectl#installing-the-barman-cloud-plugin) tab. + + + +Example output: + +```output +Release "plugin-barman-cloud" does not exist. Installing it now. +NAME: plugin-barman-cloud +LAST DEPLOYED: Wed Jul 1 09:05:16 2026 +NAMESPACE: cnpg-system +STATUS: deployed +REVISION: 1 +DESCRIPTION: Install complete +TEST SUITE: None +``` + +Finally, check that the deployment is up and running: + +```sh +kubectl -n cnpg-system rollout status deploy/plugin-barman-cloud +``` + +Example output: + +```output +deployment "plugin-barman-cloud" successfully rolled out +``` + + + Install the plugin using `kubectl` by applying the manifest for : @@ -85,8 +125,7 @@ issuer.cert-manager.io/selfsigned-issuer created Finally, check that the deployment is up and running: ```sh -kubectl rollout status deployment \ - -n cnpg-system barman-cloud +kubectl -n cnpg-system rollout status deploy/barman-cloud ``` Example output: @@ -95,6 +134,11 @@ Example output: deployment "barman-cloud" successfully rolled out ``` + + + +--- + This confirms that the plugin is deployed and ready to use. ## Testing the latest development snapshot diff --git a/web/docs/troubleshooting.md b/web/docs/troubleshooting.md index fe57262..c57a81e 100644 --- a/web/docs/troubleshooting.md +++ b/web/docs/troubleshooting.md @@ -485,14 +485,10 @@ If problems persist: ### Plugin Limitations -1. **Installation method**: Currently only supports manifest and Kustomize - installation ([#351](https://github.com/cloudnative-pg/plugin-barman-cloud/issues/351) - - Helm chart requested) - -2. **Sidecar resource sharing**: The plugin sidecar container shares pod +1. **Sidecar resource sharing**: The plugin sidecar container shares pod resources with PostgreSQL -3. **Plugin restart behavior**: Restarting the sidecar container requires +2. **Plugin restart behavior**: Restarting the sidecar container requires restarting the entire PostgreSQL pod ## Recap of General Debugging Steps @@ -588,4 +584,3 @@ kubectl get secret -n -o jsonpath='{.data}' | jq 'keys * **"NoSuchBucket"** β€” Verify the bucket exists and the endpoint URL is correct. * **"Connection timeout"** β€” Check network connectivity and firewall rules. * **"SSL certificate problem"** β€” For self-signed certificates, verify the CA bundle configuration. - diff --git a/web/src/components/HelmInstallation/index.tsx b/web/src/components/HelmInstallation/index.tsx new file mode 100644 index 0000000..af5f79b --- /dev/null +++ b/web/src/components/HelmInstallation/index.tsx @@ -0,0 +1,36 @@ +import {ReactElement} from 'react'; +import CodeBlock from '@theme/CodeBlock'; +import {useActiveVersion, useLatestVersion} from '@docusaurus/plugin-content-docs/client'; + +// HelmInstallationSnippet is the Helm command to install the plugin. +// +// - Latest release: no override. The chart already defaults to +// itself. +// - Older release: pin image.tag and sidecarImage.tag to that +// version. We check this again on every build using +// useLatestVersion, so an old page updates itself once a newer +// version ships. +// - Dev docs: also no override, but this does NOT install a dev +// build. Setting the tag alone would not be enough, since the +// chart's own templates (CRDs, RBAC...) can be older than what +// main needs. Use the kubectl method to test a dev build. +export function HelmInstallationSnippet(): ReactElement { + const activeVersion = useActiveVersion('default'); + const latestVersion = useLatestVersion('default'); + const isOlderRelease = activeVersion + && activeVersion.name !== 'current' + && activeVersion.name !== latestVersion.name; + const setArgs = isOlderRelease + ? ` \\ + --set image.tag=v${activeVersion.name} \\ + --set sidecarImage.tag=v${activeVersion.name}` + : ''; + return ( + + {`helm repo add cnpg https://cloudnative-pg.github.io/charts --force-update +helm upgrade --install plugin-barman-cloud \\ + --namespace cnpg-system${setArgs} \\ + cnpg/plugin-barman-cloud`} + + ); +} diff --git a/web/src/components/Installation/index.tsx b/web/src/components/Installation/index.tsx index 359bd95..787c73f 100644 --- a/web/src/components/Installation/index.tsx +++ b/web/src/components/Installation/index.tsx @@ -1,5 +1,7 @@ import {ReactElement} from 'react'; import CodeBlock from '@theme/CodeBlock'; +import Link from '@docusaurus/Link'; +import {useLocation} from '@docusaurus/router'; import {useActiveVersion} from '@docusaurus/plugin-content-docs/client'; // DEV_MANIFEST_URL is the URL of the manifest.yaml on the main branch of the plugin repo. @@ -31,14 +33,17 @@ export function ManifestVersion(): ReactElement { : <>the latest development snapshot from the main branch; } -// DevSnapshotSection offers the main-branch manifest as an alternative; -// on the Dev docs the main install already is that manifest, so hide it. +// DevSnapshotSection shows how to test the main-branch manifest. On +// the Dev docs, the kubectl install above already does that, so we +// hide this section there. (The Helm tab there installs the latest +// release, not a dev build.) export function DevSnapshotSection(): ReactElement { const activeVersion = useActiveVersion('default'); + const {pathname} = useLocation(); if (!activeVersion || activeVersion.name === 'current') { return ( -

The install - command above already applies the latest development +

The kubectl + install command above already applies the latest development snapshot from the main branch.

); } diff --git a/web/versioned_docs/version-0.13.0/installation.mdx b/web/versioned_docs/version-0.13.0/installation.mdx index 4c1c48a..9df96d1 100644 --- a/web/versioned_docs/version-0.13.0/installation.mdx +++ b/web/versioned_docs/version-0.13.0/installation.mdx @@ -54,7 +54,45 @@ Both checks are required before proceeding with the installation. ## Installing the Barman Cloud Plugin +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; import { InstallationSnippet, ManifestVersion } from '@site/src/components/Installation'; +import { HelmInstallationSnippet } from '@site/src/components/HelmInstallation'; + + + + +The plugin can be installed using the provided [Helm chart](https://github.com/cloudnative-pg/charts/tree/main/charts/plugin-barman-cloud): + + + +Example output: + +```output +Release "plugin-barman-cloud" does not exist. Installing it now. +NAME: plugin-barman-cloud +LAST DEPLOYED: Wed Jul 1 09:05:16 2026 +NAMESPACE: cnpg-system +STATUS: deployed +REVISION: 1 +DESCRIPTION: Install complete +TEST SUITE: None +``` + +Finally, check that the deployment is up and running: + +```sh +kubectl -n cnpg-system rollout status deploy/plugin-barman-cloud +``` + +Example output: + +```output +deployment "plugin-barman-cloud" successfully rolled out +``` + + + Install the plugin using `kubectl` by applying the manifest for : @@ -85,8 +123,7 @@ issuer.cert-manager.io/selfsigned-issuer created Finally, check that the deployment is up and running: ```sh -kubectl rollout status deployment \ - -n cnpg-system barman-cloud +kubectl -n cnpg-system rollout status deploy/barman-cloud ``` Example output: @@ -95,6 +132,11 @@ Example output: deployment "barman-cloud" successfully rolled out ``` + + + +--- + This confirms that the plugin is deployed and ready to use. ## Testing the latest development snapshot diff --git a/web/versioned_docs/version-0.13.0/troubleshooting.md b/web/versioned_docs/version-0.13.0/troubleshooting.md index fe57262..c57a81e 100644 --- a/web/versioned_docs/version-0.13.0/troubleshooting.md +++ b/web/versioned_docs/version-0.13.0/troubleshooting.md @@ -485,14 +485,10 @@ If problems persist: ### Plugin Limitations -1. **Installation method**: Currently only supports manifest and Kustomize - installation ([#351](https://github.com/cloudnative-pg/plugin-barman-cloud/issues/351) - - Helm chart requested) - -2. **Sidecar resource sharing**: The plugin sidecar container shares pod +1. **Sidecar resource sharing**: The plugin sidecar container shares pod resources with PostgreSQL -3. **Plugin restart behavior**: Restarting the sidecar container requires +2. **Plugin restart behavior**: Restarting the sidecar container requires restarting the entire PostgreSQL pod ## Recap of General Debugging Steps @@ -588,4 +584,3 @@ kubectl get secret -n -o jsonpath='{.data}' | jq 'keys * **"NoSuchBucket"** β€” Verify the bucket exists and the endpoint URL is correct. * **"Connection timeout"** β€” Check network connectivity and firewall rules. * **"SSL certificate problem"** β€” For self-signed certificates, verify the CA bundle configuration. - diff --git a/web/versioned_docs/version-0.14.0/installation.mdx b/web/versioned_docs/version-0.14.0/installation.mdx index 4c1c48a..a4cb684 100644 --- a/web/versioned_docs/version-0.14.0/installation.mdx +++ b/web/versioned_docs/version-0.14.0/installation.mdx @@ -54,7 +54,45 @@ Both checks are required before proceeding with the installation. ## Installing the Barman Cloud Plugin +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; import { InstallationSnippet, ManifestVersion } from '@site/src/components/Installation'; +import { HelmInstallationSnippet } from '@site/src/components/HelmInstallation'; + + + + +The plugin can be installed using the provided [Helm chart](https://github.com/cloudnative-pg/charts/tree/main/charts/plugin-barman-cloud): + + + +Example output: + +```output +Release "plugin-barman-cloud" does not exist. Installing it now. +NAME: plugin-barman-cloud +LAST DEPLOYED: Wed Jul 1 09:05:16 2026 +NAMESPACE: cnpg-system +STATUS: deployed +REVISION: 1 +DESCRIPTION: Install complete +TEST SUITE: None +``` + +Finally, check that the deployment is up and running: + +```sh +kubectl -n cnpg-system rollout status deploy/plugin-barman-cloud +``` + +Example output: + +```output +deployment "plugin-barman-cloud" successfully rolled out +``` + + + Install the plugin using `kubectl` by applying the manifest for : @@ -85,8 +123,7 @@ issuer.cert-manager.io/selfsigned-issuer created Finally, check that the deployment is up and running: ```sh -kubectl rollout status deployment \ - -n cnpg-system barman-cloud +kubectl -n cnpg-system rollout status deploy/barman-cloud ``` Example output: @@ -95,6 +132,9 @@ Example output: deployment "barman-cloud" successfully rolled out ``` + + + This confirms that the plugin is deployed and ready to use. ## Testing the latest development snapshot diff --git a/web/versioned_docs/version-0.14.0/troubleshooting.md b/web/versioned_docs/version-0.14.0/troubleshooting.md index fe57262..c57a81e 100644 --- a/web/versioned_docs/version-0.14.0/troubleshooting.md +++ b/web/versioned_docs/version-0.14.0/troubleshooting.md @@ -485,14 +485,10 @@ If problems persist: ### Plugin Limitations -1. **Installation method**: Currently only supports manifest and Kustomize - installation ([#351](https://github.com/cloudnative-pg/plugin-barman-cloud/issues/351) - - Helm chart requested) - -2. **Sidecar resource sharing**: The plugin sidecar container shares pod +1. **Sidecar resource sharing**: The plugin sidecar container shares pod resources with PostgreSQL -3. **Plugin restart behavior**: Restarting the sidecar container requires +2. **Plugin restart behavior**: Restarting the sidecar container requires restarting the entire PostgreSQL pod ## Recap of General Debugging Steps @@ -588,4 +584,3 @@ kubectl get secret -n -o jsonpath='{.data}' | jq 'keys * **"NoSuchBucket"** β€” Verify the bucket exists and the endpoint URL is correct. * **"Connection timeout"** β€” Check network connectivity and firewall rules. * **"SSL certificate problem"** β€” For self-signed certificates, verify the CA bundle configuration. - From 4a23ede84af9de9d94bc254fe9aa7a77ce89f7ca Mon Sep 17 00:00:00 2001 From: Marco Nenciarini Date: Thu, 3 Sep 2026 18:06:14 +0200 Subject: [PATCH 133/134] docs(release): documentation for release 0.15.0 (#1095) Signed-off-by: Marco Nenciarini --- .../version-0.15.0/compression.md | 45 ++ web/versioned_docs/version-0.15.0/concepts.md | 177 ++++++ web/versioned_docs/version-0.15.0/images.md | 37 ++ .../version-0.15.0/installation.mdx | 148 +++++ web/versioned_docs/version-0.15.0/intro.md | 86 +++ .../version-0.15.0/migration.md | 274 ++++++++ web/versioned_docs/version-0.15.0/misc.md | 126 ++++ .../version-0.15.0/object_stores.md | 497 +++++++++++++++ .../version-0.15.0/observability.md | 24 + .../version-0.15.0/parameters.md | 19 + .../version-0.15.0/plugin-barman-cloud.v1.md | 108 ++++ .../version-0.15.0/resource-name-migration.md | 219 +++++++ .../version-0.15.0/retention.md | 38 ++ .../version-0.15.0/troubleshooting.md | 586 ++++++++++++++++++ .../version-0.15.0/upgrades.mdx | 16 + web/versioned_docs/version-0.15.0/usage.md | 283 +++++++++ .../version-0.15.0-sidebars.json | 8 + web/versions.json | 1 + 18 files changed, 2692 insertions(+) create mode 100644 web/versioned_docs/version-0.15.0/compression.md create mode 100644 web/versioned_docs/version-0.15.0/concepts.md create mode 100644 web/versioned_docs/version-0.15.0/images.md create mode 100644 web/versioned_docs/version-0.15.0/installation.mdx create mode 100644 web/versioned_docs/version-0.15.0/intro.md create mode 100644 web/versioned_docs/version-0.15.0/migration.md create mode 100644 web/versioned_docs/version-0.15.0/misc.md create mode 100644 web/versioned_docs/version-0.15.0/object_stores.md create mode 100644 web/versioned_docs/version-0.15.0/observability.md create mode 100644 web/versioned_docs/version-0.15.0/parameters.md create mode 100644 web/versioned_docs/version-0.15.0/plugin-barman-cloud.v1.md create mode 100644 web/versioned_docs/version-0.15.0/resource-name-migration.md create mode 100644 web/versioned_docs/version-0.15.0/retention.md create mode 100644 web/versioned_docs/version-0.15.0/troubleshooting.md create mode 100644 web/versioned_docs/version-0.15.0/upgrades.mdx create mode 100644 web/versioned_docs/version-0.15.0/usage.md create mode 100644 web/versioned_sidebars/version-0.15.0-sidebars.json diff --git a/web/versioned_docs/version-0.15.0/compression.md b/web/versioned_docs/version-0.15.0/compression.md new file mode 100644 index 0000000..cfc6355 --- /dev/null +++ b/web/versioned_docs/version-0.15.0/compression.md @@ -0,0 +1,45 @@ +--- +sidebar_position: 80 +--- + +# Compression + + + +By default, backups and WAL files are archived **uncompressed**. However, the +Barman Cloud Plugin supports multiple compression algorithms via +`barman-cloud-backup` and `barman-cloud-wal-archive`, allowing you to optimize +for space, speed, or a balance of both. + +### Supported Compression Algorithms + +- `bzip2` +- `gzip` +- `lz4` +- `snappy` +- `xz` (WAL only) +- `zstd` (WAL only) + +Compression settings for base backups and WAL archives are configured +independently. For implementation details, refer to the corresponding API +definitions: + +- [`DataBackupConfiguration`](https://pkg.go.dev/github.com/cloudnative-pg/barman-cloud/pkg/api#DataBackupConfiguration) +- [`WALBackupConfiguration`](https://pkg.go.dev/github.com/cloudnative-pg/barman-cloud/pkg/api#WalBackupConfiguration) + +:::important +Compression impacts both performance and storage efficiency. Choose the right +algorithm based on your recovery time objectives (RTO), storage capacity, and +network throughput. +::: + +## Compression Benchmark (on MinIO) + +| Compression | Backup Time (ms) | Restore Time (ms) | Uncompressed Size (MB) | Compressed Size (MB) | Ratio | +| ----------- | ---------------- | ----------------- | ---------------------- | -------------------- | ----- | +| None | 10,927 | 7,553 | 395 | 395 | 1.0:1 | +| bzip2 | 25,404 | 13,886 | 395 | 67 | 5.9:1 | +| gzip | 116,281 | 3,077 | 395 | 91 | 4.3:1 | +| snappy | 8,134 | 8,341 | 395 | 166 | 2.4:1 | + +Numbers come from a 2021 Barman proof of concept ([EnterpriseDB/barman#344](https://github.com/EnterpriseDB/barman/issues/344#issuecomment-992547396)), which predates `lz4` support for base backups. `lz4` is not yet benchmarked. diff --git a/web/versioned_docs/version-0.15.0/concepts.md b/web/versioned_docs/version-0.15.0/concepts.md new file mode 100644 index 0000000..b2f2ce6 --- /dev/null +++ b/web/versioned_docs/version-0.15.0/concepts.md @@ -0,0 +1,177 @@ +--- +sidebar_position: 10 +--- + +# Main Concepts + + + +:::important +Before proceeding, make sure to review the following sections of the +CloudNativePG documentation: + +- [**Backup**](https://cloudnative-pg.io/documentation/current/backup/) +- [**WAL Archiving**](https://cloudnative-pg.io/documentation/current/wal_archiving/) +- [**Recovery**](https://cloudnative-pg.io/documentation/current/recovery/) +::: + +The **Barman Cloud Plugin** enables **hot (online) backups** of PostgreSQL +clusters in CloudNativePG through [`barman-cloud`](https://pgbarman.org), +supporting continuous physical backups and WAL archiving to an **object +store**β€”without interrupting write operations. + +It also supports both **full recovery** and **Point-in-Time Recovery (PITR)** +of a PostgreSQL cluster. + +## The Object Store + +At the core is the [`ObjectStore` custom resource (CRD)](plugin-barman-cloud.v1.md#objectstorespec), +which acts as the interface between the PostgreSQL cluster and the target +object storage system. It allows you to configure: + +- **Authentication and bucket location** via the `.spec.configuration` section +- **WAL archiving** settingsβ€”such as compression type, parallelism, and + server-side encryptionβ€”under `.spec.configuration.wal` +- **Base backup options**β€”with similar settings for compression, concurrency, + and encryptionβ€”under `.spec.configuration.data` +- **Retention policies** to manage the life-cycle of archived WALs and backups + via `.spec.retentionPolicy` + +WAL files are archived in the `wals` directory, while base backups are stored +as **tarballs** in the `base` directory, following the +[Barman Cloud convention](https://docs.pgbarman.org/cloud/latest/usage/#object-store-layout). + +The plugin also offers advanced capabilities, including +[backup tagging](misc.md#backup-object-tagging) and +[extra options for backups and WAL archiving](misc.md#extra-options-for-backup-wal-archiving-and-restore). + +:::tip +For details, refer to the +[API reference for the `ObjectStore` resource](plugin-barman-cloud.v1.md#objectstorespec). +::: + +## Integration with a CloudNativePG Cluster + +CloudNativePG can delegate continuous backup and recovery responsibilities to +the **Barman Cloud Plugin** by configuring the `.spec.plugins` section of a +`Cluster` resource. This setup requires a corresponding `ObjectStore` resource +to be defined. + +:::important +While it is technically possible to reuse the same `ObjectStore` for multiple +`Cluster` resources within the same namespace, it is strongly recommended to +dedicate one object store per PostgreSQL cluster to ensure data isolation and +operational clarity. +::: + +The following example demonstrates how to configure a CloudNativePG cluster +named `cluster-example` to use a previously defined `ObjectStore` (also named +`cluster-example`) in the same namespace. Setting `isWALArchiver: true` enables +WAL archiving through the plugin: + +```yaml +apiVersion: postgresql.cnpg.io/v1 +kind: Cluster +metadata: + name: cluster-example +spec: + # Other cluster settings... + plugins: + - name: barman-cloud.cloudnative-pg.io + isWALArchiver: true + parameters: + barmanObjectName: cluster-example +``` + +## Backup of a Postgres Cluster + +Once the object store is defined and the `Cluster` is configured to use the +Barman Cloud Plugin, **WAL archiving is activated immediately** on the +PostgreSQL primary. + +Physical base backups are seamlessly managed by CloudNativePG using the +`Backup` and `ScheduledBackup` resources, respectively for +[on-demand](https://cloudnative-pg.io/documentation/current/backup/#on-demand-backups) +and +[scheduled](https://cloudnative-pg.io/documentation/current/backup/#scheduled-backups) +backups. + +To use the Barman Cloud Plugin, you must set the `method` to `plugin` and +configure the `pluginConfiguration` section as shown: + +```yaml +[...] +spec: + method: plugin + pluginConfiguration: + name: barman-cloud.cloudnative-pg.io + [...] +``` + +With this configuration, CloudNativePG supports: + +- Backups from both **primary** and **standby** instances +- Backups from **designated primaries** in a distributed topology using + [replica clusters](https://cloudnative-pg.io/documentation/current/replica_cluster/) + +:::tip +For details on how to back up from a standby, refer to the official documentation: +[Backup from a standby](https://cloudnative-pg.io/documentation/current/backup/#backup-from-a-standby). +::: + +:::important +Both backup and WAL archiving operations are executed by sidecar containers +running in the same pod as the PostgreSQL `Cluster` primary instanceβ€”except +when backups are taken from a standby, in which case the sidecar runs alongside +the standby pod. +The sidecar containers use a [dedicated container image](images.md) that +includes only the supported version of Barman Cloud. +::: + +## Recovery of a Postgres Cluster + +In PostgreSQL, *recovery* refers to the process of starting a database instance +from an existing backup. The Barman Cloud Plugin integrates with CloudNativePG +to support both **full recovery** and **Point-in-Time Recovery (PITR)** from an +object store. + +Recovery in this context is *not in-place*: it bootstraps a brand-new +PostgreSQL cluster from a backup and replays the necessary WAL files to reach +the desired recovery target. + +To perform a recovery, define an *external cluster* that references the +appropriate `ObjectStore`, and use it as the source in the `bootstrap` section +of the target cluster: + +```yaml +[...] +spec: + [...] + bootstrap: + recovery: + source: source + externalClusters: + - name: source + plugin: + name: barman-cloud.cloudnative-pg.io + parameters: + barmanObjectName: cluster-example + serverName: cluster-example + [...] +``` + +The critical element here is the `externalClusters` section of the `Cluster` +resource, where the `plugin` stanza instructs CloudNativePG to use the Barman +Cloud Plugin to access the object store for recovery. + +This same mechanism can be used for a variety of scenarios enabled by the +CloudNativePG API, including: + +* **Full cluster recovery** from the latest backup +* **Point-in-Time Recovery (PITR)** +* Bootstrapping **replica clusters** in a distributed topology + +:::tip +For complete instructions and advanced use cases, refer to the official +[Recovery documentation](https://cloudnative-pg.io/documentation/current/recovery/). +::: diff --git a/web/versioned_docs/version-0.15.0/images.md b/web/versioned_docs/version-0.15.0/images.md new file mode 100644 index 0000000..f6c32d3 --- /dev/null +++ b/web/versioned_docs/version-0.15.0/images.md @@ -0,0 +1,37 @@ +--- +sidebar_position: 99 +--- + +# Container Images + + + +The Barman Cloud Plugin is distributed using two container images: + +- One for deploying the plugin components +- One for the sidecar that runs alongside each PostgreSQL instance in a + CloudNativePG `Cluster` using the plugin + +## Plugin Container Image + +The plugin image contains the logic required to operate the Barman Cloud Plugin +within your Kubernetes environment with CloudNativePG. It is published on the +GitHub Container Registry at `ghcr.io/cloudnative-pg/plugin-barman-cloud`. + +This image is built from the +[`Dockerfile.plugin`](https://github.com/cloudnative-pg/plugin-barman-cloud/blob/main/containers/Dockerfile.plugin) +in the plugin repository. + +## Sidecar Container Image + +The sidecar image is used within each PostgreSQL pod in the cluster. It +includes the latest supported version of Barman Cloud and is responsible for +performing WAL archiving and backups on behalf of CloudNativePG. + +It is available at `ghcr.io/cloudnative-pg/plugin-barman-cloud-sidecar` and is +built from the +[`Dockerfile.sidecar`](https://github.com/cloudnative-pg/plugin-barman-cloud/blob/main/containers/Dockerfile.sidecar). + +These sidecar images are designed to work seamlessly with the +[`minimal` PostgreSQL container images](https://github.com/cloudnative-pg/postgres-containers?tab=readme-ov-file#minimal-images) +maintained by the CloudNativePG Community. diff --git a/web/versioned_docs/version-0.15.0/installation.mdx b/web/versioned_docs/version-0.15.0/installation.mdx new file mode 100644 index 0000000..bff100b --- /dev/null +++ b/web/versioned_docs/version-0.15.0/installation.mdx @@ -0,0 +1,148 @@ +--- +sidebar_position: 20 +--- + +# Installation + +:::important +1. The plugin **must** be installed in the same namespace as the CloudNativePG + operator (typically `cnpg-system`). + +2. Keep in mind that the operator's **listening namespaces** may differ from its + installation namespace. Double-check this to avoid configuration issues. +::: + +## Verifying the Requirements + +Before installing the plugin, make sure the [requirements](intro.md#requirements) are met. + +### CloudNativePG Version + +Ensure you're running a version of CloudNativePG that is compatible with the +plugin. If installed in the default `cnpg-system` namespace, you can verify the +version with: + +```sh +kubectl get deployment -n cnpg-system cnpg-controller-manager \ + -o jsonpath="{.spec.template.spec.containers[*].image}" +``` + +Example output: + +```output +ghcr.io/cloudnative-pg/cloudnative-pg:1.26.0 +``` + +The version **must be 1.26 or newer**. + +### cert-manager + +Use the [cmctl](https://cert-manager.io/docs/reference/cmctl/#installation) +tool to confirm that `cert-manager` is installed and available: + +```sh +cmctl check api +``` + +Example output: + +```output +The cert-manager API is ready +``` + +Both checks are required before proceeding with the installation. + +## Installing the Barman Cloud Plugin + +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; +import { InstallationSnippet, ManifestVersion } from '@site/src/components/Installation'; +import { HelmInstallationSnippet } from '@site/src/components/HelmInstallation'; + + + + +The plugin can be installed using the provided [Helm chart](https://github.com/cloudnative-pg/charts/tree/main/charts/plugin-barman-cloud). +This installs the latest published chart release; to test an unreleased +development snapshot instead, switch to the [**Manifest (kubectl)**](./?install-method=kubectl#installing-the-barman-cloud-plugin) tab. + + + +Example output: + +```output +Release "plugin-barman-cloud" does not exist. Installing it now. +NAME: plugin-barman-cloud +LAST DEPLOYED: Wed Jul 1 09:05:16 2026 +NAMESPACE: cnpg-system +STATUS: deployed +REVISION: 1 +DESCRIPTION: Install complete +TEST SUITE: None +``` + +Finally, check that the deployment is up and running: + +```sh +kubectl -n cnpg-system rollout status deploy/plugin-barman-cloud +``` + +Example output: + +```output +deployment "plugin-barman-cloud" successfully rolled out +``` + + + + +Install the plugin using `kubectl` by applying the manifest for : + + + +Example output: + +```output +customresourcedefinition.apiextensions.k8s.io/objectstores.barmancloud.cnpg.io created +serviceaccount/plugin-barman-cloud created +role.rbac.authorization.k8s.io/leader-election-role created +clusterrole.rbac.authorization.k8s.io/metrics-auth-role created +clusterrole.rbac.authorization.k8s.io/metrics-reader created +clusterrole.rbac.authorization.k8s.io/objectstore-editor-role created +clusterrole.rbac.authorization.k8s.io/objectstore-viewer-role created +clusterrole.rbac.authorization.k8s.io/plugin-barman-cloud created +rolebinding.rbac.authorization.k8s.io/leader-election-rolebinding created +clusterrolebinding.rbac.authorization.k8s.io/metrics-auth-rolebinding created +clusterrolebinding.rbac.authorization.k8s.io/plugin-barman-cloud-binding created +secret/plugin-barman-cloud-8tfddg42gf created +service/barman-cloud created +deployment.apps/barman-cloud configured +certificate.cert-manager.io/barman-cloud-client created +certificate.cert-manager.io/barman-cloud-server created +issuer.cert-manager.io/selfsigned-issuer created +``` + +Finally, check that the deployment is up and running: + +```sh +kubectl -n cnpg-system rollout status deploy/barman-cloud +``` + +Example output: + +```output +deployment "barman-cloud" successfully rolled out +``` + + + + +--- + +This confirms that the plugin is deployed and ready to use. + +## Testing the latest development snapshot + +import { DevSnapshotSection } from '@site/src/components/Installation'; + + diff --git a/web/versioned_docs/version-0.15.0/intro.md b/web/versioned_docs/version-0.15.0/intro.md new file mode 100644 index 0000000..9781d0d --- /dev/null +++ b/web/versioned_docs/version-0.15.0/intro.md @@ -0,0 +1,86 @@ +--- +sidebar_position: 1 +sidebar_label: "Introduction" +--- + +# Barman Cloud Plugin + + + +The **Barman Cloud Plugin** for [CloudNativePG](https://cloudnative-pg.io/) +enables online continuous physical backups of PostgreSQL clusters to object storage +using the `barman-cloud` suite from the [Barman](https://docs.pgbarman.org/release/latest/) +project. + +:::important +If you plan to migrate your existing CloudNativePG cluster to the new +plugin-based approach using the Barman Cloud Plugin, see +["Migrating from Built-in CloudNativePG Backup"](migration.md) +for detailed instructions. +::: + +## Requirements + +Before using the Barman Cloud Plugin, ensure that the following components are +installed and properly configured: + +- [CloudNativePG](https://cloudnative-pg.io) version 1.26 or later + + - We strongly recommend version 1.27.0 or later, which includes improved + error handling and status reporting for the plugin. + - If you are running an earlier release, refer to the + [upgrade guide](https://cloudnative-pg.io/documentation/current/installation_upgrade). + +- [cert-manager](https://cert-manager.io/) + + - The recommended way to enable secure TLS communication between the plugin + and the operator. + - Alternatively, you can provide your own certificate bundles. See the + [CloudNativePG documentation on TLS configuration](https://cloudnative-pg.io/documentation/current/cnpg_i/#configuring-tls-certificates). + +- [`kubectl-cnpg`](https://cloudnative-pg.io/documentation/current/kubectl-plugin/) + plugin (optional but recommended) + + - Simplifies debugging and monitoring with additional status and inspection + commands. + - Multiple installation options are available in the + [installation guide](https://cloudnative-pg.io/documentation/current/kubectl-plugin/#install). + +## Key Features + +This plugin provides the following capabilities: + +- Physical online backup of the data directory +- Physical restore of the data directory +- Write-Ahead Log (WAL) archiving +- WAL restore +- Full cluster recovery +- Point-in-Time Recovery (PITR) +- Seamless integration with replica clusters for bootstrap and WAL restore from archive + +:::important +The Barman Cloud Plugin is designed to **replace the in-tree object storage support** +previously provided via the `.spec.backup.barmanObjectStore` section in the +`Cluster` resource. +Backups created using the in-tree approach are fully supported and compatible +with this plugin. +::: + +## Supported Object Storage Providers + +The plugin works with all storage backends supported by `barman-cloud`, including: + +- **Amazon S3** +- **Google Cloud Storage** +- **Microsoft Azure Blob Storage** + +In addition, the following S3-compatible and simulator solutions have been +tested and verified: + +- [MinIO](https://min.io/) – An S3-compatible storage solution +- [Azurite](https://github.com/Azure/Azurite) – A simulator for Azure Blob Storage +- [fake-gcs-server](https://github.com/fsouza/fake-gcs-server) – A simulator for Google Cloud Storage + +:::tip +For more details, refer to [Object Store Providers](object_stores.md). +::: diff --git a/web/versioned_docs/version-0.15.0/migration.md b/web/versioned_docs/version-0.15.0/migration.md new file mode 100644 index 0000000..2c99ada --- /dev/null +++ b/web/versioned_docs/version-0.15.0/migration.md @@ -0,0 +1,274 @@ +--- +sidebar_position: 40 +--- + +# Migrating from Built-in CloudNativePG Backup + + + +The in-tree support for Barman Cloud in CloudNativePG is **deprecated starting +from version 1.26** and will be removed in a future release. + +If you're currently relying on the built-in Barman Cloud integration, you can +migrate seamlessly to the new **plugin-based architecture** using the Barman +Cloud Plugin, without data loss. Follow these steps: + +- [Install the Barman Cloud Plugin](installation.mdx) +- Create an `ObjectStore` resource by translating the contents of the + `.spec.backup.barmanObjectStore` section from your existing `Cluster` + definition +- Modify the `Cluster` resource in a single atomic change to switch from + in-tree backup to the plugin +- Update any `ScheduledBackup` resources to use the plugin +- Update the `externalClusters` configuration, where applicable + +:::tip +For a working example, refer to [this commit](https://github.com/cloudnative-pg/cnpg-playground/commit/596f30e252896edf8f734991c3538df87630f6f7) +from the [CloudNativePG Playground project](https://github.com/cloudnative-pg/cnpg-playground), +which demonstrates a full migration. +::: + +--- + +## Step 1: Define the `ObjectStore` + +Begin by creating an `ObjectStore` resource in the same namespace as your +PostgreSQL `Cluster`. + +There is a **direct mapping** between the `.spec.backup.barmanObjectStore` +section in CloudNativePG and the `.spec.configuration` field in the +`ObjectStore` CR. The conversion is mostly mechanical, with one key difference: + +:::warning +In the plugin architecture, retention policies are defined as part of the `ObjectStore`. +In contrast, the in-tree implementation defined them at the `Cluster` level. +::: + +If your `Cluster` used `.spec.backup.retentionPolicy`, move that configuration +to `.spec.retentionPolicy` in the `ObjectStore`. + +--- + +### Example + +Here’s an excerpt from a traditional in-tree CloudNativePG backup configuration +taken from the CloudNativePG Playground project: + +```yaml +apiVersion: postgresql.cnpg.io/v1 +kind: Cluster +metadata: + name: pg-eu +spec: + # [...] + backup: + barmanObjectStore: + destinationPath: s3://backups/ + endpointURL: http://minio-eu:9000 + s3Credentials: + accessKeyId: + name: minio-eu + key: ACCESS_KEY_ID + secretAccessKey: + name: minio-eu + key: ACCESS_SECRET_KEY + wal: + compression: gzip +``` + +This configuration translates to the following `ObjectStore` resource for the +plugin: + +```yaml +apiVersion: barmancloud.cnpg.io/v1 +kind: ObjectStore +metadata: + name: minio-eu +spec: + configuration: + destinationPath: s3://backups/ + endpointURL: http://minio-eu:9000 + s3Credentials: + accessKeyId: + name: minio-eu + key: ACCESS_KEY_ID + secretAccessKey: + name: minio-eu + key: ACCESS_SECRET_KEY + wal: + compression: gzip +``` + +As you can see, the contents of `barmanObjectStore` have been copied directly +under the `configuration` field of the `ObjectStore` resource, using the same +secret references. + +## Step 2: Update the `Cluster` for plugin WAL archiving + +Once the `ObjectStore` resource is in place, update the `Cluster` resource as +follows in a single atomic change: + +- Remove the `.spec.backup.barmanObjectStore` section +- Remove `.spec.backup.retentionPolicy` if it was defined (as it is now in the + `ObjectStore`) +- Remove the entire `spec.backup` section if it is now empty +- Add `barman-cloud.cloudnative-pg.io` to the `plugins` list, as described in + [Configuring WAL archiving](usage.md#configuring-wal-archiving) + +This will trigger a rolling update of the `Cluster`, switching continuous +backup from the in-tree implementation to the plugin-based approach. + +### Example + +The updated `pg-eu` cluster will have this configuration instead of the +previous `backup` section: + +```yaml + plugins: + - name: barman-cloud.cloudnative-pg.io + isWALArchiver: true + parameters: + barmanObjectName: minio-eu +``` + +--- + +## Step 3: Update the `ScheduledBackup` + +After switching the `Cluster` to use the plugin, update your `ScheduledBackup` +resources to match. + +Set the backup `method` to `plugin` and reference the plugin name via +`pluginConfiguration`, as shown in ["Performing a base backup"](usage.md#performing-a-base-backup). + +### Example + +Original in-tree `ScheduledBackup`: + +```yaml +apiVersion: postgresql.cnpg.io/v1 +kind: ScheduledBackup +metadata: + name: pg-eu-backup +spec: + cluster: + name: pg-eu + schedule: '0 0 0 * * *' + backupOwnerReference: self +``` + +Updated version using the plugin: + +```yaml +apiVersion: postgresql.cnpg.io/v1 +kind: ScheduledBackup +metadata: + name: pg-eu-backup +spec: + cluster: + name: pg-eu + schedule: '0 0 0 * * *' + backupOwnerReference: self + method: plugin + pluginConfiguration: + name: barman-cloud.cloudnative-pg.io +``` + +--- + +## Step 4: Update the `externalClusters` configuration + +If your `Cluster` relies on one or more external clusters that use the in-tree +Barman Cloud integration, you need to update those configurations to use the +plugin-based architecture. + +When a replica cluster fetches WAL files or base backups from an external +source that used the built-in backup method, follow these steps: + +1. Create a corresponding `ObjectStore` resource for the external cluster, as + shown in [Step 1](#step-1-define-the-objectstore) +2. Update the `externalClusters` section of your replica cluster to use the + plugin instead of the in-tree `barmanObjectStore` field + +### Example + +Consider the original configuration using in-tree Barman Cloud: + +```yaml +apiVersion: postgresql.cnpg.io/v1 +kind: Cluster +metadata: + name: pg-us +spec: + # [...] + externalClusters: + - name: pg-eu + barmanObjectStore: + destinationPath: s3://backups/ + endpointURL: http://minio-eu:9000 + serverName: pg-eu + s3Credentials: + accessKeyId: + name: minio-eu + key: ACCESS_KEY_ID + secretAccessKey: + name: minio-eu + key: ACCESS_SECRET_KEY + wal: + compression: gzip +``` + +Create the `ObjectStore` resource for the external cluster: + +```yaml +apiVersion: barmancloud.cnpg.io/v1 +kind: ObjectStore +metadata: + name: minio-eu +spec: + configuration: + destinationPath: s3://backups/ + endpointURL: http://minio-eu:9000 + s3Credentials: + accessKeyId: + name: minio-eu + key: ACCESS_KEY_ID + secretAccessKey: + name: minio-eu + key: ACCESS_SECRET_KEY + wal: + compression: gzip +``` + +Update the external cluster configuration to use the plugin: + +```yaml +apiVersion: postgresql.cnpg.io/v1 +kind: Cluster +metadata: + name: pg-us +spec: + # [...] + externalClusters: + - name: pg-eu + plugin: + name: barman-cloud.cloudnative-pg.io + parameters: + barmanObjectName: minio-eu + serverName: pg-eu +``` + +## Step 5: Verify your metrics + +When migrating from the in-core solution to the plugin-based approach, you need +to monitor a different set of metrics, as described in the +["Observability"](observability.md) section. + +The table below summarizes the name changes between the old in-core metrics and +the new plugin-based ones: + +| Old metric name | New metric name | +| ------------------------------------------------ | ---------------------------------------------------------------- | +| `cnpg_collector_last_failed_backup_timestamp` | `barman_cloud_cloudnative_pg_io_last_failed_backup_timestamp` | +| `cnpg_collector_last_available_backup_timestamp` | `barman_cloud_cloudnative_pg_io_last_available_backup_timestamp` | +| `cnpg_collector_first_recoverability_point` | `barman_cloud_cloudnative_pg_io_first_recoverability_point` | diff --git a/web/versioned_docs/version-0.15.0/misc.md b/web/versioned_docs/version-0.15.0/misc.md new file mode 100644 index 0000000..e6594df --- /dev/null +++ b/web/versioned_docs/version-0.15.0/misc.md @@ -0,0 +1,126 @@ +--- +sidebar_position: 90 +--- + +# Miscellaneous + + + +## Backup Object Tagging + +You can attach key-value metadata tags to backup artifactsβ€”such as base +backups, WAL files, and history filesβ€”via the `.spec.configuration` section of +the `ObjectStore` resource. + +- `tags`: applied to base backups and WAL files +- `historyTags`: applied to history files only + +### Example + +```yaml +apiVersion: barmancloud.cnpg.io/v1 +kind: ObjectStore +metadata: + name: my-store +spec: + configuration: + [...] + tags: + backupRetentionPolicy: "expire" + historyTags: + backupRetentionPolicy: "keep" + [...] +``` + +## Extra Options for Backup, WAL Archiving, and Restore + +You can pass additional command-line arguments to the underlying +`barman-cloud-*` commands using the corresponding fields in the `ObjectStore` +configuration. + +- `.spec.configuration.data.additionalCommandArgs`: for `barman-cloud-backup` +- `.spec.configuration.data.restoreAdditionalCommandArgs`: for `barman-cloud-restore` +- `.spec.configuration.wal.archiveAdditionalCommandArgs`: for `barman-cloud-wal-archive` +- `.spec.configuration.wal.restoreAdditionalCommandArgs`: for `barman-cloud-wal-restore` + +Each field accepts a list of string arguments. If an argument conflicts with +one already set by the plugin, the user-provided value will be ignored. These +fields are intended to pass options the plugin does not configure automatically. + +### Example: Extra Backup Options + +```yaml +kind: ObjectStore +metadata: + name: my-store +spec: + configuration: + data: + additionalCommandArgs: + - "--min-chunk-size=5MB" + - "--read-timeout=60" +``` + +### Example: Extra Restore Options + +```yaml +kind: ObjectStore +metadata: + name: my-store +spec: + configuration: + data: + restoreAdditionalCommandArgs: + - "--read-timeout=900" +``` + +### Example: Extra WAL Archive Options + +```yaml +kind: ObjectStore +metadata: + name: my-store +spec: + configuration: + wal: + archiveAdditionalCommandArgs: + - "--max-concurrency=1" + - "--read-timeout=60" +``` + +### Example: Extra WAL Restore Options + +```yaml +kind: ObjectStore +metadata: + name: my-store +spec: + configuration: + wal: + restoreAdditionalCommandArgs: + - "--read-timeout=60" +``` + +For a complete list of supported options, refer to the +[official Barman Cloud documentation](https://docs.pgbarman.org/release/latest/). + +## Enable the pprof debug server for the sidecar + +You can enable the instance sidecar's pprof debug HTTP server by adding the `--pprof-server=
` flag to the container's +arguments via `.spec.instanceSidecarConfiguration.additionalContainerArgs`. + +Pass a bind address in the form `:` (for example, `0.0.0.0:6061`). +An empty value disables the server (disabled by default). + +### Example + +```yaml +apiVersion: barmancloud.cnpg.io/v1 +kind: ObjectStore +metadata: + name: my-store +spec: + instanceSidecarConfiguration: + additionalContainerArgs: + - "--pprof-server=0.0.0.0:6061" +``` diff --git a/web/versioned_docs/version-0.15.0/object_stores.md b/web/versioned_docs/version-0.15.0/object_stores.md new file mode 100644 index 0000000..11b1ff8 --- /dev/null +++ b/web/versioned_docs/version-0.15.0/object_stores.md @@ -0,0 +1,497 @@ +--- +sidebar_position: 50 +--- + +# Object Store Providers + + + +The Barman Cloud Plugin enables the storage of PostgreSQL cluster backup files +in any object storage service supported by the +[Barman Cloud infrastructure](https://docs.pgbarman.org/release/latest/). + +Currently, Barman Cloud supports the following providers: + +- [Amazon S3](#aws-s3) +- [Microsoft Azure Blob Storage](#azure-blob-storage) +- [Google Cloud Storage](#google-cloud-storage) + +You may also use any S3- or Azure-compatible implementation of the above +services. + +To configure object storage with Barman Cloud, you must define an +[`ObjectStore` object](plugin-barman-cloud.v1.md#objectstore), which +establishes the connection between your PostgreSQL cluster and the object +storage backend. + +Configuration details β€” particularly around authentication β€” will vary depending on +the specific object storage provider you are using. + +The following sections detail the setup for each. + +:::note Authentication Methods +The Barman Cloud Plugin does not independently test all authentication methods +supported by `barman-cloud`. The plugin's responsibility is limited to passing +the provided credentials to `barman-cloud`, which then handles authentication +according to its own implementation. Users should refer to the +[Barman Cloud documentation](https://docs.pgbarman.org/release/latest/) to +verify that their chosen authentication method is supported and properly +configured. +::: + +--- + +## AWS S3 + +[AWS Simple Storage Service (S3)](https://aws.amazon.com/s3/) is one of the +most widely adopted object storage solutions. + +The Barman Cloud plugin for CloudNativePG integrates with S3 through two +primary authentication mechanisms: + +- [IAM Roles for Service Accounts (IRSA)](https://docs.aws.amazon.com/eks/latest/userguide/iam-roles-for-service-accounts.html) β€” + recommended for clusters running on EKS +- Access keys β€” using `ACCESS_KEY_ID` and `ACCESS_SECRET_KEY` credentials + +### Access Keys + +To authenticate using access keys, you’ll need: + +- `ACCESS_KEY_ID`: the public key used to authenticate to S3 +- `ACCESS_SECRET_KEY`: the corresponding secret key +- `ACCESS_SESSION_TOKEN`: (optional) a temporary session token, if required + +These credentials must be stored securely in a Kubernetes secret: + +```sh +kubectl create secret generic aws-creds \ + --from-literal=ACCESS_KEY_ID= \ + --from-literal=ACCESS_SECRET_KEY= +# --from-literal=ACCESS_SESSION_TOKEN= # if required +``` + +The credentials will be encrypted at rest if your Kubernetes environment +supports it. + +You can then reference the secret in your `ObjectStore` definition: + +```yaml +apiVersion: barmancloud.cnpg.io/v1 +kind: ObjectStore +metadata: + name: aws-store +spec: + configuration: + destinationPath: "s3://BUCKET_NAME/path/to/folder" + s3Credentials: + accessKeyId: + name: aws-creds + key: ACCESS_KEY_ID + secretAccessKey: + name: aws-creds + key: ACCESS_SECRET_KEY + [...] +``` + +### IAM Role for Service Account (IRSA) + +To use IRSA with EKS, configure the service account of the PostgreSQL cluster +with the appropriate annotation: + +```yaml +apiVersion: postgresql.cnpg.io/v1 +kind: Cluster +metadata: + [...] +spec: + serviceAccountTemplate: + metadata: + annotations: + eks.amazonaws.com/role-arn: arn:[...] + [...] +``` + +### S3 Lifecycle Policy + +Barman Cloud uploads backup files to S3 but does not modify them afterward. +To enhance data durability and protect against accidental or malicious loss, +it's recommended to implement the following best practices: + +- Enable object versioning +- Enable object locking to prevent objects from being deleted or overwritten + for a defined period or indefinitely (this provides an additional layer of + protection against accidental deletion and ransomware attacks) +- Set lifecycle rules to expire current versions a few days after your Barman + retention window +- Expire non-current versions after a longer period + +These strategies help you safeguard backups without requiring broad delete +permissions, ensuring both security and compliance with minimal operational +overhead. + +### S3-Compatible Storage Providers + +You can use S3-compatible services like **MinIO**, **Linode (Akamai) Object Storage**, +or **DigitalOcean Spaces** by specifying a custom `endpointURL`. + +Example with Linode (Akamai) Object Storage (`us-east1`): + +```yaml +apiVersion: barmancloud.cnpg.io/v1 +kind: ObjectStore +metadata: + name: linode-store +spec: + configuration: + destinationPath: "s3://BUCKET_NAME/" + endpointURL: "https://us-east1.linodeobjects.com" + s3Credentials: + [...] + [...] +``` + +Recent changes to the [boto3 implementation](https://github.com/boto/boto3/issues/4392) +of [Amazon S3 Data Integrity Protections](https://docs.aws.amazon.com/sdkref/latest/guide/feature-dataintegrity.html) +may lead to the `x-amz-content-sha256` error when using the Barman Cloud +Plugin. + +If you encounter this issue (see [GitHub issue #393](https://github.com/cloudnative-pg/plugin-barman-cloud/issues/393)), +you can apply the following workaround by setting specific environment +variables in the `ObjectStore` resource: + +```yaml +apiVersion: barmancloud.cnpg.io/v1 +kind: ObjectStore +metadata: + name: linode-store +spec: + instanceSidecarConfiguration: + env: + - name: AWS_REQUEST_CHECKSUM_CALCULATION + value: when_required + - name: AWS_RESPONSE_CHECKSUM_VALIDATION + value: when_required + [...] +``` + +These settings ensure that checksum calculations and validations are only +applied when explicitly required, avoiding compatibility issues with certain +S3-compatible storage providers. + +Example with DigitalOcean Spaces (SFO3, path-style): + +```yaml +apiVersion: barmancloud.cnpg.io/v1 +kind: ObjectStore +metadata: + name: digitalocean-store +spec: + configuration: + destinationPath: "s3://BUCKET_NAME/path/to/folder" + endpointURL: "https://sfo3.digitaloceanspaces.com" + s3Credentials: + [...] + [...] +``` + +### Using Object Storage with a Private CA + +For object storage services (e.g., MinIO) that use HTTPS with certificates +signed by a private CA, set the `endpointCA` field in the `ObjectStore` +definition. Unless you already have it, create a Kubernetes `Secret` with the +CA bundle: + +```sh +kubectl create secret generic my-ca-secret --from-file=ca.crt +``` + +Then reference it: + +```yaml +apiVersion: barmancloud.cnpg.io/v1 +kind: ObjectStore +metadata: + name: minio-store +spec: + configuration: + endpointURL: + endpointCA: + name: my-ca-secret + key: ca.crt + [...] +``` + + +:::note +If you want `ConfigMaps` and `Secrets` to be **automatically** reloaded by +instances, you can add a label with the key `cnpg.io/reload` to the +`Secrets`/`ConfigMaps`. Otherwise, you will have to reload the instances using the +`kubectl cnpg reload` subcommand. +::: + +--- + +## Azure Blob Storage + +[Azure Blob Storage](https://azure.microsoft.com/en-us/services/storage/blobs/) +is Microsoft’s cloud-based object storage solution. + +Barman Cloud supports the following authentication methods: + +- [Connection String](https://learn.microsoft.com/en-us/azure/storage/common/storage-configure-connection-string) +- Storage Account Name + [Storage Account Access Key](https://learn.microsoft.com/en-us/azure/storage/common/storage-account-keys-manage) +- Storage Account Name + [Storage Account SAS Token](https://learn.microsoft.com/en-us/azure/storage/blobs/sas-service-create) +- [Azure AD Managed Identity](https://learn.microsoft.com/en-us/entra/identity/managed-identities-azure-resources/overview) +- [Default Azure Credentials](https://learn.microsoft.com/en-us/dotnet/api/azure.identity.defaultazurecredential?view=azure-dotnet) + +### Azure AD Managed Identity + +This method avoids storing credentials in Kubernetes by enabling the +usage of [Azure Managed Identities](https://learn.microsoft.com/en-us/entra/identity/managed-identities-azure-resources/overview) authentication mechanism. +This can be enabled by setting the `inheritFromAzureAD` option to `true`. +Managed Identity can be configured for the AKS Cluster by following +the [Azure documentation](https://learn.microsoft.com/en-us/azure/aks/use-managed-identity?pivots=system-assigned). + +```yaml +apiVersion: barmancloud.cnpg.io/v1 +kind: ObjectStore +metadata: + name: azure-store +spec: + configuration: + destinationPath: "" + azureCredentials: + inheritFromAzureAD: true + [...] +``` + +### Default Azure Credentials + +The `useDefaultAzureCredentials` option enables the default Azure credentials +flow, which uses [`DefaultAzureCredential`](https://learn.microsoft.com/en-us/python/api/azure-identity/azure.identity.defaultazurecredential) +to automatically discover and use available credentials in the following order: + +1. **Environment Variables** β€” `AZURE_CLIENT_ID`, `AZURE_CLIENT_SECRET`, and `AZURE_TENANT_ID` for Service Principal authentication +2. **Managed Identity** β€” Uses the managed identity assigned to the pod +3. **Azure CLI** β€” Uses credentials from the Azure CLI if available +4. **Azure PowerShell** β€” Uses credentials from Azure PowerShell if available + +This approach is particularly useful for getting started with development and testing; it allows +the SDK to attempt multiple authentication mechanisms seamlessly across different environments. +However, this is not recommended for production. Please refer to the +[official Azure guidance](https://learn.microsoft.com/en-us/dotnet/azure/sdk/authentication/credential-chains?tabs=dac#usage-guidance-for-defaultazurecredential) +for a comprehensive understanding of `DefaultAzureCredential`. + +```yaml +apiVersion: barmancloud.cnpg.io/v1 +kind: ObjectStore +metadata: + name: azure-store +spec: + configuration: + destinationPath: "" + azureCredentials: + useDefaultAzureCredentials: true + [...] +``` + +### Access Key, SAS Token, or Connection String + +Store credentials in a Kubernetes secret: + +```sh +kubectl create secret generic azure-creds \ + --from-literal=AZURE_STORAGE_ACCOUNT= \ + --from-literal=AZURE_STORAGE_KEY= \ + --from-literal=AZURE_STORAGE_SAS_TOKEN= \ + --from-literal=AZURE_STORAGE_CONNECTION_STRING= +``` + +Then reference the required keys in your `ObjectStore`: + +```yaml +apiVersion: barmancloud.cnpg.io/v1 +kind: ObjectStore +metadata: + name: azure-store +spec: + configuration: + destinationPath: "" + azureCredentials: + connectionString: + name: azure-creds + key: AZURE_CONNECTION_STRING + storageAccount: + name: azure-creds + key: AZURE_STORAGE_ACCOUNT + storageKey: + name: azure-creds + key: AZURE_STORAGE_KEY + storageSasToken: + name: azure-creds + key: AZURE_STORAGE_SAS_TOKEN + [...] +``` + +For Azure Blob, the destination path format is: + +``` +://..core.windows.net// +``` + +### Azure-Compatible Providers + +If you're using a different implementation (e.g., Azurite or emulator): + +``` +://:/// +``` + +--- + +## Google Cloud Storage + +[Google Cloud Storage](https://cloud.google.com/storage/) is supported with two +authentication modes: + +- **GKE Workload Identity** (recommended inside Google Kubernetes Engine) +- **Service Account JSON key** via the `GOOGLE_APPLICATION_CREDENTIALS` environment variable + +### GKE Workload Identity + +Use the [Workload Identity authentication](https://cloud.google.com/kubernetes-engine/docs/how-to/workload-identity) +when running in GKE: + +1. Set `googleCredentials.gkeEnvironment` to `true` in the `ObjectStore` + resource +2. Annotate the `serviceAccountTemplate` in the `Cluster` resource with the GCP + service account + +For example, in the `ObjectStore` resource: + +```yaml +apiVersion: barmancloud.cnpg.io/v1 +kind: ObjectStore +metadata: + name: google-store +spec: + configuration: + destinationPath: "gs:///" + googleCredentials: + gkeEnvironment: true +``` + +And in the `Cluster` resource: + +```yaml +apiVersion: postgresql.cnpg.io/v1 +kind: Cluster +spec: + serviceAccountTemplate: + metadata: + annotations: + iam.gke.io/gcp-service-account: [...].iam.gserviceaccount.com +``` + +### Service Account JSON Key + +Follow Google’s [authentication setup](https://cloud.google.com/docs/authentication/getting-started), +then: + +```sh +kubectl create secret generic backup-creds --from-file=gcsCredentials=gcs_credentials_file.json +``` + +```yaml +apiVersion: barmancloud.cnpg.io/v1 +kind: ObjectStore +metadata: + name: google-store +spec: + configuration: + destinationPath: "gs:///" + googleCredentials: + applicationCredentials: + name: backup-creds + key: gcsCredentials + [...] +``` + +:::important +This authentication method generates a JSON file within the container +with all the credentials required to access your Google Cloud Storage +bucket. As a result, if someone gains access to the `Pod`, they will also have +write permissions to the bucket. +::: + +--- + + +## MinIO Object Store + +In order to use the Tenant resource you first need to deploy the +[MinIO operator](https://docs.min.io/community/minio-object-store/operations/deployments/installation.html). +For the latest documentation of MinIO, please refer to the +[MinIO official documentation](https://docs.min.io/community/minio-object-store/). + +MinIO Object Store's API is compatible with S3, and the default configuration of the Tenant +will create these services: +- `-console` on port 9090 (with autocert) or 9443 (without autocert) +- `-hl` on port 9000 +Where `` is the `metadata.name` you assigned to your Tenant resource. + +:::note +The `-console` service will only be available if you have enabled the +[MinIO Console](https://docs.min.io/community/minio-object-store/administration/minio-console.html). + +For example, the following Tenant: +```yml +apiVersion: minio.min.io/v2 +kind: Tenant +metadata: + name: cnpg-backups +spec: + [...] +``` +would have services called `cnpg-backups-console` and `cnpg-backups-hl` respectively. + +The `console` service is for managing the tenant, while the `hl` service exposes the S3 +compatible API. If your tenant is configured with `requestAutoCert` you will communicate +to these services over HTTPS, if not you will use HTTP. + +For authentication you can use your username and password, or create an access key. +Whichever method you choose, it has to be stored as a secret. + +```sh +kubectl create secret generic minio-creds \ + --from-literal=MINIO_ACCESS_KEY= \ + --from-literal=MINIO_SECRET_KEY= +``` + +Finally, create the Barman ObjectStore: + +```yaml +apiVersion: barmancloud.cnpg.io/v1 +kind: ObjectStore +metadata: + name: minio-store +spec: + configuration: + destinationPath: s3://BUCKET_NAME/ + endpointURL: http://-hl:9000 + s3Credentials: + accessKeyId: + name: minio-creds + key: MINIO_ACCESS_KEY + secretAccessKey: + name: minio-creds + key: MINIO_SECRET_KEY + [...] +``` + +:::important +Verify on `s3://BUCKET_NAME/` the presence of archived WAL files before +proceeding with a backup. +::: + +--- diff --git a/web/versioned_docs/version-0.15.0/observability.md b/web/versioned_docs/version-0.15.0/observability.md new file mode 100644 index 0000000..274b973 --- /dev/null +++ b/web/versioned_docs/version-0.15.0/observability.md @@ -0,0 +1,24 @@ +--- +sidebar_position: 55 +--- + +# Observability + + + +The Barman Cloud Plugin exposes the following metrics through the native +Prometheus exporter of the instance manager: + +- `barman_cloud_cloudnative_pg_io_last_failed_backup_timestamp`: + the UNIX timestamp of the most recent failed backup. + +- `barman_cloud_cloudnative_pg_io_last_available_backup_timestamp`: + the UNIX timestamp of the most recent successfully available backup. + +- `barman_cloud_cloudnative_pg_io_first_recoverability_point`: + the UNIX timestamp representing the earliest point in time from which the + cluster can be recovered. + +These metrics supersede the previously available in-core metrics that used the +`cnpg_collector` prefix. The new metrics are exposed under the +`barman_cloud_cloudnative_pg_io` prefix instead. diff --git a/web/versioned_docs/version-0.15.0/parameters.md b/web/versioned_docs/version-0.15.0/parameters.md new file mode 100644 index 0000000..ca0cd2b --- /dev/null +++ b/web/versioned_docs/version-0.15.0/parameters.md @@ -0,0 +1,19 @@ +--- +sidebar_position: 100 +--- + +# Parameters + + + +The following parameters are available for the Barman Cloud Plugin: + +- `barmanObjectName`: references the `ObjectStore` resource to be used by the + plugin. +- `serverName`: Specifies the server name in the object store. + +:::important +The `serverName` parameter in the `ObjectStore` resource is retained solely for +API compatibility with the in-tree `barmanObjectStore` and must always be left empty. +When needed, use the `serverName` plugin parameter in the Cluster configuration instead. +::: diff --git a/web/versioned_docs/version-0.15.0/plugin-barman-cloud.v1.md b/web/versioned_docs/version-0.15.0/plugin-barman-cloud.v1.md new file mode 100644 index 0000000..7bd607c --- /dev/null +++ b/web/versioned_docs/version-0.15.0/plugin-barman-cloud.v1.md @@ -0,0 +1,108 @@ +# API Reference + +## Packages +- [barmancloud.cnpg.io/v1](#barmancloudcnpgiov1) + + +## barmancloud.cnpg.io/v1 + +Package v1 contains API Schema definitions for the barmancloud v1 API group + +### Resource Types +- [ObjectStore](#objectstore) + + + +#### InstanceSidecarConfiguration + + + +InstanceSidecarConfiguration defines the configuration for the sidecar that runs in the instance pods. + + + +_Appears in:_ +- [ObjectStoreSpec](#objectstorespec) + +| Field | Description | Required | Default | Validation | +| --- | --- | --- | --- | --- | +| `env` _[EnvVar](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#envvar-v1-core) array_ | The environment to be explicitly passed to the sidecar | | | | +| `retentionPolicyIntervalSeconds` _integer_ | The retentionCheckInterval defines the frequency at which the
system checks and enforces retention policies. | | 1800 | | +| `resources` _[ResourceRequirements](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#resourcerequirements-v1-core)_ | Resources define cpu/memory requests and limits for the sidecar that runs in the instance pods. | | | | +| `additionalContainerArgs` _string array_ | AdditionalContainerArgs is an optional list of command-line arguments
to be passed to the sidecar container when it starts.
The provided arguments are appended to the container’s default arguments. | | | | +| `logLevel` _string_ | The log level for PostgreSQL instances. Valid values are: `error`, `warning`, `info` (default), `debug`, `trace` | | info | Enum: [error warning info debug trace]
| + + +#### ObjectStore + + + +ObjectStore is the Schema for the objectstores API. + + + + + +| Field | Description | Required | Default | Validation | +| --- | --- | --- | --- | --- | +| `apiVersion` _string_ | `barmancloud.cnpg.io/v1` | True | | | +| `kind` _string_ | `ObjectStore` | True | | | +| `metadata` _[ObjectMeta](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#objectmeta-v1-meta)_ | Refer to Kubernetes API documentation for fields of `metadata`. | True | | | +| `spec` _[ObjectStoreSpec](#objectstorespec)_ | Specification of the desired behavior of the ObjectStore.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status | True | | | +| `status` _[ObjectStoreStatus](#objectstorestatus)_ | Most recently observed status of the ObjectStore. This data may not be up to
date. Populated by the system. Read-only.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status | | | | + + +#### ObjectStoreSpec + + + +ObjectStoreSpec defines the desired state of ObjectStore. + + + +_Appears in:_ +- [ObjectStore](#objectstore) + +| Field | Description | Required | Default | Validation | +| --- | --- | --- | --- | --- | +| `configuration` _[BarmanObjectStoreConfiguration](https://pkg.go.dev/github.com/cloudnative-pg/barman-cloud/pkg/api#BarmanObjectStoreConfiguration)_ | The configuration for the barman-cloud tool suite | True | | | +| `retentionPolicy` _string_ | RetentionPolicy is the retention policy to be used for backups
and WALs (i.e. '60d'). The retention policy is expressed in the form
of `XXu` where `XX` is a positive integer and `u` is in `[dwm]` -
days, weeks, months. | | | Pattern: `^[1-9][0-9]*[dwm]$`
| +| `instanceSidecarConfiguration` _[InstanceSidecarConfiguration](#instancesidecarconfiguration)_ | The configuration for the sidecar that runs in the instance pods | | | | + + +#### ObjectStoreStatus + + + +ObjectStoreStatus defines the observed state of ObjectStore. + + + +_Appears in:_ +- [ObjectStore](#objectstore) + +| Field | Description | Required | Default | Validation | +| --- | --- | --- | --- | --- | +| `serverRecoveryWindow` _object (keys:string, values:[RecoveryWindow](#recoverywindow))_ | ServerRecoveryWindow maps each server to its recovery window | True | | | + + +#### RecoveryWindow + + + +RecoveryWindow represents the time span between the first +recoverability point and the last successful backup of a PostgreSQL +server, defining the period during which data can be restored. + + + +_Appears in:_ +- [ObjectStoreStatus](#objectstorestatus) + +| Field | Description | Required | Default | Validation | +| --- | --- | --- | --- | --- | +| `firstRecoverabilityPoint` _[Time](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#time-v1-meta)_ | The first recoverability point in a PostgreSQL server refers to
the earliest point in time to which the database can be
restored. | True | | | +| `lastSuccessfulBackupTime` _[Time](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#time-v1-meta)_ | The last successful backup time | True | | | +| `lastFailedBackupTime` _[Time](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#time-v1-meta)_ | The last failed backup time | True | | | + + diff --git a/web/versioned_docs/version-0.15.0/resource-name-migration.md b/web/versioned_docs/version-0.15.0/resource-name-migration.md new file mode 100644 index 0000000..f5c1cc3 --- /dev/null +++ b/web/versioned_docs/version-0.15.0/resource-name-migration.md @@ -0,0 +1,219 @@ +--- +sidebar_position: 90 +--- + +# Resource name migration guide + + + +:::warning +Before proceeding with the migration process, please: +1. **Read this guide in its entirety** to understand what changes will be made +2. **Test in a non-production environment** first if possible +3. **Ensure you have proper backups** of your cluster configuration + +This migration will delete old RBAC resources only after the +`plugin-barman-cloud` upgrade. While the operation is designed to be safe, you +should review and understand the changes before proceeding. The maintainers of +this project are not responsible for any issues that may arise during +migration. + +**Note:** This guide assumes you are using the default `cnpg-system` namespace. +::: + +## Overview + +Starting from version **0.8.0**, the `plugin-barman-cloud` deployment manifests +use more specific, prefixed resource names to avoid conflicts with other +components deployed in the same Kubernetes cluster. + +## What Changed + +The following resources have been renamed to use proper prefixes. + +### Cluster-scoped Resources + +| Old Name | New Name | +|----------------------------|------------------------------------------| +| `metrics-auth-role` | `barman-plugin-metrics-auth-role` | +| `metrics-auth-rolebinding` | `barman-plugin-metrics-auth-rolebinding` | +| `metrics-reader` | `barman-plugin-metrics-reader` | +| `objectstore-viewer-role` | `barman-plugin-objectstore-viewer-role` | +| `objectstore-editor-role` | `barman-plugin-objectstore-editor-role` | + +### Namespace-scoped Resources + +| Old Name | New Name | Namespace | +|-------------------------------|---------------------------------------------|---------------| +| `leader-election-role` | `barman-plugin-leader-election-role` | `cnpg-system` | +| `leader-election-rolebinding` | `barman-plugin-leader-election-rolebinding` | `cnpg-system` | + +## Why This Change? + +Using generic names for cluster-wide resources is discouraged as they may +conflict with other components deployed in the same cluster. The new names make +it clear that these resources belong to the Barman Cloud plugin and help avoid +naming collisions. + +## Migration Instructions + +This three steps migration process is straightforward and can be completed with +a few `kubectl` commands. + +### Step 1: Upgrade plugin-barman-cloud + +Please refer to the [Installation](installation.mdx) section to deploy the new +`plugin-barman-cloud` release. + +### Step 2: Delete Old Cluster-scoped Resources + +:::danger Verify Resources Before Deletion +**IMPORTANT**: The old resource names are generic and could potentially belong +to other components in your cluster. + +**Before deleting each resource, verify it belongs to the Barman Cloud plugin +by checking:** +- For `objectstore-*` roles: Look for `barmancloud.cnpg.io` in the API groups +- For `metrics-*` roles: Check if they reference the `plugin-barman-cloud` + ServiceAccount in `cnpg-system` namespace +- For other roles: Look for labels like `app.kubernetes.io/name: plugin-barman-cloud` + +If a resource doesn't have these indicators, **DO NOT DELETE IT** as it may +belong to another application. + +Carefully review the output of each verification command before proceeding with +the `delete`. +::: + +:::tip Dry Run First +You can add `--dry-run=client` to any `kubectl delete` command to preview what +would be deleted without actually removing anything. +::: + +**Only proceed if you've verified these resources belong to the Barman Cloud +plugin (see warning above).** + +For each resource below, first verify it belongs to Barman Cloud, then delete +it: + +```bash +# 1. Check metrics-auth-rolebinding FIRST (we'll check the role after) +# Look for references to plugin-barman-cloud ServiceAccount +kubectl describe clusterrolebinding metrics-auth-rolebinding +# If it references plugin-barman-cloud ServiceAccount in cnpg-system namespace, +# delete it: +kubectl delete clusterrolebinding metrics-auth-rolebinding + +# 2. Check metrics-auth-role +# Look for references to authentication.k8s.io and authorization.k8s.io +kubectl describe clusterrole metrics-auth-role +# Verify it's not being used by any other rolebindings: +kubectl get clusterrolebinding -o json \ + | jq -r '.items[] | select(.roleRef.name=="metrics-auth-role") \ + | .metadata.name' +# If the above returns nothing (role is not in use) and the role looks like the +# Barman Cloud one, delete it (see warnings section): +kubectl delete clusterrole metrics-auth-role + +# 3. Check objectstore-viewer-role +# Look for barmancloud.cnpg.io API group or +# for `app.kubernetes.io/name: plugin-barman-cloud` label +kubectl describe clusterrole objectstore-viewer-role +# If it shows barmancloud.cnpg.io in API groups, delete it: +kubectl delete clusterrole objectstore-viewer-role + +# 4. Check objectstore-editor-role +# Look for barmancloud.cnpg.io API group or +# for `app.kubernetes.io/name: plugin-barman-cloud` label +kubectl describe clusterrole objectstore-editor-role +# If it shows barmancloud.cnpg.io in API groups, delete it: +kubectl delete clusterrole objectstore-editor-role + +# 5. Check metrics-reader (MOST DANGEROUS - very generic name) +# First, check if it's being used by any rolebindings OTHER than barman's: +kubectl get clusterrolebinding -o json | jq -r '.items[] \ + | select(.roleRef.name=="metrics-reader") \ + | "\(.metadata.name) -> \(.subjects[0].name) in \(.subjects[0].namespace)"' +# If this shows ANY rolebindings, review them carefully. Only proceed if +# they're all Barman-related. Then check the role itself: +kubectl describe clusterrole metrics-reader +# If it ONLY has nonResourceURLs: /metrics and NO other rolebindings use it, +# delete it: +kubectl delete clusterrole metrics-reader +``` + +:::warning +The `metrics-reader` role is particularly dangerous to delete blindly. Many +monitoring systems use this exact name. Only delete it if: + +1. You've verified it ONLY grants access to `/metrics` +2. No other rolebindings reference it (checked with the jq command above) +3. You're certain it was created by the Barman Cloud plugin + +If you're unsure, it's safer to leave it and let the new +`barman-plugin-metrics-reader` role coexist with it. +::: + +If any resource is not found during the `describe` command, that's okay - it +means it was never created or already deleted. Simply skip the delete command +for that resource. + +### Step 3: Delete Old Namespace-scoped Resources + +Delete the old namespace-scoped resources in the `cnpg-system` namespace: + +```bash +# Delete the old leader-election resources +kubectl delete role leader-election-role -n cnpg-system +kubectl delete rolebinding leader-election-rolebinding -n cnpg-system +``` + +If any resource is not found, that's okay - it means it was never created or +already deleted. + +## Impact + +- **Permissions:** If you have custom RBAC rules or tools that reference the + old resource names, they will need to be updated. +- **External Users:** If end users have been granted the + `objectstore-viewer-role` or `objectstore-editor-role`, they will need to be + re-granted the new role names (`barman-plugin-objectstore-viewer-role` and + `barman-plugin-objectstore-editor-role`). + +## Verification + +After migration, verify that the new resources are created: + +```bash +# Check cluster-scoped resources +kubectl get clusterrole | grep barman +kubectl get clusterrolebinding | grep barman + +# Check namespace-scoped resources +kubectl get role,rolebinding -n cnpg-system | grep barman +``` + +You should see the new prefixed resource names. + +## Troubleshooting + +### Plugin Not Starting After Migration + +If the plugin fails to start after migration, check: + +1. **ServiceAccount permissions:** Ensure the `plugin-barman-cloud` ServiceAccount is bound to the new roles: + ```bash + kubectl get clusterrolebinding barman-plugin-metrics-auth-rolebinding -o yaml + kubectl get rolebinding barman-plugin-leader-election-rolebinding -n cnpg-system -o yaml + ``` + +2. **Role references:** Verify that the rolebindings reference the correct role names: + ```bash + kubectl describe rolebinding barman-plugin-leader-election-rolebinding -n cnpg-system + kubectl describe clusterrolebinding barman-plugin-metrics-auth-rolebinding + ``` + +## Support + +If you encounter issues during migration, please open an issue on the [GitHub +repository](https://github.com/cloudnative-pg/plugin-barman-cloud/issues). diff --git a/web/versioned_docs/version-0.15.0/retention.md b/web/versioned_docs/version-0.15.0/retention.md new file mode 100644 index 0000000..fefbd08 --- /dev/null +++ b/web/versioned_docs/version-0.15.0/retention.md @@ -0,0 +1,38 @@ +--- +sidebar_position: 60 +--- + +# Retention Policies + + + +The Barman Cloud Plugin supports **automated cleanup of obsolete backups** via +retention policies, configured in the `.spec.retentionPolicy` field of the +`ObjectStore` resource. + +:::note +This feature uses the `barman-cloud-backup-delete` command with the +`--retention-policy "RECOVERY WINDOW OF {{ value }} {{ unit }}"` syntax. +::: + +#### Example: 30-Day Retention Policy + +```yaml +apiVersion: barmancloud.cnpg.io/v1 +kind: ObjectStore +metadata: + name: my-store +spec: + [...] + retentionPolicy: "30d" +```` + +:::note +A **recovery window retention policy** ensures the cluster can be restored to +any point in time between the calculated *Point of Recoverability* (PoR) and +the latest WAL archive. The PoR is defined as `current time - recovery window`. +The **first valid backup** is the most recent backup completed before the PoR. +Backups older than that are marked as *obsolete* and deleted after the next +backup completes. +::: + diff --git a/web/versioned_docs/version-0.15.0/troubleshooting.md b/web/versioned_docs/version-0.15.0/troubleshooting.md new file mode 100644 index 0000000..c57a81e --- /dev/null +++ b/web/versioned_docs/version-0.15.0/troubleshooting.md @@ -0,0 +1,586 @@ +--- +sidebar_position: 90 +--- + +# Troubleshooting + + + +This guide helps you diagnose and resolve common issues with the Barman Cloud +plugin. + +:::important +We are continuously improving the integration between CloudNativePG and the +Barman Cloud plugin as it moves toward greater stability and maturity. For this +reason, we recommend using the latest available version of both components. +See the [*Requirements* section](intro.md#requirements) for details. +::: + +:::note +The following commands assume you installed the CloudNativePG operator in +the default `cnpg-system` namespace. If you installed it in a different +namespace, adjust the commands accordingly. +::: + +## Viewing Logs + +To troubleshoot effectively, you’ll often need to review logs from multiple +sources: + +```sh +# View operator logs (includes plugin interaction logs) +kubectl logs -n cnpg-system deployment/cnpg-controller-manager -f + +# View plugin manager logs +kubectl logs -n cnpg-system deployment/barman-cloud -f + +# View sidecar container logs (Barman Cloud operations) +kubectl logs -n -c plugin-barman-cloud -f + +# View all containers in a pod +kubectl logs -n --all-containers=true + +# View previous container logs (if container restarted) +kubectl logs -n -c plugin-barman-cloud --previous +``` + +## Common Issues + +### Plugin Installation Issues + +#### Plugin pods not starting + +**Symptoms:** + +- Plugin pods stuck in `CrashLoopBackOff` or `Error` +- Plugin deployment not ready + +**Possible causes and solutions:** + +1. **Certificate issues** + + ```sh + # Check if cert-manager is installed and running + kubectl get pods -n cert-manager + + # Check if the plugin certificate is created + kubectl get certificates -n cnpg-system + ``` + + If cert-manager is not installed, install it first: + + ```sh + # Note: other installation methods for cert-manager are available + kubectl apply -f \ + https://github.com/cert-manager/cert-manager/releases/latest/download/cert-manager.yaml + ``` + + If you are using your own certificates without cert-manager, you will need + to verify the entire certificate chain yourself. + + +2. **Image pull errors** + + ```sh + # Check pod events for image pull errors + kubectl describe pod -n cnpg-system -l app=barman-cloud + ``` + + Verify the image exists and you have proper credentials if using a private + registry. + + +3. **Resource constraints** + + ```sh + # Check node resources + kubectl top nodes + kubectl describe nodes + ``` + + Make sure your cluster has sufficient CPU and memory resources. + +### Backup Failures + +#### Quick Backup Troubleshooting Checklist + +When a backup fails, follow these steps in order: + +1. **Check backup status**: + + ```sh + kubectl get backups.postgresql.cnpg.io -n + ``` +2. **Get error details and target pod**: + + ```sh + kubectl describe backups.postgresql.cnpg.io \ + -n + + kubectl get backups.postgresql.cnpg.io \ + -n \ + -o jsonpath='{.status.instanceID.podName}' + ``` +3. **Check the target pod’s sidecar logs**: + + ```sh + TARGET_POD=$(kubectl get backups.postgresql.cnpg.io \ + -n \ + -o jsonpath='{.status.instanceID.podName}') + + kubectl logs \ + -n $TARGET_POD -c plugin-barman-cloud \ + --tail=100 | grep -E "ERROR|FATAL|panic" + ``` +4. **Check cluster events**: + + ```sh + kubectl get events -n \ + --field-selector involvedObject.name= \ + --sort-by='.lastTimestamp' + ``` +5. **Verify plugin is running**: + + ```sh + kubectl get pods \ + -n cnpg-system -l app=barman-cloud + ``` +6. **Check operator logs**: + + ```sh + kubectl logs \ + -n cnpg-system deployment/cnpg-controller-manager \ + --tail=100 | grep -i "backup\|plugin" + ``` +7. **Check plugin manager logs**: + + ```sh + kubectl logs \ + -n cnpg-system deployment/barman-cloud --tail=100 + ``` + +#### Backup job fails immediately + +**Symptoms:** + +- Backup pods terminate with error +- No backup files appear in object storage +- Backup shows `failed` phase with various error messages + +**Common failure modes and solutions:** + +1. **"requested plugin is not available" errors** + + ``` + requested plugin is not available: barman + requested plugin is not available: barman-cloud + requested plugin is not available: barman-cloud.cloudnative-pg.io + ``` + + **Cause:** The plugin name in the Cluster configuration doesn’t match the + deployed plugin, or the plugin isn’t registered. + + **Solution:** + + a. **Check plugin registration:** + + ```sh + # If you have the `cnpg` plugin installed (v1.27.0+) + kubectl cnpg status -n + ``` + + Look for the "Plugins status" section: + ``` + Plugins status + Name Version Status Reported Operator Capabilities + ---- ------- ------ ------------------------------ + barman-cloud.cloudnative-pg.io 0.6.0 N/A Reconciler Hooks, Lifecycle Service + ``` + + b. **Verify plugin name in `Cluster` spec**: + + ```yaml + apiVersion: postgresql.cnpg.io/v1 + kind: Cluster + spec: + plugins: + - name: barman-cloud.cloudnative-pg.io + parameters: + barmanObjectName: + ``` + + c. **Check plugin deployment is running**: + + ```sh + kubectl get deployment -n cnpg-system barman-cloud + ``` + +2. **"rpc error: code = Unknown desc = panic caught: assignment to entry in nil map" errors** + + **Cause:** Misconfiguration in the `ObjectStore` (e.g., typo or missing field). + + **Solution:** + + - Review sidecar logs for details + - Verify `ObjectStore` configuration and secrets + - Common issues include: + - Missing or incorrect secret references + - Typos in configuration parameters + - Missing required environment variables in secrets + +#### Backup performance issues + +**Symptoms:** + +- Backups take extremely long +- Backups timeout + +**Plugin-specific considerations:** + +1. **Check `ObjectStore` parallelism settings** + - Adjust `maxParallel` in `ObjectStore` configuration + - Monitor sidecar container resource usage during backups + +2. **Verify plugin resource allocation** + - Check if the sidecar container has sufficient CPU/memory + - Review plugin container logs for resource-related warnings + +:::tip +For Barman-specific features like compression, encryption, and performance +tuning, refer to the [Barman documentation](https://docs.pgbarman.org/latest/). +::: + +### WAL Archiving Issues + +#### WAL archiving stops + +**Symptoms:** + +- WAL files accumulate on the primary +- Cluster shows WAL archiving warnings +- Sidecar logs show WAL errors + +**Debugging steps:** + +1. **Check plugin sidecar logs for WAL archiving errors** + ```sh + # Check recent WAL archive operations in sidecar + kubectl logs -n -c plugin-barman-cloud \ + --tail=50 | grep -i wal + ``` + +2. **Check ObjectStore configuration for WAL settings** + - Ensure ObjectStore has proper WAL retention settings + - Verify credentials have permissions for WAL operations + +### Restore Issues + +#### Restore fails during recovery + +**Symptoms:** + +- New cluster stuck in recovery +- Plugin sidecar shows restore errors +- PostgreSQL won’t start + +**Debugging steps:** + +1. **Check plugin sidecar logs during restore** + + ```sh + # Check the sidecar logs on the recovering cluster pods + kubectl logs -n \ + -c plugin-barman-cloud --tail=100 + + # Look for restore-related errors + kubectl logs -n \ + -c plugin-barman-cloud | grep -E "restore|recovery|ERROR" + ``` + +2. **Verify plugin can access backups** + + ```sh + # Check if `ObjectStore` is properly configured for restore + kubectl get objectstores.barmancloud.cnpg.io \ + -n -o yaml + + # Check PostgreSQL recovery logs + kubectl logs -n \ + -c postgres | grep -i recovery + ``` + +:::tip +For detailed Barman restore operations and troubleshooting, refer to the +[Barman documentation](https://docs.pgbarman.org/latest/barman-cloud-restore.html). +::: + +#### Point-in-time recovery (PITR) configuration issues + +**Symptoms:** + +- PITR doesn’t reach target time +- WAL access errors +- Recovery halts early + +**Debugging steps:** + +1. **Verify PITR configuration in the `Cluster` spec** + + ```yaml + apiVersion: postgresql.cnpg.io/v1 + kind: Cluster + metadata: + name: + spec: + storage: + size: 1Gi + + bootstrap: + recovery: + source: origin + recoveryTarget: + targetTime: "2024-01-15T10:30:00Z" + + externalClusters: + - name: origin + plugin: + enabled: true + name: barman-cloud.cloudnative-pg.io + parameters: + barmanObjectName: + serverName: + ``` + +2. **Check sidecar logs for WAL-related errors** + + ```sh + kubectl logs -n \ + -c plugin-barman-cloud | grep -i wal + ``` + +:::note +Timestamps without an explicit timezone suffix +(e.g., `2024-01-15 10:30:00`) are interpreted as UTC. +::: + +:::warning +Always specify an explicit timezone in your timestamp to avoid ambiguity. +For example, use `2024-01-15T10:30:00Z` or `2024-01-15T10:30:00+02:00` +instead of `2024-01-15 10:30:00`. +::: + +:::note +For detailed PITR configuration and WAL management, see the +[Barman PITR documentation](https://docs.pgbarman.org/latest/). +::: + +### Plugin Configuration Issues + +#### Plugin cannot connect to object storage + +**Symptoms:** + +- Sidecar logs show connection errors +- Backups fail with authentication or network errors +- `ObjectStore` resource reports errors + +**Solution:** + +1. **Verify `ObjectStore` CRD configuration and secrets** + + ```sh + # Check ObjectStore resource status + kubectl get objectstores.barmancloud.cnpg.io \ + -n -o yaml + + # Verify the secret exists and has correct keys for your provider + kubectl get secret -n \ + -o jsonpath='{.data}' | jq 'keys' + ``` + +2. **Check sidecar logs for connectivity issues** + ```sh + kubectl logs -n \ + -c plugin-barman-cloud | grep -E "connect|timeout|SSL|cert" + ``` + +3. **Adjust provider-specific settings (endpoint, path style, etc.)** + - See [Object Store Configuration](object_stores.md) for provider-specific settings + - Ensure `endpointURL` is set correctly for your storage provider + - Verify network policies allow egress to your storage provider + +## Diagnostic Commands + +### Using the `cnpg` plugin for `kubectl` + +The `cnpg` plugin for `kubectl` provides extended debugging capabilities. +Keep it updated: + +```sh +# Install or update the `cnpg` plugin +kubectl krew install cnpg +# Or using an alternative method: https://cloudnative-pg.io/documentation/current/kubectl-plugin/#install + +# Check plugin status (requires CNPG 1.27.0+) +kubectl cnpg status -n + +# View cluster status in detail +kubectl cnpg status -n --verbose +``` + +## Getting Help + +If problems persist: + +1. **Check the documentation** + + - [Installation Guide](installation.mdx) + - [Object Store Configuration](object_stores.md) (for provider-specific settings) + - [Usage Examples](usage.md) + + +2. **Gather diagnostic information** + + ```sh + # Create a diagnostic bundle (⚠️ sanitize these before sharing!) + kubectl get objectstores.barmancloud.cnpg.io -A -o yaml > /tmp/objectstores.yaml + kubectl get clusters.postgresql.cnpg.io -A -o yaml > /tmp/clusters.yaml + kubectl logs -n cnpg-system deployment/barman-cloud --tail=1000 > /tmp/plugin.log + ``` + + +3. **Community support** + + - CloudNativePG Slack: [#cloudnativepg-users](https://cloud-native.slack.com/messages/cloudnativepg-users) + - GitHub Issues: [plugin-barman-cloud](https://github.com/cloudnative-pg/plugin-barman-cloud/issues) + + +4. **Include when reporting** + + - CloudNativePG version + - Plugin version + - Kubernetes version + - Cloud provider and region + - Relevant configuration (⚠️ sanitize/redact sensitive information) + - Error messages and logs + - Steps to reproduce + +## Known Issues and Limitations + +### Current Known Issues + +1. **Migration compatibility**: After migrating from in-tree backup to the + plugin, the `kubectl cnpg backup` command syntax has changed + ([#353](https://github.com/cloudnative-pg/plugin-barman-cloud/issues/353)): + + ```sh + # Old command (in-tree, no longer works after migration) + kubectl cnpg backup -n \ + --method=barmanObjectStore + + # New command (plugin-based) + kubectl cnpg backup -n \ + --method=plugin --plugin-name=barman-cloud.cloudnative-pg.io + ``` + +### Plugin Limitations + +1. **Sidecar resource sharing**: The plugin sidecar container shares pod + resources with PostgreSQL + +2. **Plugin restart behavior**: Restarting the sidecar container requires + restarting the entire PostgreSQL pod + +## Recap of General Debugging Steps + +### Check Backup Status and Identify the Target Instance + +```sh +# List all backups and their status +kubectl get backups.postgresql.cnpg.io -n + +# Get detailed backup information including error messages and target instance +kubectl describe backups.postgresql.cnpg.io \ + -n + +# Extract the target pod name from a failed backup +kubectl get backups.postgresql.cnpg.io \ + -n \ + -o jsonpath='{.status.instanceID.podName}' + +# Get more details including the target pod, method, phase, and error +kubectl get backups.postgresql.cnpg.io \ + -n \ + -o jsonpath='Pod: {.status.instanceID.podName}{"\n"}Method: {.status.method}{"\n"}Phase: {.status.phase}{"\n"}Error: {.status.error}{"\n"}' + +# Check the cluster status for backup-related information +kubectl cnpg status -n --verbose +``` + +### Check Sidecar Logs on the Backup Target Pod + +```sh +# Identify which pod was the backup target (from the previous step) +TARGET_POD=$(kubectl get backups.postgresql.cnpg.io \ + -n \ + -o jsonpath='{.status.instanceID.podName}') +echo "Backup target pod: $TARGET_POD" + +# Check the sidecar logs on the specific target pod +kubectl logs -n $TARGET_POD \ + -c plugin-barman-cloud --tail=100 + +# Follow the logs in real time +kubectl logs -n $TARGET_POD \ + -c plugin-barman-cloud -f + +# Check for specific errors in the target pod around the backup time +kubectl logs -n $TARGET_POD \ + -c plugin-barman-cloud --since=10m | grep -E "ERROR|FATAL|panic|failed" + +# Alternative: List all cluster pods and their roles +kubectl get pods -n -l cnpg.io/cluster= \ + -o custom-columns=NAME:.metadata.name,ROLE:.metadata.labels.cnpg\\.io/instanceRole,INSTANCE:.metadata.labels.cnpg\\.io/instanceName + +# Check sidecar logs on ALL cluster pods (if the target is unclear) +for pod in $(kubectl get pods -n -l cnpg.io/cluster= -o name); do + echo "=== Checking $pod ===" + kubectl logs -n $pod -c plugin-barman-cloud \ + --tail=20 | grep -i error || echo "No errors found" +done +``` + +### Check Events for Backup-Related Issues + +```sh +# Check events for the cluster +kubectl get events -n \ + --field-selector involvedObject.name= + +# Check events for failed backups +kubectl get events -n \ + --field-selector involvedObject.kind=Backup + +# Get all recent events in the namespace +kubectl get events -n --sort-by='.lastTimestamp' | tail -20 +``` + +### Verify `ObjectStore` Configuration + +```sh +# Check the ObjectStore resource +kubectl get objectstores.barmancloud.cnpg.io \ + -n -o yaml + +# Verify the secret exists and has the correct keys +kubectl get secret -n -o yaml +# Alternatively +kubectl get secret -n -o jsonpath='{.data}' | jq 'keys' +``` + +### Common Error Messages and Solutions + +* **"AccessDenied" or "403 Forbidden"** β€” Check cloud credentials and bucket permissions. +* **"NoSuchBucket"** β€” Verify the bucket exists and the endpoint URL is correct. +* **"Connection timeout"** β€” Check network connectivity and firewall rules. +* **"SSL certificate problem"** β€” For self-signed certificates, verify the CA bundle configuration. diff --git a/web/versioned_docs/version-0.15.0/upgrades.mdx b/web/versioned_docs/version-0.15.0/upgrades.mdx new file mode 100644 index 0000000..0ab9ddb --- /dev/null +++ b/web/versioned_docs/version-0.15.0/upgrades.mdx @@ -0,0 +1,16 @@ +--- +sidebar_position: 25 +--- + +# Upgrades + + + +You can upgrade the plugin simply by installing the new version. Unless +explicitly stated below or in the release notes, no special steps are required. + +## Upgrading to version 0.8.x from previous versions + +Version **0.8.0** introduces breaking changes to resource naming. +To complete the upgrade successfully, follow the instructions in the +["Resource name migration guide"](resource-name-migration.md). diff --git a/web/versioned_docs/version-0.15.0/usage.md b/web/versioned_docs/version-0.15.0/usage.md new file mode 100644 index 0000000..6406d38 --- /dev/null +++ b/web/versioned_docs/version-0.15.0/usage.md @@ -0,0 +1,283 @@ +--- +sidebar_position: 30 +--- + +# Using the Barman Cloud Plugin + + + +After [installing the plugin](installation.mdx) in the same namespace as the +CloudNativePG operator, enabling your PostgreSQL cluster to use the Barman +Cloud Plugin involves just a few steps: + +- Defining the object store containing your WAL archive and base backups, using + your preferred [provider](object_stores.md) +- Instructing the Postgres cluster to use the Barman Cloud Plugin + +From that moment, you’ll be able to issue on-demand backups or define a backup +schedule, as well as rely on the object store for recovery operations. + +The rest of this page details each step, using MinIO as object store provider. + +## Defining the `ObjectStore` + +An `ObjectStore` resource must be created for each object store used in your +PostgreSQL architecture. Here's an example configuration using MinIO: + +```yaml +apiVersion: barmancloud.cnpg.io/v1 +kind: ObjectStore +metadata: + name: minio-store +spec: + configuration: + destinationPath: s3://backups/ + endpointURL: http://minio:9000 + s3Credentials: + accessKeyId: + name: minio + key: ACCESS_KEY_ID + secretAccessKey: + name: minio + key: ACCESS_SECRET_KEY + wal: + compression: gzip +``` + +The `.spec.configuration` schema follows the same format as the +[in-tree barman-cloud support](https://pkg.go.dev/github.com/cloudnative-pg/barman-cloud/pkg/api#BarmanObjectStoreConfiguration). +Refer to [the CloudNativePG documentation](https://cloudnative-pg.io/documentation/current/appendixes/backup_barmanobjectstore/) +for additional details. + +:::important +The `serverName` parameter in the `ObjectStore` resource is retained solely for +API compatibility with the in-tree `barmanObjectStore` and must always be left empty. +When needed, use the `serverName` plugin parameter in the Cluster configuration instead. +::: + +## Configuring WAL Archiving + +Once the `ObjectStore` is defined, you can configure your PostgreSQL cluster +to archive WALs by referencing the store in the `.spec.plugins` section: + +```yaml +apiVersion: postgresql.cnpg.io/v1 +kind: Cluster +metadata: + name: cluster-example +spec: + instances: 3 + imagePullPolicy: Always + plugins: + - name: barman-cloud.cloudnative-pg.io + isWALArchiver: true + parameters: + barmanObjectName: minio-store + storage: + size: 1Gi +``` + +This configuration enables both WAL archiving and data directory backups. + +## Performing a Base Backup + +Once WAL archiving is enabled, the cluster is ready for backups. Backups can be +created either declaratively (with YAML manifests) or imperatively (with the +`cnpg` plugin). + +### Declarative approach (YAML manifest) + +Create a backup resource by applying a YAML manifest: + +```yaml +apiVersion: postgresql.cnpg.io/v1 +kind: Backup +metadata: + name: backup-example +spec: + cluster: + name: cluster-example + method: plugin + pluginConfiguration: + name: barman-cloud.cloudnative-pg.io +``` + +### Imperative approach (using the `cnpg` plugin) + +The quickest way to trigger an on-demand backup is with the `cnpg` plugin: + +```bash +kubectl cnpg backup -n \ + --method=plugin \ + --plugin-name=barman-cloud.cloudnative-pg.io +``` + +:::note Migration from in-tree backups +If you are migrating from the in-tree backup system, note the change in syntax: + +```bash +# Old command (in-tree backup) +kubectl cnpg backup -n --method=barmanObjectStore + +# New command (plugin-based backup) +kubectl cnpg backup -n \ + --method=plugin \ + --plugin-name=barman-cloud.cloudnative-pg.io +``` +::: + +## Restoring a Cluster + +To restore a cluster from an object store, create a new `Cluster` resource that +references the store containing the backup. Below is an example configuration: + +```yaml +apiVersion: postgresql.cnpg.io/v1 +kind: Cluster +metadata: + name: cluster-restore +spec: + instances: 3 + imagePullPolicy: IfNotPresent + bootstrap: + recovery: + source: source + externalClusters: + - name: source + plugin: + name: barman-cloud.cloudnative-pg.io + parameters: + barmanObjectName: minio-store + serverName: cluster-example + storage: + size: 1Gi +``` + +:::important +The above configuration does **not** enable WAL archiving for the restored cluster. +::: + +To enable WAL archiving for the restored cluster, include the `.spec.plugins` +section alongside the `externalClusters.plugin` section, as shown below: + +```yaml +apiVersion: postgresql.cnpg.io/v1 +kind: Cluster +metadata: + name: cluster-restore +spec: + instances: 3 + imagePullPolicy: IfNotPresent + bootstrap: + recovery: + source: source + plugins: + - name: barman-cloud.cloudnative-pg.io + isWALArchiver: true + parameters: + # Backup Object Store (push, read-write) + barmanObjectName: minio-store-bis + externalClusters: + - name: source + plugin: + name: barman-cloud.cloudnative-pg.io + parameters: + # Recovery Object Store (pull, read-only) + barmanObjectName: minio-store + serverName: cluster-example + storage: + size: 1Gi +``` + +The same object store may be used for both transaction log archiving and +restoring a cluster, or you can configure separate stores for these purposes. + +## Configuring Replica Clusters + +You can set up a distributed topology by combining the previously defined +configurations with the `.spec.replica` section. Below is an example of how to +define a replica cluster: + +```yaml +apiVersion: postgresql.cnpg.io/v1 +kind: Cluster +metadata: + name: cluster-dc-a +spec: + instances: 3 + primaryUpdateStrategy: unsupervised + + storage: + storageClass: csi-hostpath-sc + size: 1Gi + + plugins: + - name: barman-cloud.cloudnative-pg.io + isWALArchiver: true + parameters: + barmanObjectName: minio-store-a + + replica: + self: cluster-dc-a + primary: cluster-dc-a + source: cluster-dc-b + + externalClusters: + - name: cluster-dc-a + plugin: + name: barman-cloud.cloudnative-pg.io + parameters: + barmanObjectName: minio-store-a + + - name: cluster-dc-b + plugin: + name: barman-cloud.cloudnative-pg.io + parameters: + barmanObjectName: minio-store-b +``` + +## Configuring the plugin instance sidecar + +The Barman Cloud Plugin runs as a sidecar container next to each PostgreSQL +instance pod. It manages backup, WAL archiving, and restore processes. + +Configuration comes from multiple `ObjectStore` resources: + +1. The one referenced in the + `.spec.plugins` section of the `Cluster`. This is the + object store used for WAL archiving and base backups. +2. The one referenced in the external cluster + used in the `.spec.replica.source` section of the `Cluster`. This is + used by the log-shipping designated primary to get the WAL files. +3. The one referenced in the + `.spec.bootstrap.recovery.source` section of the `Cluster`. Used by + the initial recovery job to create the cluster from an existing backup. + +You can fine-tune sidecar behavior in the `.spec.instanceSidecarConfiguration` +of your ObjectStore. These settings apply to all PostgreSQL instances that use +this object store. Any updates take effect at the next `Cluster` reconciliation, +and could generate a rollout of the `Cluster`. + +```yaml +apiVersion: barmancloud.cnpg.io/v1 +kind: ObjectStore +metadata: + name: minio-store +spec: + configuration: + # [...] + instanceSidecarConfiguration: + retentionPolicyIntervalSeconds: 1800 + resources: + requests: + memory: "XXX" + cpu: "YYY" + limits: + memory: "XXX" + cpu: "YYY" +``` + +:::note +If more than one `ObjectStore` applies, the `instanceSidecarConfiguration` of +the one set in `.spec.plugins` has priority. +::: diff --git a/web/versioned_sidebars/version-0.15.0-sidebars.json b/web/versioned_sidebars/version-0.15.0-sidebars.json new file mode 100644 index 0000000..1fd014a --- /dev/null +++ b/web/versioned_sidebars/version-0.15.0-sidebars.json @@ -0,0 +1,8 @@ +{ + "docs": [ + { + "type": "autogenerated", + "dirName": "." + } + ] +} diff --git a/web/versions.json b/web/versions.json index 2290ed1..d743c1c 100644 --- a/web/versions.json +++ b/web/versions.json @@ -1,4 +1,5 @@ [ + "0.15.0", "0.14.0", "0.13.0" ] From f94016fcff43d780a308a2da435a84bc2da97504 Mon Sep 17 00:00:00 2001 From: Peggie Date: Thu, 3 Sep 2026 20:03:03 +0200 Subject: [PATCH 134/134] chore(main): release 0.15.0 (#1066) :robot: I have created a release *beep* *boop* --- ## [0.15.0](https://github.com/cloudnative-pg/plugin-barman-cloud/compare/v0.14.0...v0.15.0) (2026-09-03) ### Features * **deps:** Bump Barman version to 3.20.0 ([#1090](https://github.com/cloudnative-pg/plugin-barman-cloud/issues/1090)) ([1bb6bab](https://github.com/cloudnative-pg/plugin-barman-cloud/commit/1bb6bab640f5adf038c86e33c96d42765d2aa708)) * Serve restore hooks from the instance sidecar ([#1025](https://github.com/cloudnative-pg/plugin-barman-cloud/issues/1025)) ([7bb01a8](https://github.com/cloudnative-pg/plugin-barman-cloud/commit/7bb01a865b15c0f5f608c8bfbc7561daadf2de3d)) ### Bug Fixes * **deps:** Update all non-major go dependencies ([#1041](https://github.com/cloudnative-pg/plugin-barman-cloud/issues/1041)) ([9a3cc0d](https://github.com/cloudnative-pg/plugin-barman-cloud/commit/9a3cc0d35492697a31ddc13b87f269cca3e83ea5)) * **deps:** Update all non-major go dependencies ([#1086](https://github.com/cloudnative-pg/plugin-barman-cloud/issues/1086)) ([31b2553](https://github.com/cloudnative-pg/plugin-barman-cloud/commit/31b25538bf6d8fadf2cd28c15b23c9c81ae22fac)) * **deps:** Update kubernetes monorepo to v0.37.0 ([#1084](https://github.com/cloudnative-pg/plugin-barman-cloud/issues/1084)) ([b15b661](https://github.com/cloudnative-pg/plugin-barman-cloud/commit/b15b661648792cb2cb899ee628b8a3aa909c3fc8)) * **deps:** Update module google.golang.org/grpc to v1.83.2 ([#1073](https://github.com/cloudnative-pg/plugin-barman-cloud/issues/1073)) ([b3d948c](https://github.com/cloudnative-pg/plugin-barman-cloud/commit/b3d948ce821c68be1d99c84c679e020b5f3db363)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). Signed-off-by: Peggie --- .release-please-manifest.json | 2 +- CHANGELOG.md | 16 ++++++++++++++++ internal/cnpgi/metadata/constants.go | 2 +- 3 files changed, 18 insertions(+), 2 deletions(-) diff --git a/.release-please-manifest.json b/.release-please-manifest.json index 727e2be..f87262a 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "0.14.0" + ".": "0.15.0" } diff --git a/CHANGELOG.md b/CHANGELOG.md index 1736d59..b7bac82 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,21 @@ # Changelog +## [0.15.0](https://github.com/cloudnative-pg/plugin-barman-cloud/compare/v0.14.0...v0.15.0) (2026-09-03) + + +### Features + +* **deps:** Bump Barman version to 3.20.0 ([#1090](https://github.com/cloudnative-pg/plugin-barman-cloud/issues/1090)) ([1bb6bab](https://github.com/cloudnative-pg/plugin-barman-cloud/commit/1bb6bab640f5adf038c86e33c96d42765d2aa708)) +* Serve restore hooks from the instance sidecar ([#1025](https://github.com/cloudnative-pg/plugin-barman-cloud/issues/1025)) ([7bb01a8](https://github.com/cloudnative-pg/plugin-barman-cloud/commit/7bb01a865b15c0f5f608c8bfbc7561daadf2de3d)) + + +### Bug Fixes + +* **deps:** Update all non-major go dependencies ([#1041](https://github.com/cloudnative-pg/plugin-barman-cloud/issues/1041)) ([9a3cc0d](https://github.com/cloudnative-pg/plugin-barman-cloud/commit/9a3cc0d35492697a31ddc13b87f269cca3e83ea5)) +* **deps:** Update all non-major go dependencies ([#1086](https://github.com/cloudnative-pg/plugin-barman-cloud/issues/1086)) ([31b2553](https://github.com/cloudnative-pg/plugin-barman-cloud/commit/31b25538bf6d8fadf2cd28c15b23c9c81ae22fac)) +* **deps:** Update kubernetes monorepo to v0.37.0 ([#1084](https://github.com/cloudnative-pg/plugin-barman-cloud/issues/1084)) ([b15b661](https://github.com/cloudnative-pg/plugin-barman-cloud/commit/b15b661648792cb2cb899ee628b8a3aa909c3fc8)) +* **deps:** Update module google.golang.org/grpc to v1.83.2 ([#1073](https://github.com/cloudnative-pg/plugin-barman-cloud/issues/1073)) ([b3d948c](https://github.com/cloudnative-pg/plugin-barman-cloud/commit/b3d948ce821c68be1d99c84c679e020b5f3db363)) + ## [0.14.0](https://github.com/cloudnative-pg/plugin-barman-cloud/compare/v0.13.0...v0.14.0) (2026-07-29) diff --git a/internal/cnpgi/metadata/constants.go b/internal/cnpgi/metadata/constants.go index f725697..ed9bb8a 100644 --- a/internal/cnpgi/metadata/constants.go +++ b/internal/cnpgi/metadata/constants.go @@ -63,7 +63,7 @@ const ( // Data is the metadata of this plugin. var Data = identity.GetPluginMetadataResponse{ Name: PluginName, - Version: "0.14.0", // x-release-please-version + Version: "0.15.0", // x-release-please-version DisplayName: "BarmanCloudInstance", ProjectUrl: "https://github.com/cloudnative-pg/plugin-barman-cloud", RepositoryUrl: "https://github.com/cloudnative-pg/plugin-barman-cloud",