diff --git a/.github/ISSUE_TEMPLATE/bug.md b/.github/ISSUE_TEMPLATE/bug.md index f4a7edb21..44fdf5a11 100644 --- a/.github/ISSUE_TEMPLATE/bug.md +++ b/.github/ISSUE_TEMPLATE/bug.md @@ -4,6 +4,8 @@ about: Report a bug encountered while working with this Gardener extension --- + + **How to categorize this issue?** + **How to categorize this issue?** + **How to categorize this issue?** diff --git a/.github/ISSUE_TEMPLATE/support.md b/.github/ISSUE_TEMPLATE/support.md index 227875a30..4327d2257 100644 --- a/.github/ISSUE_TEMPLATE/support.md +++ b/.github/ISSUE_TEMPLATE/support.md @@ -9,5 +9,5 @@ STOP -- PLEASE READ! GitHub is not the right place for support requests. -If you're looking for help, please post your question on the [Kubernetes Slack](http://slack.k8s.io/) ([#gardener](https://kubernetes.slack.com/messages/gardener) channel) or join our [bi-weekly meetings](https://gardener.cloud/docs/contribute/#bi-weekly-meetings). +If you're looking for help, please post your question on [Slack](https://join.slack.com/t/gardener-cloud/shared_invite/zt-33c9daems-3oOorhnqOSnldZPWqGmIBw) or join our [bi-weekly meetings](https://gardener.cloud/community/). --> diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md index 25a50e144..42da2ebe5 100644 --- a/.github/pull_request_template.md +++ b/.github/pull_request_template.md @@ -1,3 +1,5 @@ + + **How to categorize this PR?** /area TODO /kind TODO diff --git a/.github/renovate.json b/.github/renovate.json index 38051f133..2517a347f 100644 --- a/.github/renovate.json +++ b/.github/renovate.json @@ -18,7 +18,8 @@ "forkProcessing": "enabled", "enabledManagers": [ "gomod", - "custom.regex" + "custom.regex", + "github-actions" ], "prCreation": "immediate", "recreateWhen": "always", @@ -62,11 +63,64 @@ "matchManagers": [ "gomod" ], - "automerge": true, "addLabels": [ "go module" ] }, + { + "matchManagers": [ + "gomod" + ], + "groupName": "gardener", + "matchPackageNames": [ + "github.com/gardener/gardener", + "github.com/gardener/gardener/pkg/apis", + "github.com/gardener/gardener/hack/tools" + ] + }, + { + "matchManagers": [ + "gomod" + ], + "matchPackageNames": [ + "k8s.io/api", + "k8s.io/apiextensions-apiserver", + "k8s.io/apimachinery", + "k8s.io/apiserver", + "k8s.io/client-go", + "k8s.io/code-generator", + "k8s.io/component-base", + "k8s.io/kubelet" + ], + "allowedVersions": "<0.36.0" + }, + { + "matchManagers": [ + "gomod" + ], + "matchPackageNames": [ + "sigs.k8s.io/controller-runtime" + ], + "allowedVersions": "<0.24.0" + }, + { + "matchManagers": [ + "gomod" + ], + "matchPackageNames": [ + "sigs.k8s.io/controller-tools" + ], + "allowedVersions": "<0.21.0" + }, + { + "matchManagers": [ + "gomod" + ], + "matchPackageNames": [ + "k8s.io/autoscaler/vertical-pod-autoscaler" + ], + "allowedVersions": "<1.7.0" + }, { "matchFileNames": [ "charts/images.yaml" diff --git a/.github/workflows/e2e.yaml b/.github/workflows/e2e.yaml index 999795ed2..4b3f3f4a4 100644 --- a/.github/workflows/e2e.yaml +++ b/.github/workflows/e2e.yaml @@ -10,13 +10,13 @@ jobs: name: "End-to-End test" steps: - name: Checkout source - uses: actions/checkout@v4 + uses: actions/checkout@v7.0.0 - name: install Dependencies run: sudo apt-get update && sudo apt-get install -y apache2 git curl make jq openssh-client - name: Setup Go - uses: actions/setup-go@v3 + uses: actions/setup-go@v7.0.0 with: - go-version: ">=1.21.0" + go-version-file: go.mod - name: Setup Gardener kubeconfig run: | echo "${{ secrets.GARDENER_KUBECONFIG }}" > hack/ci/secrets/gardener-kubeconfig.yaml @@ -33,7 +33,7 @@ jobs: run: | bash hack/ci/01-shoot-for-seed.sh - name: Prepare and start Gardener - uses: nick-fields/retry@v3 + uses: nick-fields/retry@v4.0.0 env: CI: false with: diff --git a/.github/workflows/on-pr-test.yml b/.github/workflows/on-pr-test.yml index e13534655..308d92eec 100644 --- a/.github/workflows/on-pr-test.yml +++ b/.github/workflows/on-pr-test.yml @@ -9,13 +9,13 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - go-version: [ 1.21 ] + go-version: [ "1.26" ] steps: - name: Checkout commit - uses: actions/checkout@v2 + uses: actions/checkout@v7.0.0 - name: Set up Go ${{ matrix.go-version }} - uses: actions/setup-go@v2 + uses: actions/setup-go@v7.0.0 with: go-version: ${{ matrix.go-version }} - name: Execute build diff --git a/.github/workflows/on-release-publish.yml b/.github/workflows/on-release-publish.yml index e5bf2b712..e74445421 100644 --- a/.github/workflows/on-release-publish.yml +++ b/.github/workflows/on-release-publish.yml @@ -3,29 +3,34 @@ name: go:release on: push: tags: 'v*' - + workflow_dispatch: + jobs: create-release: runs-on: ubuntu-latest + permissions: + contents: write steps: - name: Checkout commit - uses: actions/checkout@v3 + uses: actions/checkout@v7.0.0 - name: Update VERSION file run: |- echo "${{ github.ref_name }}" > VERSION - name: Setup Go - uses: actions/setup-go@v3 + uses: actions/setup-go@v7.0.0 with: - go-version: ">=1.21.0" + go-version-file: go.mod - name: Create controller-registration.yaml run: |- - GOPATH=$(go env GOPATH) - export GOPATH - + # Populate the module cache before make: the Makefile resolves + # GARDENER_HACK_DIR and GARDENER_TOOL_DIR via `go list -m -f {{.Dir}}` + # at parse time, which returns empty for modules that are not extracted. + go mod download + make generate - name: Create Release - uses: softprops/action-gh-release@v1 + uses: softprops/action-gh-release@v3.0.2 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: @@ -36,6 +41,9 @@ jobs: example/controller-registration.yaml go-publish: runs-on: ubuntu-latest + permissions: + contents: read + packages: write strategy: matrix: include: @@ -44,23 +52,23 @@ jobs: steps: - name: Checkout commit - uses: actions/checkout@v3 + uses: actions/checkout@v7.0.0 - name: Update VERSION file run: |- echo "${{ github.ref_name }}" > VERSION - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v1 + uses: docker/setup-buildx-action@v4.2.0 - name: Login to GitHub Container Registry - uses: docker/login-action@v1 + uses: docker/login-action@v4.4.0 with: registry: ghcr.io username: ${{ github.repository_owner }} password: ${{ secrets.GITHUB_TOKEN }} - name: Publish image - uses: docker/build-push-action@v2 + uses: docker/build-push-action@v7.3.0 with: target: ${{ matrix.name }} push: true tags: | - ghcr.io/23technologies/${{ matrix.name }}:latest - ghcr.io/23technologies/${{ matrix.name }}:${{ github.ref_name }} + ghcr.io/${{ github.repository_owner }}/${{ matrix.name }}:latest + ghcr.io/${{ github.repository_owner }}/${{ matrix.name }}:${{ github.ref_name }} diff --git a/.github/workflows/renovate.yaml b/.github/workflows/renovate.yaml index 334389365..5f8d3f693 100644 --- a/.github/workflows/renovate.yaml +++ b/.github/workflows/renovate.yaml @@ -10,9 +10,9 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout - uses: actions/checkout@v4.1.1 + uses: actions/checkout@v7.0.0 - name: Self-hosted Renovate - uses: renovatebot/github-action@v40.1.4 + uses: renovatebot/github-action@v46.1.19 with: configurationFile: .github/renovate.json token: ${{ secrets.RENOVATE_TOKEN }} diff --git a/CODEOWNERS b/CODEOWNERS index 42567a0e8..bc62de75d 100644 --- a/CODEOWNERS +++ b/CODEOWNERS @@ -1,2 +1,2 @@ # gardener-extension-provider-hcloud maintainers -* @23technologies/developers +* /developers diff --git a/Dockerfile b/Dockerfile index 42fdd4e17..e876986be 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,8 +1,8 @@ ############# builder -FROM golang:1.23.0 AS builder +FROM golang:1.26.5 AS builder ENV BINARY_PATH=/go/bin -WORKDIR /go/src/github.com/23technologies/gardener-extension-provider-hcloud +WORKDIR /go/src/github.com/opendefensecloud/gardener-extension-provider-hcloud # cache deps before building and copying source so that we don't need to re-download as much # and so that source changes don't invalidate our downloaded layer @@ -16,13 +16,13 @@ ARG EFFECTIVE_VERSION RUN make install EFFECTIVE_VERSION=$EFFECTIVE_VERSION ############# base -FROM gcr.io/distroless/static-debian11:nonroot as base +FROM gcr.io/distroless/static-debian12:nonroot AS base WORKDIR / ############# gardener-extension-provider-hcloud FROM base AS gardener-extension-provider-hcloud -LABEL org.opencontainers.image.source="https://github.com/23technologies/gardener-extension-provider-hcloud" +LABEL org.opencontainers.image.source="https://github.com/opendefensecloud/gardener-extension-provider-hcloud" COPY charts /charts COPY --from=builder /go/bin/gardener-extension-provider-hcloud /gardener-extension-provider-hcloud @@ -33,4 +33,3 @@ FROM base AS gardener-extension-admission-hcloud COPY --from=builder /go/bin/gardener-extension-admission-hcloud /gardener-extension-admission-hcloud ENTRYPOINT ["/gardener-extension-admission-hcloud"] - diff --git a/Makefile b/Makefile index 26a1b519e..07e6a0037 100644 --- a/Makefile +++ b/Makefile @@ -17,13 +17,13 @@ GARDENER_HACK_DIR := $(shell go list -m -f "{{.Dir}}" github.com/gardener/g EXTENSION_PREFIX := gardener-extension NAME := provider-hcloud ADMISSION_NAME := admission-hcloud -REGISTRY := ghcr.io/23technologies +REGISTRY := ghcr.io/opendefensecloud IMAGE_PREFIX := $(REGISTRY)/gardener-extension-provider-hcloud REPO_ROOT := $(shell dirname $(realpath $(lastword ${MAKEFILE_LIST}))) HACK_DIR := ${REPO_ROOT}/hack KUBECONFIG := dev/kubeconfig.yaml MANAGER_CONFIG_FILE := example/00-componentconfig.yaml -PROJECT_NAME := 23technologies +PROJECT_NAME := opendefensecloud VERSION := $(shell cat "${REPO_ROOT}/VERSION") EFFECTIVE_VERSION := $(VERSION)-$(shell git rev-parse HEAD) LD_FLAGS := "-w $(shell bash $(GARDENER_HACK_DIR)/get-build-ld-flags.sh k8s.io/component-base $(REPO_ROOT)/VERSION $(EXTENSION_PREFIX))" @@ -141,8 +141,9 @@ check: $(GOIMPORTS) $(GOLANGCI_LINT) @REPO_ROOT=$(REPO_ROOT) bash $(GARDENER_HACK_DIR)/check-charts.sh ./charts .PHONY: generate -generate: $(VGOPATH) $(CONTROLLER_GEN) $(GEN_CRD_API_REFERENCE_DOCS) $(HELM) $(MOCKGEN) $(YQ) - @REPO_ROOT=$(REPO_ROOT) VGOPATH=$(VGOPATH) GARDENER_HACK_DIR=$(GARDENER_HACK_DIR) bash $(GARDENER_HACK_DIR)/generate-sequential.sh ./charts/... ./cmd/... ./example/... ./pkg/... +generate: $(CONTROLLER_GEN) $(GEN_CRD_API_REFERENCE_DOCS) $(HELM) $(MOCKGEN) $(YQ) + @go mod download + @REPO_ROOT=$(REPO_ROOT) GARDENER_HACK_DIR=$(GARDENER_HACK_DIR) bash $(GARDENER_HACK_DIR)/generate-sequential.sh ./charts/... ./cmd/... ./example/... ./pkg/... $(MAKE) format .PHONY: format diff --git a/README.md b/README.md index 7bec4c1c3..7fc36ffec 100644 --- a/README.md +++ b/README.md @@ -14,7 +14,7 @@ This way, we can keep Gardener core clean and independent. This controller implements Gardener's extension contract for the Hetzner cloud provider. -The latest release's `ControllerRegistration` resource that can be used to register this controller to Gardener can be found [here](https://github.com/23technologies/gardener-extension-provider-hcloud/releases/latest/download/controller-registration.yaml). +The latest release's `ControllerRegistration` resource that can be used to register this controller to Gardener can be found [here](https://github.com/opendefensecloud/gardener-extension-provider-hcloud/releases/latest/download/controller-registration.yaml). Please find more information regarding the extensibility concepts and a detailed proposal [here](https://github.com/gardener/gardener/blob/master/docs/proposals/01-extensibility.md). @@ -42,7 +42,7 @@ Static code checks and tests can be executed by running `VERIFY=true make all`. ## Feedback and Support -Feedback and contributions are always welcome. Please report bugs or suggestions as [GitHub issues](https://github.com/23technologies/gardener-extension-provider-hcloud/issues) or join our [Slack channel #gardener](https://kubernetes.slack.com/messages/gardener) (please invite yourself to the Kubernetes workspace [here](http://slack.k8s.io)). +Feedback and contributions are always welcome. Please report bugs or suggestions as [GitHub issues](https://github.com/opendefensecloud/gardener-extension-provider-hcloud/issues) or join our [Slack channel #gardener](https://kubernetes.slack.com/messages/gardener) (please invite yourself to the Kubernetes workspace [here](http://slack.k8s.io)). ## Learn more! diff --git a/VERSION b/VERSION index 158258d07..d60b51ed5 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -v0.0.0-dev +v0.7.0-odp.7 diff --git a/charts/gardener-extension-admission-hcloud/values.yaml b/charts/gardener-extension-admission-hcloud/values.yaml index 0e9929659..a1db31f63 100644 --- a/charts/gardener-extension-admission-hcloud/values.yaml +++ b/charts/gardener-extension-admission-hcloud/values.yaml @@ -4,7 +4,7 @@ global: user: name: "" image: - repository: ghcr.io/23technologies/gardener-extension-provider-hcloud/admission + repository: ghcr.io/opendefensecloud/gardener-extension-admission-hcloud tag: latest pullPolicy: IfNotPresent replicaCount: 1 diff --git a/charts/gardener-extension-provider-hcloud/templates/rbac.yaml b/charts/gardener-extension-provider-hcloud/templates/rbac.yaml index 9fc9411d1..b5ad38d10 100644 --- a/charts/gardener-extension-provider-hcloud/templates/rbac.yaml +++ b/charts/gardener-extension-provider-hcloud/templates/rbac.yaml @@ -55,6 +55,7 @@ rules: - get - watch - update + - patch - apiGroups: - "" - apps diff --git a/charts/gardener-extension-provider-hcloud/templates/vpa.yaml b/charts/gardener-extension-provider-hcloud/templates/vpa.yaml index 5c7774883..1133013e5 100644 --- a/charts/gardener-extension-provider-hcloud/templates/vpa.yaml +++ b/charts/gardener-extension-provider-hcloud/templates/vpa.yaml @@ -1,5 +1,5 @@ {{- if .Values.vpa.enabled}} -apiVersion: "autoscaling.k8s.io/v1beta2" +apiVersion: "autoscaling.k8s.io/v1" kind: VerticalPodAutoscaler metadata: name: {{ include "name" . }}-vpa diff --git a/charts/gardener-extension-provider-hcloud/values.yaml b/charts/gardener-extension-provider-hcloud/values.yaml index 20df26b59..77166e1fe 100644 --- a/charts/gardener-extension-provider-hcloud/values.yaml +++ b/charts/gardener-extension-provider-hcloud/values.yaml @@ -1,5 +1,5 @@ image: - repository: ghcr.io/23technologies/gardener-extension-provider-hcloud + repository: ghcr.io/opendefensecloud/gardener-extension-provider-hcloud tag: latest pullPolicy: IfNotPresent diff --git a/charts/images.yaml b/charts/images.yaml index be24d29d7..efb275c19 100644 --- a/charts/images.yaml +++ b/charts/images.yaml @@ -2,40 +2,36 @@ images: - name: csi-attacher sourceRepository: https://github.com/kubernetes-csi/external-attacher repository: registry.k8s.io/sig-storage/csi-attacher - tag: v3.5.1 # renovate: datasource=github-releases depName=kubernetes-csi/external-attacher + tag: v4.11.0 # renovate: datasource=github-releases depName=kubernetes-csi/external-attacher - name: csi-resizer sourceRepository: https://github.com/kubernetes-csi/external-resizer repository: registry.k8s.io/sig-storage/csi-resizer - tag: v1.12.0 # renovate: datasource=github-releases depName=kubernetes-csi/external-resizer + tag: v2.1.0 # renovate: datasource=github-releases depName=kubernetes-csi/external-resizer - name: csi-node-driver-registrar sourceRepository: https://github.com/kubernetes-csi/node-driver-registrar repository: registry.k8s.io/sig-storage/csi-node-driver-registrar - tag: v2.12.0 # renovate: datasource=github-releases depName=kubernetes-csi/node-driver-registrar + tag: v2.17.0 # renovate: datasource=github-releases depName=kubernetes-csi/node-driver-registrar - name: csi-provisioner sourceRepository: https://github.com/kubernetes-csi/external-provisioner repository: registry.k8s.io/sig-storage/csi-provisioner - tag: v2.2.2 # renovate: datasource=github-releases depName=kubernetes-csi/external-provisioner + tag: v6.2.0 # renovate: datasource=github-releases depName=kubernetes-csi/external-provisioner - name: hcloud-cloud-controller-manager sourceRepository: https://github.com/hetznercloud/hcloud-cloud-controller-manager - repository: hetznercloud/hcloud-cloud-controller-manager - tag: v1.20.0 # renovate: datasource=github-releases depName=hetznercloud/hcloud-cloud-controller-manager -- name: machine-controller-manager - sourceRepository: https://github.com/gardener/machine-controller-manager - repository: eu.gcr.io/gardener-project/gardener/machine-controller-manager - tag: v0.49.3 # renovate: datasource=github-releases depName=gardener/machine-controller-manager + repository: docker.io/hetznercloud/hcloud-cloud-controller-manager + tag: v1.33.0 # renovate: datasource=github-releases depName=hetznercloud/hcloud-cloud-controller-manager - name: machine-controller-manager-provider-hcloud - sourceRepository: https://github.com/23technologies/machine-controller-manager-provider-hcloud - repository: ghcr.io/23technologies/machine-controller-manager-provider-hcloud - tag: v0.2.24 # renovate: datasource=github-releases depName=23technologies/machine-controller-manager-provider-hcloud + sourceRepository: https://github.com/opendefensecloud/machine-controller-manager-provider-hcloud + repository: ghcr.io/opendefensecloud/machine-controller-manager-provider-hcloud + tag: v0.3.2-odp.1 # renovate: datasource=github-releases depName=opendefensecloud/machine-controller-manager-provider-hcloud - name: csi-driver-controller sourceRepository: https://github.com/hetznercloud/csi-driver - repository: ghcr.io/23technologies/hcloud-csi-driver - tag: "v1.6.0-23technologies.1" + repository: docker.io/hetznercloud/hcloud-csi-driver + tag: v2.22.0 # renovate: datasource=github-releases depName=hetznercloud/csi-driver - name: csi-driver-node sourceRepository: https://github.com/hetznercloud/csi-driver - repository: hetznercloud/hcloud-csi-driver - tag: 1.6.0 + repository: docker.io/hetznercloud/hcloud-csi-driver + tag: v2.22.0 # renovate: datasource=github-releases depName=hetznercloud/csi-driver - name: liveness-probe sourceRepository: https://github.com/kubernetes-csi/livenessprobe repository: registry.k8s.io/sig-storage/livenessprobe - tag: v2.14.0 # renovate: datasource=github-releases depName=kubernetes-csi/livenessprobe + tag: v2.19.0 # renovate: datasource=github-releases depName=kubernetes-csi/livenessprobe diff --git a/charts/internal/machine-controller-manager/seed/Chart.yaml b/charts/internal/machine-controller-manager/seed/Chart.yaml deleted file mode 100644 index 20a7f72d2..000000000 --- a/charts/internal/machine-controller-manager/seed/Chart.yaml +++ /dev/null @@ -1,4 +0,0 @@ -apiVersion: v1 -description: Helm chart for needed resource for machine-controller-manager in control cluster -name: machine-controller-manager -version: 0.1.0 diff --git a/charts/internal/machine-controller-manager/seed/mcm-monitoring-dashboard.json b/charts/internal/machine-controller-manager/seed/mcm-monitoring-dashboard.json deleted file mode 100644 index 7e7cd9106..000000000 --- a/charts/internal/machine-controller-manager/seed/mcm-monitoring-dashboard.json +++ /dev/null @@ -1,1175 +0,0 @@ -{ - "description": "Information about the operations of the Machine Controller Manager", - "editable": false, - "gnetId": null, - "graphTooltip": 0, - "id": 16, - "iteration": 1564731005347, - "links": [ - { - "icon": "external link", - "tags": [], - "targetBlank": true, - "title": "Machine Controller Manager", - "tooltip": "", - "type": "link", - "url": "https://github.com/gardener/machine-controller-manager" - } - ], - "panels": [ - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "decimals": null, - "description": "State of the managed machines.\n\n| Code | Machine State |\n|---|---|\n| 0 | Running |\n| 1 | Terminating |\n| 2 | Unknown |\n| 3 | Failed |\n| -1 | Available |\n| -2 | Pending |", - "fill": 0, - "gridPos": { - "h": 7, - "w": 24, - "x": 0, - "y": 0 - }, - "id": 5, - "legend": { - "alignAsTable": true, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": true, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "mcm_machine_current_status_phase", - "format": "time_series", - "intervalFactor": 1, - "legendFormat": "{{name}}", - "refId": "A" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Managed Machines States", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "decimals": null, - "format": "short", - "label": null, - "logBase": 1, - "max": "3.2", - "min": "-2.2", - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "description": "Shows the CPU usage of the Machine Controller Manager and shows the requests and limits.", - "fill": 0, - "gridPos": { - "h": 6, - "w": 12, - "x": 0, - "y": 7 - }, - "id": 13, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(container_cpu_usage_seconds_total{pod=~\"machine-controller-manager-(.+)\"}[5m])) by (pod)", - "format": "time_series", - "intervalFactor": 1, - "legendFormat": "Current ({{pod}})", - "refId": "A" - }, - { - "expr": "sum(kube_pod_container_resource_limits_cpu_cores{pod=~\"machine-controller-manager-(.+)\"}) by (pod)", - "format": "time_series", - "intervalFactor": 1, - "legendFormat": "Limits ({{pod}})", - "refId": "C" - }, - { - "expr": "sum(kube_pod_container_resource_requests_cpu_cores{pod=~\"machine-controller-manager-(.+)\"}) by (pod)", - "format": "time_series", - "intervalFactor": 1, - "legendFormat": "Requests ({{pod}})", - "refId": "B" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "MCM CPU usage", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "decimals": null, - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": "0", - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "description": "Shows the memory usage of the Machine Controller Manager.", - "fill": 0, - "gridPos": { - "h": 6, - "w": 12, - "x": 12, - "y": 7 - }, - "id": 11, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(container_memory_working_set_bytes{pod=~\"machine-controller-manager-(.+)\"}) by (pod)", - "format": "time_series", - "intervalFactor": 1, - "legendFormat": "Current ({{pod}})", - "refId": "A" - }, - { - "expr": "sum(kube_pod_container_resource_limits_memory_bytes{pod=~\"machine-controller-manager-(.+)\"}) by (pod)", - "format": "time_series", - "intervalFactor": 1, - "legendFormat": "Limits ({{pod}})", - "refId": "B" - }, - { - "expr": "sum(kube_pod_container_resource_requests_memory_bytes{pod=~\"machine-controller-manager-(.+)\"}) by (pod)", - "format": "time_series", - "intervalFactor": 1, - "legendFormat": "Requests ({{pod}})", - "refId": "C" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "MCM Memory Usage", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "bytes", - "label": null, - "logBase": 2, - "max": null, - "min": null, - "show": true - }, - { - "format": "none", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "description": "Indicates if the Machine Controller Manager is frozen due to unreachable API server.\n\n0 = ok; 1= frozen", - "fill": 0, - "gridPos": { - "h": 6, - "w": 12, - "x": 0, - "y": 13 - }, - "id": 2, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 2, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "mcm_machine_controller_frozen", - "format": "time_series", - "intervalFactor": 1, - "legendFormat": "{{pod}}", - "refId": "A" - } - ], - "thresholds": [ - { - "colorMode": "critical", - "fill": true, - "line": true, - "op": "gt", - "value": 0.5, - "yaxis": "left" - }, - { - "colorMode": "ok", - "fill": true, - "line": true, - "op": "lt", - "value": 0.5, - "yaxis": "left" - } - ], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "MCM Frozen Status (API Server reachable)", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "decimals": 0, - "format": "short", - "label": "", - "logBase": 1, - "max": "1.2", - "min": "-0.2", - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "decimals": null, - "description": "Average per Second rate over 1m of IaaS provider api calls split by services. \n\nShows also the rate of failed iaas calls if at least one failed.", - "fill": 0, - "gridPos": { - "h": 6, - "w": 12, - "x": 12, - "y": 13 - }, - "id": 4, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "rate(mcm_cloud_api_requests_total[1m])", - "format": "time_series", - "intervalFactor": 1, - "legendFormat": "{{provider}} / {{service}} ({{pod}})", - "refId": "A" - }, - { - "expr": "rate(mcm_cloud_api_requests_failed_total[1m])", - "format": "time_series", - "intervalFactor": 1, - "legendFormat": "Error: {{provider}} / {{service}} ({{pod}})", - "refId": "B" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "IaaS API Calls", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "decimals": null, - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": "0", - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "decimals": 0, - "description": "The count of kubernetes resources managed by the Machine Controller Manager.", - "fill": 0, - "gridPos": { - "h": 6, - "w": 12, - "x": 0, - "y": 19 - }, - "id": 3, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "mcm_machine_items_total", - "format": "time_series", - "intervalFactor": 1, - "legendFormat": "machine(s)", - "refId": "A" - }, - { - "expr": "mcm_machineset_items_total", - "format": "time_series", - "intervalFactor": 1, - "legendFormat": "machine set(s)", - "refId": "B" - }, - { - "expr": "mcm_machinedeployment_items_total", - "format": "time_series", - "intervalFactor": 1, - "legendFormat": "machine deployment(s)", - "refId": "C" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Count of Managed Resouces", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "decimals": 0, - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": "0", - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "collapsed": false, - "gridPos": { - "h": 1, - "w": 24, - "x": 0, - "y": 25 - }, - "id": 9, - "panels": [], - "title": "Control Loops", - "type": "row" - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "description": "Average processing time of items in the workqueue.", - "fill": 1, - "gridPos": { - "h": 7, - "w": 12, - "x": 0, - "y": 26 - }, - "id": 19, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "${controlloop}_work_duration{quantile=\"0.5\"}", - "format": "time_series", - "intervalFactor": 1, - "legendFormat": "p50 ({{pod}})", - "refId": "A" - }, - { - "expr": "${controlloop}_work_duration{quantile=\"0.9\"}", - "format": "time_series", - "intervalFactor": 1, - "legendFormat": "p90 ({{pod}})", - "refId": "B" - }, - { - "expr": "${controlloop}_work_duration{quantile=\"0.99\"}", - "format": "time_series", - "intervalFactor": 1, - "legendFormat": "p99 ({{pod}})", - "refId": "C" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Workqueue item processing time: ${controlloop}", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "ms", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "description": "How long items stay in the workqueue before they get processed.", - "fill": 1, - "gridPos": { - "h": 7, - "w": 12, - "x": 12, - "y": 26 - }, - "id": 18, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "${controlloop}_queue_latency{quantile=\"0.5\"}", - "format": "time_series", - "intervalFactor": 1, - "legendFormat": "p50 ({{pod}})", - "refId": "A" - }, - { - "expr": "${controlloop}_queue_latency{quantile=\"0.9\"}", - "format": "time_series", - "intervalFactor": 1, - "legendFormat": "p90 ({{pod}})", - "refId": "B" - }, - { - "expr": "${controlloop}_queue_latency{quantile=\"0.99\"}", - "format": "time_series", - "intervalFactor": 1, - "legendFormat": "p99 ({{pod}})", - "refId": "C" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Workqueue item latency: ${controlloop}", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "ms", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "description": "Current amount of items in the workqueue.", - "fill": 1, - "gridPos": { - "h": 6, - "w": 8, - "x": 0, - "y": 33 - }, - "id": 16, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": false, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "${controlloop}_depth", - "format": "time_series", - "intervalFactor": 1, - "legendFormat": "${controlloop} ({{pod}})", - "refId": "A" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Items in Workqueue: ${controlloop}", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "description": "Average per second rate over 5m of workqueue item adds.", - "fill": 1, - "gridPos": { - "h": 6, - "w": 8, - "x": 8, - "y": 33 - }, - "id": 7, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": false, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "rate(${controlloop}_adds[5m])", - "format": "time_series", - "intervalFactor": 1, - "legendFormat": "${controlloop} ({{pod}})", - "refId": "A" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Adds to Workqueue: ${controlloop}", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "description": "Average per second rate over 5m of workqueue item retries.", - "fill": 1, - "gridPos": { - "h": 6, - "w": 8, - "x": 16, - "y": 33 - }, - "id": 17, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": false, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "rate(${controlloop}_retries[5m])", - "format": "time_series", - "intervalFactor": 1, - "legendFormat": "${controlloop} ({{pod}})", - "refId": "A" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Workqueue item retries: ${controlloop}", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - } - ], - "refresh": "30s", - "schemaVersion": 18, - "style": "dark", - "tags": [ - "controlplane", - "seed" - ], - "templating": { - "list": [ - { - "allValue": null, - "current": { - "tags": [], - "text": "machine", - "value": "machine" - }, - "hide": 0, - "includeAll": false, - "label": "Control Loop", - "multi": false, - "name": "controlloop", - "options": [ - { - "selected": true, - "text": "machine", - "value": "machine" - }, - { - "selected": false, - "text": "machineset", - "value": "machineset" - }, - { - "selected": false, - "text": "machinedeployment", - "value": "machinedeployment" - }, - { - "selected": false, - "text": "node", - "value": "node" - }, - { - "selected": false, - "text": "secret", - "value": "secret" - }, - { - "selected": false, - "text": "machinesafetyapiserver", - "value": "machinesafetyapiserver" - }, - { - "selected": false, - "text": "machinesafetyorphanvms", - "value": "machinesafetyorphanvms" - }, - { - "selected": false, - "text": "machinesafetyovershooting", - "value": "machinesafetyovershooting" - } - ], - "query": "machine, machineset, machinedeployment, node, secret, machinesafetyapiserver, machinesafetyorphanvms, machinesafetyovershooting", - "skipUrlSync": false, - "type": "custom" - } - ] - }, - "time": { - "from": "now-3h", - "to": "now" - }, - "timepicker": { - "refresh_intervals": [ - "5s", - "10s", - "30s", - "1m", - "5m", - "15m", - "30m", - "1h", - "2h", - "1d" - ], - "time_options": [ - "5m", - "15m", - "1h", - "6h", - "12h", - "24h", - "2d", - "7d", - "14d" - ] - }, - "timezone": "browser", - "title": "Machine Controller Manager", - "uid": "machine-controller-manager", - "version": 1 -} \ No newline at end of file diff --git a/charts/internal/machine-controller-manager/seed/templates/clusterrole.yaml b/charts/internal/machine-controller-manager/seed/templates/clusterrole.yaml deleted file mode 100644 index 05f91bcb8..000000000 --- a/charts/internal/machine-controller-manager/seed/templates/clusterrole.yaml +++ /dev/null @@ -1,45 +0,0 @@ ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - name: extensions.gardener.cloud:{{ .Values.providerName }}:{{ .Release.Namespace }}:machine-controller-manager - ownerReferences: - - apiVersion: v1 - kind: Namespace - name: {{ .Release.Namespace }} - uid: {{ .Values.namespace.uid }} - controller: true - blockOwnerDeletion: true -rules: -- apiGroups: - - machine.sapcloud.io - resources: - - "*" - verbs: - - "*" -- apiGroups: - - "" - resources: - - configmaps - - secrets - - endpoints - - events - verbs: - - "*" -- apiGroups: - - coordination.k8s.io - resources: - - leases - verbs: - - create -- apiGroups: - - coordination.k8s.io - resources: - - leases - resourceNames: - - machine-controller - - machine-controller-manager - verbs: - - get - - watch - - update diff --git a/charts/internal/machine-controller-manager/seed/templates/clusterrolebinding.yaml b/charts/internal/machine-controller-manager/seed/templates/clusterrolebinding.yaml deleted file mode 100644 index bc3368ebf..000000000 --- a/charts/internal/machine-controller-manager/seed/templates/clusterrolebinding.yaml +++ /dev/null @@ -1,20 +0,0 @@ ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRoleBinding -metadata: - name: extensions.gardener.cloud:{{ .Values.providerName }}:{{ .Release.Namespace }}:machine-controller-manager - ownerReferences: - - apiVersion: v1 - kind: Namespace - name: {{ .Release.Namespace }} - uid: {{ .Values.namespace.uid }} - controller: true - blockOwnerDeletion: true -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole - name: extensions.gardener.cloud:{{ .Values.providerName }}:{{ .Release.Namespace }}:machine-controller-manager -subjects: -- kind: ServiceAccount - name: machine-controller-manager - namespace: {{ .Release.Namespace }} diff --git a/charts/internal/machine-controller-manager/seed/templates/configmap-monitoring.yaml b/charts/internal/machine-controller-manager/seed/templates/configmap-monitoring.yaml deleted file mode 100644 index 425a980d4..000000000 --- a/charts/internal/machine-controller-manager/seed/templates/configmap-monitoring.yaml +++ /dev/null @@ -1,51 +0,0 @@ -apiVersion: v1 -kind: ConfigMap -metadata: - name: machine-controller-manager-monitoring-config - namespace: {{ .Release.Namespace }} - labels: - extensions.gardener.cloud/configuration: monitoring -data: - scrape_config: | - - job_name: machine-controller-manager - honor_labels: false - kubernetes_sd_configs: - - role: endpoints - namespaces: - names: [{{ .Release.Namespace }}] - relabel_configs: - - source_labels: - - __meta_kubernetes_service_name - - __meta_kubernetes_endpoint_port_name - action: keep - regex: machine-controller-manager;metrics - # common metrics - - action: labelmap - regex: __meta_kubernetes_service_label_(.+) - - source_labels: [ __meta_kubernetes_pod_name ] - target_label: pod - metric_relabel_configs: - - source_labels: [ __name__ ] - regex: ^(mcm_cloud_api_requests_failed_total|mcm_cloud_api_requests_total|mcm_machine_controller_frozen|mcm_machine_current_status_phase|mcm_machine_deployment_failed_machines|mcm_machine_items_total|mcm_machine_set_failed_machines|mcm_machinedeployment_items_total|mcm_machineset_items_total|mcm_scrape_failure_total|machine_adds|machine_depth|machine_queue_latency|machine_retries|machine_work_duration|machinedeployment_adds|machinedeployment_depth|machinedeployment_queue_latency|machinedeployment_retries|machinedeployment_work_duration|machinesafetyapiserver_adds|machinesafetyapiserver_depth|machinesafetyapiserver_queue_latency|machinesafetyapiserver_retries|machinesafetyapiserver_work_duration|machinesafetyorphanvms_adds|machinesafetyorphanvms_depth|machinesafetyorphanvms_queue_latency|machinesafetyorphanvms_retries|machinesafetyorphanvms_work_duration|machinesafetyovershooting_adds|machinesafetyovershooting_depth|machinesafetyovershooting_latency|machinesafetyovershooting_retries|machinesafetyovershooting_work_duration|machineset_adds|machineset_depth|machineset_queue_latency|machineset_retries|machineset_work_duration|node_adds|node_depth|node_queue_latency|node_retries|node_work_duration|secret_adds|secret_depth|secret_queue_latency|secret_retries|secret_work_duration|process_max_fds|process_open_fds)$ - action: keep - - alerting_rules: | - machine-controller-manager.rules.yaml: | - groups: - - name: machine-controller-manager.rules - rules: - - alert: MachineControllerManagerDown - expr: absent(up{job="machine-controller-manager"} == 1) - for: 15m - labels: - service: machine-controller-manager - severity: critical - type: seed - visibility: operator - annotations: - description: There are no running machine controller manager instances. No shoot nodes can be created/maintained. - summary: Machine controller manager is down. - - dashboard_operators: | - machine-controller-manager-dashboard.json: |- -{{ .Files.Get "mcm-monitoring-dashboard.json" | indent 6 }} diff --git a/charts/internal/machine-controller-manager/seed/templates/deployment.yaml b/charts/internal/machine-controller-manager/seed/templates/deployment.yaml deleted file mode 100644 index 146f1feee..000000000 --- a/charts/internal/machine-controller-manager/seed/templates/deployment.yaml +++ /dev/null @@ -1,118 +0,0 @@ ---- -apiVersion: apps/v1 -kind: Deployment -metadata: - name: machine-controller-manager - namespace: {{ .Release.Namespace }} - labels: - gardener.cloud/role: controlplane - app: kubernetes - role: machine-controller-manager -spec: - revisionHistoryLimit: 0 - replicas: {{ .Values.replicas }} - selector: - matchLabels: - app: kubernetes - role: machine-controller-manager - template: - metadata: - annotations: - scheduler.alpha.kubernetes.io/critical-pod: '' -{{- if .Values.podAnnotations }} -{{ toYaml .Values.podAnnotations | indent 8 }} -{{- end }} - labels: - gardener.cloud/role: controlplane - app: kubernetes - role: machine-controller-manager - networking.gardener.cloud/to-dns: allowed - networking.gardener.cloud/to-public-networks: allowed - networking.gardener.cloud/to-private-networks: allowed - networking.gardener.cloud/to-runtime-apiserver: allowed - networking.resources.gardener.cloud/to-kube-apiserver-tcp-443: allowed -{{- if .Values.podLabels }} -{{ toYaml .Values.podLabels | indent 8 }} -{{- end }} - spec: - serviceAccountName: machine-controller-manager - terminationGracePeriodSeconds: 5 - containers: - - name: machine-controller-manager-provider-hcloud - image: {{ index .Values.images "machine-controller-manager-provider-hcloud" }} - imagePullPolicy: IfNotPresent - command: - - ./machine-controller - - --control-kubeconfig=inClusterConfig - - --target-kubeconfig=/var/run/secrets/gardener.cloud/shoot/generic-kubeconfig/kubeconfig - - --namespace={{ .Release.Namespace }} - - --port={{ .Values.metricsPort2 }} - livenessProbe: - failureThreshold: 3 - httpGet: - path: /healthz - port: {{ .Values.metricsPort2 }} - scheme: HTTP - initialDelaySeconds: 30 - periodSeconds: 10 - successThreshold: 1 - timeoutSeconds: 5 - terminationMessagePath: /dev/termination-log - terminationMessagePolicy: File - volumeMounts: - - mountPath: /var/run/secrets/gardener.cloud/shoot/generic-kubeconfig - name: kubeconfig - readOnly: true - - name: machine-controller-manager - image: {{ index .Values.images "machine-controller-manager" }} - imagePullPolicy: IfNotPresent - command: - - ./machine-controller-manager - - --control-kubeconfig=inClusterConfig - - --target-kubeconfig=/var/run/secrets/gardener.cloud/shoot/generic-kubeconfig/kubeconfig - - --namespace={{ .Release.Namespace }} - - --port={{ .Values.metricsPort }} - - --safety-up=2 - - --safety-down=1 - livenessProbe: - failureThreshold: 3 - httpGet: - path: /healthz - port: {{ .Values.metricsPort }} - scheme: HTTP - initialDelaySeconds: 30 - periodSeconds: 10 - successThreshold: 1 - timeoutSeconds: 5 - ports: - - name: metrics - containerPort: {{ .Values.metricsPort }} - protocol: TCP - resources: - requests: - cpu: 50m - memory: 64Mi - limits: - cpu: "3" - memory: 3000Mi - volumeMounts: - - mountPath: /var/run/secrets/gardener.cloud/shoot/generic-kubeconfig - name: kubeconfig - readOnly: true - volumes: - - name: kubeconfig - projected: - defaultMode: 420 - sources: - - secret: - items: - - key: kubeconfig - path: kubeconfig - name: {{ .Values.genericTokenKubeconfigSecretName }} - optional: false - - secret: - items: - - key: token - path: token - name: shoot-access-machine-controller-manager - optional: false diff --git a/charts/internal/machine-controller-manager/seed/templates/service.yaml b/charts/internal/machine-controller-manager/seed/templates/service.yaml deleted file mode 100644 index d2b79f9f9..000000000 --- a/charts/internal/machine-controller-manager/seed/templates/service.yaml +++ /dev/null @@ -1,21 +0,0 @@ -apiVersion: v1 -kind: Service -metadata: - name: machine-controller-manager - namespace: {{ .Release.Namespace }} - annotations: - networking.resources.gardener.cloud/from-policy-pod-label-selector: all-scrape-targets - networking.resources.gardener.cloud/from-policy-allowed-ports: '[{"port":{{ .Values.metricsPort }},"protocol":"TCP"}]' - labels: - app: kubernetes - role: machine-controller-manager -spec: - type: ClusterIP - clusterIP: None - ports: - - name: metrics - port: {{ .Values.metricsPort }} - protocol: TCP - selector: - app: kubernetes - role: machine-controller-manager diff --git a/charts/internal/machine-controller-manager/seed/templates/serviceaccount.yaml b/charts/internal/machine-controller-manager/seed/templates/serviceaccount.yaml deleted file mode 100644 index 12f93fecf..000000000 --- a/charts/internal/machine-controller-manager/seed/templates/serviceaccount.yaml +++ /dev/null @@ -1,6 +0,0 @@ -apiVersion: v1 -kind: ServiceAccount -metadata: - name: machine-controller-manager - namespace: {{ .Release.Namespace }} -automountServiceAccountToken: false diff --git a/charts/internal/machine-controller-manager/seed/templates/vpa.yaml b/charts/internal/machine-controller-manager/seed/templates/vpa.yaml deleted file mode 100644 index 403495ab8..000000000 --- a/charts/internal/machine-controller-manager/seed/templates/vpa.yaml +++ /dev/null @@ -1,20 +0,0 @@ -{{- if .Values.vpa.enabled }} -apiVersion: autoscaling.k8s.io/v1beta2 -kind: VerticalPodAutoscaler -metadata: - name: machine-controller-manager-vpa - namespace: {{ .Release.Namespace }} -spec: - targetRef: - apiVersion: apps/v1 - kind: Deployment - name: machine-controller-manager - updatePolicy: - updateMode: {{ .Values.vpa.updatePolicy.updateMode | quote }} - resourcePolicy: - containerPolicies: - - containerName: '*' - minAllowed: - cpu: 30m - memory: 40M -{{- end }} diff --git a/charts/internal/machine-controller-manager/seed/values.yaml b/charts/internal/machine-controller-manager/seed/values.yaml deleted file mode 100644 index e843929aa..000000000 --- a/charts/internal/machine-controller-manager/seed/values.yaml +++ /dev/null @@ -1,15 +0,0 @@ -images: - machine-controller-manager: image-repository:image-tag -genericTokenKubeconfigSecretName: generic-token-kubeconfig -replicas: 0 -podAnnotations: {} -podLabels: {} -providerName: provider-hcloud -namespace: - uid: uuid-of-namespace -metricsPort: 10258 -metricsPort2: 10259 -vpa: - enabled: true - updatePolicy: - updateMode: "Auto" diff --git a/charts/internal/machine-controller-manager/shoot/Chart.yaml b/charts/internal/machine-controller-manager/shoot/Chart.yaml deleted file mode 100644 index 8a921ab3f..000000000 --- a/charts/internal/machine-controller-manager/shoot/Chart.yaml +++ /dev/null @@ -1,4 +0,0 @@ -apiVersion: v1 -description: Helm chart for needed resource for machine-controller-manager in target cluster -name: machine-controller-manager -version: 0.1.0 diff --git a/charts/internal/machine-controller-manager/shoot/templates/clusterrole-machine-controller-manager.yaml b/charts/internal/machine-controller-manager/shoot/templates/clusterrole-machine-controller-manager.yaml deleted file mode 100644 index 0e99cdc77..000000000 --- a/charts/internal/machine-controller-manager/shoot/templates/clusterrole-machine-controller-manager.yaml +++ /dev/null @@ -1,77 +0,0 @@ ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - name: extensions.gardener.cloud:{{ .Values.providerName }}:machine-controller-manager -rules: -- apiGroups: - - "" - resources: - - nodes - - nodes/status - - endpoints - - replicationcontrollers - - pods - - persistentvolumes - - persistentvolumeclaims - verbs: - - create - - delete - - deletecollection - - get - - list - - patch - - update - - watch -- apiGroups: - - "" - resources: - - pods/eviction - verbs: - - create -- apiGroups: - - extensions - - apps - resources: - - replicasets - - statefulsets - - daemonsets - - deployments - verbs: - - create - - delete - - deletecollection - - get - - list - - patch - - update - - watch -- apiGroups: - - batch - resources: - - jobs - - cronjobs - verbs: - - create - - delete - - deletecollection - - get - - list - - patch - - update - - watch -- apiGroups: - - policy - resources: - - poddisruptionbudgets - verbs: - - list - - watch -- apiGroups: - - storage.k8s.io - resources: - - volumeattachments - verbs: - - get - - list - - watch diff --git a/charts/internal/machine-controller-manager/shoot/templates/clusterrolebinding-machine-controller-manager.yaml b/charts/internal/machine-controller-manager/shoot/templates/clusterrolebinding-machine-controller-manager.yaml deleted file mode 100644 index 712604780..000000000 --- a/charts/internal/machine-controller-manager/shoot/templates/clusterrolebinding-machine-controller-manager.yaml +++ /dev/null @@ -1,13 +0,0 @@ ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRoleBinding -metadata: - name: extensions.gardener.cloud:{{ .Values.providerName }}:machine-controller-manager -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole - name: extensions.gardener.cloud:{{ .Values.providerName }}:machine-controller-manager -subjects: -- kind: ServiceAccount - name: machine-controller-manager - namespace: kube-system diff --git a/charts/internal/machine-controller-manager/shoot/templates/role-machine-controller-manager.yaml b/charts/internal/machine-controller-manager/shoot/templates/role-machine-controller-manager.yaml deleted file mode 100644 index 1691bcfd9..000000000 --- a/charts/internal/machine-controller-manager/shoot/templates/role-machine-controller-manager.yaml +++ /dev/null @@ -1,15 +0,0 @@ -apiVersion: rbac.authorization.k8s.io/v1 -kind: Role -metadata: - namespace: kube-system - name: extensions.gardener.cloud:{{ .Values.providerName }}:machine-controller-manager -rules: -- apiGroups: - - "" - resources: - - secrets - verbs: - - create - - delete - - get - - list \ No newline at end of file diff --git a/charts/internal/machine-controller-manager/shoot/templates/rolebinding-machine-controller-manager.yaml b/charts/internal/machine-controller-manager/shoot/templates/rolebinding-machine-controller-manager.yaml deleted file mode 100644 index c1245f38c..000000000 --- a/charts/internal/machine-controller-manager/shoot/templates/rolebinding-machine-controller-manager.yaml +++ /dev/null @@ -1,14 +0,0 @@ ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: RoleBinding -metadata: - name: extensions.gardener.cloud:{{ .Values.providerName }}:machine-controller-manager - namespace: kube-system -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: Role - name: extensions.gardener.cloud:{{ .Values.providerName }}:machine-controller-manager -subjects: -- kind: ServiceAccount - name: machine-controller-manager - namespace: kube-system diff --git a/charts/internal/machine-controller-manager/shoot/values.yaml b/charts/internal/machine-controller-manager/shoot/values.yaml deleted file mode 100644 index ada43ccfa..000000000 --- a/charts/internal/machine-controller-manager/shoot/values.yaml +++ /dev/null @@ -1 +0,0 @@ -providerName: provider-hcloud diff --git a/charts/internal/seed-controlplane/charts/hcloud-cloud-controller-manager/templates/vpa.yaml b/charts/internal/seed-controlplane/charts/hcloud-cloud-controller-manager/templates/vpa.yaml index 61553f068..d4e794e42 100644 --- a/charts/internal/seed-controlplane/charts/hcloud-cloud-controller-manager/templates/vpa.yaml +++ b/charts/internal/seed-controlplane/charts/hcloud-cloud-controller-manager/templates/vpa.yaml @@ -1,4 +1,4 @@ -apiVersion: autoscaling.k8s.io/v1beta2 +apiVersion: autoscaling.k8s.io/v1 kind: VerticalPodAutoscaler metadata: name: cloud-controller-manager-vpa diff --git a/charts/internal/seed-controlplane/charts/hcloud-csi-controller/templates/hcloud-csi-controller.yaml b/charts/internal/seed-controlplane/charts/hcloud-csi-controller/templates/hcloud-csi-controller.yaml index fa2aaea70..cb997d5fc 100644 --- a/charts/internal/seed-controlplane/charts/hcloud-csi-controller/templates/hcloud-csi-controller.yaml +++ b/charts/internal/seed-controlplane/charts/hcloud-csi-controller/templates/hcloud-csi-controller.yaml @@ -1,14 +1,4 @@ --- -apiVersion: storage.k8s.io/v1 -kind: CSIDriver -metadata: - name: csi.hetzner.cloud -spec: - attachRequired: true - podInfoOnMount: true - volumeLifecycleModes: - - Persistent ---- kind: Deployment apiVersion: apps/v1 metadata: @@ -19,7 +9,6 @@ labels: app: kubernetes role: csi-plugin-controller spec: - serviceName: hcloud-csi-controller replicas: {{ .Values.replicas }} updateStrategy: type: RollingUpdate @@ -50,6 +39,7 @@ spec: image: {{ index .Values.images "csi-attacher" }} args: - --timeout=300s + - --default-fstype=ext4 - --kubeconfig=/var/run/secrets/gardener.cloud/shoot/generic-kubeconfig/kubeconfig - --leader-election - --leader-election-namespace=$(CSI_NAMESPACE) @@ -103,6 +93,8 @@ spec: - --timeout=300s - --feature-gates=Topology=true - --strict-topology + - --default-fstype=ext4 + - --extra-create-metadata - --kubeconfig=/var/run/secrets/gardener.cloud/shoot/generic-kubeconfig/kubeconfig - --leader-election - --leader-election-namespace=$(CSI_NAMESPACE) @@ -126,6 +118,8 @@ spec: allowPrivilegeEscalation: true - name: hcloud-csi-driver image: {{ index .Values.images "csi-driver-controller" }} + args: + - -controller env: - name: CSI_ENDPOINT value: unix:///run/csi/socket @@ -145,12 +139,10 @@ spec: secretKeyRef: name: hcloud-csi key: token - - name: HCLOUD_SERVER_ID - value: "-1" - - name: HCLOUD_LOCATION_NAME + - name: HCLOUD_VOLUME_DEFAULT_LOCATION value: {{ .Values.csiRegion }} - - name: LOGGER_LEVEL - value: "{{ .Values.loggerLevel }}" # Options: DEVELOPMENT, PRODUCTION + - name: LOG_LEVEL + value: "{{ .Values.logLevel }}" {{- if .Values.resources.controller }} resources: {{ toYaml .Values.resources.controller | indent 12 }} diff --git a/charts/internal/seed-controlplane/charts/hcloud-csi-controller/templates/vpa-hcloud-csi-controller.yaml b/charts/internal/seed-controlplane/charts/hcloud-csi-controller/templates/vpa-hcloud-csi-controller.yaml index 82cbc7f82..3bf96fce9 100644 --- a/charts/internal/seed-controlplane/charts/hcloud-csi-controller/templates/vpa-hcloud-csi-controller.yaml +++ b/charts/internal/seed-controlplane/charts/hcloud-csi-controller/templates/vpa-hcloud-csi-controller.yaml @@ -1,5 +1,5 @@ --- -apiVersion: autoscaling.k8s.io/v1beta2 +apiVersion: autoscaling.k8s.io/v1 kind: VerticalPodAutoscaler metadata: name: hcloud-csi-controller-vpa diff --git a/charts/internal/seed-controlplane/charts/hcloud-csi-controller/values.yaml b/charts/internal/seed-controlplane/charts/hcloud-csi-controller/values.yaml index 40e90ac47..230a1c006 100644 --- a/charts/internal/seed-controlplane/charts/hcloud-csi-controller/values.yaml +++ b/charts/internal/seed-controlplane/charts/hcloud-csi-controller/values.yaml @@ -9,7 +9,7 @@ podAnnotations: {} token: base64token csiRegion: hel1 resizerEnabled: true -loggerLevel: PRODUCTION +logLevel: info resources: attacher: diff --git a/charts/internal/shoot-system-components/charts/hcloud-csi-node/templates/clusterrole-csi-attacher.yaml b/charts/internal/shoot-system-components/charts/hcloud-csi-node/templates/clusterrole-csi-attacher.yaml index 281db2f35..14439fb5d 100644 --- a/charts/internal/shoot-system-components/charts/hcloud-csi-node/templates/clusterrole-csi-attacher.yaml +++ b/charts/internal/shoot-system-components/charts/hcloud-csi-node/templates/clusterrole-csi-attacher.yaml @@ -1,4 +1,4 @@ -# registry.k8s.io/sig-storage/csi-attacher@v3.4.0 +# registry.k8s.io/sig-storage/csi-attacher@v4.11.0 --- kind: ClusterRole apiVersion: rbac.authorization.k8s.io/v1 diff --git a/charts/internal/shoot-system-components/charts/hcloud-csi-node/templates/clusterrole-csi-provisioner.yaml b/charts/internal/shoot-system-components/charts/hcloud-csi-node/templates/clusterrole-csi-provisioner.yaml index 22576ffda..2d2d2fcb9 100644 --- a/charts/internal/shoot-system-components/charts/hcloud-csi-node/templates/clusterrole-csi-provisioner.yaml +++ b/charts/internal/shoot-system-components/charts/hcloud-csi-node/templates/clusterrole-csi-provisioner.yaml @@ -1,4 +1,4 @@ -# registry.k8s.io/sig-storage/csi-provisioner@v2.2.2 +# registry.k8s.io/sig-storage/csi-provisioner@v6.2.0 --- kind: ClusterRole apiVersion: rbac.authorization.k8s.io/v1 @@ -7,7 +7,7 @@ metadata: rules: - apiGroups: [""] resources: ["persistentvolumes"] - verbs: ["get", "list", "watch", "create", "delete"] + verbs: ["get", "list", "watch", "create", "patch", "delete"] - apiGroups: [""] resources: ["persistentvolumeclaims"] verbs: ["get", "list", "watch", "update"] @@ -19,7 +19,7 @@ rules: verbs: ["list", "watch", "create", "update", "patch"] - apiGroups: ["snapshot.storage.k8s.io"] resources: ["volumesnapshots"] - verbs: ["get", "list"] + verbs: ["get", "list", "watch", "update"] - apiGroups: ["snapshot.storage.k8s.io"] resources: ["volumesnapshotcontents"] verbs: ["get", "list"] diff --git a/charts/internal/shoot-system-components/charts/hcloud-csi-node/templates/clusterrole-csi-resizer.yaml b/charts/internal/shoot-system-components/charts/hcloud-csi-node/templates/clusterrole-csi-resizer.yaml index fbb6fde90..5dde3094e 100644 --- a/charts/internal/shoot-system-components/charts/hcloud-csi-node/templates/clusterrole-csi-resizer.yaml +++ b/charts/internal/shoot-system-components/charts/hcloud-csi-node/templates/clusterrole-csi-resizer.yaml @@ -1,4 +1,4 @@ -# registry.k8s.io/sig-storage/csi-resizer@v1.4.0 +# registry.k8s.io/sig-storage/csi-resizer@v2.1.0 --- kind: ClusterRole apiVersion: rbac.authorization.k8s.io/v1 @@ -20,3 +20,6 @@ rules: - apiGroups: [""] resources: ["events"] verbs: ["list", "watch", "create", "update", "patch"] + - apiGroups: ["storage.k8s.io"] + resources: ["volumeattributesclasses"] + verbs: ["get", "list", "watch"] diff --git a/charts/internal/shoot-system-components/charts/hcloud-csi-node/templates/csidriver.yaml b/charts/internal/shoot-system-components/charts/hcloud-csi-node/templates/csidriver.yaml new file mode 100644 index 000000000..f71779e73 --- /dev/null +++ b/charts/internal/shoot-system-components/charts/hcloud-csi-node/templates/csidriver.yaml @@ -0,0 +1,15 @@ +--- +# Cluster-scoped driver registration for the kubelets of the shoot. This used +# to live (inertly) in the seed-controlplane chart; the node plugin runs here. +# Spec matches hetznercloud/csi-driver v2 deploy/kubernetes/hcloud-csi.yml. +apiVersion: storage.k8s.io/v1 +kind: CSIDriver +metadata: + name: csi.hetzner.cloud +spec: + attachRequired: true + podInfoOnMount: true + fsGroupPolicy: File + seLinuxMount: true + volumeLifecycleModes: + - Persistent diff --git a/charts/internal/shoot-system-components/charts/hcloud-csi-node/templates/daemonset.yaml b/charts/internal/shoot-system-components/charts/hcloud-csi-node/templates/daemonset.yaml index 32b5eaa7e..68b8b5f54 100644 --- a/charts/internal/shoot-system-components/charts/hcloud-csi-node/templates/daemonset.yaml +++ b/charts/internal/shoot-system-components/charts/hcloud-csi-node/templates/daemonset.yaml @@ -37,11 +37,6 @@ spec: env: - name: DRIVER_REG_SOCK_PATH value: /var/lib/kubelet/plugins/csi.hetzner.cloud/socket - - name: KUBE_NODE_NAME - valueFrom: - fieldRef: - apiVersion: v1 - fieldPath: spec.nodeName volumeMounts: - name: plugin-dir mountPath: /run/csi @@ -51,6 +46,8 @@ spec: privileged: true - name: hcloud-csi-driver image: {{ index .Values.images "csi-driver-node" }} + args: + - -node env: - name: CSI_ENDPOINT value: unix:///run/csi/socket @@ -58,16 +55,6 @@ spec: value: 0.0.0.0:9189 - name: ENABLE_METRICS value: "true" - - name: HCLOUD_TOKEN - valueFrom: - secretKeyRef: - name: hcloud-csi - key: token - - name: KUBE_NODE_NAME - valueFrom: - fieldRef: - apiVersion: v1 - fieldPath: spec.nodeName volumeMounts: - name: kubelet-dir mountPath: /var/lib/kubelet diff --git a/charts/internal/shoot-system-components/charts/hcloud-csi-node/templates/role-csi-attacher.yaml b/charts/internal/shoot-system-components/charts/hcloud-csi-node/templates/role-csi-attacher.yaml index 20af7328e..b2a3a6eac 100644 --- a/charts/internal/shoot-system-components/charts/hcloud-csi-node/templates/role-csi-attacher.yaml +++ b/charts/internal/shoot-system-components/charts/hcloud-csi-node/templates/role-csi-attacher.yaml @@ -1,4 +1,4 @@ -# registry.k8s.io/sig-storage/csi-attacher@v3.4.0 +# registry.k8s.io/sig-storage/csi-attacher@v4.11.0 --- kind: Role apiVersion: rbac.authorization.k8s.io/v1 diff --git a/charts/internal/shoot-system-components/charts/hcloud-csi-node/templates/role-csi-provisioner.yaml b/charts/internal/shoot-system-components/charts/hcloud-csi-node/templates/role-csi-provisioner.yaml index 736a9cb07..2d63387e4 100644 --- a/charts/internal/shoot-system-components/charts/hcloud-csi-node/templates/role-csi-provisioner.yaml +++ b/charts/internal/shoot-system-components/charts/hcloud-csi-node/templates/role-csi-provisioner.yaml @@ -1,4 +1,4 @@ -# registry.k8s.io/sig-storage/csi-provisioner@v2.2.2 +# registry.k8s.io/sig-storage/csi-provisioner@v6.2.0 --- kind: Role apiVersion: rbac.authorization.k8s.io/v1 diff --git a/charts/internal/shoot-system-components/charts/hcloud-csi-node/templates/role-csi-resizer.yaml b/charts/internal/shoot-system-components/charts/hcloud-csi-node/templates/role-csi-resizer.yaml index c819b23be..30f28db68 100644 --- a/charts/internal/shoot-system-components/charts/hcloud-csi-node/templates/role-csi-resizer.yaml +++ b/charts/internal/shoot-system-components/charts/hcloud-csi-node/templates/role-csi-resizer.yaml @@ -1,4 +1,4 @@ -# registry.k8s.io/sig-storage/csi-resizer@v1.4.0 +# registry.k8s.io/sig-storage/csi-resizer@v2.1.0 --- kind: Role apiVersion: rbac.authorization.k8s.io/v1 diff --git a/charts/internal/shoot-system-components/charts/hcloud-csi-node/templates/secret-hcloud-csi.yaml b/charts/internal/shoot-system-components/charts/hcloud-csi-node/templates/secret-hcloud-csi.yaml deleted file mode 100644 index 1774d3fde..000000000 --- a/charts/internal/shoot-system-components/charts/hcloud-csi-node/templates/secret-hcloud-csi.yaml +++ /dev/null @@ -1,7 +0,0 @@ -apiVersion: v1 -kind: Secret -metadata: - name: hcloud-csi - namespace: {{ .Release.Namespace }} -stringData: - token: {{ .Values.token }} diff --git a/charts/internal/shoot-system-components/charts/hcloud-csi-node/values.yaml b/charts/internal/shoot-system-components/charts/hcloud-csi-node/values.yaml index 6ca870482..0f4ac6257 100644 --- a/charts/internal/shoot-system-components/charts/hcloud-csi-node/values.yaml +++ b/charts/internal/shoot-system-components/charts/hcloud-csi-node/values.yaml @@ -1,5 +1,4 @@ images: csi-driver-node: image-repository:image-tag - csi-driver-registrar: image-repository:image-tag + csi-node-driver-registrar: image-repository:image-tag liveness-probe: image-repository:image-tag -token: base64token diff --git a/cmd/gardener-extension-admission-hcloud/main.go b/cmd/gardener-extension-admission-hcloud/main.go index 9ad1db01b..25681ee60 100644 --- a/cmd/gardener-extension-admission-hcloud/main.go +++ b/cmd/gardener-extension-admission-hcloud/main.go @@ -24,7 +24,7 @@ import ( "sigs.k8s.io/controller-runtime/pkg/log" "sigs.k8s.io/controller-runtime/pkg/manager/signals" - "github.com/23technologies/gardener-extension-provider-hcloud/pkg/cmd/admission" + "github.com/opendefensecloud/gardener-extension-provider-hcloud/pkg/cmd/admission" ) func main() { diff --git a/cmd/gardener-extension-provider-hcloud/main.go b/cmd/gardener-extension-provider-hcloud/main.go index 0b1683251..2f1c1ebc4 100644 --- a/cmd/gardener-extension-provider-hcloud/main.go +++ b/cmd/gardener-extension-provider-hcloud/main.go @@ -24,7 +24,7 @@ import ( "sigs.k8s.io/controller-runtime/pkg/log" "sigs.k8s.io/controller-runtime/pkg/manager/signals" - "github.com/23technologies/gardener-extension-provider-hcloud/pkg/cmd/controller" + "github.com/opendefensecloud/gardener-extension-provider-hcloud/pkg/cmd/controller" ) // main is the executable entry point. diff --git a/docs/deployment.md b/docs/deployment.md index a722aee11..5d1144e2c 100644 --- a/docs/deployment.md +++ b/docs/deployment.md @@ -1,6 +1,6 @@ # Deployment of the HCloud provider extension -**Disclaimer:** This document is NOT a step by step installation guide for the HCloud provider extension and only contains some configuration specifics regarding the installation of different components via the helm charts residing in the HCloud provider extension [repository](https://github.com/23technologies/gardener-extension-provider-hcloud). +**Disclaimer:** This document is NOT a step by step installation guide for the HCloud provider extension and only contains some configuration specifics regarding the installation of different components via the helm charts residing in the HCloud provider extension [repository](https://github.com/opendefensecloud/gardener-extension-provider-hcloud). ## gardener-extension-admission-hcloud diff --git a/docs/superpowers/specs/2026-07-17-gardener-1.146.4-revendor-design.md b/docs/superpowers/specs/2026-07-17-gardener-1.146.4-revendor-design.md new file mode 100644 index 000000000..04c8b91db --- /dev/null +++ b/docs/superpowers/specs/2026-07-17-gardener-1.146.4-revendor-design.md @@ -0,0 +1,196 @@ +# Revendor to Gardener v1.146.4 — Design + +**Date:** 2026-07-17 +**Branch:** `odp/gardener-revendor` +**Baseline:** gardener v1.144.1 (VERSION `v0.7.0-odp.2`) +**Target:** gardener v1.146.4 + +## Goal + +Move `gardener-extension-provider-hcloud` to gardener v1.146.4 and bring every other +dependency to a current, mutually-consistent, supported version. + +This resolves upstream issue [#310](https://github.com/opendefensecloud/gardener-extension-provider-hcloud/issues/310) +("No released version runs on Kubernetes >= 1.34 seeds") and is the point at which the +`odp/v0.6.42-k8s-1.35` stopgap fork (tag `v0.6.42-odp.1`) can be retired. + +## What "up to date" means here + +For a Gardener extension, "current" mostly means **match gardener's pins**, not **take latest**. +Gardener v1.146.4's go.mod is the backbone; diverging from it breaks alignment with core. + +Verified from `raw.githubusercontent.com/gardener/gardener/v1.146.4/go.mod`, this repo already +matches on every line that matters: + +| Pin | gardener v1.146.4 | this repo | action | +|---|---|---|---| +| `k8s.io/*` (staging set) | v0.35.5 | v0.35.5 | hold | +| `sigs.k8s.io/controller-runtime` | v0.23.3 | v0.23.3 | hold | +| `k8s.io/autoscaler/vertical-pod-autoscaler` | v1.6.0 | v1.6.0 | hold | +| `github.com/gardener/etcd-druid/api` | v0.36.4 | v0.36.4 | hold | +| `k8s.io/utils` | `v0.0.0-20260507154919-ff6756f316d2` | identical | hold | +| `go` directive | 1.26.0 (floor) | 1.26.2 | hold | + +**The traps:** controller-runtime v0.24.1 and VPA v1.7.0 each require `k8s.io/* v0.36.x` and would +silently drag the whole staging set off gardener's pin. Renovate PRs #213 and #307 propose exactly +these, and `.github/renovate.json` sets `automerge: true` for gomod — so the hold strategy currently +has *negative* enforcement. Commit 7 fixes that. + +## Scope of change (verified, not assumed) + +gardener v1.144.1 → v1.146.4 is **143 commits**, touching 22 of the 83 gardener packages this repo +imports. Diffed against the real module source in `GOMODCACHE` (the GitHub compare API caps its file +list at 300 and cannot be trusted here): + +- **`extensions/` — the API this repo codes against: only `pkg/controller/worker` changed.** + That is `WorkerPoolHash` (§ commit 4). Nothing else in the extension library moved. +- **`third_party/open-telemetry/opentelemetry-operator/apis/{v1alpha1,v1beta1}` were removed.** + Transitive only — this repo has no direct imports, and v1.146.4 replaces the vendored copy with + the real `github.com/open-telemetry/opentelemetry-operator/apis v0.153.0` module. Resolves + automatically. +- The other 19 are gardener-internal. The compiler and `make generate` are the gate. + +## Commit sequence + +The build is intentionally red between commits 1 and 4: the tidy fix must precede tidy, and the +compile fix follows the revendor. + +**1 — unblock `go mod tidy`.** `hack/tools.go`: delete `_ "github.com/gardener/gardener/hack"` +(package removed at v1.146.0; verified HTTP 404 at v1.146.4, 200 at v1.144.1) and +`_ "github.com/ironcore-dev/vgopath"`. +Keep `_ "k8s.io/code-generator"` — it is the only thing holding code-generator as a direct require, +which `update-codegen.sh:14` reads. Keep `_ ".../hack/tools"` — load-bearing for `tools.mk`. + +**2 — codegen migration (the release blocker).** v1.146.4 deletes `hack/vgopath-setup.sh` (verified +404), which `hack/update-codegen.sh:12` sources under `set -o errexit`. Remove that line *and* the +now-orphaned `rm -f $GOPATH/bin/*-gen` on line 17 — with the source gone, `$GOPATH` is unset under +`set -o nounset`, so removing only the first line still fails. Drop `$(VGOPATH)` from the Makefile +`generate` target. Mirrors `gardener-extension-provider-aws`, which has already completed this. + +Why this matters: `.github/workflows/on-release-publish.yml` runs `make generate` to produce +`example/controller-registration.yaml`. Without this fix the branch compiles clean and is +**unreleasable** — failure appears only at tag time. + +**3 — revendor.** `gardener` **and** `gardener/pkg/apis` → v1.146.4, both explicit. Core's go.mod +pins `pkg/apis v1.144.2` behind a `replace` that does not propagate downstream, so dropping the +explicit require silently resolves to v1.144.2 *and still compiles*. Also MCM → v0.62.1, +hcloud-go → v2.44.0. `go mod tidy` auto-adds `hack/tools v1.146.4`, raises ginkgo/gomega, drops +controller-tools, and raises `x/net` → v0.56.0 (clears 7 CVEs). + +**etcd-druid stays untouched.** `api@v0.36.4` has no `v1alpha1/` package (verified: it ships +`common/ config/ core/ validation/`), and `pkg/cmd/controller/cmd.go:25` resolves through the +**root** module at v0.27.0. Removing the require breaks the build. + +**4 — compile fix.** `WorkerPoolHash` went 5 args → 4 at v1.146.0. `pkg/controller/worker/machines.go:155` +passes 5 → `worker.WorkerPoolHash(pool, w.cluster, nil, nil)`. + +**5 — 2026-10-01 deadline.** `pkg/controller/worker/actuator_hooks.go` reads `Datacenter.ServerTypes`, +which Hetzner stops returning after 2026-10-01. Move to `ServerType.Locations`. Also stop discarding +the error returns (`dc, _, _ :=`) so an API break surfaces as an API error rather than a bogus +"Machine Type not available" for every pool. + +**6 — images + builder.** CCM → v1.33.0, csi-driver → v2.22.0, `golang:1.26.5`. +Sidecars: hold attacher/resizer/provisioner on Hetzner's tested matrix (csi-driver v2.22.0's chart +pins them exactly, and shipped *after* the newer ones existed — deliberate). Take +`csi-node-driver-registrar` v2.17.0 and `livenessprobe` v2.19.0: pure CVE fixes, zero flag/RBAC +delta, and neither touches the Kubernetes API. + +**7 — Renovate guardrails.** `allowedVersions` ceilings — k8s group `<0.36.0`, controller-runtime +`<0.24.0`, controller-tools `<0.21.0`, VPA `<1.7.0` — and `automerge: false` for gomod. + +## Verification + +**e2e cannot validate this.** The nightly harness has been structurally dead since the *current* +revendor: `hack/ci/00-environment.sh` seds `example/provider-extensions/` paths that return 404 at +v1.144.1+, under `set -eu`. Every k8s version it pins (1.26–1.28) is below gardener's 1.32 floor. +Rebuilding it is its own project. + +So the gates are local, in order: + +1. `go mod tidy` clean +2. `go list -m` assertions — `gardener` **and** `gardener/pkg/apis` both v1.146.4 (catches the + silent skew), `k8s.io/api` v0.35.5, `controller-runtime` v0.23.3, VPA v1.6.0 +3. `go build ./...` +4. `go vet ./...` +5. **`make generate` + diff the result** — the real release gate; the post-vgopath codegen path is + otherwise unexercised +6. `make test` +7. `make check` +8. **No-rollout proof for `WorkerPoolHash`** — hash must be byte-identical for the `nil`-additionalData + call, or every worker node rolls. Verify by reading both implementations end-to-end rather than + trusting the reasoning. + +## Kubernetes support after this + +`SupportedVersions` at v1.146.4 is 1.32–1.36 (verified in +`pkg/utils/validation/kubernetesversion/version.go`). The **binding floor is 1.33**, set by Hetzner +CCM/CSI (which dropped 1.32), not by gardener — and that floor was already in effect before this work. + +Known exposure, pre-existing and not introduced here: `csi-provisioner` v6.2.0 declares min k8s +**1.34**, and no shoot-version gating exists around the CSI sidecars. Worth a decision by whoever +owns the supported-shoot matrix. + +## Follow-ups — deferred until commits 1–7 land + +Explicitly out of scope for this PR. Each gets its own PR, in roughly this order: + +1. **distroless debian13** — debian12 EOLs Sept 2026 (~2 months). debian13 verified available, + nonroot UID 65532 unchanged, static `CGO_ENABLED=0` binary has no glibc coupling. Note gardener + v1.146.4 is still on debian12, so this steps ahead of upstream. Lowest-risk change in the set. +2. **CI Actions sweep** — node12-era bundles (checkout v2, setup-go v2, docker/* v1–v2) running on + Node 24. Dated cliff: **2026-09-16**, when Node 20 is removed from runners. Standardize checkout + across all **5** call sites (`on-release-publish.yml` pins it twice — miss one and it silently + stays on v3). Replace `go-version: ">=1.21.0"` with `go-version-file: go.mod`. Then add + `"github-actions"` to `enabledManagers` as the ratchet — its omission is precisely why these + pins rotted while gomod stayed current. **Must land after the Renovate guardrails (commit 7).** +3. **containerd pin** — current `Pin: version 1.7.*` in `pkg/webhook/controlplane/ensurer.go` is + likely a **silent no-op on jammy** (jammy publishes only 1.5.9 and 2.2.1 — no 1.7.x — so apt + installs the broken 2.2.1 anyway; noble does have 1.7.12). Proposed: negative pin + `Pin: version 2.2.[01]*` / `Pin-Priority: -1`, which self-clears when Ubuntu backports 2.2.2. + Verify with `apt-cache policy containerd` on a real jammy node first. Strategic: containerd 1.7 + is EOL Sept 2026 and k8s 1.35 is the last release supporting containerd 1.x — any 1.7 pin is + short-lived either way. +4. **etcd-druid `api/core/v1alpha1` migration** — repoint `cmd.go:25`, promote `api` to direct at + v0.36.4 (gardener's pin, not v0.37.0), drop the root require. A real package move affecting + scheme registration, not a path swap. +5. **`.golangci.yaml` v1→v2 migration + 10 latent lint issues.** **Pre-existing, confirmed not a + regression:** gardener v1.144.1's `tools.mk` pins `GOLANGCI_LINT_VERSION ?= v2.12.2` — the same + version v1.146.4's `hack/tools` pins — and that linter rejects the config on its own + (`unsupported version of the configuration`). So `make check` has been red since before this work. + `run.deadline` is not even valid v1 anymore (removed for `timeout` in v1.57), so `golangci-lint + migrate` refuses until `deadline`→`timeout` is fixed by hand first; after that, `migrate` produces + a clean v2 config that verifies. + Doing so surfaces **10 pre-existing staticcheck issues** in code untouched by the revendor: + `pkg/controller/worker/machines.go:31-32` (same MCM package imported twice, as `machinev1alpha1` + and `mcmv1alpha1`), `pkg/hcloud/apis/transcoder/cloud_profile.go` (×4), `pkg/hcloud/apis/validation/` + (×2, incl. `sets.String` deprecated → `sets.Set[string]`), `pkg/controller/controlplane/valuesprovider.go:346` + (Yoda condition), `pkg/webhook/validator/cloudprofile.go:47`. Not urgent: **CI never runs + `make check`** (`on-pr-test.yml` runs `make install` + `make test-cov` only). + +6. **MCM-provider-hcloud `datacenter` bug — its own incident, not this plan.** + `pkg/hcloud/machine_controller.go` sends the `datacenter` field that Hetzner removed from the + server-create API on **2026-07-01**. Already live-broken, independent of this upgrade, in an + unmaintained external repo (v0.3.1 is 13 months stale) with no fix available. Failure mode — + hard 400 vs **silently ignored** — is inference, not documented; "silently ignored" is the + worse outcome (servers land in arbitrary locations, zone spreading degrades invisibly). + Test against the live API. Fix is small (`GetRegionFromZone` already exists; set `.Location` + instead of `.Datacenter` — `Validate()` rejects both at once, so it must be a swap) but needs + a fork + release. + +## Open decisions + +- **VERSION file** — currently `v0.7.0-odp.2`. Bump to `v0.7.0-odp.3`? +- **Upstream PR for #310** — if this branch is aimed upstream, the diff should stay + upstream-palatable. Prior art: `mreichardt95/gardener-extension-provider-hcloud@bump/gardener-1.137` + exists but was never PR'd and is *behind* this repo. +- **Rebase onto `upstream/main`** — it is 5 commits ahead and already merged hcloud-go v2.44.0 + (#317), ginkgo v2.32.0 (#318), gomega v1.42.1 (#319), plus two `k8s.io/utils` digest bumps + (#320, #321) that drift *off* gardener's pin. This branch is 12 ahead. Separate decision. + +## Notes + +- Only chris commits and pushes. Changes are prepared and staged; the commit sequence is handed off. +- `Makefile:31` `GARDENER_VERSION := $(grep ...)` is missing `$(shell ...)` and expands to empty, so + `make start`/`make debug` pass `--gardener-version=`. Pre-existing; cheap fix if touching the file. +- v1.146.1–.4 have no published GitHub release notes. A hidden break cannot be excluded from notes + alone — which is why the `make generate` gate carries the weight it does. diff --git a/example/controller-registration.yaml b/example/controller-registration.yaml new file mode 100644 index 000000000..acafeb8f2 --- /dev/null +++ b/example/controller-registration.yaml @@ -0,0 +1,28 @@ +--- +apiVersion: core.gardener.cloud/v1 +kind: ControllerDeployment +metadata: + name: provider-hcloud +helm: + rawChart: H4sIAAAAAAAAA+09a3PbtrL9rF+BYdM5SU5IPSw5PbqTe69qq44miaOx3WQ6ba+HIiGJNUWwJGhHTfvf7y4AUuBDD9qJ3bTCJGMJwAKLxWKxu1hAMztyaUAjk37gNIg9FphhxK49F7Lmjs8St/nVXVML0vNeT/yFVPwrPrcPuu1Or3N4iPntw+5h6yvSu3PPO6Qk5nZEyFcRY3xTvW3lX2iabZ//o7kdcWtpL/xb9oETfNjtrp3/zsFhfv47rW7r8CvS+qQjXZP+4fNvh947GuG898l1u2GHYfbVaFsto+HS2Im8kIusAXlJ/QVxkCPIlEWEzyk5USxEXh4hv5Cx4h+SsVQjsBe0T7bzWuM67bxlQe+Nh6bO3z/tsP5d5lgzdoc+tqz/TqtTWP9t2C26+/V/H6n5tEGekiMWLiNvNuek02r/h5wPxuR8SGB924H4Yk+nnu/ZnBKHLUI7WFpk4PtEgMQkojGNrqlrkYu5FxOoSgn89T0HOIq6JAlQGqCoGIS2A3/O2ZTf2BElr2WVZ+TaIh2QFw4NObFjEjAOcAxAohsvhtYCAf56dDQ8BcSwB0AbMX+9tpOsbSXQSMdqkcdYwVBFxpP/wiaWLCELe4mdkgQ649kgFELQOw4bCBA4lNx4fC6xka1Y2MaPqg024TZUtwEghG9TvSKxuUJ6znnYbzZvbm4sWyBrsWjWVPSKm2qYJiCsAH4IfBojoX9LvAgGO1kSkNQAYE8ATd++EXM1iyiUcYYI30Qe94LZMxIrWmMzrhfzyJskPEevFD0YtV4BKAazbwzOyejcIN8Nzkfnz7CR96OLl29/uCDvB2dng9OL0fCcvD0jR29Pj0cXo7en8O17Mjj9kbwanR4/I9TDSQRKhhGOAND0kJLALNjWOaU5FNItJQ6p4009B4YWzBJ7RsmMwdYQwIhISKOFF+OMxoCgKynUbDSazRnrz1CWIZ/Gc2I6xJjY8OHRyeDseHg6PLt8OTh6dXk8Omum9UyHBTxivg/iLqIzHL6NW50FYAU5SCzy6LFjc2JZTfj3bnh2DsN9or7SDzaMizbXtYfqEywzUTiGUdG+anUUTCMbqiUOT6Is9z2Lrmikvhk4ODK2nSukhNx8aYBTH5PcmJMwZGpjVplIMCSow6KIOpys0CM59Bqh3vp+3/3HpB32f06Bs4G/4ttagrXtP9D/e4d7++8+Uq35v5xTH8RvbPGwji24Tf+D6S7Mf+f58739dy/p40eTuHTqBaAWoZVmEPPPPxs7WGoISANXVG/orfj2hPoxKDahdUWXsj3xJZnADk6BjyyPNbGvXBtrmri2/UQh9fEjKDaOn7gZqhZRgBsQKcMWEcRW+mRNDdW/6Kk8Ci8A7gGlUIBbZ9SnNiiEp4BcJWYZat4C9lqJGSFY4k3J3I7HEZR/IEY8tzu9wz50+w67h66wvsXtGckgwsgL+JQY38T/+01crBnRkMUeZ9FyUxMwRlrVYP/WDcJgtXEXJ8Sloc+WCxpwZeZnzBE3r9vrJxIwY6DOLh3fjuMcqCJdTBeQfYSmCRgVxn+/IG2r3TVbMIojULAnYLtwD1B+BZOnrAHrxOOpYYAtxaCFu4kP+pJ19a2Y2xQjJNK6Ptp37mNCua11tK6a7Ydzu11aMJXkimGaYGrqUeug3khkF1WkqizWRlmB/UPLwH9yqrX/g/Uw9WYLOzTF4r8Gi4JFJlpmaG7SdT7ibf7f7uFBYf9/fnjwfL//30dSMiEn1N+JeX2bTqvc+nJu4isvcPtozgI7vLHDxgLWt2tzuw8bgfT1Vm/W1XyjgGKwQSt2UpEt9xi5L/crdnNs/g/IBF7mpIu1U3REj/Flnkn75A9sZOOo881pe9pDT9knTbdc/z6bzXCD2ulUaJv+3+0W7b/u84P2fv3fR/pUC1sxhClZJL+iJY9p65dAyvgttlIetCS/ySYS6ZnqE9VytqCnns+BOTVFHAFwRWOzP30/en0xPPtFfMEklPFCAsUnplFW5Y3NnXmhitb8U4GW7ilc2AEIjOjpXJWsK896eEWXl0VEYFxZ+VggVMYAZke41qNxHuMz6XG/PAaapHkXUUIbn40GC9uZg3a5gQobavyN6JBOeexpA9Vy/9JjjajY2i7BaNt5wKv+E7/U4CM0//5vVf1nsJejny0Y5s+4KvEsBITLz9bjdUvEtP79P5f4f8tS+qOS7iXo2HuCRzi4m4G9Sl3r0cXghHCkUorycOFxkB+5qYnoJRXZbsnN8dDy+XOn2+3/9aJBtu3/B+2i/n9w0Nqf/95L+lT7f8Yan1WZl71kKjyuXdM0xV99IJJxrZSRLU3XUC0UVI7MwSKkX0oDJWWOdH2kUTCYVHuO7wGyUDMAKwK9JGKIgHAhv6/kkO3gyTL2AcUXy5DGglbZAa+xpX2r3ACe36bwxjb8quAVyoLKaW5NrDTIeujogBkev4V1qQIQ9fpFgKy/SRLFvGaPAqZenxIkb1Ni95InR65cNaqRjFHlB8vDReHxJVn58wr9KT1sJOzetO1cplhznP2IR9IbgdeawNgk5Y6bsrNy+PWzXVY4H09TgVHoBCGt1EeY1VzNA4BjWASMcju0qvi3s8vvK9Xa/1cO/FoKwOb9v90+7HWK+3+vs/f/3UvSt019J644qxFnYHJzPM5Kd9YQdtQLxDGZ7pCcBSyiYPuwJHJSeWYHAeNiO1bOhCgtL27sErxPDLQBjLwIq6OAYEASdhXRaw+p8dJDCbR87YHZ0CctUSLiseKcyFKZRywJuOw0hkGjn7GvxDIYX693w+NQNYAhO3S2VAMHDcULZj+EMAWZ+F3YH34I7Gvb8zFGKIdQvmglciH/PIlmpcoiU1ZLxYDCXJt2odAUpwTTjs7lTOrPqXMVJwvNz6gMu0q3cY7THovjS/LIulBoWt8Bb41tPifGTucWxhNBbHn0CkjoiBV2vjW4btSMb4HsFrR0ZxomMMBvWHSFXtnCIuDMjIABvQU1M+dCn9i+z26ouxu8C9NaDyJMJsD6pqpTGzryrjE8byfwtasfGgIwM56D7I6Fx3BFAJM7odntHqxa3rL+vk1Jn8oCTOnR9NFK39khdkIpTYCH59CB46B4ON0sO1O9XHpU0u7NbSJXJsH1+VoqAqFcbZz4/pjB1OWVL3naH2aFubXAFgs7cFesaJLmzlTA2qZaJCZG3b5ogobXrB6RWhxNzQ4sNoNGW4gBliaIL8xwkiiC+TMjil+gg/hFXqlUZl72WUBbK8jzZeDE+nixJy8Xtlm/rzz81t7ENmaykEor1FyJ27UdCJC3KcQgAyi2fSNCTeuPQMJtw3xO7YhPqM3NbPd/scEpUAUIbdMbIDiH9WLDakbM3LVoZXCWgBspsHMJVRo8nYBwuEr5ryaOBWi1oE0MwtXRU9WkH8FStcYYqbu9PZiZ7c3RqKo114txk9f8pTmiqeKVnwPtvV+ZFxDjmbGuLdV3VUPvVdGaVgq6AEyTz+dVaMsScwJi17RdF8PGX/S17qohK7boQo/Z3qAU2mK/mcRS5foQN8FW9EyDa10YShn9ejg4Hp5dDl8PjzBO/vJ08GZ4Ph4cDbOahIhos+8jtuhrmXjkRX33jE7zuSof1YZ+po9ZGQvfVgtL8R29GZwM3wGyb88u374bnr0/G12UcO2TpogY1w7Ym5Un7pvIhQwelwmWrgbJ4VrP2T6ITJDbpXZZGrhpM84c5vfJxdG4HoP63jXwQRyPIzah+nTglY4TyvMzFIqpacqmfs8XFVGv7g8TxoMhPV5eXIy1Ai/wuGf7x9S3l0q69UmnpdWYgpoPm8vFHNbQnPlgt/V0KlDQXdwMsq1DxokD6lSsQba1UtQkWcIz0FWrEbVdrzZ9EGp5L+Tp3ZY6vU9AnEKEpMZrUd68TWmpMqvcdSuIP0igFNR2q8JLh+ma+cmCvkEts2KZZSf2aVpgRSlVtqtid5Uy6wKCqpApSRqtHvLQ28AHpTV32leiBt5kC9CzqEkfdwDG0aBUQDKf7nEC9trsPIvLHAndSmUPP1An0X37cnjCgjjPWfvaqNDuH8o7UXmTOQW/osu1MclZ1HIBihCpIEJ/ZBSUCoXALnWFne0Q+6wDcBYyn82WrxBHIx8RPWcxF0yiICTvlQyWAvM46YGTjt3O501pcunUTnz+hrkA181EYS3O3I0v6+O7jc834P5Zw85q+X9hqYCyFyXiNvgkcWd0J0fwtvjPXvd5wf/b63b39z/uJanFMePkMbqkqhyXT0i7GAIaCh9AFtgtncJj5h5n3PGd4I5P7R2+ndO2wh8aJ5OtA76zs/ZLiBmtt/71ixi7HwFtW/8HvV4x/rOzv/9/P2nd+U/1nRvtCGisez4r1vkuj31IC7Kd3QJtzHw2QZ1d7IV9UNH9mOZfIDHSfuURc/kRkqy7fvECt2U8NLH/gqnW+o8mtnOLh4C2rP+D54ft4v3PDr7/tF//nz9h+JQuA8QU2wmfwyL7Xb4NsLrkpSKjfKAZjc6YT+vs73V27ijx0WYwMarrJGJJKAwIc33QeCNnL2NVGMdVEk4S54ryuJzThGnniV4AnUcercjJV43FGWfui17BkcRRX7QDhYocHc4NYnS5R27xq14pf2hQmadXlx763OdVMcj0iSIVKmrCZPVi+eEGNR3xKcw+JeKIuTwl6w7fyjMiQ3ndLDePhPHUKDfuMCCBF+h8WG5X6ImF1pyI2sK+Ko3qjn2k+UItlWUFeWlCXfwmdEeMGBQkLovZ7KCiejJuipRfTUdpCIYh/uBFWsWYKeza5SwBXPWSSu4tEL1C6GlLTivQTl+13Py9zzIVMxU/LnxtTmECfO/3lFvBUg7Uqo0pzCXPVo80+lWtwA2Zl1ZcRayUvjdjx/apak6cvsT6F1uewOYWMCxSWsrAMwkYssqPPTfyrlOUVwClmr+yifwA9vPqQ1NeBoB1kXDxUItyXueuv6iuAAO2SIkp7vl6q1I1F8Im83ZaVirKz4rtUGpGVZOFkNubAt5iSN0cJxRagjY42FY+jDqtLqlWbPxOe9F3kuSfbUuCLtQRTEqCDRg2sjBibbPcgg/YpL+CyBD7ngQ+z0UIfBoTurD/19L/1HqpqwJu0f/ah61S/B/k7vW/+0iV8f+K7z6996YUJbZLFM80YguMUvBdEyODxGEh+ddPH430HM/oGxdHY+OZgWVGf7fzwD9/+Vc9DKTPC/7ADo8ywsy8Q0QEGVHqmmCo2iE1gaNmcs/arf2MeFmbaoSaywnGVXC15458gQayUaPWyMqjWcVAmCDVMZ5xpQHsFp15j+GYXFxRUDJ2NM657HYLp8zOns3ymePWuI3yQbKc+Vrn0g+7/m8j/5W+tPM2sNX/1yr5/9AluJf/95A2yf9U73hQJz5qjOIQOI/UBbuiQeohfGgifsGp3vrXXhaqoQRu0/867eL7393Wwd7/fy9Jnf/R38qxbqjRZHcoiaHeIi0eBepruPLlKe3M4FyWrzsyqHdTrI4QqXNlxAWZxakJC8ELrkEFck3pgMm0FkESHBtG0TuxZ80p/33l95IRD8oalef5VZGEgrqox6yuqaYflJpQakiQHoPV34mS4YfQVicdIuZlXbzj9p6mcXrxMrQjIDBXIeY4uMJbXtOYp9dC79RR9XNxD70a/nmplvy/Du3b/A7E9viPovzvtA/2+t+9pILQwBmWT0u7BTlvlD19zeu2oST7O+XiGzN3kLn4dn89ALrdUXnMLD9haGUx0Tqm6XuSmF+6rrgtUAsqSHGv7sAIAJlTkuVILL2ytar3xci1Hda/jBu8ww/AbDv/7Twv/f7LYe9gv/7vI8mrYcJnn77w2iezuRPh+mYh8C+d4tP8khV2utXF7VmfiA0Dl1uo3ScbTU8ZH+PPRcBKbOghVxhDXQzTEjnqVmqv9Q0CpMcK5OOfDVh9iLeSVlnc7+bVa6B0MhoN7U6MelckO5aVQIVrTTKOO3/WuqGiPG3dUCE7/EuV0fJVpT45wCjQtfe4UuO3Ub7I0yc//dIoXMsReY2vSVX4K76l8jVJ30rsi89pIGxoJ7G8QySuXIgyQuREnOk84/F5MgHFfdFcuSn1jxOfTZoLGz11zUni+W5TNN08Zg7QSvykh2w7x4mSEWeMzXx6uboAKWFNe+EedhWYYDvjAH+zSGZkvyWED/VaH77sUbVLo1IP93ZkgWVZjUbOzdhvZFdMpT+y2z1QWenNmXar02uJxaDqVz9XU/VYjfr5EazU/DVmQcrqq4djKmuIJ13aLRnerN5baQOfw/evgTfFSyphBCIniuRPmchfAlnmHzDBHzgRvzU1jpj4oZbHebPjqOIxkyfYReEZFMhZBaRHlKHH/muNxJ1W58Dq4a+wYLa8rTJlPvTQxPpmvnwGuyTH51tkW4fdE8zAoa2eSik8lOKUrw1LK9Kc2jFPK2WPoXR6J14je5y939C5AQ9rZYmfXrOZgnwBOXWColiIzLSGLE6fklHAaL31U7e2IGP6kJISUTPRUcwWVH6WA8pdhlZwjTSqPT8herC8tATF4UJXy64wnkeLBXXxt4cajdUloD75tvVt+y+sV+3TPu3TPu3TPv2V0/8D9KmpbQB4AAA= + values: + image: + tag: v0.7.0-odp.7 +--- +apiVersion: core.gardener.cloud/v1beta1 +kind: ControllerRegistration +metadata: + name: provider-hcloud + annotations: + security.gardener.cloud/pod-security-enforce: baseline +spec: + deployment: + deploymentRefs: + - name: provider-hcloud + resources: + - kind: ControlPlane + type: hcloud + - kind: Infrastructure + type: hcloud + - kind: Worker + type: hcloud diff --git a/go.mod b/go.mod index 98cd57f45..cbecfd6f0 100644 --- a/go.mod +++ b/go.mod @@ -1,78 +1,106 @@ -module github.com/23technologies/gardener-extension-provider-hcloud +module github.com/opendefensecloud/gardener-extension-provider-hcloud -go 1.25.0 - -toolchain go1.26.4 +go 1.26.2 require ( github.com/Masterminds/semver/v3 v3.5.0 github.com/ahmetb/gen-crd-api-reference-docs v0.3.0 github.com/coreos/go-systemd/v22 v22.7.0 - github.com/gardener/etcd-druid v0.25.0 - github.com/gardener/gardener v1.106.1 - github.com/gardener/machine-controller-manager v0.56.1 + github.com/gardener/etcd-druid v0.27.0 + github.com/gardener/gardener v1.146.4 + github.com/gardener/gardener/hack/tools v1.146.4 + github.com/gardener/gardener/pkg/apis v1.146.4 + github.com/gardener/machine-controller-manager v0.62.1 github.com/go-logr/logr v1.4.3 - github.com/golang/mock v1.6.0 - github.com/hetznercloud/hcloud-go/v2 v2.43.0 - github.com/onsi/ginkgo/v2 v2.31.0 + github.com/hetznercloud/hcloud-go/v2 v2.44.0 + github.com/onsi/ginkgo/v2 v2.32.0 github.com/onsi/gomega v1.42.0 github.com/pkg/errors v0.9.1 github.com/spf13/cobra v1.10.2 github.com/spf13/pflag v1.0.10 go.uber.org/mock v0.6.0 - k8s.io/api v0.35.1 - k8s.io/apiextensions-apiserver v0.34.3 - k8s.io/apimachinery v0.35.1 + k8s.io/api v0.35.5 + k8s.io/apiextensions-apiserver v0.35.5 + k8s.io/apimachinery v0.35.5 k8s.io/autoscaler/vertical-pod-autoscaler v1.6.0 - k8s.io/client-go v0.35.1 - k8s.io/code-generator v0.35.1 - k8s.io/component-base v0.35.1 - k8s.io/kubelet v0.34.3 - k8s.io/utils v0.0.0-20260617174310-a95e086a2553 - sigs.k8s.io/controller-runtime v0.20.4 + k8s.io/client-go v0.35.5 + k8s.io/code-generator v0.35.5 + k8s.io/component-base v0.35.5 + k8s.io/kubelet v0.35.5 + k8s.io/utils v0.0.0-20260707023825-cf1189d6abe3 + sigs.k8s.io/controller-runtime v0.23.3 ) require ( - dario.cat/mergo v1.0.1 // indirect - github.com/BurntSushi/toml v1.3.2 // indirect + cel.dev/expr v0.25.1 // indirect + dario.cat/mergo v1.0.2 // indirect + github.com/BurntSushi/toml v1.6.0 // indirect github.com/Masterminds/goutils v1.1.1 // indirect github.com/Masterminds/sprig/v3 v3.3.0 // indirect - github.com/andybalholm/brotli v1.1.1 // indirect + github.com/PaesslerAG/gval v1.2.4 // indirect + github.com/PaesslerAG/jsonpath v0.1.2-0.20240726212847-3a740cf7976f // indirect + github.com/VictoriaMetrics/VictoriaLogs v1.36.2-0.20251008164716-21c0fb3de84d // indirect + github.com/VictoriaMetrics/VictoriaMetrics v1.131.0 // indirect + github.com/VictoriaMetrics/easyproto v0.1.4 // indirect + github.com/VictoriaMetrics/metrics v1.40.2 // indirect + github.com/VictoriaMetrics/metricsql v0.84.8 // indirect + github.com/VictoriaMetrics/operator/api v0.66.1 // indirect + github.com/andybalholm/brotli v1.2.2 // indirect + github.com/antlr4-go/antlr/v4 v4.13.1 // indirect + github.com/aws/aws-sdk-go-v2 v1.41.7 // indirect + github.com/aws/aws-sdk-go-v2/config v1.32.17 // indirect + github.com/aws/aws-sdk-go-v2/credentials v1.19.16 // indirect + github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.23 // indirect + github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.23 // indirect + github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.23 // indirect + github.com/aws/aws-sdk-go-v2/internal/v4a v1.4.24 // indirect + github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.9 // indirect + github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.23 // indirect + github.com/aws/aws-sdk-go-v2/service/signin v1.0.11 // indirect + github.com/aws/aws-sdk-go-v2/service/sso v1.30.17 // indirect + github.com/aws/aws-sdk-go-v2/service/ssooidc v1.35.21 // indirect + github.com/aws/aws-sdk-go-v2/service/sts v1.42.1 // indirect + github.com/aws/smithy-go v1.25.1 // indirect github.com/beorn7/perks v1.0.1 // indirect github.com/blang/semver/v4 v4.0.0 // indirect + github.com/bmatcuk/doublestar/v4 v4.10.0 // indirect + github.com/brunoga/deep v1.3.1 // indirect github.com/cespare/xxhash/v2 v2.3.0 // indirect - github.com/cyphar/filepath-securejoin v0.3.1 // indirect + github.com/cyphar/filepath-securejoin v0.6.1 // indirect github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect + github.com/elliotchance/orderedmap/v3 v3.1.0 // indirect github.com/emicklei/go-restful/v3 v3.13.0 // indirect github.com/evanphx/json-patch/v5 v5.9.11 // indirect - github.com/fatih/color v1.17.0 // indirect - github.com/fluent/fluent-operator/v2 v2.9.0 // indirect - github.com/fsnotify/fsnotify v1.9.0 // indirect - github.com/fxamacker/cbor/v2 v2.9.0 // indirect - github.com/gardener/cert-management v0.15.0 // indirect - github.com/gardener/hvpa-controller/api v0.17.0 // indirect + github.com/fatih/color v1.19.0 // indirect + github.com/fluent/fluent-operator/v3 v3.7.0 // indirect + github.com/fsnotify/fsnotify v1.10.1 // indirect + github.com/fxamacker/cbor/v2 v2.9.2 // indirect + github.com/gardener/cert-management v0.23.0 // indirect + github.com/gardener/etcd-druid/api v0.36.4 // indirect + github.com/go-jose/go-jose/v4 v4.1.4 // indirect github.com/go-logr/zapr v1.3.0 // indirect - github.com/go-openapi/errors v0.20.4 // indirect - github.com/go-openapi/jsonpointer v0.22.4 // indirect - github.com/go-openapi/jsonreference v0.21.4 // indirect - github.com/go-openapi/swag v0.25.4 // indirect - github.com/go-openapi/swag/cmdutils v0.25.4 // indirect - github.com/go-openapi/swag/conv v0.25.4 // indirect - github.com/go-openapi/swag/fileutils v0.25.4 // indirect - github.com/go-openapi/swag/jsonname v0.25.4 // indirect - github.com/go-openapi/swag/jsonutils v0.25.4 // indirect - github.com/go-openapi/swag/loading v0.25.4 // indirect - github.com/go-openapi/swag/mangling v0.25.4 // indirect - github.com/go-openapi/swag/netutils v0.25.4 // indirect - github.com/go-openapi/swag/stringutils v0.25.4 // indirect - github.com/go-openapi/swag/typeutils v0.25.4 // indirect - github.com/go-openapi/swag/yamlutils v0.25.4 // indirect + github.com/go-openapi/errors v0.22.7 // 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-task/slim-sprig/v3 v3.0.0 // indirect - github.com/gobuffalo/flect v1.0.3 // indirect github.com/gobwas/glob v0.2.3 // indirect - github.com/gogo/protobuf v1.3.2 // indirect + github.com/goccy/go-yaml v1.19.2 // indirect + github.com/golang-jwt/jwt/v5 v5.3.1 // indirect github.com/golang/protobuf v1.5.4 // indirect github.com/google/btree v1.1.3 // indirect + github.com/google/cel-go v0.27.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 @@ -82,72 +110,93 @@ require ( github.com/hashicorp/go-multierror v1.1.1 // indirect github.com/huandu/xstrings v1.5.0 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect - github.com/ironcore-dev/vgopath v0.1.5 // indirect - github.com/json-iterator/go v1.1.12 // indirect + github.com/jpillora/backoff v1.0.0 // indirect + github.com/json-iterator/go v1.1.13-0.20220915233716-71ac16282d12 // indirect + github.com/klauspost/compress v1.19.0 // indirect github.com/kubernetes-csi/external-snapshotter/client/v4 v4.2.0 // indirect - github.com/mattn/go-colorable v0.1.13 // indirect - github.com/mattn/go-isatty v0.0.20 // indirect + github.com/labstack/echo/v4 v4.15.1 // indirect + github.com/labstack/gommon v0.4.2 // indirect + github.com/mattn/go-colorable v0.1.14 // indirect + github.com/mattn/go-isatty v0.0.22 // indirect github.com/mitchellh/copystructure v1.2.0 // indirect github.com/mitchellh/hashstructure/v2 v2.0.2 // indirect github.com/mitchellh/reflectwalk v1.0.2 // indirect - github.com/moby/spdystream v0.5.0 // indirect + github.com/moby/spdystream v0.5.1 // indirect github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect github.com/modern-go/reflect2 v1.0.3-0.20250322232337-35a7c28c31ee // indirect + github.com/muhlemmer/gu v0.3.1 // indirect github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect + github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f // indirect github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f // indirect + github.com/nexucis/lamenv v0.5.2 // indirect + github.com/open-telemetry/opentelemetry-operator/apis v0.153.0 // indirect + github.com/perses/common v0.30.2 // indirect + github.com/perses/perses v0.53.1 // indirect + github.com/perses/perses-operator v0.4.0 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect - github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring v0.74.0 // indirect - github.com/prometheus/client_golang v1.23.2 // indirect + github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring v0.91.0 // indirect + github.com/prometheus/alertmanager v0.29.0 // indirect + github.com/prometheus/client_golang v1.23.3-0.20260710134234-de192175ccd6 // 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/prometheus/sigv4 v0.3.0 // indirect github.com/russross/blackfriday/v2 v2.1.0 // indirect + github.com/santhosh-tekuri/jsonschema/v6 v6.0.2 // indirect github.com/shopspring/decimal v1.4.0 // indirect - github.com/spf13/afero v1.11.0 // indirect - github.com/spf13/cast v1.7.0 // indirect + github.com/sirupsen/logrus v1.9.4 // indirect + github.com/spf13/cast v1.10.0 // indirect + github.com/valyala/bytebufferpool v1.0.0 // indirect + github.com/valyala/fastjson v1.6.4 // indirect + github.com/valyala/fastrand v1.1.0 // indirect + github.com/valyala/fasttemplate v1.2.2 // indirect + github.com/valyala/gozstd v1.24.0 // indirect + github.com/valyala/histogram v1.2.0 // indirect + github.com/valyala/quicktemplate v1.8.0 // indirect github.com/x448/float16 v0.8.4 // indirect - github.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb // indirect - github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415 // indirect - github.com/xeipuuv/gojsonschema v1.2.0 // indirect - go.opentelemetry.io/otel v1.40.0 // indirect - go.opentelemetry.io/otel/trace v1.40.0 // indirect + github.com/zitadel/oidc/v3 v3.45.4 // indirect + github.com/zitadel/schema v1.3.2 // indirect + go.opentelemetry.io/otel v1.44.0 // indirect + go.opentelemetry.io/otel/trace v1.44.0 // indirect go.uber.org/multierr v1.11.0 // indirect - go.uber.org/zap v1.27.0 // indirect - go.yaml.in/yaml/v2 v2.4.3 // 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/crypto v0.52.0 // indirect - golang.org/x/exp v0.0.0-20241009180824-f66d83c29e7c // indirect - golang.org/x/mod v0.35.0 // indirect - golang.org/x/net v0.55.0 // indirect - golang.org/x/oauth2 v0.35.0 // indirect - golang.org/x/sync v0.20.0 // indirect - golang.org/x/sys v0.45.0 // indirect - golang.org/x/telemetry v0.0.0-20260409153401-be6f6cb8b1fa // indirect - golang.org/x/term v0.43.0 // indirect - golang.org/x/text v0.37.0 // indirect - golang.org/x/time v0.14.0 // indirect - golang.org/x/tools v0.44.0 // indirect - gomodules.xyz/jsonpatch/v2 v2.4.0 // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20250303144028-a0af3efb3deb // indirect - google.golang.org/protobuf v1.36.11 // indirect + go.yaml.in/yaml/v4 v4.0.0-rc.2 // indirect + golang.org/x/crypto v0.54.0 // indirect + golang.org/x/exp v0.0.0-20260527015227-08cc5374adb3 // 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.22.0 // indirect + golang.org/x/sys v0.47.0 // indirect + golang.org/x/term v0.45.0 // indirect + golang.org/x/text v0.40.0 // indirect + golang.org/x/time v0.15.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-20260526163538-3dc84a4a5aaa // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20260526163538-3dc84a4a5aaa // 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 gopkg.in/yaml.v2 v2.4.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect - helm.sh/helm/v3 v3.16.2 // indirect - istio.io/api v1.23.2 // indirect - istio.io/client-go v1.23.2 // indirect + helm.sh/helm/v4 v4.1.4 // indirect + istio.io/api v1.29.5 // indirect + istio.io/client-go v1.29.2 // indirect + k8s.io/apiserver v0.35.5 // indirect k8s.io/gengo v0.0.0-20230829151522-9cce18d56c01 // indirect k8s.io/gengo/v2 v2.0.0-20251215205346-5ee0d033ba5b // indirect k8s.io/klog v1.0.0 // indirect - k8s.io/klog/v2 v2.130.1 // indirect - k8s.io/kube-aggregator v0.31.1 // indirect - k8s.io/kube-openapi v0.0.0-20260127142750-a19766b6e2d4 // indirect - k8s.io/metrics v0.35.1 // indirect - sigs.k8s.io/controller-runtime/tools/setup-envtest v0.0.0-20231015215740-bf15e44028f9 // indirect - sigs.k8s.io/controller-tools v0.16.4 // indirect + k8s.io/klog/v2 v2.140.0 // indirect + k8s.io/kube-aggregator v0.35.5 // indirect + k8s.io/kube-openapi v0.0.0-20260603220949-865597e52e25 // indirect + k8s.io/metrics v0.35.5 // indirect + k8s.io/pod-security-admission v0.35.5 // indirect + sigs.k8s.io/gateway-api v1.5.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.3.2 // indirect + sigs.k8s.io/structured-merge-diff/v6 v6.4.0 // indirect sigs.k8s.io/yaml v1.6.0 // indirect ) diff --git a/go.sum b/go.sum index 3db73faab..a16f909f3 100644 --- a/go.sum +++ b/go.sum @@ -1,3 +1,5 @@ +cel.dev/expr v0.25.1 h1:1KrZg61W6TWSxuNZ37Xy49ps13NUovb66QLprthtwi4= +cel.dev/expr v0.25.1/go.mod h1:hrXvqGP6G6gyx8UAHSHJ5RGk//1Oj5nXQ2NI02Nrsg4= cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU= @@ -10,9 +12,11 @@ cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbf cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I= cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw= -dario.cat/mergo v1.0.1 h1:Ra4+bf83h2ztPIQYNP99R6m+Y7KfnARDfID+a+vLl4s= -dario.cat/mergo v1.0.1/go.mod h1:uNxQE+84aUszobStD9th8a29P2fMDhsBdgRYvZOxGmk= +dario.cat/mergo v1.0.2 h1:85+piFYR1tMbRrLcDwR18y4UKJ3aH1Tbzi24VRW1TK8= +dario.cat/mergo v1.0.2/go.mod h1:E/hbnu0NxMFBjpMIE34DRGLWqDy0g5FuKDhCb31ngxA= dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= +github.com/AdaLogics/go-fuzz-headers v0.0.0-20230811130428-ced1acdcaa24 h1:bvDV9vkmnHYOMsOr4WLk+Vo07yKIzd94sVoIqshQ4bU= +github.com/AdaLogics/go-fuzz-headers v0.0.0-20230811130428-ced1acdcaa24/go.mod h1:8o94RPi1/7XTJvwPpRSzSUedZrtlirdB3r9Z20bi2f8= github.com/Azure/go-autorest/autorest v0.9.0/go.mod h1:xyHB1BMZT0cuDHU7I0+g046+BFDTQ8rEZB0s4Yfa6bI= github.com/Azure/go-autorest/autorest v0.9.6/go.mod h1:/FALq9T/kS7b5J5qsQ+RSTUdAmGFqi0vUdVNNx8q630= github.com/Azure/go-autorest/autorest/adal v0.5.0/go.mod h1:8Z9fGy2MpX0PvDjB1pEgQTmVqjGhiHBW7RJJEciWzS0= @@ -25,8 +29,8 @@ github.com/Azure/go-autorest/autorest/mocks v0.3.0/go.mod h1:a8FDP3DYzQ4RYfVAxAN github.com/Azure/go-autorest/logger v0.1.0/go.mod h1:oExouG+K6PryycPJfVSxi/koC6LSNgds39diKLz7Vrc= github.com/Azure/go-autorest/tracing v0.5.0/go.mod h1:r/s2XiOKccPW3HrqB+W0TQzfbtp2fGCgRFtBroKn4Dk= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= -github.com/BurntSushi/toml v1.3.2 h1:o7IhLm0Msx3BaB+n3Ag7L8EVlByGnpq14C4YWiu/gL8= -github.com/BurntSushi/toml v1.3.2/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ= +github.com/BurntSushi/toml v1.6.0 h1:dRaEfpa2VI55EwlIW72hMRHdWouJeRF7TPYhI+AUQjk= +github.com/BurntSushi/toml v1.6.0/go.mod h1:ukJfTF/6rtPPRCnwkur4qwRxa8vTRFBF0uk2lLoLwho= github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= github.com/Masterminds/goutils v1.1.1 h1:5nUrii3FMTL5diU80unEVvNevw1nH4+ZV4DSLVJLSYI= github.com/Masterminds/goutils v1.1.1/go.mod h1:8cTjp+g8YejhMuvIA5y2vz3BpJxksy863GQaJW2MFNU= @@ -35,20 +39,72 @@ github.com/Masterminds/semver/v3 v3.5.0/go.mod h1:4V+yj/TJE1HU9XfppCwVMZq3I84lpr github.com/Masterminds/sprig/v3 v3.3.0 h1:mQh0Yrg1XPo6vjYXgtf5OtijNAKJRNcTdOOGZe3tPhs= github.com/Masterminds/sprig/v3 v3.3.0/go.mod h1:Zy1iXRYNqNLUolqCpL4uhk6SHUMAOSCzdgBfDb35Lz0= github.com/NYTimes/gziphandler v0.0.0-20170623195520-56545f4a5d46/go.mod h1:3wb06e3pkSAbeQ52E9H9iFoQsEEwGN64994WTCIhntQ= +github.com/PaesslerAG/gval v1.2.2/go.mod h1:XRFLwvmkTEdYziLdaCeCa5ImcGVrfQbeNUbVR+C6xac= +github.com/PaesslerAG/gval v1.2.4 h1:rhX7MpjJlcxYwL2eTTYIOBUyEKZ+A96T9vQySWkVUiU= +github.com/PaesslerAG/gval v1.2.4/go.mod h1:XRFLwvmkTEdYziLdaCeCa5ImcGVrfQbeNUbVR+C6xac= +github.com/PaesslerAG/jsonpath v0.1.0/go.mod h1:4BzmtoM/PI8fPO4aQGIusjGxGir2BzcV0grWtFzq1Y8= +github.com/PaesslerAG/jsonpath v0.1.2-0.20240726212847-3a740cf7976f h1:TxDCeKRCgHea2hUiMOjWwqzWmrIGqSOZYkEPuClXzDo= +github.com/PaesslerAG/jsonpath v0.1.2-0.20240726212847-3a740cf7976f/go.mod h1:zTyVtYhYjcHpfCtqnCMxejgp0pEEwb/xJzhn05NrkJk= github.com/PuerkitoBio/purell v1.0.0/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= github.com/PuerkitoBio/purell v1.1.1/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= github.com/PuerkitoBio/urlesc v0.0.0-20160726150825-5bd2802263f2/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE= github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE= +github.com/VictoriaMetrics/VictoriaLogs v1.36.2-0.20251008164716-21c0fb3de84d h1:fV15mhBCGpCCBbuOAbOflO8Air+tLklMt8bG35FimzQ= +github.com/VictoriaMetrics/VictoriaLogs v1.36.2-0.20251008164716-21c0fb3de84d/go.mod h1:JKZK8LZ9O38pW3+CbBSqL64nswBg6nJ0GE788b0Ps/8= +github.com/VictoriaMetrics/VictoriaMetrics v1.131.0 h1:OHO0EnZ8zEm0cOtxzMFiQWJV6sn0+gnd0WbdBy00eUE= +github.com/VictoriaMetrics/VictoriaMetrics v1.131.0/go.mod h1:p/uiDZSYawWaSgIbZrcbuzjNObxcrZ/u42zYSv40kCY= +github.com/VictoriaMetrics/easyproto v0.1.4 h1:r8cNvo8o6sR4QShBXQd1bKw/VVLSQma/V2KhTBPf+Sc= +github.com/VictoriaMetrics/easyproto v0.1.4/go.mod h1:QlGlzaJnDfFd8Lk6Ci/fuLxfTo3/GThPs2KH23mv710= +github.com/VictoriaMetrics/metrics v1.40.2 h1:OVSjKcQEx6JAwGeu8/KQm9Su5qJ72TMEW4xYn5vw3Ac= +github.com/VictoriaMetrics/metrics v1.40.2/go.mod h1:XE4uudAAIRaJE614Tl5HMrtoEU6+GDZO4QTnNSsZRuA= +github.com/VictoriaMetrics/metricsql v0.84.8 h1:5JXrvPJiYkYNqJVT7+hMZmpAwRHd3txBdlVIw4rJ1VM= +github.com/VictoriaMetrics/metricsql v0.84.8/go.mod h1:d4EisFO6ONP/HIGDYTAtwrejJBBeKGQYiRl095bS4QQ= +github.com/VictoriaMetrics/operator/api v0.66.1 h1:VY8ijXLN50q6BmfLqqhI1CdwuNvhBMVIp0m/Z5SWv78= +github.com/VictoriaMetrics/operator/api v0.66.1/go.mod h1:p9TBiBsCOqyIWuHeBtQaWdZ8IbqH7lI/9Jdru3F621M= github.com/ahmetb/gen-crd-api-reference-docs v0.3.0 h1:+XfOU14S4bGuwyvCijJwhhBIjYN+YXS18jrCY2EzJaY= github.com/ahmetb/gen-crd-api-reference-docs v0.3.0/go.mod h1:TdjdkYhlOifCQWPs1UdTma97kQQMozf5h26hTuG70u8= -github.com/andybalholm/brotli v1.1.1 h1:PR2pgnyFznKEugtsUo0xLdDop5SKXd5Qf5ysW+7XdTA= -github.com/andybalholm/brotli v1.1.1/go.mod h1:05ib4cKhjx3OQYUY22hTVd34Bc8upXjOLL2rKwwZBoA= +github.com/andybalholm/brotli v1.2.2 h1:HzTuoo2ErYQqf5qvcJInB8uvqSVxRttzkFexPWtnceM= +github.com/andybalholm/brotli v1.2.2/go.mod h1:rzTDkvFWvIrjDXZHkuS16NPggd91W3kUSvPlQ1pLaKY= +github.com/antlr4-go/antlr/v4 v4.13.1 h1:SqQKkuVZ+zWkMMNkjy5FZe5mr5WURWnlpmOuzYWrPrQ= +github.com/antlr4-go/antlr/v4 v4.13.1/go.mod h1:GKmUxMtwp6ZgGwZSva4eWPC5mS6vUAmOABFgjdkM7Nw= github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 h1:0CwZNZbxp69SHPdPJAN/hZIm0C4OItdklCFmMRWYpio= github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs= +github.com/aws/aws-sdk-go-v2 v1.41.7 h1:DWpAJt66FmnnaRIOT/8ASTucrvuDPZASqhhLey6tLY8= +github.com/aws/aws-sdk-go-v2 v1.41.7/go.mod h1:4LAfZOPHNVNQEckOACQx60Y8pSRjIkNZQz1w92xpMJc= +github.com/aws/aws-sdk-go-v2/config v1.32.17 h1:FpL4/758/diKwqbytU0prpuiu60fgXKUWCpDJtApclU= +github.com/aws/aws-sdk-go-v2/config v1.32.17/go.mod h1:OXqUMzgXytfoF9JaKkhrOYsyh72t9G+MJH8mMRaexOE= +github.com/aws/aws-sdk-go-v2/credentials v1.19.16 h1:r3RJBuU7X9ibt8RHbMjWE6y60QbKBiII6wSrXnapxSU= +github.com/aws/aws-sdk-go-v2/credentials v1.19.16/go.mod h1:6cx7zqDENJDbBIIWX6P8s0h6hqHC8Avbjh9Dseo27ug= +github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.23 h1:UuSfcORqNSz/ey3VPRS8TcVH2Ikf0/sC+Hdj400QI6U= +github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.23/go.mod h1:+G/OSGiOFnSOkYloKj/9M35s74LgVAdJBSD5lsFfqKg= +github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.23 h1:GpT/TrnBYuE5gan2cZbTtvP+JlHsutdmlV2YfEyNde0= +github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.23/go.mod h1:xYWD6BS9ywC5bS3sz9Xh04whO/hzK2plt2Zkyrp4JuA= +github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.23 h1:bpd8vxhlQi2r1hiueOw02f/duEPTMK59Q4QMAoTTtTo= +github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.23/go.mod h1:15DfR2nw+CRHIk0tqNyifu3G1YdAOy68RftkhMDDwYk= +github.com/aws/aws-sdk-go-v2/internal/v4a v1.4.24 h1:OQqn11BtaYv1WLUowvcA30MpzIu8Ti4pcLPIIyoKZrA= +github.com/aws/aws-sdk-go-v2/internal/v4a v1.4.24/go.mod h1:X5ZJyfwVrWA96GzPmUCWFQaEARPR7gCrpq2E92PJwAE= +github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.9 h1:FLudkZLt5ci0ozzgkVo8BJGwvqNaZbTWb3UcucAateA= +github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.9/go.mod h1:w7wZ/s9qK7c8g4al+UyoF1Sp/Z45UwMGcqIzLWVQHWk= +github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.23 h1:pbrxO/kuIwgEsOPLkaHu0O+m4fNgLU8B3vxQ+72jTPw= +github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.23/go.mod h1:/CMNUqoj46HpS3MNRDEDIwcgEnrtZlKRaHNaHxIFpNA= +github.com/aws/aws-sdk-go-v2/service/signin v1.0.11 h1:TdJ+HdzOBhU8+iVAOGUTU63VXopcumCOF1paFulHWZc= +github.com/aws/aws-sdk-go-v2/service/signin v1.0.11/go.mod h1:R82ZRExE/nheo0N+T8zHPcLRTcH8MGsnR3BiVGX0TwI= +github.com/aws/aws-sdk-go-v2/service/sso v1.30.17 h1:7byT8HUWrgoRp6sXjxtZwgOKfhss5fW6SkLBtqzgRoE= +github.com/aws/aws-sdk-go-v2/service/sso v1.30.17/go.mod h1:xNWknVi4Ezm1vg1QsB/5EWpAJURq22uqd38U8qKvOJc= +github.com/aws/aws-sdk-go-v2/service/ssooidc v1.35.21 h1:+1Kl1zx6bWi4X7cKi3VYh29h8BvsCoHQEQ6ST9X8w7w= +github.com/aws/aws-sdk-go-v2/service/ssooidc v1.35.21/go.mod h1:4vIRDq+CJB2xFAXZ+YgGUTiEft7oAQlhIs71xcSeuVg= +github.com/aws/aws-sdk-go-v2/service/sts v1.42.1 h1:F/M5Y9I3nwr2IEpshZgh1GeHpOItExNM9L1euNuh/fk= +github.com/aws/aws-sdk-go-v2/service/sts v1.42.1/go.mod h1:mTNxImtovCOEEuD65mKW7DCsL+2gjEH+RPEAexAzAio= +github.com/aws/smithy-go v1.25.1 h1:J8ERsGSU7d+aCmdQur5Txg6bVoYelvQJgtZehD12GkI= +github.com/aws/smithy-go v1.25.1/go.mod h1:YE2RhdIuDbA5E5bTdciG9KrW3+TiEONeUWCqxX9i1Fc= github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= 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/bmatcuk/doublestar/v4 v4.10.0 h1:zU9WiOla1YA122oLM6i4EXvGW62DvKZVxIe6TYWexEs= +github.com/bmatcuk/doublestar/v4 v4.10.0/go.mod h1:xBQ8jztBU6kakFMg+8WGxn0c6z1fTSPVIjEY1Wr7jzc= +github.com/brunoga/deep v1.3.1 h1:bSrL6FhAZa6JlVv4vsi7Hg8SLwroDb1kgDERRVipBCo= +github.com/brunoga/deep v1.3.1/go.mod h1:GDV6dnXqn80ezsLSZ5Wlv1PdKAWAO4L5PnKYtv2dgaI= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs= github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= @@ -59,17 +115,20 @@ github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDk github.com/coreos/go-systemd/v22 v22.7.0 h1:LAEzFkke61DFROc7zNLX/WA2i5J8gYqe0rSj9KI28KA= github.com/coreos/go-systemd/v22 v22.7.0/go.mod h1:xNUYtjHu2EDXbsxz1i41wouACIwT7Ybq9o0BQhMwD0w= github.com/cpuguy83/go-md2man/v2 v2.0.6/go.mod h1:oOW0eioCTA6cOiMLiUPZOpcVxMig6NIQQ7OS05n1F4g= -github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= -github.com/cyphar/filepath-securejoin v0.3.1 h1:1V7cHiaW+C+39wEfpH6XlLBQo3j/PciWFrgfCLS8XrE= -github.com/cyphar/filepath-securejoin v0.3.1/go.mod h1:F7i41x/9cBF7lzCrVsYs9fuzwRZm4NQsGTBdpp6mETc= +github.com/cyphar/filepath-securejoin v0.6.1 h1:5CeZ1jPXEiYt3+Z6zqprSAgSWiggmpVyciv8syjIpVE= +github.com/cyphar/filepath-securejoin v0.6.1/go.mod h1:A8hd4EnAeyujCJRrICiOWqjS1AX0a9kM5XL+NwKoYSc= 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= github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM= github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= +github.com/dlclark/regexp2 v1.12.0 h1:0j4c5qQmnC6XOWNjP3PIXURXN2gWx76rd3KvgdPkCz8= +github.com/dlclark/regexp2 v1.12.0/go.mod h1:DHkYz0B9wPfa6wondMfaivmHpzrQ3v9q8cnmRbL6yW8= github.com/docker/spdystream v0.0.0-20160310174837-449fdfce4d96/go.mod h1:Qh8CwZgvJUkLughtfhJv5dyTYa91l1fOUCrgjqmcifM= github.com/docopt/docopt-go v0.0.0-20180111231733-ee0de3bc6815/go.mod h1:WwZ+bS3ebgob9U8Nd0kOddGdZWjyMGR8Wziv+TBNwSE= github.com/elazarl/goproxy v0.0.0-20180725130230-947c36da3153/go.mod h1:/Zj4wYkgs4iZTTu3o/KG3Itv/qCCa8VVMlb3i9OVuzc= +github.com/elliotchance/orderedmap/v3 v3.1.0 h1:j4DJ5ObEmMBt/lcwIecKcoRxIQUEnw0L804lXYDt/pg= +github.com/elliotchance/orderedmap/v3 v3.1.0/go.mod h1:G+Hc2RwaZvJMcS4JpGCOyViCnGeKf0bTYCGTO4uhjSo= github.com/emicklei/go-restful v0.0.0-20170410110728-ff4f55a20633/go.mod h1:otzb+WCGbkyDHkqmQmT5YD2WR4BBwUdeQoFo8l/7tVs= github.com/emicklei/go-restful v2.9.5+incompatible/go.mod h1:otzb+WCGbkyDHkqmQmT5YD2WR4BBwUdeQoFo8l/7tVs= github.com/emicklei/go-restful/v3 v3.13.0 h1:C4Bl2xDndpU6nJ4bc1jXd+uTmYPVUwkD6bFY/oTyCes= @@ -77,32 +136,36 @@ github.com/emicklei/go-restful/v3 v3.13.0/go.mod h1:6n3XBCmQQb25CM2LCACGz8ukIrRr github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= github.com/evanphx/json-patch v4.9.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= -github.com/evanphx/json-patch v5.9.0+incompatible h1:fBXyNpNMuTTDdquAq/uisOr2lShz4oaXpDTX2bLe7ls= -github.com/evanphx/json-patch v5.9.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= +github.com/evanphx/json-patch v5.9.11+incompatible h1:ixHHqfcGvxhWkniF1tWxBHA0yb4Z+d1UQi45df52xW8= +github.com/evanphx/json-patch v5.9.11+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= github.com/evanphx/json-patch/v5 v5.9.11 h1:/8HVnzMq13/3x9TPvjG08wUGqBTmZBsCWzjTM0wiaDU= github.com/evanphx/json-patch/v5 v5.9.11/go.mod h1:3j+LviiESTElxA4p3EMKAB9HXj3/XEtnUf6OZxqIQTM= -github.com/fatih/color v1.17.0 h1:GlRw1BRJxkpqUCBKzKOw098ed57fEsKeNjpTe3cSjK4= -github.com/fatih/color v1.17.0/go.mod h1:YZ7TlrGPkiz6ku9fK3TLD/pl3CpsiFyu8N92HLgmosI= -github.com/fluent/fluent-operator/v2 v2.9.0 h1:VFGgRPOI+yxnOrTIAL6sgFCtc+quDda12iyVL1lRQag= -github.com/fluent/fluent-operator/v2 v2.9.0/go.mod h1:Hthhi/3oO26udvro6t5foUx20PZAMn7WGUhSnEWUV9U= +github.com/fatih/color v1.19.0 h1:Zp3PiM21/9Ld6FzSKyL5c/BULoe/ONr9KlbYVOfG8+w= +github.com/fatih/color v1.19.0/go.mod h1:zNk67I0ZUT1bEGsSGyCZYZNrHuTkJJB+r6Q9VuMi0LE= +github.com/fluent/fluent-operator/v3 v3.7.0 h1:eBjHm9CoKtjNBqQmV3ttqlQfLOKGugATJ9MiK1lyiZo= +github.com/fluent/fluent-operator/v3 v3.7.0/go.mod h1:gXzrUINbapW1YRVYm3m8z8pxs34kltOeC4H9RT3XPng= github.com/frankban/quicktest v1.14.6 h1:7Xjx+VpznH+oBnejlPUj8oUpdxnVs4f8XU8WnHkI4W8= github.com/frankban/quicktest v1.14.6/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= -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.0 h1:NpKPmjDBgUfBms6tr6JZkTHtfFGcMKsw3eGcmD/sapM= -github.com/fxamacker/cbor/v2 v2.9.0/go.mod h1:vM4b+DJCtHn+zz7h3FFp/hDAI9WNWCsZj23V5ytsSxQ= -github.com/gardener/cert-management v0.15.0 h1:ohm1eWae2rQSkwFGWXTt+lBv4rLBhtJsJgqvaXJBs6o= -github.com/gardener/cert-management v0.15.0/go.mod h1:3BK2VEtGwv2ijf3bSziTLMCUvYnPzIQrQ/uPeZzL4m0= -github.com/gardener/etcd-druid v0.25.0 h1:mR9/x5r27pO+I+XzpNcN2DDenam+7ITrhc7qKt9rbsI= -github.com/gardener/etcd-druid v0.25.0/go.mod h1:6C0eyfdlw6CowLm/l4ZiKwrvkc+5NHrnc/rY2wCUwys= -github.com/gardener/gardener v1.106.1 h1:nbWHqV/rV5Q/7nfuMD5mudWmRnBYZfaJC3O0QaVqwYI= -github.com/gardener/gardener v1.106.1/go.mod h1:l5TUgzs/Gv8SbuUFW/hCnfID6oo1/DRrGXx/IbjwQi8= -github.com/gardener/hvpa-controller/api v0.17.0 h1:1mNeP+xsnjPH6GhewugU5srslXiTCJgYIFCMuRXwI7w= -github.com/gardener/hvpa-controller/api v0.17.0/go.mod h1:eKrL7j6/YX8PaoP80xxi3+UFmQgHVf/QCPsGwNnmDeE= -github.com/gardener/machine-controller-manager v0.56.1 h1:8L+69IArB0+r+ma+CJe/6SE7NMDs2GU9095RGSzwydk= -github.com/gardener/machine-controller-manager v0.56.1/go.mod h1:eCng7De6OE15rndmMm6Q1fwMQI39esASCd3WKZ/lLmY= +github.com/fsnotify/fsnotify v1.10.1 h1:b0/UzAf9yR5rhf3RPm9gf3ehBPpf0oZKIjtpKrx59Ho= +github.com/fsnotify/fsnotify v1.10.1/go.mod h1:TLheqan6HD6GBK6PrDWyDPBaEV8LspOxvPSjC+bVfgo= +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/gardener/cert-management v0.23.0 h1:kD88XcPn6C4zLc8EYtrHyb+/45Iyaozhb+HEM44MKz0= +github.com/gardener/cert-management v0.23.0/go.mod h1:Mehn8XY+iAkm8XOBbNGHmbMft8fP9ZEJFWzWSonPkfc= +github.com/gardener/etcd-druid v0.27.0 h1:vqcusx1O3G01BU3CHke6nZEYvDfiFqgCGS59mQCK0LM= +github.com/gardener/etcd-druid v0.27.0/go.mod h1:SKjfV8bvdLGF1ynFbWF4ioK2a6M33g7N6lct45p50J8= +github.com/gardener/etcd-druid/api v0.36.4 h1:o/17ciPrbh/w+igKMUuglW7N9XLjoMh7AvRKTzsBEVs= +github.com/gardener/etcd-druid/api v0.36.4/go.mod h1:RwZzKp8K415AS0zg8VoODjBxYepCAUYyLgXnZc1bmbo= +github.com/gardener/gardener v1.146.4 h1:pBmvMWnHSG/QkgO2YUHNOnbbXCblz5kA8CL2TqA3QqA= +github.com/gardener/gardener v1.146.4/go.mod h1:BL4tsbuXJkgPlotTOFcU0BKQHAf21l6z/OQo7A3grTU= +github.com/gardener/gardener/hack/tools v1.146.4 h1:Q3bG6wXNytZUKiTz82QzC3JrCOERkdS1TeV5wo547dg= +github.com/gardener/gardener/hack/tools v1.146.4/go.mod h1:AYY/L1q1uzpKUYUN+KWHj4Ke6OUxcc6k9RyRkUVFYFc= +github.com/gardener/gardener/pkg/apis v1.146.4 h1:alI5e1O6PevtuheozEYXCNDG8m2YELGG9KPIC14+tRU= +github.com/gardener/gardener/pkg/apis v1.146.4/go.mod h1:S6v1kxYVnqIYsGE2P3emsTUs27bduXEHRYpLx4Zpd9I= +github.com/gardener/machine-controller-manager v0.62.1 h1:TQ4Qs9aaYTqSkqFownIaEAvnrYoNpBMcp7ZMYVEgUWM= +github.com/gardener/machine-controller-manager v0.62.1/go.mod h1:ICsymXK4VHm7NVr8Mpl6USvYcTZjUNSk6+XaVu/dd74= github.com/ghodss/yaml v0.0.0-20150909031657-73d445a93680/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= github.com/gkampitakis/ciinfo v0.3.2 h1:JcuOPk8ZU7nZQjdUhctuhQofk7BGHuIy0c9Ez8BNhXs= github.com/gkampitakis/ciinfo v0.3.2/go.mod h1:1NIwaOcFChN4fa/B0hEBdAb6npDlFL8Bwx4dfRLRqAo= @@ -111,78 +174,76 @@ github.com/gkampitakis/go-diff v1.3.2/go.mod h1:LLgOrpqleQe26cte8s36HTWcTmMEur6O github.com/gkampitakis/go-snaps v0.5.15 h1:amyJrvM1D33cPHwVrjo9jQxX8g/7E2wYdZ+01KS3zGE= github.com/gkampitakis/go-snaps v0.5.15/go.mod h1:HNpx/9GoKisdhw9AFOBT1N7DBs9DiHo/hGheFGBZ+mc= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= +github.com/go-jose/go-jose/v4 v4.1.4 h1:moDMcTHmvE6Groj34emNPLs/qtYXRVcd6S7NHbHz3kA= +github.com/go-jose/go-jose/v4 v4.1.4/go.mod h1:x4oUasVrzR7071A4TnHLGSPpNOm2a21K9Kf04k1rs08= github.com/go-logr/logr v0.1.0/go.mod h1:ixOQHD9gLJUVQQ2ZOR7zLEifBX6tGkNJF4QyIY7sIas= github.com/go-logr/logr v0.2.0/go.mod h1:z6/tIYblkpsD+a4lm/fGIIU9mZ+XfAiaFtq7xTgseGU= 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/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/errors v0.20.4 h1:unTcVm6PispJsMECE3zWgvG4xTiKda1LIR5rCRWLG6M= -github.com/go-openapi/errors v0.20.4/go.mod h1:Z3FlZ4I8jEGxjUK+bugx3on2mIAk4txuAOhlsB1FSgk= +github.com/go-openapi/errors v0.22.7 h1:JLFBGC0Apwdzw3484MmBqspjPbwa2SHvpDm0u5aGhUA= +github.com/go-openapi/errors v0.22.7/go.mod h1://QW6SD9OsWtH6gHllUCddOXDL0tk0ZGNYHwsw4sW3w= github.com/go-openapi/jsonpointer v0.0.0-20160704185906-46af16f9f7b1/go.mod h1:+35s3my2LFTysnkMfxsJBAMHj/DoqoB9knIWoYG/Vk0= github.com/go-openapi/jsonpointer v0.19.2/go.mod h1:3akKfEdA7DF1sugOqz1dVQHBcuDBPKZGEoHC/NkiQRg= github.com/go-openapi/jsonpointer v0.19.3/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg= -github.com/go-openapi/jsonpointer v0.22.4 h1:dZtK82WlNpVLDW2jlA1YCiVJFVqkED1MegOUy9kR5T4= -github.com/go-openapi/jsonpointer v0.22.4/go.mod h1:elX9+UgznpFhgBuaMQ7iu4lvvX1nvNsesQ3oxmYTw80= +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.0.0-20160704190145-13c6e3589ad9/go.mod h1:W3Z9FmVs9qj+KR4zFKmDPGiLdk1D9Rlm7cyMvf57TTg= github.com/go-openapi/jsonreference v0.19.2/go.mod h1:jMjeRr2HHw6nAVajTXJ4eiUwohSTlpa0o73RUL1owJc= github.com/go-openapi/jsonreference v0.19.3/go.mod h1:rjx6GuL8TTa9VaixXglHmQmIL98+wF9xc8zWvFonSJ8= -github.com/go-openapi/jsonreference v0.21.4 h1:24qaE2y9bx/q3uRK/qN+TDwbok1NhbSmGjjySRCHtC8= -github.com/go-openapi/jsonreference v0.21.4/go.mod h1:rIENPTjDbLpzQmQWCj5kKj3ZlmEh+EFVbz3RTUh30/4= +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/spec v0.0.0-20160808142527-6aced65f8501/go.mod h1:J8+jY1nAiCcj+friV/PDoE1/3eeccG9LYBs0tYvLOWc= github.com/go-openapi/spec v0.19.3/go.mod h1:FpwSN1ksY1eteniUU7X0N/BgJ7a4WvBFVA8Lj9mJglo= github.com/go-openapi/swag v0.0.0-20160704191624-1d0bd113de87/go.mod h1:DXUve3Dpr1UfpPtxFw+EFuQ41HhCWZfha5jSVRG7C7I= github.com/go-openapi/swag v0.19.2/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk= github.com/go-openapi/swag v0.19.5/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk= -github.com/go-openapi/swag v0.25.4 h1:OyUPUFYDPDBMkqyxOTkqDYFnrhuhi9NR6QVUvIochMU= -github.com/go-openapi/swag v0.25.4/go.mod h1:zNfJ9WZABGHCFg2RnY0S4IOkAcVTzJ6z2Bi+Q4i6qFQ= -github.com/go-openapi/swag/cmdutils v0.25.4 h1:8rYhB5n6WawR192/BfUu2iVlxqVR9aRgGJP6WaBoW+4= -github.com/go-openapi/swag/cmdutils v0.25.4/go.mod h1:pdae/AFo6WxLl5L0rq87eRzVPm/XRHM3MoYgRMvG4A0= -github.com/go-openapi/swag/conv v0.25.4 h1:/Dd7p0LZXczgUcC/Ikm1+YqVzkEeCc9LnOWjfkpkfe4= -github.com/go-openapi/swag/conv v0.25.4/go.mod h1:3LXfie/lwoAv0NHoEuY1hjoFAYkvlqI/Bn5EQDD3PPU= -github.com/go-openapi/swag/fileutils v0.25.4 h1:2oI0XNW5y6UWZTC7vAxC8hmsK/tOkWXHJQH4lKjqw+Y= -github.com/go-openapi/swag/fileutils v0.25.4/go.mod h1:cdOT/PKbwcysVQ9Tpr0q20lQKH7MGhOEb6EwmHOirUk= -github.com/go-openapi/swag/jsonname v0.25.4 h1:bZH0+MsS03MbnwBXYhuTttMOqk+5KcQ9869Vye1bNHI= -github.com/go-openapi/swag/jsonname v0.25.4/go.mod h1:GPVEk9CWVhNvWhZgrnvRA6utbAltopbKwDu8mXNUMag= -github.com/go-openapi/swag/jsonutils v0.25.4 h1:VSchfbGhD4UTf4vCdR2F4TLBdLwHyUDTd1/q4i+jGZA= -github.com/go-openapi/swag/jsonutils v0.25.4/go.mod h1:7OYGXpvVFPn4PpaSdPHJBtF0iGnbEaTk8AvBkoWnaAY= -github.com/go-openapi/swag/jsonutils/fixtures_test v0.25.4 h1:IACsSvBhiNJwlDix7wq39SS2Fh7lUOCJRmx/4SN4sVo= -github.com/go-openapi/swag/jsonutils/fixtures_test v0.25.4/go.mod h1:Mt0Ost9l3cUzVv4OEZG+WSeoHwjWLnarzMePNDAOBiM= -github.com/go-openapi/swag/loading v0.25.4 h1:jN4MvLj0X6yhCDduRsxDDw1aHe+ZWoLjW+9ZQWIKn2s= -github.com/go-openapi/swag/loading v0.25.4/go.mod h1:rpUM1ZiyEP9+mNLIQUdMiD7dCETXvkkC30z53i+ftTE= -github.com/go-openapi/swag/mangling v0.25.4 h1:2b9kBJk9JvPgxr36V23FxJLdwBrpijI26Bx5JH4Hp48= -github.com/go-openapi/swag/mangling v0.25.4/go.mod h1:6dxwu6QyORHpIIApsdZgb6wBk/DPU15MdyYj/ikn0Hg= -github.com/go-openapi/swag/netutils v0.25.4 h1:Gqe6K71bGRb3ZQLusdI8p/y1KLgV4M/k+/HzVSqT8H0= -github.com/go-openapi/swag/netutils v0.25.4/go.mod h1:m2W8dtdaoX7oj9rEttLyTeEFFEBvnAx9qHd5nJEBzYg= -github.com/go-openapi/swag/stringutils v0.25.4 h1:O6dU1Rd8bej4HPA3/CLPciNBBDwZj9HiEpdVsb8B5A8= -github.com/go-openapi/swag/stringutils v0.25.4/go.mod h1:GTsRvhJW5xM5gkgiFe0fV3PUlFm0dr8vki6/VSRaZK0= -github.com/go-openapi/swag/typeutils v0.25.4 h1:1/fbZOUN472NTc39zpa+YGHn3jzHWhv42wAJSN91wRw= -github.com/go-openapi/swag/typeutils v0.25.4/go.mod h1:Ou7g//Wx8tTLS9vG0UmzfCsjZjKhpjxayRKTHXf2pTE= -github.com/go-openapi/swag/yamlutils v0.25.4 h1:6jdaeSItEUb7ioS9lFoCZ65Cne1/RZtPBZ9A56h92Sw= -github.com/go-openapi/swag/yamlutils v0.25.4/go.mod h1:MNzq1ulQu+yd8Kl7wPOut/YHAAU/H6hL91fF+E2RFwc= -github.com/go-openapi/testify/enable/yaml/v2 v2.0.2 h1:0+Y41Pz1NkbTHz8NngxTuAXxEodtNSI1WG1c/m5Akw4= -github.com/go-openapi/testify/enable/yaml/v2 v2.0.2/go.mod h1:kme83333GCtJQHXQ8UKX3IBZu6z8T5Dvy5+CW3NLUUg= -github.com/go-openapi/testify/v2 v2.0.2 h1:X999g3jeLcoY8qctY/c/Z8iBHTbwLz7R2WXd6Ub6wls= -github.com/go-openapi/testify/v2 v2.0.2/go.mod h1:HCPmvFFnheKK2BuwSA0TbbdxJ3I16pjwMkYkP4Ywn54= +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.5.0 h1:3hZD1fwydvCx/cc1R2uYNQirHqf2s6lqpKV3FcNTURA= +github.com/go-openapi/testify/enable/yaml/v2 v2.5.0/go.mod h1:TvDZKBH7ZbMaF3EqH2AwTvNQCmzyZq8K1agRjf1B+Nk= +github.com/go-openapi/testify/v2 v2.5.0 h1:UOCr63aAsMIDydZbZGqo5Ev01D4eydItRbekDuZMJLw= +github.com/go-openapi/testify/v2 v2.5.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/gobuffalo/flect v1.0.3 h1:xeWBM2nui+qnVvNM4S3foBhCAL2XgPU+a7FdpelbTq4= -github.com/gobuffalo/flect v1.0.3/go.mod h1:A5msMlrHtLqh9umBSnvabjsMrCcCpAyzglnDvkbYKHs= github.com/gobwas/glob v0.2.3 h1:A4xDbljILXROh+kObIiy5kIaPYD8e96x1tgBhUI5J+Y= github.com/gobwas/glob v0.2.3/go.mod h1:d3Ez4x06l9bZtSvzIay5+Yzi0fmZzPgnTbPcKjJAkT8= -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/goccy/go-yaml v1.19.2 h1:PmFC1S6h8ljIz6gMRBopkjP1TVT7xuwrButHID66PoM= +github.com/goccy/go-yaml v1.19.2/go.mod h1:XBurs7gK8ATbW4ZPGKgcbrY1Br56PdM69F7LkFRi1kA= github.com/gogo/protobuf v1.3.1/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= -github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= -github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= +github.com/golang-jwt/jwt/v5 v5.3.1 h1:kYf81DTWFe7t+1VvL7eS+jKFVWaUnK9cB1qbwn63YCY= +github.com/golang-jwt/jwt/v5 v5.3.1/go.mod h1:fxCRLWMO43lRc8nhHWY6LGqRcf+1gQWArsqaEUEa5bE= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y= -github.com/golang/mock v1.6.0 h1:ErTB+efbowRARo13NNdxyJji2egdxLGQhRaY+DUumQc= -github.com/golang/mock v1.6.0/go.mod h1:p6yTPP+5HYm5mzsMV8JkE6ZKdX+/wYM6Hr+LicevLPs= github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= @@ -196,16 +257,21 @@ github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QD github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= +github.com/golang/snappy v1.0.0 h1:Oy607GVXHs7RtbggtPBnr2RmDArIsAefDwvrdWvRhGs= +github.com/golang/snappy v1.0.0/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/btree v1.1.3 h1:CVpQJjYgC4VbzxeGVHfvZrv1ctoYCAI8vbl07Fcxlyg= github.com/google/btree v1.1.3/go.mod h1:qOPhT0dTNdNzV6Z/lhRX0YXUafgPLFUh+gZMl761Gm4= +github.com/google/cel-go v0.27.0 h1:e7ih85+4qVrBuqQWTW4FKSqZYokVuc3HnhH5keboFTo= +github.com/google/cel-go v0.27.0/go.mod h1:tTJ11FWqnhw5KKpnWpvW9CJC3Y9GK4EIS0WXnBbebzw= 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.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= @@ -235,8 +301,8 @@ github.com/hashicorp/go-multierror v1.1.1 h1:H5DkEtf6CXdFp0N0Em5UCwQpXMWke8IA0+l github.com/hashicorp/go-multierror v1.1.1/go.mod h1:iw975J/qwKPdAO1clOe2L8331t/9/fmwbPZ6JB6eMoM= github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= -github.com/hetznercloud/hcloud-go/v2 v2.43.0 h1:soqEUxJJqbf8UICQmDXfUwY/khfROAk0fi1s0bnBtd8= -github.com/hetznercloud/hcloud-go/v2 v2.43.0/go.mod h1:d0s2WLe7jSoStamv3eHoWgBSOxc/K17tYSXsqUkbse0= +github.com/hetznercloud/hcloud-go/v2 v2.44.0 h1:1p9qwaZ/H55nLP9c7WfuwUA0LfsexS2YHOhD8+iBga8= +github.com/hetznercloud/hcloud-go/v2 v2.44.0/go.mod h1:d0s2WLe7jSoStamv3eHoWgBSOxc/K17tYSXsqUkbse0= github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= github.com/huandu/xstrings v1.5.0 h1:2ag3IFq9ZDANvthTwTiqSSZLjDc+BedvHPAp5tJy2TI= github.com/huandu/xstrings v1.5.0/go.mod h1:y5/lhBue+AyNmUVz9RLU9xbLR0o4KIIExikq4ovT0aE= @@ -244,21 +310,20 @@ github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1: github.com/imdario/mergo v0.3.5/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= -github.com/ironcore-dev/vgopath v0.1.5 h1:+I46zEFfbmNIGIGylqedT2bMXw8V7yVP16GJkG64gAw= -github.com/ironcore-dev/vgopath v0.1.5/go.mod h1:qbSUA7Eg0SO97OYfkG0DH+DxaPrH6XCiAQHqqs9R63Q= 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/jpillora/backoff v1.0.0 h1:uvFg412JmmHBHw7iwprIxkPMI+sGQ4kzOWsMeHnm2EA= +github.com/jpillora/backoff v1.0.0/go.mod h1:J/6gKK9jxlEcS3zixgDgUAsiuZ7yrSoa/FX5e0EB2j4= github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= github.com/json-iterator/go v1.1.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= -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/json-iterator/go v1.1.13-0.20220915233716-71ac16282d12 h1:9Nu54bhS/H/Kgo2/7xNSUuC5G28VR8ljfrLKU2G4IjU= +github.com/json-iterator/go v1.1.13-0.20220915233716-71ac16282d12/go.mod h1:TBzl5BIHNXfS9+C35ZyJaklL7mLDbgUkcgXzSLa8Tk0= github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk= github.com/kisielk/errcheck v1.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQLJ+jE2L00= -github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= -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.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= github.com/kr/pretty v0.2.0/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= @@ -272,17 +337,20 @@ github.com/kubernetes-csi/external-snapshotter/client/v4 v4.2.0 h1:nHHjmvjitIiyP github.com/kubernetes-csi/external-snapshotter/client/v4 v4.2.0/go.mod h1:YBCo4DoEeDndqvAn6eeu0vWM7QdXmHEeI9cFWplmBys= 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/labstack/echo/v4 v4.15.1 h1:S9keusg26gZpjMmPqB5hOEvNKnmd1lNmcHrbbH2lnFs= +github.com/labstack/echo/v4 v4.15.1/go.mod h1:xmw1clThob0BSVRX1CRQkGQ/vjwcpOMjQZSZa9fKA/c= +github.com/labstack/gommon v0.4.2 h1:F8qTUNXgG1+6WQmqoUWnz8WiEU60mXVVw0P4ht1WRA0= +github.com/labstack/gommon v0.4.2/go.mod h1:QlUFxVM+SNXhDL/Z7YhocGIBYOiwB0mXm1+1bAPHPyU= github.com/mailru/easyjson v0.0.0-20160728113105-d5b7844b561a/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= github.com/mailru/easyjson v0.0.0-20190614124828-94de47d64c63/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= github.com/mailru/easyjson v0.0.0-20190626092158-b2ccc519800e/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= github.com/mailru/easyjson v0.7.0/go.mod h1:KAzv3t3aY1NaHWoQz1+4F1ccyAH66Jk7yos7ldAVICs= github.com/maruel/natural v1.1.1 h1:Hja7XhhmvEFhcByqDoHz9QZbkWey+COd9xWfCfn1ioo= github.com/maruel/natural v1.1.1/go.mod h1:v+Rfd79xlw1AgVBjbO0BEQmptqb5HvL/k9GRHB7ZKEg= -github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= -github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= -github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= -github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= -github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= +github.com/mattn/go-colorable v0.1.14 h1:9A9LHSqF/7dyVVX6g0U9cwm9pG3kP9gSzcuIPHPsaIE= +github.com/mattn/go-colorable v0.1.14/go.mod h1:6LmQG8QLFO4G5z1gPvYEzlUgJ2wF+stgPZH1UqBm1s8= +github.com/mattn/go-isatty v0.0.22 h1:j8l17JJ9i6VGPUFUYoTUKPSgKe/83EYU2zBC7YNKMw4= +github.com/mattn/go-isatty v0.0.22/go.mod h1:ZXfXG4SQHsB/w3ZeOYbR0PrPwLy+n6xiMrJlRFqopa4= github.com/mfridman/tparse v0.18.0 h1:wh6dzOKaIwkUGyKgOntDW4liXSo37qg5AXbIhkMV3vE= github.com/mfridman/tparse v0.18.0/go.mod h1:gEvqZTuCgEhPbYk/2lS3Kcxg1GmTxxU7kTC8DvP0i/A= github.com/mitchellh/copystructure v1.2.0 h1:vpKXTN4ewci03Vljg/q9QvCGUDttBOGBIa15WveJJGw= @@ -291,8 +359,8 @@ github.com/mitchellh/hashstructure/v2 v2.0.2 h1:vGKWl0YJqUNxE8d+h8f6NJLcCJrgbhC4 github.com/mitchellh/hashstructure/v2 v2.0.2/go.mod h1:MG3aRVU/N29oo/V/IhBX8GR/zz4kQkprJgF2EVszyDE= github.com/mitchellh/reflectwalk v1.0.2 h1:G2LzWKi524PWgd3mLHV8Y5k7s6XUvT0Gef6zxSIeXaQ= github.com/mitchellh/reflectwalk v1.0.2/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw= -github.com/moby/spdystream v0.5.0 h1:7r0J1Si3QO/kjRitvSLVVFUjxMEb/YLj6S9FF62JBCU= -github.com/moby/spdystream v0.5.0/go.mod h1:xBAYlnt/ay+11ShkdFKNAG7LsyK/tmNBVvVOwrfMgdI= +github.com/moby/spdystream v0.5.1 h1:9sNYeYZUcci9R6/w7KDaFWEWeV4LStVG78Mpyq/Zm/Y= +github.com/moby/spdystream v0.5.1/go.mod h1:xBAYlnt/ay+11ShkdFKNAG7LsyK/tmNBVvVOwrfMgdI= github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= @@ -301,25 +369,34 @@ github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3Rllmb github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= github.com/modern-go/reflect2 v1.0.3-0.20250322232337-35a7c28c31ee h1:W5t00kpgFdJifH4BDsTlE89Zl93FEloxaWZfGcifgq8= github.com/modern-go/reflect2 v1.0.3-0.20250322232337-35a7c28c31ee/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= +github.com/muhlemmer/gu v0.3.1 h1:7EAqmFrW7n3hETvuAdmFmn4hS8W+z3LgKtrnow+YzNM= +github.com/muhlemmer/gu v0.3.1/go.mod h1:YHtHR+gxM+bKEIIs7Hmi9sPT3ZDUvTN/i88wQpZkrdM= github.com/munnerz/goautoneg v0.0.0-20120707110453-a547fc61f48d/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= 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/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f h1:KUppIJq7/+SVif2QVs3tOP0zanoHgBEVAwHxUSIzRqU= +github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f h1:y5//uYreIhSUg3J1GEMiLbxo1LJaP8RfCpH6pymGZus= github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f/go.mod h1:ZdcZmHo+o7JKHSa8/e818NopupXU1YMK5fe1lsApnBw= -github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= -github.com/nxadm/tail v1.4.8 h1:nPr65rt6Y5JFSKQO7qToXr7pePgD6Gwiw05lkbyAQTE= -github.com/nxadm/tail v1.4.8/go.mod h1:+ncqLTQzXmGhMZNUePPaPqPvBxHAIsmXswZKocGu+AU= +github.com/nexucis/lamenv v0.5.2 h1:tK/u3XGhCq9qIoVNcXsK9LZb8fKopm0A5weqSRvHd7M= +github.com/nexucis/lamenv v0.5.2/go.mod h1:HusJm6ltmmT7FMG8A750mOLuME6SHCsr2iFYxp5fFi0= github.com/onsi/ginkgo v0.0.0-20170829012221-11459a886d9c/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.11.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= -github.com/onsi/ginkgo v1.16.5 h1:8xi0RTUf59SOSfEtZMvwTvXYMzG4gV23XVHOZiXNtnE= -github.com/onsi/ginkgo v1.16.5/go.mod h1:+E8gABHa3K6zRBolWtd+ROzc/U5bkGt0FwiG042wbpU= -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 v0.0.0-20170829124025-dcabb60a477c/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA= github.com/onsi/gomega v1.7.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= github.com/onsi/gomega v1.42.0 h1:CJby8u36xb7v34W78F8WKvqTQP7PCMIPB78IVDB73l4= github.com/onsi/gomega v1.42.0/go.mod h1:M/Uqpu/8qTjtzCLUA2zJHX9Iilrau25x1PdoSRbWh5A= +github.com/open-telemetry/opentelemetry-operator/apis v0.153.0 h1:ALN6Bo+OU2M/KOT4n/8egYiLNA7M1dC4bOgs2UqC40Q= +github.com/open-telemetry/opentelemetry-operator/apis v0.153.0/go.mod h1:rK5glhBXD9XrMQYfewsF940NPO3LdXdJU2FJJGdBCZ4= +github.com/perses/common v0.30.2 h1:RAiVxUpX76lTCb4X7pfcXSvYdXQmZwKi4oDKAEO//u0= +github.com/perses/common v0.30.2/go.mod h1:DFtur1QPah2/ChXbKKhw7djYdwNgz27s5fPKpiK0Xao= +github.com/perses/perses v0.53.1 h1:9VY/6p9QWrZwPSV7qiwTMSOsgcB37Lb1AXKT0ORXc6I= +github.com/perses/perses v0.53.1/go.mod h1:ro8fsgBkHYOdrL/MV+fdP9mflKzYCy/+gcbxiaReI/A= +github.com/perses/perses-operator v0.4.0 h1:BA5LG7xUCB0Z/FYIrYXcxtsH9/W53cyTn+hXn4xtRFI= +github.com/perses/perses-operator v0.4.0/go.mod h1:6eDQZrm6lpIemcsfrDHOzpOE4yXr5wSXL2G4aGxjP/M= github.com/peterbourgon/diskv v2.0.1+incompatible/go.mod h1:uqqh8zWWbv1HBMNONnaR/tNboyR3/BZd58JJSHlUSCU= github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= @@ -327,31 +404,40 @@ 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.74.0 h1:AHzMWDxNiAVscJL6+4wkvFRTpMnJqiaZFEKA/osaBXE= -github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring v0.74.0/go.mod h1:wAR5JopumPtAZnu0Cjv2PSqV4p4QB09LMhc6fZZTXuA= -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-operator/prometheus-operator/pkg/apis/monitoring v0.91.0 h1:m2SZ2z5edgk0nXx7W6VHLfIsKZwgKbr+E5c2RNYyJB8= +github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring v0.91.0/go.mod h1:Gfzi4500QCMnptFIQc8YdDi8YZ4QA0vs22LROWZ3+YU= +github.com/prometheus/alertmanager v0.29.0 h1:/ET4NmAGx2Dv9kStrXIBqBgHyiSgIk4OetY+hoZRfgc= +github.com/prometheus/alertmanager v0.29.0/go.mod h1:SjI2vhrfdWg10UaRUxTz27rgdJVG3HXrhI5WFjCdBgs= +github.com/prometheus/client_golang v1.23.3-0.20260710134234-de192175ccd6 h1:9nZu+DHAEK5WX812CmkMQ5SfF2qLicIR+ZjLidV20T8= +github.com/prometheus/client_golang v1.23.3-0.20260710134234-de192175ccd6/go.mod h1:etwalK4uJm/LysqzK2V9sMeqJL2/rGEjXKesbmG518Q= github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= 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/prometheus/sigv4 v0.3.0 h1:QIG7nTbu0JTnNidGI1Uwl5AGVIChWUACxn2B/BQ1kms= +github.com/prometheus/sigv4 v0.3.0/go.mod h1:fKtFYDus2M43CWKMNtGvFNHGXnAJJEGZbiYCmVp/F8I= github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= 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.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= +github.com/santhosh-tekuri/jsonschema/v6 v6.0.2 h1:KRzFb2m7YtdldCEkzs6KqmJw4nqEVZGK7IN2kJkjTuQ= +github.com/santhosh-tekuri/jsonschema/v6 v6.0.2/go.mod h1:JXeL+ps8p7/KNMjDQk3TCwPpBy0wYklyWTfbkIzdIFU= +github.com/shopspring/decimal v1.3.1/go.mod h1:DKyhrW/HYNuLGql+MJL6WCR6knT2jwCFRcu2hWCYk4o= github.com/shopspring/decimal v1.4.0 h1:bxl37RwXBklmTi0C79JfXCEBD1cqqHt0bbgBAGFp81k= github.com/shopspring/decimal v1.4.0/go.mod h1:gawqmDU56v4yIKSwfBSFip1HdCCXN8/+DMd9qYNcwME= github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= +github.com/sirupsen/logrus v1.9.4 h1:TsZE7l11zFCLZnZ+teH4Umoq5BhEIfIzfRDZ1Uzql2w= +github.com/sirupsen/logrus v1.9.4/go.mod h1:ftWc9WdOfJ0a92nsE2jF5u5ZwH8Bv2zdeOC42RjbV2g= github.com/spf13/afero v1.2.2/go.mod h1:9ZxEEn6pIJ8Rxe320qSDBk6AsU0r9pR7Q4OcevTdifk= -github.com/spf13/afero v1.11.0 h1:WJQKhtpdm3v2IzqG8VMqrr6Rf3UYpEF239Jy9wNepM8= -github.com/spf13/afero v1.11.0/go.mod h1:GH9Y3pIexgf1MTIWtNGyogA5MwRIDXGUr+hbWNoBjkY= -github.com/spf13/cast v1.7.0 h1:ntdiHjuueXFgm5nzDRdOS4yfT43P5Fnud6DH50rz/7w= -github.com/spf13/cast v1.7.0/go.mod h1:ancEpBxwJDODSW/UG4rDrAqiKolqNNh2DX3mk86cAdo= +github.com/spf13/afero v1.15.0 h1:b/YBCLWAJdFWJTN9cLhiXXcD7mzKn9Dm86dNnfyQw1I= +github.com/spf13/afero v1.15.0/go.mod h1:NC2ByUVxtQs4b3sIUphxK0NioZnmxgyCrfzeuq8lxMg= +github.com/spf13/cast v1.10.0 h1:h2x0u2shc1QuLHfxi+cTJvs30+ZAHOGRic8uyGTDWxY= +github.com/spf13/cast v1.10.0/go.mod h1:jNfB8QC9IA6ZuY2ZjDp0KtFO2LZZlg4S/7bzP6qqeHo= github.com/spf13/cobra v1.10.2 h1:DMTTonx5m65Ic0GOoRY2c16WCbHxOOw6xxezuLaBpcU= github.com/spf13/cobra v1.10.2/go.mod h1:7C1pvHqHw5A4vrJfjNwvOdzYu0Gml16OCs2GRiTUUS4= github.com/spf13/pflag v0.0.0-20170130214245-9ff6c6923cff/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= @@ -362,15 +448,12 @@ github.com/spf13/pflag v1.0.10/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3A github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.2.0/go.mod h1:qt09Ya8vawLte6SNmTgCsAVtYtaKzEcn8ATUoHMkEqE= 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.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.6.1/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/tidwall/gjson v1.18.0 h1:FIDeeyB800efLX89e5a8Y0BNH+LOngJyGrIWxG2FKQY= @@ -381,39 +464,50 @@ github.com/tidwall/pretty v1.2.1 h1:qjsOFOWWQl+N3RsoF5/ssm1pHmJJwhjlSbZ51I6wMl4= github.com/tidwall/pretty v1.2.1/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU= github.com/tidwall/sjson v1.2.5 h1:kLy8mja+1c9jlljvWTlSazM7cKDRfJuR/bOJhcY5NcY= github.com/tidwall/sjson v1.2.5/go.mod h1:Fvgq9kS/6ociJEDnK0Fk1cpYF4FIW6ZF7LAe+6jwd28= +github.com/valyala/bytebufferpool v1.0.0 h1:GqA5TC/0021Y/b9FG4Oi9Mr3q7XYx6KllzawFIhcdPw= +github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc= +github.com/valyala/fastjson v1.6.4 h1:uAUNq9Z6ymTgGhcm0UynUAB6tlbakBrz6CQFax3BXVQ= +github.com/valyala/fastjson v1.6.4/go.mod h1:CLCAqky6SMuOcxStkYQvblddUtoRxhYMGLrsQns1aXY= +github.com/valyala/fastrand v1.1.0 h1:f+5HkLW4rsgzdNoleUOB69hyT9IlD2ZQh9GyDMfb5G8= +github.com/valyala/fastrand v1.1.0/go.mod h1:HWqCzkrkg6QXT8V2EXWvXCoow7vLwOFN002oeRzjapQ= +github.com/valyala/fasttemplate v1.2.2 h1:lxLXG0uE3Qnshl9QyaK6XJxMXlQZELvChBOCmQD0Loo= +github.com/valyala/fasttemplate v1.2.2/go.mod h1:KHLXt3tVN2HBp8eijSv/kGJopbvo7S+qRAEEKiv+SiQ= +github.com/valyala/gozstd v1.24.0 h1:M/9L3h7bVwbj2gZwrmuoaxzwVrmBUvos2jG9cZtuhlc= +github.com/valyala/gozstd v1.24.0/go.mod h1:y5Ew47GLlP37EkTB+B4s7r6A5rdaeB7ftbl9zoYiIPQ= +github.com/valyala/histogram v1.2.0 h1:wyYGAZZt3CpwUiIb9AU/Zbllg1llXyrtApRS815OLoQ= +github.com/valyala/histogram v1.2.0/go.mod h1:Hb4kBwb4UxsaNbbbh+RRz8ZR6pdodR57tzWUS3BUzXY= +github.com/valyala/quicktemplate v1.8.0 h1:zU0tjbIqTRgKQzFY1L42zq0qR3eh4WoQQdIdqCysW5k= +github.com/valyala/quicktemplate v1.8.0/go.mod h1:qIqW8/igXt8fdrUln5kOSb+KWMaJ4Y8QUsfd1k6L2jM= github.com/x448/float16 v0.8.4 h1:qLwI1I70+NjRFUR3zs1JPUCgaCXSh3SW62uAKT1mSBM= github.com/x448/float16 v0.8.4/go.mod h1:14CWIYCyZA/cWjXOioeEpHeN/83MdbZDRQHoFcYsOfg= -github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f/go.mod h1:N2zxlSyiKSe5eX1tZViRH5QA0qijqEDrYZiPEAiq3wU= -github.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb h1:zGWFAtiMcyryUHoUjUJX0/lt1H2+i2Ka2n+D3DImSNo= -github.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb/go.mod h1:N2zxlSyiKSe5eX1tZViRH5QA0qijqEDrYZiPEAiq3wU= -github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415 h1:EzJWgHovont7NscjpAxXsDA8S8BMYve8Y5+7cuRE7R0= -github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415/go.mod h1:GwrjFmJcFw6At/Gs6z4yjiIwzuJ1/+UwLxMQDVQXShQ= -github.com/xeipuuv/gojsonschema v1.2.0 h1:LhYJRs+L4fBtjZUfuSZIKGeVu0QRy8e5Xi7D17UxZ74= -github.com/xeipuuv/gojsonschema v1.2.0/go.mod h1:anYRn/JVcOK2ZgGU+IjEV4nwlhoK5sQluxsYJ78Id3Y= github.com/xyproto/randomstring v1.0.5 h1:YtlWPoRdgMu3NZtP45drfy1GKoojuR7hmRcnhZqKjWU= github.com/xyproto/randomstring v1.0.5/go.mod h1:rgmS5DeNXLivK7YprL0pY+lTuhNQW3iGxZ18UQApw/E= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= +github.com/zitadel/oidc/v3 v3.45.4 h1:GKyWaPRVQ8sCu9XgJ3NgNGtG52FzwVJpzXjIUG2+YrI= +github.com/zitadel/oidc/v3 v3.45.4/go.mod h1:XALmFXS9/kSom9B6uWin1yJ2WTI/E4Ti5aXJdewAVEs= +github.com/zitadel/schema v1.3.2 h1:gfJvt7dOMfTmxzhscZ9KkapKo3Nei3B6cAxjav+lyjI= +github.com/zitadel/schema v1.3.2/go.mod h1:IZmdfF9Wu62Zu6tJJTH3UsArevs3Y4smfJIj3L8fzxw= go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= -go.opentelemetry.io/otel v1.40.0 h1:oA5YeOcpRTXq6NN7frwmwFR0Cn3RhTVZvXsP4duvCms= -go.opentelemetry.io/otel v1.40.0/go.mod h1:IMb+uXZUKkMXdPddhwAHm6UfOwJyh4ct1ybIlV14J0g= -go.opentelemetry.io/otel/trace v1.40.0 h1:WA4etStDttCSYuhwvEa8OP8I5EWu24lkOzp+ZYblVjw= -go.opentelemetry.io/otel/trace v1.40.0/go.mod h1:zeAhriXecNGP/s2SEG3+Y8X9ujcJOTqQ5RgdEJcawiA= +go.opentelemetry.io/otel v1.44.0 h1:JjwHmHpA4iZ3wBxluu2fbbE7j4kqlE8jXyAyPXH7HqU= +go.opentelemetry.io/otel v1.44.0/go.mod h1:BMgjTHL9WPRlRjL2oZCBTL4whCGtXch2H4BhOPIAyYc= +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.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE= go.uber.org/mock v0.6.0 h1:hyF9dfmbgIX5EfOdasqLsWD6xqpNZlXblLB/Dbnwv3Y= go.uber.org/mock v0.6.0/go.mod h1:KiVJ4BqZJaMj4svdfmHM0AUx4NJYO8ZNpPnZn1Z+BBU= go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0= go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= -go.uber.org/zap v1.27.0 h1:aJMhYGrd5QSmlpLMr2MftRKl7t8J8PTZPA732ud/XR8= -go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= -go.yaml.in/yaml/v2 v2.4.3 h1:6gvOSjQoTB3vt1l+CU+tSyi/HOjfOjRLJ4YwYZGwRO0= -go.yaml.in/yaml/v2 v2.4.3/go.mod h1:zSxWcmIDjOzPXpjlTTbAsKokqkDNAVtZO0WOMiT90s8= +go.uber.org/zap v1.28.0 h1:IZzaP1Fv73/T/pBMLk4VutPl36uNC+OSUh3JLG3FIjo= +go.uber.org/zap v1.28.0/go.mod h1:rDLpOi171uODNm/mxFcuYWxDsqWSAVkFdX4XojSKg/Q= +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= +go.yaml.in/yaml/v4 v4.0.0-rc.2 h1:/FrI8D64VSr4HtGIlUtlFMGsm7H7pWTbj6vOLVZcA6s= +go.yaml.in/yaml/v4 v4.0.0-rc.2/go.mod h1:aZqd9kCMsGL7AuUv/m/PvWLdg5sjJsZ4oHDEnfPPfY0= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= @@ -421,15 +515,15 @@ golang.org/x/crypto v0.0.0-20190611184440-5c40567a22f8/go.mod h1:yigFU9vqHzYiE8U golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20191206172530-e9b2fee46413/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.52.0 h1:RMs7fP2rXdep0CftQlK8Uf+kibLm7qkCcradZWYz988= -golang.org/x/crypto v0.52.0/go.mod h1:1QgfPxDqh0T2M/elOJtp9RvuR95kVjir0e6/BvEmGbc= +golang.org/x/crypto v0.54.0 h1:YLIA59K4fiNzHzjnZt2tUJQjQtUWfWbeHBqKtk3eScw= +golang.org/x/crypto v0.54.0/go.mod h1:KWL8ny2AZdGR2cWmzeHrp2azQPGogOv+HeQaVEXC2dk= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= golang.org/x/exp v0.0.0-20190829153037-c13cbed26979/go.mod h1:86+5VVa7VpoJ4kLfm080zCjGlMRFzhUhsZKEZO7MGek= golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= -golang.org/x/exp v0.0.0-20241009180824-f66d83c29e7c h1:7dEasQXItcW1xKJ2+gg5VOiBnqWrJc+rq0DPKyvvdbY= -golang.org/x/exp v0.0.0-20241009180824-f66d83c29e7c/go.mod h1:NQtJDoLvd6faHhE7m4T/1IY708gDefGGjR/iUW8yQQ8= +golang.org/x/exp v0.0.0-20260527015227-08cc5374adb3 h1:VHEvKbpgPXcPXn40t9cDTGK3JZwMikIEyF/CTrFfu7k= +golang.org/x/exp v0.0.0-20260527015227-08cc5374adb3/go.mod h1:d2fgXJLVs4dYDHUk5lwMIfzRzSrWCfGZb0ZqeLa/Vcw= golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= @@ -446,9 +540,8 @@ golang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY= golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -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/mod v0.37.0 h1:vF1DjpVEshcIqoEaauuHebaLk1O1forxjxBaVn884JQ= +golang.org/x/mod v0.37.0/go.mod h1:m8S8VeM9r4dzDwjrKO0a1sZP3YjeMamRRlD+fmR2Q/0= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -466,27 +559,23 @@ golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLL golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= -golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= -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/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.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= -golang.org/x/oauth2 v0.35.0 h1:Mv2mzuHuZuY2+bkyWXIHMfhNdJAdwW3FuWeCPYN5GVQ= -golang.org/x/oauth2 v0.35.0/go.mod h1:lzm5WQJQwKZ3nwavOZ3IS5Aulzxi68dUSgRHujetwEA= +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.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -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/sync v0.22.0 h1:SZjpbeLmrCk4xhRSZFNZW5gFUeCeFgjekvI/+gfScek= +golang.org/x/sync v0.22.0/go.mod h1:9xrNwdLfx4jkKbNva9FpL6vEN7evnE43NNNJQ2LF3+0= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -502,31 +591,22 @@ golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200622214017-ed371f2e16b4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -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/telemetry v0.0.0-20260409153401-be6f6cb8b1fa h1:efT73AJZfAAUV7SOip6pWGkwJDzIGiKBZGVzHYa+ve4= -golang.org/x/telemetry v0.0.0-20260409153401-be6f6cb8b1fa/go.mod h1:kHjTxDEnAu6/Nl9lDkzjWpR+bmKfxeiRuSDlsMb70gE= -golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= -golang.org/x/term v0.43.0 h1:S4RLU2sB31O/NCl+zFN9Aru9A/Cq2aqKpTZJ6B+DwT4= -golang.org/x/term v0.43.0/go.mod h1:lrhlHNdQJHO+1qVYiHfFKVuVioJIheAc3fBSMFYEIsk= +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.45.0 h1:NwWyBmoJCbfTHpxrWoZ9C6/VxOf7ic219I8xZZFdrf0= +golang.org/x/term v0.45.0/go.mod h1:9aqxs0blBcrm/n0L9QW0aRVD+ktan8ssZromtqJC43w= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.37.0 h1:Cqjiwd9eSg8e0QAkyCaQTNHFIIzWtidPahFWR83rTrc= -golang.org/x/text v0.37.0/go.mod h1:a5sjxXGs9hsn/AJVwuElvCAo9v8QYLzvavO5z2PiM38= +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.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20200416051211-89c76fbcd5d1/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.14.0 h1:MRx4UaLrDotUKUdCIqzPC48t1Y9hANFKIRpNx+Te8PI= -golang.org/x/time v0.14.0/go.mod h1:eL/Oa2bBBK0TkX57Fyni+NgnyQQN4LitPmob2Hjnqw4= +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.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20181011042414-1f849cf54d09/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20181030221726-6c7e314b6563/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= @@ -550,11 +630,8 @@ golang.org/x/tools v0.0.0-20191125144606-a911d9008d1f/go.mod h1:b+2E5dAYhXwXZwtn golang.org/x/tools v0.0.0-20191227053925-7b8e75db28f4/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200505023115-26f46d2f7ef8/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200616133436-c1934b75d054/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -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.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/go/expect v0.1.1-deprecated h1:jpBZDwmgPhXsKZC6WhL20P4b/wmnpsEAGHaNy0n/rJM= golang.org/x/tools/go/expect v0.1.1-deprecated/go.mod h1:eihoPOH+FgIqa3FpoTwguz/bVUSGBlGQU67vpBeOrBY= golang.org/x/tools/go/packages/packagestest v0.1.1-deprecated h1:1h2MnaIAIXISqTFKdENegdpAgUXz6NrPEsbIeWaBRvM= @@ -562,9 +639,8 @@ golang.org/x/tools/go/packages/packagestest v0.1.1-deprecated/go.mod h1:RVAQXBGN golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -gomodules.xyz/jsonpatch/v2 v2.4.0 h1:Ci3iUJyx9UeRx7CeFN8ARgGbkESwJK+KB9lLcWxY/Zw= -gomodules.xyz/jsonpatch/v2 v2.4.0/go.mod h1:AH3dM2RI6uoBZxn3LVrfvJ3E0/9dG4cSrbuBJT4moAY= +gomodules.xyz/jsonpatch/v2 v2.5.0 h1:JELs8RLM12qJGXU4u/TO3V25KW8GreMKl9pdkk14RM0= +gomodules.xyz/jsonpatch/v2 v2.5.0/go.mod h1:AH3dM2RI6uoBZxn3LVrfvJ3E0/9dG4cSrbuBJT4moAY= google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE= google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M= google.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= @@ -585,8 +661,10 @@ google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98 google.golang.org/genproto v0.0.0-20190911173649-1774047e7e51/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8= google.golang.org/genproto v0.0.0-20191230161307-f3c370f40bfb/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= -google.golang.org/genproto/googleapis/api v0.0.0-20250303144028-a0af3efb3deb h1:p31xT4yrYrSM/G4Sn2+TNUkVhFCbG9y8itM2S6Th950= -google.golang.org/genproto/googleapis/api v0.0.0-20250303144028-a0af3efb3deb/go.mod h1:jbe3Bkdp+Dh2IrslsFCklNhweNTBgSYanP1UXhJDhKg= +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-20260526163538-3dc84a4a5aaa h1:mZHHdPZl0dbGHCflZgAq/Q468DWVFcU2whhB2KAo8fk= +google.golang.org/genproto/googleapis/rpc v0.0.0-20260526163538-3dc84a4a5aaa/go.mod h1:4Hqkh8ycfw05ld/3BWL7rJOSfebL2Q+DVDeRgYgxUU8= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= @@ -602,12 +680,11 @@ google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2 google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGjtUeSXeh4= -google.golang.org/protobuf v1.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE= -google.golang.org/protobuf v1.36.11/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= +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= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= @@ -616,7 +693,6 @@ gopkg.in/evanphx/json-patch.v4 v4.13.0/go.mod h1:p8EYWUEYMpynmqDbY58zCKCFZw8pRWM gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc= gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= -gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= @@ -626,37 +702,37 @@ gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= 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= -helm.sh/helm/v3 v3.16.2 h1:Y9v7ry+ubQmi+cb5zw1Llx8OKHU9Hk9NQ/+P+LGBe2o= -helm.sh/helm/v3 v3.16.2/go.mod h1:SyTXgKBjNqi2NPsHCW5dDAsHqvGIu0kdNYNH9gQaw70= +helm.sh/helm/v4 v4.1.4 h1:zwTrNkalG4f7SYigRSdQnYrTj0QEz1qzetzAlYoDVSo= +helm.sh/helm/v4 v4.1.4/go.mod h1:5dSo8rRgn3OTkDAc/k0Ipw5/Q+BlqKIKZwa0XwSiINI= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= -istio.io/api v1.23.2 h1:FvWi7GC+rWD60/ZFPuulX/h3k+f2Q9qot3dP8CIL8Ss= -istio.io/api v1.23.2/go.mod h1:QPSTGXuIQdnZFEm3myf9NZ5uBMwCdJWUvfj9ZZ+2oBM= -istio.io/client-go v1.23.2 h1:BIt6A+KaUOFin3SzXiDq2Fr/TMBev1+c836R0BfUfhU= -istio.io/client-go v1.23.2/go.mod h1:E08wpMtUulJk2tlWOCUVakjy1bKFxUNm22tM1R1QY0Y= +istio.io/api v1.29.5 h1:LDukCsRZyL4C3O644yOvN8qv6wVMjvydGDt4X9pxpDM= +istio.io/api v1.29.5/go.mod h1:+brQWcBHoROuyA6fv8rbgg8Kfn0RCGuqoY0duCMuSLA= +istio.io/client-go v1.29.2 h1:aljV/qXcEGgRYisPTJ7L0Nx8GXWbM8rZgr1eEAC3bCw= +istio.io/client-go v1.29.2/go.mod h1:RazwM5KR3FzhWXrvjCq1o85ReFNrHcG3cF2lcs5anzg= k8s.io/api v0.19.0/go.mod h1:I1K45XlvTrDjmj5LoM5LuP/KYrhWbjUKT/SoPG0qTjw= -k8s.io/api v0.35.1 h1:0PO/1FhlK/EQNVK5+txc4FuhQibV25VLSdLMmGpDE/Q= -k8s.io/api v0.35.1/go.mod h1:28uR9xlXWml9eT0uaGo6y71xK86JBELShLy4wR1XtxM= -k8s.io/apiextensions-apiserver v0.34.3 h1:p10fGlkDY09eWKOTeUSioxwLukJnm+KuDZdrW71y40g= -k8s.io/apiextensions-apiserver v0.34.3/go.mod h1:aujxvqGFRdb/cmXYfcRTeppN7S2XV/t7WMEc64zB5A0= +k8s.io/api v0.35.5 h1:BrFeUDGY/LBtlA1R5RoxhlYRHs76RnQBc6xbm/y7hsQ= +k8s.io/api v0.35.5/go.mod h1:xWkFhMnoPZdTAQh95Rlw3zZpUUNVlFHcuESUYd06BWM= +k8s.io/apiextensions-apiserver v0.35.5 h1:HttlJjgsx3ddLsASCqklkKvfBlwUoXma8VLpeMG5YL8= +k8s.io/apiextensions-apiserver v0.35.5/go.mod h1:4xbAgP/jbt8sVHE3H4DfE1gSPLUoSzXrNqhZz1lTHKc= k8s.io/apimachinery v0.19.0/go.mod h1:DnPGDnARWFvYa3pMHgSxtbZb7gpzzAZ1pTfaUNDVlmA= -k8s.io/apimachinery v0.35.1 h1:yxO6gV555P1YV0SANtnTjXYfiivaTPvCTKX6w6qdDsU= -k8s.io/apimachinery v0.35.1/go.mod h1:jQCgFZFR1F4Ik7hvr2g84RTJSZegBc8yHgFWKn//hns= -k8s.io/apiserver v0.34.3 h1:uGH1qpDvSiYG4HVFqc6A3L4CKiX+aBWDrrsxHYK0Bdo= -k8s.io/apiserver v0.34.3/go.mod h1:QPnnahMO5C2m3lm6fPW3+JmyQbvHZQ8uudAu/493P2w= +k8s.io/apimachinery v0.35.5 h1:lbjjjUfVeVqFbiOpyhqZHc8DhiYkWOxSNij7lHx2U8Y= +k8s.io/apimachinery v0.35.5/go.mod h1:NNi1taPOpep0jOj+oRha3mBJPqvi0hGdaV8TCqGQ+cc= +k8s.io/apiserver v0.35.5 h1:ZtFpSEmxf/VmOdbL3bo7hLxyNRorRegqOLmYSW0mxEo= +k8s.io/apiserver v0.35.5/go.mod h1:6NNWFTq/UosCwUmqhQDC+3ApzSx5ekeYMIwzSG+49VU= k8s.io/autoscaler/vertical-pod-autoscaler v1.6.0 h1:JC2YsVS6njOY8+a2mr8YX2FwZCpWfe7oVzjk98YPKZg= k8s.io/autoscaler/vertical-pod-autoscaler v1.6.0/go.mod h1:w7pOVKXZAZsct/dXWsGJflrGOTkMpBxI75KyQjUYg7Y= k8s.io/client-go v0.19.0/go.mod h1:H9E/VT95blcFQnlyShFgnFT9ZnJOAceiUHM3MlRC+mU= -k8s.io/client-go v0.35.1 h1:+eSfZHwuo/I19PaSxqumjqZ9l5XiTEKbIaJ+j1wLcLM= -k8s.io/client-go v0.35.1/go.mod h1:1p1KxDt3a0ruRfc/pG4qT/3oHmUj1AhSHEcxNSGg+OA= +k8s.io/client-go v0.35.5 h1:wUrgqVSmFRw75bgSHY7X0G/hZM/QYpV0Hg7SYYOYpFk= +k8s.io/client-go v0.35.5/go.mod h1:Z0mDcAJsX1Y7RQfuQlJipiRtqf8Mhk2VDu1/JvRqdGo= k8s.io/code-generator v0.19.0/go.mod h1:moqLn7w0t9cMs4+5CQyxnfA/HV8MF6aAVENF+WZZhgk= -k8s.io/code-generator v0.35.1 h1:yLKR2la7Z9cWT5qmk67ayx8xXLM4RRKQMnC8YPvTWRI= -k8s.io/code-generator v0.35.1/go.mod h1:F2Fhm7aA69tC/VkMXLDokdovltXEF026Tb9yfQXQWKg= -k8s.io/component-base v0.35.1 h1:XgvpRf4srp037QWfGBLFsYMUQJkE5yMa94UsJU7pmcE= -k8s.io/component-base v0.35.1/go.mod h1:HI/6jXlwkiOL5zL9bqA3en1Ygv60F03oEpnuU1G56Bs= +k8s.io/code-generator v0.35.5 h1:g2ZIw7LCjmX2p5WDjtkVYwmvtx+pDF0Pq1dfgCoHkhQ= +k8s.io/code-generator v0.35.5/go.mod h1:W46pDvFxY2SlphV3MBI/6KDZ2JDMhHXGVgPQXMoYFiM= +k8s.io/component-base v0.35.5 h1:1y1xxfpFNkNi4RMi6bvPNN4aDr9VhOijtEfrqnhPijs= +k8s.io/component-base v0.35.5/go.mod h1:n/+aL98XYINubqIu/Okh6mS/kZT2nMeN4IQkQR4VXRg= k8s.io/gengo v0.0.0-20200413195148-3a45101e95ac/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0= k8s.io/gengo v0.0.0-20200428234225-8167cfdcfc14/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0= k8s.io/gengo v0.0.0-20201203183100-97869a43a9d9/go.mod h1:FiNAH4ZV3gBg2Kwh89tzAEV2be7d5xI0vBa/VySYy3E= @@ -669,34 +745,34 @@ k8s.io/klog v1.0.0 h1:Pt+yjF5aB1xDSVbau4VsWe+dQNzA0qv1LlXdC2dF6Q8= k8s.io/klog v1.0.0/go.mod h1:4Bi6QPql/J/LkTDqv7R/cd3hPo4k2DG6Ptcz060Ez5I= k8s.io/klog/v2 v2.0.0/go.mod h1:PBfzABfn139FHAV07az/IF9Wp1bkk3vpT2XSJ76fSDE= k8s.io/klog/v2 v2.2.0/go.mod h1:Od+F08eJP+W3HUb4pSrPpgp9DGU4GzlpG/TmITuYh/Y= -k8s.io/klog/v2 v2.130.1 h1:n9Xl7H1Xvksem4KFG4PYbdQCQxqc/tTUyrgXaOhHSzk= -k8s.io/klog/v2 v2.130.1/go.mod h1:3Jpz1GvMt720eyJH1ckRHK1EDfpxISzJ7I9OYgaDtPE= -k8s.io/kube-aggregator v0.31.1 h1:vrYBTTs3xMrpiEsmBjsLETZE9uuX67oQ8B3i1BFfMPw= -k8s.io/kube-aggregator v0.31.1/go.mod h1:+aW4NX50uneozN+BtoCxI4g7ND922p8Wy3tWKFDiWVk= +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-aggregator v0.35.5 h1:oLflHAqh8tEoEcXtrzGhr4hctwhcRr5B1sM+T96N1rs= +k8s.io/kube-aggregator v0.35.5/go.mod h1:L3GflyN8a8CDjej2UxgeGwRiXYuI+aTZ0GE7qssdN2w= k8s.io/kube-openapi v0.0.0-20200805222855-6aeccd4b50c6/go.mod h1:UuqjUnNftUyPE5H64/qeyjQoUZhGpeFDVdxjTeEVN2o= -k8s.io/kube-openapi v0.0.0-20260127142750-a19766b6e2d4 h1:HhDfevmPS+OalTjQRKbTHppRIz01AWi8s45TMXStgYY= -k8s.io/kube-openapi v0.0.0-20260127142750-a19766b6e2d4/go.mod h1:kdmbQkyfwUagLfXIad1y2TdrjPFWp2Q89B3qkRwf/pQ= -k8s.io/kubelet v0.34.3 h1:8QRev2FmasZ05yCC774qn6ULche72PYM7AQv0CVt9CM= -k8s.io/kubelet v0.34.3/go.mod h1:pMgblr+nVQ02UkyaTcgqzS3AIYVQkjlMFg1Pd5rGC1Q= -k8s.io/metrics v0.35.1 h1:MUcrUcWlq81XiripkydzCGsY9zQawDXfP9IICNNcVVw= -k8s.io/metrics v0.35.1/go.mod h1:9x7xWOAOiWzHA0vaqLgSE4PXF3vyT5ts5XIbx8OSjiI= +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/kubelet v0.35.5 h1:asU07lJvTB9lK7XPEcQJdPrV96eu/zNGkJVSEWeZFFQ= +k8s.io/kubelet v0.35.5/go.mod h1:cLyY+spNxyf1nXtkSavVfbHX7pZ7wwoWigoeH1iIMcE= +k8s.io/metrics v0.35.5 h1:Xy5sIUvQFoWC2OZ7E4VEQgZlbQR+0PtfdIuieCYF2kU= +k8s.io/metrics v0.35.5/go.mod h1:NMfFh5jgoyzOXr8rCXQjgj8RAclft68I93OIQvjSQoc= +k8s.io/pod-security-admission v0.35.5 h1:R+FbF2OyANMBYkMFtavHyNVOE82VeewRtLXGdADqkjk= +k8s.io/pod-security-admission v0.35.5/go.mod h1:36iCuuOBK1re5qU1/WGu3JsOytNRUWq/RhdqAG1gU+E= k8s.io/utils v0.0.0-20200729134348-d5654de09c73/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= -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-20260707023825-cf1189d6abe3 h1:jVkFFVfXdXP74B/zbO3hM3hpSFD0xvhQ5U686DPurkE= +k8s.io/utils v0.0.0-20260707023825-cf1189d6abe3/go.mod h1:M2s5JB1lIYP3jzZdorPLHXIPJzt9vv2muW5a6L9DtNM= rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= -sigs.k8s.io/controller-runtime v0.20.4 h1:X3c+Odnxz+iPTRobG4tp092+CvBU9UK0t/bRf+n0DGU= -sigs.k8s.io/controller-runtime v0.20.4/go.mod h1:xg2XB0K5ShQzAgsoujxuKN4LNXR2LfwwHsPj7Iaw+XY= -sigs.k8s.io/controller-runtime/tools/setup-envtest v0.0.0-20231015215740-bf15e44028f9 h1:O27fSMHw4u0h+Rj8bNzcZk5jY0iZCO0J8/mCpigpnbw= -sigs.k8s.io/controller-runtime/tools/setup-envtest v0.0.0-20231015215740-bf15e44028f9/go.mod h1:TF/lVLWS+JNNaVqJuDDictY2hZSXSsIHCx4FClMvqFg= -sigs.k8s.io/controller-tools v0.16.4 h1:VXmar78eDXbx1by/H09ikEq1hiq3bqInxuV3lMr3GmQ= -sigs.k8s.io/controller-tools v0.16.4/go.mod h1:kcsZyYMXiOFuBhofSPtkB90zTSxVRxVVyvtKQcx3q1A= +sigs.k8s.io/controller-runtime v0.23.3 h1:VjB/vhoPoA9l1kEKZHBMnQF33tdCLQKJtydy4iqwZ80= +sigs.k8s.io/controller-runtime v0.23.3/go.mod h1:B6COOxKptp+YaUT5q4l6LqUJTRpizbgf9KSRNdQGns0= +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/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/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/v4 v4.0.1/go.mod h1:bJZC9H9iH24zzfZ/41RGcq60oK1F7G282QMXDPYydCw= -sigs.k8s.io/structured-merge-diff/v6 v6.3.2 h1:kwVWMx5yS1CrnFWA/2QHyRVJ8jM6dBA80uLmm0wJkk8= -sigs.k8s.io/structured-merge-diff/v6 v6.3.2/go.mod h1:M3W8sfWvn2HhQDIbGWj3S099YozAsymCo/wrT5ohRUE= +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/yaml v1.1.0/go.mod h1:UJmg0vDUVViEyp3mgSv9WPwZCDxu4rQW1olrI1uml+o= sigs.k8s.io/yaml v1.2.0/go.mod h1:yfXDCHCao9+ENCvLSE62v9VSji2MKu5jeNfTrofGhJc= sigs.k8s.io/yaml v1.6.0 h1:G8fkbMSAFqgEFgh4b1wmtzDnioxFCUgTZhlbj5P9QYs= diff --git a/hack/tools.go b/hack/tools.go index b981661c1..b4e28d578 100644 --- a/hack/tools.go +++ b/hack/tools.go @@ -23,12 +23,10 @@ package tools import ( _ "github.com/gardener/gardener/.github" _ "github.com/gardener/gardener/.github/ISSUE_TEMPLATE" - _ "github.com/gardener/gardener/hack" _ "github.com/gardener/gardener/hack/.ci" - _ "github.com/gardener/gardener/hack/api-reference/template" _ "github.com/gardener/gardener/hack/tools" _ "github.com/ahmetb/gen-crd-api-reference-docs" - _ "github.com/golang/mock/mockgen" + _ "go.uber.org/mock/mockgen" _ "k8s.io/code-generator" ) diff --git a/hack/update-codegen.sh b/hack/update-codegen.sh index 206b79b64..c7ca7dba7 100755 --- a/hack/update-codegen.sh +++ b/hack/update-codegen.sh @@ -1,46 +1,23 @@ -#!/usr/bin/env bash +#!/bin/bash # -# Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file +# SPDX-FileCopyrightText: 2024 SAP SE or an SAP affiliate company and Gardener contributors # -# 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 set -o errexit set -o nounset set -o pipefail -# setup virtual GOPATH -source "$GARDENER_HACK_DIR"/vgopath-setup.sh - CODE_GEN_DIR=$(go list -m -f '{{.Dir}}' k8s.io/code-generator) +source "${CODE_GEN_DIR}/kube_codegen.sh" -# We need to explicitly pass GO111MODULE=off to k8s.io/code-generator as it is significantly slower otherwise, -# see https://github.com/kubernetes/code-generator/issues/100. -export GO111MODULE=off - -rm -f $GOPATH/bin/*-gen +CURRENT_DIR=$(dirname $0) +PROJECT_ROOT="${CURRENT_DIR}"/.. -bash "${CODE_GEN_DIR}/generate-internal-groups.sh" \ - deepcopy,defaulter,conversion \ - github.com/23technologies/gardener-extension-provider-hcloud/pkg/client \ - github.com/23technologies/gardener-extension-provider-hcloud/pkg/hcloud \ - github.com/23technologies/gardener-extension-provider-hcloud/pkg/hcloud \ - "apis:v1alpha1" \ - --go-header-file "$GARDENER_HACK_DIR/LICENSE_BOILERPLATE.txt" +kube::codegen::gen_helpers \ + --boilerplate "${GARDENER_HACK_DIR}/LICENSE_BOILERPLATE.txt" \ + "${PROJECT_ROOT}/pkg/hcloud/apis" -bash "${CODE_GEN_DIR}/generate-internal-groups.sh" \ - deepcopy,defaulter,conversion \ - github.com/23technologies/gardener-extension-provider-hcloud/pkg/client/config \ - github.com/23technologies/gardener-extension-provider-hcloud/pkg/hcloud/apis \ - github.com/23technologies/gardener-extension-provider-hcloud/pkg/hcloud/apis \ - "config:v1alpha1" \ - --go-header-file "$GARDENER_HACK_DIR/LICENSE_BOILERPLATE.txt" +kube::codegen::gen_helpers \ + --boilerplate "${GARDENER_HACK_DIR}/LICENSE_BOILERPLATE.txt" \ + "${PROJECT_ROOT}/pkg/hcloud/apis/config" diff --git a/pkg/cmd/admission/cmd.go b/pkg/cmd/admission/cmd.go index 8ee70859f..ac5fdb96b 100644 --- a/pkg/cmd/admission/cmd.go +++ b/pkg/cmd/admission/cmd.go @@ -32,7 +32,7 @@ import ( corev1 "k8s.io/api/core/v1" "k8s.io/client-go/rest" "k8s.io/client-go/tools/clientcmd" - "k8s.io/component-base/config" + componentbaseconfigv1alpha1 "k8s.io/component-base/config/v1alpha1" "k8s.io/component-base/version/verflag" "sigs.k8s.io/controller-runtime/pkg/cache" "sigs.k8s.io/controller-runtime/pkg/client" @@ -41,8 +41,8 @@ import ( "sigs.k8s.io/controller-runtime/pkg/log" "sigs.k8s.io/controller-runtime/pkg/manager" - "github.com/23technologies/gardener-extension-provider-hcloud/pkg/hcloud" - hcloudapisinstall "github.com/23technologies/gardener-extension-provider-hcloud/pkg/hcloud/apis/install" + "github.com/opendefensecloud/gardener-extension-provider-hcloud/pkg/hcloud" + hcloudapisinstall "github.com/opendefensecloud/gardener-extension-provider-hcloud/pkg/hcloud/apis/install" ) const AdmissionName = "admission-hcloud" @@ -71,6 +71,7 @@ func NewAdmissionCommand(ctx context.Context) *cobra.Command { AdmissionName, "", nil, + &cmd.GeneralOptions{}, webhookServerOptions, webhookSwitches, ) @@ -94,7 +95,7 @@ func NewAdmissionCommand(ctx context.Context) *cobra.Command { return fmt.Errorf("Error completing options: %w", err) } - util.ApplyClientConnectionConfigurationToRESTConfig(&config.ClientConnectionConfiguration{ + util.ApplyClientConnectionConfigurationToRESTConfig(&componentbaseconfigv1alpha1.ClientConnectionConfiguration{ QPS: 100.0, Burst: 130, }, restOpts.Completed().Config) diff --git a/pkg/cmd/admission/options.go b/pkg/cmd/admission/options.go index f6b837dcb..7dd36a14a 100644 --- a/pkg/cmd/admission/options.go +++ b/pkg/cmd/admission/options.go @@ -20,7 +20,7 @@ package admission import ( webhookcmd "github.com/gardener/gardener/extensions/pkg/webhook/cmd" - "github.com/23technologies/gardener-extension-provider-hcloud/pkg/webhook/validator" + "github.com/opendefensecloud/gardener-extension-provider-hcloud/pkg/webhook/validator" ) // GardenWebhookSwitchOptions are the webhookcmd.SwitchOptions for the admission webhooks. diff --git a/pkg/cmd/controller/cmd.go b/pkg/cmd/controller/cmd.go index 0a446393f..373baed5a 100644 --- a/pkg/cmd/controller/cmd.go +++ b/pkg/cmd/controller/cmd.go @@ -36,18 +36,18 @@ import ( "github.com/go-logr/logr" "github.com/spf13/cobra" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" - autoscalingv1beta2 "k8s.io/autoscaler/vertical-pod-autoscaler/pkg/apis/autoscaling.k8s.io/v1beta2" + autoscalingv1 "k8s.io/autoscaler/vertical-pod-autoscaler/pkg/apis/autoscaling.k8s.io/v1" "k8s.io/component-base/version/verflag" "sigs.k8s.io/controller-runtime/pkg/cluster" "sigs.k8s.io/controller-runtime/pkg/healthz" "sigs.k8s.io/controller-runtime/pkg/manager" - hcloudcontrolplane "github.com/23technologies/gardener-extension-provider-hcloud/pkg/controller/controlplane" - hcloudhealthcheck "github.com/23technologies/gardener-extension-provider-hcloud/pkg/controller/healthcheck" - hcloudinfrastructure "github.com/23technologies/gardener-extension-provider-hcloud/pkg/controller/infrastructure" - hcloudworker "github.com/23technologies/gardener-extension-provider-hcloud/pkg/controller/worker" - "github.com/23technologies/gardener-extension-provider-hcloud/pkg/hcloud" - hcloudapisinstall "github.com/23technologies/gardener-extension-provider-hcloud/pkg/hcloud/apis/install" + hcloudcontrolplane "github.com/opendefensecloud/gardener-extension-provider-hcloud/pkg/controller/controlplane" + hcloudhealthcheck "github.com/opendefensecloud/gardener-extension-provider-hcloud/pkg/controller/healthcheck" + hcloudinfrastructure "github.com/opendefensecloud/gardener-extension-provider-hcloud/pkg/controller/infrastructure" + hcloudworker "github.com/opendefensecloud/gardener-extension-provider-hcloud/pkg/controller/worker" + "github.com/opendefensecloud/gardener-extension-provider-hcloud/pkg/hcloud" + hcloudapisinstall "github.com/opendefensecloud/gardener-extension-provider-hcloud/pkg/hcloud/apis/install" ) // NewControllerManagerCommand creates a new command for running a HCloud provider controller. @@ -106,6 +106,7 @@ func NewControllerManagerCommand(ctx context.Context) *cobra.Command { webhookOptions := webhookcmd.NewAddToManagerOptions(hcloud.Name, genericactuator.ShootWebhooksResourceName, genericactuator.ShootWebhookNamespaceSelector(hcloud.Type), + generalOpts, webhookServerOptions, webhookSwitches, ) @@ -164,7 +165,7 @@ func NewControllerManagerCommand(ctx context.Context) *cobra.Command { if err := machinev1alpha1.AddToScheme(scheme); err != nil { return fmt.Errorf("Could not update manager scheme: %w", err) } - if err := autoscalingv1beta2.AddToScheme(scheme); err != nil { + if err := autoscalingv1.AddToScheme(scheme); err != nil { return fmt.Errorf("Could not update manager scheme: %w", err) } @@ -189,9 +190,12 @@ func NewControllerManagerCommand(ctx context.Context) *cobra.Command { heartbeatCtrlOpts.Completed().Apply(&heartbeat.DefaultAddOptions) controlPlaneCtrlOpts.Completed().Apply(&hcloudcontrolplane.DefaultAddOptions.Controller) infraCtrlOpts.Completed().Apply(&hcloudinfrastructure.DefaultAddOptions.Controller) - reconcileOpts.Completed().Apply(&hcloudinfrastructure.DefaultAddOptions.IgnoreOperationAnnotation, &hcloudinfrastructure.DefaultAddOptions.ExtensionClass) - reconcileOpts.Completed().Apply(&hcloudcontrolplane.DefaultAddOptions.IgnoreOperationAnnotation, &hcloudcontrolplane.DefaultAddOptions.ExtensionClass) - reconcileOpts.Completed().Apply(&hcloudworker.DefaultAddOptions.IgnoreOperationAnnotation, &hcloudworker.DefaultAddOptions.ExtensionClass) + reconcileOpts.Completed().Apply(&hcloudinfrastructure.DefaultAddOptions.IgnoreOperationAnnotation) + reconcileOpts.Completed().Apply(&hcloudcontrolplane.DefaultAddOptions.IgnoreOperationAnnotation) + reconcileOpts.Completed().Apply(&hcloudworker.DefaultAddOptions.IgnoreOperationAnnotation) + hcloudinfrastructure.DefaultAddOptions.ExtensionClasses = generalOpts.Completed().ExtensionClasses + hcloudcontrolplane.DefaultAddOptions.ExtensionClasses = generalOpts.Completed().ExtensionClasses + hcloudworker.DefaultAddOptions.ExtensionClasses = generalOpts.Completed().ExtensionClasses workerCtrlOpts.Completed().Apply(&hcloudworker.DefaultAddOptions.Controller) hcloudworker.DefaultAddOptions.GardenCluster = gardenCluster diff --git a/pkg/cmd/controller/config.go b/pkg/cmd/controller/config.go index 9df1ab548..d2a4d4c74 100644 --- a/pkg/cmd/controller/config.go +++ b/pkg/cmd/controller/config.go @@ -20,11 +20,11 @@ package controller import ( "fmt" - extensionconfig "github.com/gardener/gardener/extensions/pkg/apis/config" + healthcheckconfigv1alpha1 "github.com/gardener/gardener/extensions/pkg/apis/config/v1alpha1" "github.com/spf13/pflag" - "github.com/23technologies/gardener-extension-provider-hcloud/pkg/hcloud/apis/config" - "github.com/23technologies/gardener-extension-provider-hcloud/pkg/hcloud/apis/config/loader" + "github.com/opendefensecloud/gardener-extension-provider-hcloud/pkg/hcloud/apis/config" + "github.com/opendefensecloud/gardener-extension-provider-hcloud/pkg/hcloud/apis/config/loader" ) // ConfigOptions are command line options that can be set for config.ControllerConfiguration. @@ -124,7 +124,7 @@ func (c *Config) Options() config.ControllerConfiguration { // // PARAMETERS // config *healthcheckconfig.HealthCheckConfig Pointer to the HealthCheckConfig to set -func (c *Config) ApplyHealthCheckConfig(config *extensionconfig.HealthCheckConfig) { +func (c *Config) ApplyHealthCheckConfig(config *healthcheckconfigv1alpha1.HealthCheckConfig) { if c.Config.HealthCheckConfig != nil { *config = *c.Config.HealthCheckConfig } diff --git a/pkg/cmd/controller/controller_options.go b/pkg/cmd/controller/controller_options.go index 5317f7fe5..dbd9c268b 100644 --- a/pkg/cmd/controller/controller_options.go +++ b/pkg/cmd/controller/controller_options.go @@ -25,10 +25,10 @@ import ( "github.com/gardener/gardener/extensions/pkg/controller/infrastructure" "github.com/gardener/gardener/extensions/pkg/controller/worker" - hcloudcontrolplane "github.com/23technologies/gardener-extension-provider-hcloud/pkg/controller/controlplane" - hcloudhealthcheck "github.com/23technologies/gardener-extension-provider-hcloud/pkg/controller/healthcheck" - hcloudinfrastructure "github.com/23technologies/gardener-extension-provider-hcloud/pkg/controller/infrastructure" - hcloudworker "github.com/23technologies/gardener-extension-provider-hcloud/pkg/controller/worker" + hcloudcontrolplane "github.com/opendefensecloud/gardener-extension-provider-hcloud/pkg/controller/controlplane" + hcloudhealthcheck "github.com/opendefensecloud/gardener-extension-provider-hcloud/pkg/controller/healthcheck" + hcloudinfrastructure "github.com/opendefensecloud/gardener-extension-provider-hcloud/pkg/controller/infrastructure" + hcloudworker "github.com/opendefensecloud/gardener-extension-provider-hcloud/pkg/controller/worker" ) // controllerSwitchOptions are the cmd.SwitchOptions for the provider controllers. diff --git a/pkg/cmd/controller/webhook_options.go b/pkg/cmd/controller/webhook_options.go index ff5c42912..a78005688 100644 --- a/pkg/cmd/controller/webhook_options.go +++ b/pkg/cmd/controller/webhook_options.go @@ -21,7 +21,7 @@ import ( webhookcmd "github.com/gardener/gardener/extensions/pkg/webhook/cmd" webhook "github.com/gardener/gardener/extensions/pkg/webhook/controlplane" - hcloudwebhook "github.com/23technologies/gardener-extension-provider-hcloud/pkg/webhook/controlplane" + hcloudwebhook "github.com/opendefensecloud/gardener-extension-provider-hcloud/pkg/webhook/controlplane" ) // webhookSwitchOptions are the webhookcmd.SwitchOptions for the provider webhooks. diff --git a/pkg/controller/controlplane/registration.go b/pkg/controller/controlplane/registration.go index 42e467d62..3cbd4a94b 100644 --- a/pkg/controller/controlplane/registration.go +++ b/pkg/controller/controlplane/registration.go @@ -29,8 +29,8 @@ import ( "sigs.k8s.io/controller-runtime/pkg/log" "sigs.k8s.io/controller-runtime/pkg/manager" - "github.com/23technologies/gardener-extension-provider-hcloud/pkg/hcloud" - controllerapis "github.com/23technologies/gardener-extension-provider-hcloud/pkg/hcloud/apis/controller" + "github.com/opendefensecloud/gardener-extension-provider-hcloud/pkg/hcloud" + controllerapis "github.com/opendefensecloud/gardener-extension-provider-hcloud/pkg/hcloud/apis/controller" ) var ( @@ -50,7 +50,8 @@ type AddOptions struct { GardenId string // WebhookServerNamespace is the namespace in which the webhook server runs. WebhookServerNamespace string - ExtensionClass extensionsv1alpha1.ExtensionClass + // ExtensionClasses are the extension classes this controller is responsible for. + ExtensionClasses []extensionsv1alpha1.ExtensionClass } // AddToManagerWithOptions adds a controller with the given Options to the given manager. @@ -67,15 +68,11 @@ func AddToManagerWithOptions(ctx context.Context, mgr manager.Manager, opts AddO getSecretConfigs, getAccessSecrets, - nil, - nil, - configChart, controlPlaneChart, controlPlaneShootChart, nil, storageClassChart, - nil, NewValuesProvider(mgr, logger, opts.GardenId), extensionscontroller.ChartRendererFactoryFunc(util.NewChartRendererForShoot), controllerapis.ImageVector(), @@ -88,12 +85,12 @@ func AddToManagerWithOptions(ctx context.Context, mgr manager.Manager, opts AddO return err } - return controlplane.Add(ctx, mgr, controlplane.AddArgs{ + return controlplane.Add(mgr, controlplane.AddArgs{ Actuator: genericActuator, ControllerOptions: opts.Controller, Predicates: controlplane.DefaultPredicates(ctx, mgr, opts.IgnoreOperationAnnotation), Type: hcloud.Type, - ExtensionClass: opts.ExtensionClass, + ExtensionClasses: opts.ExtensionClasses, }) } diff --git a/pkg/controller/controlplane/valuesprovider.go b/pkg/controller/controlplane/valuesprovider.go index 725a5360f..3c0521bdf 100644 --- a/pkg/controller/controlplane/valuesprovider.go +++ b/pkg/controller/controlplane/valuesprovider.go @@ -40,16 +40,17 @@ import ( appsv1 "k8s.io/api/apps/v1" corev1 "k8s.io/api/core/v1" rbacv1 "k8s.io/api/rbac/v1" + storagev1 "k8s.io/api/storage/v1" "k8s.io/apimachinery/pkg/runtime" "k8s.io/apimachinery/pkg/runtime/serializer" - autoscalingv1beta2 "k8s.io/autoscaler/vertical-pod-autoscaler/pkg/apis/autoscaling.k8s.io/v1beta2" + autoscalingv1 "k8s.io/autoscaler/vertical-pod-autoscaler/pkg/apis/autoscaling.k8s.io/v1" "sigs.k8s.io/controller-runtime/pkg/client" "sigs.k8s.io/controller-runtime/pkg/manager" - "github.com/23technologies/gardener-extension-provider-hcloud/charts" - "github.com/23technologies/gardener-extension-provider-hcloud/pkg/hcloud" - "github.com/23technologies/gardener-extension-provider-hcloud/pkg/hcloud/apis" - "github.com/23technologies/gardener-extension-provider-hcloud/pkg/hcloud/apis/transcoder" + "github.com/opendefensecloud/gardener-extension-provider-hcloud/charts" + "github.com/opendefensecloud/gardener-extension-provider-hcloud/pkg/hcloud" + "github.com/opendefensecloud/gardener-extension-provider-hcloud/pkg/hcloud/apis" + "github.com/opendefensecloud/gardener-extension-provider-hcloud/pkg/hcloud/apis/transcoder" ) const ( @@ -78,7 +79,7 @@ var ( {Type: &corev1.Service{}, Name: hcloud.CloudControllerManagerName}, {Type: &appsv1.Deployment{}, Name: hcloud.CloudControllerManagerName}, {Type: &corev1.ConfigMap{}, Name: hcloud.CloudControllerManagerName + "-observability-config"}, - {Type: &autoscalingv1beta2.VerticalPodAutoscaler{}, Name: hcloud.CloudControllerManagerName + "-vpa"}, + {Type: &autoscalingv1.VerticalPodAutoscaler{}, Name: hcloud.CloudControllerManagerName + "-vpa"}, }, }, { @@ -92,7 +93,7 @@ var ( Objects: []*chart.Object{ {Type: &appsv1.Deployment{}, Name: hcloud.CSIControllerName}, {Type: &corev1.ConfigMap{}, Name: hcloud.CSIControllerName + "-observability-config"}, - {Type: &autoscalingv1beta2.VerticalPodAutoscaler{}, Name: hcloud.CSIControllerName + "-vpa"}, + {Type: &autoscalingv1.VerticalPodAutoscaler{}, Name: hcloud.CSIControllerName + "-vpa"}, }, }, }, @@ -121,6 +122,7 @@ var ( }, Objects: []*chart.Object{ // csi-driver + {Type: &storagev1.CSIDriver{}, Name: "csi.hetzner.cloud"}, {Type: &appsv1.DaemonSet{}, Name: hcloud.CSINodeName}, {Type: &corev1.ServiceAccount{}, Name: hcloud.CSIDriverName + "-node"}, {Type: &rbacv1.ClusterRole{}, Name: hcloud.UsernamePrefix + hcloud.CSIDriverName}, @@ -517,8 +519,9 @@ func (vp *valuesProvider) getControlPlaneShootChartValues( values := map[string]interface{}{ hcloud.CSINodeName: map[string]interface{}{ // "serverName": serverName, + // The hcloud-csi-driver >= v2 node service discovers its server via the + // metadata service and no longer needs an API token on the nodes. "clusterID": csiClusterID, - "token": credentials.CSI().Token, "kubernetesVersion": cluster.Shoot.Spec.Kubernetes.Version, }, } diff --git a/pkg/controller/controlplane/valuesprovider_test.go b/pkg/controller/controlplane/valuesprovider_test.go index 394f889cc..6833c3cc1 100644 --- a/pkg/controller/controlplane/valuesprovider_test.go +++ b/pkg/controller/controlplane/valuesprovider_test.go @@ -26,19 +26,19 @@ import ( "github.com/gardener/gardener/pkg/apis/extensions/v1alpha1" secretsmanager "github.com/gardener/gardener/pkg/utils/secrets/manager" fakesecretsmanager "github.com/gardener/gardener/pkg/utils/secrets/manager/fake" - mockmanager "github.com/gardener/gardener/third_party/mock/controller-runtime/manager" - "github.com/golang/mock/gomock" . "github.com/onsi/ginkgo/v2" . "github.com/onsi/gomega" + "go.uber.org/mock/gomock" corev1 "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/runtime" k8sclient "sigs.k8s.io/controller-runtime/pkg/client" fakeclient "sigs.k8s.io/controller-runtime/pkg/client/fake" - "github.com/23technologies/gardener-extension-provider-hcloud/pkg/hcloud/apis" - "github.com/23technologies/gardener-extension-provider-hcloud/pkg/hcloud/apis/mock" - hcloudv1alpha1 "github.com/23technologies/gardener-extension-provider-hcloud/pkg/hcloud/apis/v1alpha1" + "github.com/opendefensecloud/gardener-extension-provider-hcloud/pkg/hcloud/apis" + "github.com/opendefensecloud/gardener-extension-provider-hcloud/pkg/hcloud/apis/mock" + mockmanager "github.com/opendefensecloud/gardener-extension-provider-hcloud/pkg/hcloud/apis/mock/manager" + hcloudv1alpha1 "github.com/opendefensecloud/gardener-extension-provider-hcloud/pkg/hcloud/apis/v1alpha1" ) var ( diff --git a/pkg/controller/healthcheck/registration.go b/pkg/controller/healthcheck/registration.go index 947781ebf..51d9d66bf 100644 --- a/pkg/controller/healthcheck/registration.go +++ b/pkg/controller/healthcheck/registration.go @@ -21,28 +21,26 @@ import ( "context" "time" - extensionconfig "github.com/gardener/gardener/extensions/pkg/apis/config" + healthcheckconfigv1alpha1 "github.com/gardener/gardener/extensions/pkg/apis/config/v1alpha1" genericcontrolplaneactuator "github.com/gardener/gardener/extensions/pkg/controller/controlplane/genericactuator" "github.com/gardener/gardener/extensions/pkg/controller/healthcheck" "github.com/gardener/gardener/extensions/pkg/controller/healthcheck/general" "github.com/gardener/gardener/extensions/pkg/controller/healthcheck/worker" - extensionspredicate "github.com/gardener/gardener/extensions/pkg/predicate" gardencorev1beta1 "github.com/gardener/gardener/pkg/apis/core/v1beta1" extensionsv1alpha1 "github.com/gardener/gardener/pkg/apis/extensions/v1alpha1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/util/sets" "sigs.k8s.io/controller-runtime/pkg/client" "sigs.k8s.io/controller-runtime/pkg/manager" - "sigs.k8s.io/controller-runtime/pkg/predicate" - "github.com/23technologies/gardener-extension-provider-hcloud/pkg/hcloud" + "github.com/opendefensecloud/gardener-extension-provider-hcloud/pkg/hcloud" ) var ( defaultSyncPeriod = time.Second * 30 // DefaultAddOptions are the default DefaultAddArgs for AddToManager. DefaultAddOptions = healthcheck.DefaultAddArgs{ - HealthCheckConfig: extensionconfig.HealthCheckConfig{SyncPeriod: metav1.Duration{Duration: defaultSyncPeriod}}, + HealthCheckConfig: healthcheckconfigv1alpha1.HealthCheckConfig{SyncPeriod: metav1.Duration{Duration: defaultSyncPeriod}}, } ) @@ -54,14 +52,13 @@ var ( // opts healthcheck.DefaultAddArgs Options to add func RegisterHealthChecks(ctx context.Context, mgr manager.Manager, opts healthcheck.DefaultAddArgs) error { err := healthcheck.DefaultRegistration( - ctx, hcloud.Type, extensionsv1alpha1.SchemeGroupVersion.WithKind(extensionsv1alpha1.ControlPlaneResource), func() client.ObjectList { return &extensionsv1alpha1.ControlPlaneList{} }, func() extensionsv1alpha1.Object { return &extensionsv1alpha1.ControlPlane{} }, mgr, opts, - []predicate.Predicate{extensionspredicate.HasPurpose(extensionsv1alpha1.Normal)}, + nil, []healthcheck.ConditionTypeToHealthCheck{ { ConditionType: string(gardencorev1beta1.ShootControlPlaneHealthy), @@ -83,7 +80,6 @@ func RegisterHealthChecks(ctx context.Context, mgr manager.Manager, opts healthc } return healthcheck.DefaultRegistration( - ctx, hcloud.Type, extensionsv1alpha1.SchemeGroupVersion.WithKind(extensionsv1alpha1.WorkerResource), func() client.ObjectList { return &extensionsv1alpha1.WorkerList{} }, diff --git a/pkg/controller/infrastructure/actuator.go b/pkg/controller/infrastructure/actuator.go index 3c10306a3..cd6c93ee1 100644 --- a/pkg/controller/infrastructure/actuator.go +++ b/pkg/controller/infrastructure/actuator.go @@ -29,11 +29,11 @@ import ( "sigs.k8s.io/controller-runtime/pkg/client" "sigs.k8s.io/controller-runtime/pkg/manager" - "github.com/23technologies/gardener-extension-provider-hcloud/pkg/hcloud" - "github.com/23technologies/gardener-extension-provider-hcloud/pkg/hcloud/apis" - "github.com/23technologies/gardener-extension-provider-hcloud/pkg/hcloud/apis/controller" - "github.com/23technologies/gardener-extension-provider-hcloud/pkg/hcloud/apis/transcoder" - "github.com/23technologies/gardener-extension-provider-hcloud/pkg/hcloud/apis/v1alpha1" + "github.com/opendefensecloud/gardener-extension-provider-hcloud/pkg/hcloud" + "github.com/opendefensecloud/gardener-extension-provider-hcloud/pkg/hcloud/apis" + "github.com/opendefensecloud/gardener-extension-provider-hcloud/pkg/hcloud/apis/controller" + "github.com/opendefensecloud/gardener-extension-provider-hcloud/pkg/hcloud/apis/transcoder" + "github.com/opendefensecloud/gardener-extension-provider-hcloud/pkg/hcloud/apis/v1alpha1" ) type actuator struct { diff --git a/pkg/controller/infrastructure/actuator_delete.go b/pkg/controller/infrastructure/actuator_delete.go index c094054e0..f322214cc 100644 --- a/pkg/controller/infrastructure/actuator_delete.go +++ b/pkg/controller/infrastructure/actuator_delete.go @@ -23,9 +23,9 @@ import ( extensionscontroller "github.com/gardener/gardener/extensions/pkg/controller" extensionsv1alpha1 "github.com/gardener/gardener/pkg/apis/extensions/v1alpha1" - "github.com/23technologies/gardener-extension-provider-hcloud/pkg/controller/infrastructure/ensurer" - "github.com/23technologies/gardener-extension-provider-hcloud/pkg/hcloud/apis" - "github.com/23technologies/gardener-extension-provider-hcloud/pkg/hcloud/apis/transcoder" + "github.com/opendefensecloud/gardener-extension-provider-hcloud/pkg/controller/infrastructure/ensurer" + "github.com/opendefensecloud/gardener-extension-provider-hcloud/pkg/hcloud/apis" + "github.com/opendefensecloud/gardener-extension-provider-hcloud/pkg/hcloud/apis/transcoder" ) // delete deletes the infrastructure config. diff --git a/pkg/controller/infrastructure/actuator_reconcile.go b/pkg/controller/infrastructure/actuator_reconcile.go index a26817e75..8fcea16da 100644 --- a/pkg/controller/infrastructure/actuator_reconcile.go +++ b/pkg/controller/infrastructure/actuator_reconcile.go @@ -25,11 +25,11 @@ import ( extensionsv1alpha1 "github.com/gardener/gardener/pkg/apis/extensions/v1alpha1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" - "github.com/23technologies/gardener-extension-provider-hcloud/pkg/controller/infrastructure/ensurer" - "github.com/23technologies/gardener-extension-provider-hcloud/pkg/hcloud/apis" - "github.com/23technologies/gardener-extension-provider-hcloud/pkg/hcloud/apis/controller" - "github.com/23technologies/gardener-extension-provider-hcloud/pkg/hcloud/apis/transcoder" - "github.com/23technologies/gardener-extension-provider-hcloud/pkg/hcloud/apis/v1alpha1" + "github.com/opendefensecloud/gardener-extension-provider-hcloud/pkg/controller/infrastructure/ensurer" + "github.com/opendefensecloud/gardener-extension-provider-hcloud/pkg/hcloud/apis" + "github.com/opendefensecloud/gardener-extension-provider-hcloud/pkg/hcloud/apis/controller" + "github.com/opendefensecloud/gardener-extension-provider-hcloud/pkg/hcloud/apis/transcoder" + "github.com/opendefensecloud/gardener-extension-provider-hcloud/pkg/hcloud/apis/v1alpha1" ) // reconcile reconciles the infrastructure config. diff --git a/pkg/controller/infrastructure/actuator_reconcile_test.go b/pkg/controller/infrastructure/actuator_reconcile_test.go index 61ec39d84..85e5ee0ea 100644 --- a/pkg/controller/infrastructure/actuator_reconcile_test.go +++ b/pkg/controller/infrastructure/actuator_reconcile_test.go @@ -22,20 +22,20 @@ import ( "github.com/gardener/gardener/extensions/pkg/controller/infrastructure" "github.com/gardener/gardener/pkg/extensions" - mockclient "github.com/gardener/gardener/third_party/mock/controller-runtime/client" - mockmanager "github.com/gardener/gardener/third_party/mock/controller-runtime/manager" "github.com/go-logr/logr" - "github.com/golang/mock/gomock" . "github.com/onsi/ginkgo/v2" . "github.com/onsi/gomega" + "go.uber.org/mock/gomock" corev1 "k8s.io/api/core/v1" "k8s.io/apimachinery/pkg/runtime" "k8s.io/client-go/rest" k8sclient "sigs.k8s.io/controller-runtime/pkg/client" - "github.com/23technologies/gardener-extension-provider-hcloud/pkg/hcloud/apis" - "github.com/23technologies/gardener-extension-provider-hcloud/pkg/hcloud/apis/mock" - hcloudv1alpha1 "github.com/23technologies/gardener-extension-provider-hcloud/pkg/hcloud/apis/v1alpha1" + "github.com/opendefensecloud/gardener-extension-provider-hcloud/pkg/hcloud/apis" + "github.com/opendefensecloud/gardener-extension-provider-hcloud/pkg/hcloud/apis/mock" + mockclient "github.com/opendefensecloud/gardener-extension-provider-hcloud/pkg/hcloud/apis/mock/client" + mockmanager "github.com/opendefensecloud/gardener-extension-provider-hcloud/pkg/hcloud/apis/mock/manager" + hcloudv1alpha1 "github.com/opendefensecloud/gardener-extension-provider-hcloud/pkg/hcloud/apis/v1alpha1" ) var ( diff --git a/pkg/controller/infrastructure/ensurer/networks.go b/pkg/controller/infrastructure/ensurer/networks.go index 1bccab8c4..87dbf9696 100644 --- a/pkg/controller/infrastructure/ensurer/networks.go +++ b/pkg/controller/infrastructure/ensurer/networks.go @@ -24,8 +24,8 @@ import ( "github.com/hetznercloud/hcloud-go/v2/hcloud" - "github.com/23technologies/gardener-extension-provider-hcloud/pkg/hcloud/apis" - "github.com/23technologies/gardener-extension-provider-hcloud/pkg/hcloud/apis/controller" + "github.com/opendefensecloud/gardener-extension-provider-hcloud/pkg/hcloud/apis" + "github.com/opendefensecloud/gardener-extension-provider-hcloud/pkg/hcloud/apis/controller" ) // EnsureNetworks verifies the network resources requested are available. diff --git a/pkg/controller/infrastructure/ensurer/ssh_public_key.go b/pkg/controller/infrastructure/ensurer/ssh_public_key.go index 6603f1e8e..c9b979b55 100644 --- a/pkg/controller/infrastructure/ensurer/ssh_public_key.go +++ b/pkg/controller/infrastructure/ensurer/ssh_public_key.go @@ -25,9 +25,9 @@ import ( extensionsv1alpha1 "github.com/gardener/gardener/pkg/apis/extensions/v1alpha1" "github.com/hetznercloud/hcloud-go/v2/hcloud" - "github.com/23technologies/gardener-extension-provider-hcloud/pkg/hcloud/apis" - "github.com/23technologies/gardener-extension-provider-hcloud/pkg/hcloud/apis/controller" - "github.com/23technologies/gardener-extension-provider-hcloud/pkg/hcloud/apis/transcoder" + "github.com/opendefensecloud/gardener-extension-provider-hcloud/pkg/hcloud/apis" + "github.com/opendefensecloud/gardener-extension-provider-hcloud/pkg/hcloud/apis/controller" + "github.com/opendefensecloud/gardener-extension-provider-hcloud/pkg/hcloud/apis/transcoder" ) // EnsureSSHPublicKey verifies that the SSH public key resource requested is available. diff --git a/pkg/controller/infrastructure/registration.go b/pkg/controller/infrastructure/registration.go index 56df44f0b..75e3de4d7 100644 --- a/pkg/controller/infrastructure/registration.go +++ b/pkg/controller/infrastructure/registration.go @@ -25,7 +25,7 @@ import ( "sigs.k8s.io/controller-runtime/pkg/controller" "sigs.k8s.io/controller-runtime/pkg/manager" - "github.com/23technologies/gardener-extension-provider-hcloud/pkg/hcloud" + "github.com/opendefensecloud/gardener-extension-provider-hcloud/pkg/hcloud" ) var ( @@ -40,8 +40,9 @@ type AddOptions struct { // IgnoreOperationAnnotation specifies whether to ignore the operation annotation or not. IgnoreOperationAnnotation bool // GardenId is the Gardener garden identity - GardenId string - ExtensionClass extensionsv1alpha1.ExtensionClass + GardenId string + // ExtensionClasses are the extension classes this controller is responsible for. + ExtensionClasses []extensionsv1alpha1.ExtensionClass } // AddToManagerWithOptions adds a controller with the given Options to the given manager. @@ -51,12 +52,12 @@ type AddOptions struct { // mgr manager.Manager Infrastructure controller manager instance // opts AddOptions Options to add func AddToManagerWithOptions(ctx context.Context, mgr manager.Manager, opts AddOptions) error { - return infrastructure.Add(ctx, mgr, infrastructure.AddArgs{ + return infrastructure.Add(mgr, infrastructure.AddArgs{ Actuator: NewActuator(mgr, opts.GardenId), ControllerOptions: opts.Controller, Predicates: infrastructure.DefaultPredicates(ctx, mgr, opts.IgnoreOperationAnnotation), Type: hcloud.Type, - ExtensionClass: opts.ExtensionClass, + ExtensionClasses: opts.ExtensionClasses, }) } diff --git a/pkg/controller/worker/actuator.go b/pkg/controller/worker/actuator.go index 200e2daf1..5d1e5442d 100644 --- a/pkg/controller/worker/actuator.go +++ b/pkg/controller/worker/actuator.go @@ -37,10 +37,10 @@ import ( "sigs.k8s.io/controller-runtime/pkg/log" "sigs.k8s.io/controller-runtime/pkg/manager" - "github.com/23technologies/gardener-extension-provider-hcloud/pkg/hcloud" - "github.com/23technologies/gardener-extension-provider-hcloud/pkg/hcloud/apis" - "github.com/23technologies/gardener-extension-provider-hcloud/pkg/hcloud/apis/controller" - "github.com/23technologies/gardener-extension-provider-hcloud/pkg/hcloud/apis/v1alpha1" + "github.com/opendefensecloud/gardener-extension-provider-hcloud/pkg/hcloud" + "github.com/opendefensecloud/gardener-extension-provider-hcloud/pkg/hcloud/apis" + "github.com/opendefensecloud/gardener-extension-provider-hcloud/pkg/hcloud/apis/controller" + "github.com/opendefensecloud/gardener-extension-provider-hcloud/pkg/hcloud/apis/v1alpha1" ) type delegateFactory struct { diff --git a/pkg/controller/worker/actuator_hooks.go b/pkg/controller/worker/actuator_hooks.go index 47481e06b..1d94bfa29 100644 --- a/pkg/controller/worker/actuator_hooks.go +++ b/pkg/controller/worker/actuator_hooks.go @@ -23,8 +23,9 @@ import ( hcloud "github.com/hetznercloud/hcloud-go/v2/hcloud" - "github.com/23technologies/gardener-extension-provider-hcloud/pkg/controller/worker/ensurer" - "github.com/23technologies/gardener-extension-provider-hcloud/pkg/hcloud/apis/transcoder" + "github.com/opendefensecloud/gardener-extension-provider-hcloud/pkg/controller/worker/ensurer" + "github.com/opendefensecloud/gardener-extension-provider-hcloud/pkg/hcloud/apis" + "github.com/opendefensecloud/gardener-extension-provider-hcloud/pkg/hcloud/apis/transcoder" ) // PreReconcileHook is a hook called at the beginning of the worker reconciliation flow. @@ -32,27 +33,34 @@ import ( // PARAMETERS // _ context.Context Execution context func (w *workerDelegate) PreReconcileHook(ctx context.Context) error { - test, _, _ := w.hclient.ServerType.List(ctx, hcloud.ServerTypeListOpts{}) - srvTypeIdToName := make(map[int64]string, len(test)) + serverTypes, _, err := w.hclient.ServerType.List(ctx, hcloud.ServerTypeListOpts{}) + if err != nil { + return fmt.Errorf("unable to list server types: %w", err) + } - for _, srvType := range test { - srvTypeIdToName[srvType.ID] = srvType.Name + serverTypesByName := make(map[string]*hcloud.ServerType, len(serverTypes)) + for _, serverType := range serverTypes { + serverTypesByName[serverType.Name] = serverType } for _, pool := range w.worker.Spec.Pools { // currently there is only one zone per region on hetzner. - zone := pool.Zones[0] - dc, _, _ := w.hclient.Datacenter.Get(ctx, zone) + locationName := apis.GetRegionFromZone(pool.Zones[0]) + + serverType, ok := serverTypesByName[pool.MachineType] + if !ok { + return fmt.Errorf("Machine Type %s does not exist", pool.MachineType) + } machineTypeAvailable := false - for _, curServerType := range dc.ServerTypes.Available { - if pool.MachineType == srvTypeIdToName[curServerType.ID] { + for _, serverTypeLocation := range serverType.Locations { + if serverTypeLocation.Available && serverTypeLocation.Location != nil && serverTypeLocation.Location.Name == locationName { machineTypeAvailable = true break } } if !machineTypeAvailable { - return fmt.Errorf("Machine Type %s is currently not availbe in %s", pool.MachineType, dc.Name) + return fmt.Errorf("Machine Type %s is currently not available in %s", pool.MachineType, locationName) } } @@ -70,7 +78,7 @@ func (w *workerDelegate) PreReconcileHook(ctx context.Context) error { updateErr := w.updateProviderStatus(ctx, workerStatus) if updateErr != nil { - return fmt.Errorf("%s: %w", err.Error(), updateErr) + return fmt.Errorf("failed to update provider status after ensuring placement groups: %w", updateErr) } return nil diff --git a/pkg/controller/worker/ensurer/placement_group.go b/pkg/controller/worker/ensurer/placement_group.go index c0427f799..c9598fb26 100644 --- a/pkg/controller/worker/ensurer/placement_group.go +++ b/pkg/controller/worker/ensurer/placement_group.go @@ -24,7 +24,7 @@ import ( "github.com/gardener/gardener/pkg/apis/extensions/v1alpha1" "github.com/hetznercloud/hcloud-go/v2/hcloud" - "github.com/23technologies/gardener-extension-provider-hcloud/pkg/hcloud/apis/transcoder" + "github.com/opendefensecloud/gardener-extension-provider-hcloud/pkg/hcloud/apis/transcoder" ) // EnsurePlacementGroups verifies that the placement groups requested are available. diff --git a/pkg/controller/worker/machine_controller_manager.go b/pkg/controller/worker/machine_controller_manager.go deleted file mode 100644 index b293a94c8..000000000 --- a/pkg/controller/worker/machine_controller_manager.go +++ /dev/null @@ -1,102 +0,0 @@ -/* -Copyright (c) 2021 SAP SE or an SAP affiliate company. All rights reserved. - -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. -*/ - -// Package worker contains functions used at the worker controller -package worker - -import ( - "context" - "fmt" - "path/filepath" - - extensionscontroller "github.com/gardener/gardener/extensions/pkg/controller" - v1beta1constants "github.com/gardener/gardener/pkg/apis/core/v1beta1/constants" - "github.com/gardener/gardener/pkg/utils/chart" - appsv1 "k8s.io/api/apps/v1" - corev1 "k8s.io/api/core/v1" - rbacv1 "k8s.io/api/rbac/v1" - "sigs.k8s.io/controller-runtime/pkg/client" - - "github.com/23technologies/gardener-extension-provider-hcloud/charts" - "github.com/23technologies/gardener-extension-provider-hcloud/pkg/hcloud" -) - -var ( - mcmChart = &chart.Chart{ - Name: hcloud.MachineControllerManagerName, - EmbeddedFS: charts.InternalChart, - Path: filepath.Join(charts.InternalChartsPath, hcloud.MachineControllerManagerName, "seed"), - Images: []string{hcloud.MachineControllerManagerImageName, hcloud.MCMProviderHcloudImageName}, - Objects: []*chart.Object{ - {Type: &appsv1.Deployment{}, Name: hcloud.MachineControllerManagerName}, - {Type: &corev1.Service{}, Name: hcloud.MachineControllerManagerName}, - {Type: &corev1.ServiceAccount{}, Name: hcloud.MachineControllerManagerName}, - {Type: &corev1.Secret{}, Name: hcloud.MachineControllerManagerName}, - {Type: extensionscontroller.GetVerticalPodAutoscalerObject(), Name: hcloud.MachineControllerManagerVpaName}, - {Type: &corev1.ConfigMap{}, Name: hcloud.MachineControllerManagerMonitoringConfigName}, - }, - } - - mcmShootChart = &chart.Chart{ - Name: hcloud.MachineControllerManagerName, - EmbeddedFS: charts.InternalChart, - Path: filepath.Join(charts.InternalChartsPath, hcloud.MachineControllerManagerName, "shoot"), - Objects: []*chart.Object{ - {Type: &rbacv1.ClusterRole{}, Name: fmt.Sprintf("extensions.gardener.cloud:%s:%s", hcloud.Name, hcloud.MachineControllerManagerName)}, - {Type: &rbacv1.ClusterRoleBinding{}, Name: fmt.Sprintf("extensions.gardener.cloud:%s:%s", hcloud.Name, hcloud.MachineControllerManagerName)}, - }, - } -) - -// GetMachineControllerManagerChartValues returns chart values relevant for the MCM instance. -// -// PARAMETERS -// ctx context.Context Execution context -func (w *workerDelegate) GetMachineControllerManagerChartValues(ctx context.Context) (map[string]interface{}, error) { - namespace := &corev1.Namespace{} - if err := w.client.Get(ctx, client.ObjectKey{Name: w.worker.Namespace}, namespace); err != nil { - return nil, err - } - - return map[string]interface{}{ - "providerName": hcloud.Name, - "namespace": map[string]interface{}{ - "uid": namespace.UID, - }, - "podLabels": map[string]interface{}{ - v1beta1constants.LabelPodMaintenanceRestart: "true", - }, - }, nil -} - -// GetMachineControllerManagerShootChartValues returns chart values relevant for the MCM shoot instance. -// -// PARAMETERS -// ctx context.Context Execution context -func (w *workerDelegate) GetMachineControllerManagerShootChartValues(ctx context.Context) (map[string]interface{}, error) { - return map[string]interface{}{ - "providerName": hcloud.Name, - }, nil -} - -// GetMachineControllerManagerCloudCredentials should return the IaaS credentials -// with the secret keys used by the machine-controller-manager. -// -// PARAMETERS -// ctx context.Context Execution context -func (w *workerDelegate) GetMachineControllerManagerCloudCredentials(ctx context.Context) (map[string][]byte, error) { - return w.generateMachineClassSecretData(ctx) -} diff --git a/pkg/controller/worker/machine_images.go b/pkg/controller/worker/machine_images.go index c4d64fbef..95b6d6109 100644 --- a/pkg/controller/worker/machine_images.go +++ b/pkg/controller/worker/machine_images.go @@ -24,9 +24,9 @@ import ( "github.com/gardener/gardener/extensions/pkg/controller/worker" hcloudclient "github.com/hetznercloud/hcloud-go/v2/hcloud" - "github.com/23technologies/gardener-extension-provider-hcloud/pkg/hcloud" - "github.com/23technologies/gardener-extension-provider-hcloud/pkg/hcloud/apis" - "github.com/23technologies/gardener-extension-provider-hcloud/pkg/hcloud/apis/transcoder" + "github.com/opendefensecloud/gardener-extension-provider-hcloud/pkg/hcloud" + "github.com/opendefensecloud/gardener-extension-provider-hcloud/pkg/hcloud/apis" + "github.com/opendefensecloud/gardener-extension-provider-hcloud/pkg/hcloud/apis/transcoder" ) // findMachineImageName returns the image name for the given name and version values. diff --git a/pkg/controller/worker/machines.go b/pkg/controller/worker/machines.go index c45adc16f..e2c3201e6 100644 --- a/pkg/controller/worker/machines.go +++ b/pkg/controller/worker/machines.go @@ -25,16 +25,19 @@ import ( extensionscontroller "github.com/gardener/gardener/extensions/pkg/controller" "github.com/gardener/gardener/extensions/pkg/controller/worker" genericworkeractuator "github.com/gardener/gardener/extensions/pkg/controller/worker/genericactuator" + gardencorev1beta1helper "github.com/gardener/gardener/pkg/api/core/v1beta1/helper" corev1beta1 "github.com/gardener/gardener/pkg/apis/core/v1beta1" "github.com/gardener/gardener/pkg/client/kubernetes" + machinev1alpha1 "github.com/gardener/machine-controller-manager/pkg/apis/machine/v1alpha1" mcmv1alpha1 "github.com/gardener/machine-controller-manager/pkg/apis/machine/v1alpha1" corev1 "k8s.io/api/core/v1" + "k8s.io/utils/ptr" "sigs.k8s.io/controller-runtime/pkg/client" - "github.com/23technologies/gardener-extension-provider-hcloud/charts" - "github.com/23technologies/gardener-extension-provider-hcloud/pkg/hcloud" - "github.com/23technologies/gardener-extension-provider-hcloud/pkg/hcloud/apis" - "github.com/23technologies/gardener-extension-provider-hcloud/pkg/hcloud/apis/transcoder" + "github.com/opendefensecloud/gardener-extension-provider-hcloud/charts" + "github.com/opendefensecloud/gardener-extension-provider-hcloud/pkg/hcloud" + "github.com/opendefensecloud/gardener-extension-provider-hcloud/pkg/hcloud/apis" + "github.com/opendefensecloud/gardener-extension-provider-hcloud/pkg/hcloud/apis/transcoder" ) // MachineClassKind yields the name of the machine class. @@ -147,6 +150,8 @@ func (w *workerDelegate) generateMachineConfig(ctx context.Context) error { } for _, pool := range w.worker.Spec.Pools { + zoneLen := int32(len(pool.Zones)) // #nosec: G115 - We validate if num pool zones exceeds max_int32. + workerPoolHash, err := worker.WorkerPoolHash(pool, w.cluster, nil, nil) if err != nil { return err @@ -167,8 +172,8 @@ func (w *workerDelegate) generateMachineConfig(ctx context.Context) error { return err } - for _, zone := range pool.Zones { - + for zoneIndex, zone := range pool.Zones { + zoneIdx := int32(zoneIndex) // #nosec: G115 - We validate if num pool zones exceeds max_int32. secretMap := map[string]interface{}{ "userData": string(userData), } @@ -213,14 +218,40 @@ func (w *workerDelegate) generateMachineConfig(ctx context.Context) error { deploymentName := fmt.Sprintf("%s-%s-%s", w.worker.Namespace, pool.Name, zone) className := fmt.Sprintf("%s-%s", deploymentName, workerPoolHash) + updateConfiguration := machinev1alpha1.UpdateConfiguration{ + MaxUnavailable: ptr.To(worker.DistributePositiveIntOrPercent(zoneIdx, pool.MaxUnavailable, zoneLen, pool.Minimum)), + MaxSurge: ptr.To(worker.DistributePositiveIntOrPercent(zoneIdx, pool.MaxSurge, zoneLen, pool.Maximum)), + } + + machineDeploymentStrategy := machinev1alpha1.MachineDeploymentStrategy{ + Type: machinev1alpha1.RollingUpdateMachineDeploymentStrategyType, + RollingUpdate: &machinev1alpha1.RollingUpdateMachineDeployment{ + UpdateConfiguration: updateConfiguration, + }, + } + + if gardencorev1beta1helper.IsUpdateStrategyInPlace(pool.UpdateStrategy) { + machineDeploymentStrategy = machinev1alpha1.MachineDeploymentStrategy{ + Type: machinev1alpha1.InPlaceUpdateMachineDeploymentStrategyType, + InPlaceUpdate: &machinev1alpha1.InPlaceUpdateMachineDeployment{ + UpdateConfiguration: updateConfiguration, + OrchestrationType: machinev1alpha1.OrchestrationTypeAuto, + }, + } + + if gardencorev1beta1helper.IsUpdateStrategyManualInPlace(pool.UpdateStrategy) { + machineDeploymentStrategy.InPlaceUpdate.OrchestrationType = machinev1alpha1.OrchestrationTypeManual + } + } + machineDeployments = append(machineDeployments, worker.MachineDeployment{ Name: deploymentName, ClassName: className, SecretName: className, Minimum: pool.Minimum, Maximum: pool.Maximum, - MaxSurge: pool.MaxSurge, - MaxUnavailable: pool.MaxUnavailable, + Priority: pool.Priority, + Strategy: machineDeploymentStrategy, Labels: pool.Labels, Annotations: pool.Annotations, Taints: pool.Taints, diff --git a/pkg/controller/worker/machines_test.go b/pkg/controller/worker/machines_test.go index 7af91cbf9..3b05312d9 100644 --- a/pkg/controller/worker/machines_test.go +++ b/pkg/controller/worker/machines_test.go @@ -28,18 +28,18 @@ import ( "github.com/gardener/gardener/pkg/apis/extensions/v1alpha1" gardenerclient "github.com/gardener/gardener/pkg/client/kubernetes" mockkubernetes "github.com/gardener/gardener/pkg/client/kubernetes/mock" - mockclient "github.com/gardener/gardener/third_party/mock/controller-runtime/client" - "github.com/golang/mock/gomock" . "github.com/onsi/ginkgo/v2" . "github.com/onsi/gomega" + "go.uber.org/mock/gomock" corev1 "k8s.io/api/core/v1" "k8s.io/apimachinery/pkg/runtime" k8sclient "sigs.k8s.io/controller-runtime/pkg/client" - "github.com/23technologies/gardener-extension-provider-hcloud/charts" - "github.com/23technologies/gardener-extension-provider-hcloud/pkg/hcloud/apis" - "github.com/23technologies/gardener-extension-provider-hcloud/pkg/hcloud/apis/mock" - hcloudv1alpha1 "github.com/23technologies/gardener-extension-provider-hcloud/pkg/hcloud/apis/v1alpha1" + "github.com/opendefensecloud/gardener-extension-provider-hcloud/charts" + "github.com/opendefensecloud/gardener-extension-provider-hcloud/pkg/hcloud/apis" + "github.com/opendefensecloud/gardener-extension-provider-hcloud/pkg/hcloud/apis/mock" + mockclient "github.com/opendefensecloud/gardener-extension-provider-hcloud/pkg/hcloud/apis/mock/client" + hcloudv1alpha1 "github.com/opendefensecloud/gardener-extension-provider-hcloud/pkg/hcloud/apis/v1alpha1" ) // newWorkerDelegate creates a new context for a worker reconciliation. @@ -112,7 +112,7 @@ var _ = Describe("Machines", func() { expect expect } - machineClassName := fmt.Sprintf("%s-%s-%s-%s", mock.TestNamespace, mock.TestWorkerPoolName, mock.TestZone, "2ef7b") + machineClassName := fmt.Sprintf("%s-%s-%s-%s", mock.TestNamespace, mock.TestWorkerPoolName, mock.TestZone, "48c9a") DescribeTable("##table", func(data *data) { diff --git a/pkg/controller/worker/registration.go b/pkg/controller/worker/registration.go index f16defef4..16b01b44f 100644 --- a/pkg/controller/worker/registration.go +++ b/pkg/controller/worker/registration.go @@ -29,7 +29,7 @@ import ( "sigs.k8s.io/controller-runtime/pkg/controller" "sigs.k8s.io/controller-runtime/pkg/manager" - "github.com/23technologies/gardener-extension-provider-hcloud/pkg/hcloud" + "github.com/opendefensecloud/gardener-extension-provider-hcloud/pkg/hcloud" ) var ( @@ -44,8 +44,9 @@ type AddOptions struct { // IgnoreOperationAnnotation specifies whether to ignore the operation annotation or not. IgnoreOperationAnnotation bool // GardenCluster is the garden cluster object. - GardenCluster cluster.Cluster - ExtensionClass extensionsv1alpha1.ExtensionClass + GardenCluster cluster.Cluster + // ExtensionClasses are the extension classes this controller is responsible for. + ExtensionClasses []extensionsv1alpha1.ExtensionClass } // AddToManagerWithOptions adds a controller with the given Options to the given manager. @@ -73,7 +74,7 @@ func AddToManagerWithOptions(ctx context.Context, mgr manager.Manager, opts AddO ControllerOptions: opts.Controller, Predicates: worker.DefaultPredicates(ctx, mgr, opts.IgnoreOperationAnnotation), Type: hcloud.Type, - ExtensionClass: opts.ExtensionClass, + ExtensionClasses: opts.ExtensionClasses, }) } diff --git a/pkg/hcloud/apis/config/doc.go b/pkg/hcloud/apis/config/doc.go index 9d8eb33b6..940f64ea2 100644 --- a/pkg/hcloud/apis/config/doc.go +++ b/pkg/hcloud/apis/config/doc.go @@ -20,4 +20,4 @@ limitations under the License. //go:generate ../../../../hack/update-codegen.sh // Package config provides hcloud.provider.extensions.config.gardener.cloud -package config // import "github.com/23technologies/gardener-extension-provider-hcloud/pkg/hcloud/apis/config" +package config // import "github.com/opendefensecloud/gardener-extension-provider-hcloud/pkg/hcloud/apis/config" diff --git a/pkg/hcloud/apis/config/install/install.go b/pkg/hcloud/apis/config/install/install.go index 9ff1f392a..cfa9138ca 100644 --- a/pkg/hcloud/apis/config/install/install.go +++ b/pkg/hcloud/apis/config/install/install.go @@ -21,8 +21,8 @@ import ( "k8s.io/apimachinery/pkg/runtime" utilruntime "k8s.io/apimachinery/pkg/util/runtime" - "github.com/23technologies/gardener-extension-provider-hcloud/pkg/hcloud/apis/config" - "github.com/23technologies/gardener-extension-provider-hcloud/pkg/hcloud/apis/config/v1alpha1" + "github.com/opendefensecloud/gardener-extension-provider-hcloud/pkg/hcloud/apis/config" + "github.com/opendefensecloud/gardener-extension-provider-hcloud/pkg/hcloud/apis/config/v1alpha1" ) var ( diff --git a/pkg/hcloud/apis/config/loader/loader.go b/pkg/hcloud/apis/config/loader/loader.go index 9607254b3..73c2e9b54 100644 --- a/pkg/hcloud/apis/config/loader/loader.go +++ b/pkg/hcloud/apis/config/loader/loader.go @@ -25,8 +25,8 @@ import ( "k8s.io/apimachinery/pkg/runtime/serializer/json" "k8s.io/apimachinery/pkg/runtime/serializer/versioning" - "github.com/23technologies/gardener-extension-provider-hcloud/pkg/hcloud/apis/config" - "github.com/23technologies/gardener-extension-provider-hcloud/pkg/hcloud/apis/config/install" + "github.com/opendefensecloud/gardener-extension-provider-hcloud/pkg/hcloud/apis/config" + "github.com/opendefensecloud/gardener-extension-provider-hcloud/pkg/hcloud/apis/config/install" ) var ( diff --git a/pkg/hcloud/apis/config/types.go b/pkg/hcloud/apis/config/types.go index fbe2d9bcd..eb633818f 100644 --- a/pkg/hcloud/apis/config/types.go +++ b/pkg/hcloud/apis/config/types.go @@ -18,10 +18,10 @@ limitations under the License. package config import ( - extensionconfig "github.com/gardener/gardener/extensions/pkg/apis/config" + healthcheckconfigv1alpha1 "github.com/gardener/gardener/extensions/pkg/apis/config/v1alpha1" "k8s.io/apimachinery/pkg/api/resource" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" - "k8s.io/component-base/config" + componentbaseconfigv1alpha1 "k8s.io/component-base/config/v1alpha1" ) // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object @@ -35,12 +35,12 @@ type ControllerConfiguration struct { // ClientConnection specifies the kubeconfig file and client connection // settings for the proxy server to use when communicating with the apiserver. // +optional - ClientConnection *config.ClientConnectionConfiguration `json:"clientConnection,omitempty"` + ClientConnection *componentbaseconfigv1alpha1.ClientConnectionConfiguration `json:"clientConnection,omitempty"` // ETCD is the etcd configuration. ETCD *ETCD `json:"etcd"` // HealthCheckConfig is the config for the health check controller // +optional - HealthCheckConfig *extensionconfig.HealthCheckConfig `json:"healthCheckConfig,omitempty"` + HealthCheckConfig *healthcheckconfigv1alpha1.HealthCheckConfig `json:"healthCheckConfig,omitempty"` // HealthProbeBindAddress is the TCP address that the controller should bind to // for serving health probes // It can be set to "0" to disable the health probes listener. diff --git a/pkg/hcloud/apis/config/v1alpha1/doc.go b/pkg/hcloud/apis/config/v1alpha1/doc.go index e699a31ce..1fbe90835 100644 --- a/pkg/hcloud/apis/config/v1alpha1/doc.go +++ b/pkg/hcloud/apis/config/v1alpha1/doc.go @@ -15,7 +15,7 @@ limitations under the License. */ // +k8s:deepcopy-gen=package -// +k8s:conversion-gen=github.com/23technologies/gardener-extension-provider-hcloud/pkg/hcloud/apis/config +// +k8s:conversion-gen=github.com/opendefensecloud/gardener-extension-provider-hcloud/pkg/hcloud/apis/config // +k8s:openapi-gen=true // +k8s:defaulter-gen=TypeMeta // +groupName=hcloud.provider.extensions.config.gardener.cloud @@ -23,4 +23,4 @@ limitations under the License. //go:generate ../../../../../hack/update-codegen.sh // Package v1alpha1 provides hcloud.provider.extensions.config.gardener.cloud/v1alpha1 -package v1alpha1 // import "github.com/23technologies/gardener-extension-provider-hcloud/pkg/hcloud/apis/config/v1alpha1" +package v1alpha1 // import "github.com/opendefensecloud/gardener-extension-provider-hcloud/pkg/hcloud/apis/config/v1alpha1" diff --git a/pkg/hcloud/apis/config/v1alpha1/types.go b/pkg/hcloud/apis/config/v1alpha1/types.go index fddeebaa8..56d447810 100644 --- a/pkg/hcloud/apis/config/v1alpha1/types.go +++ b/pkg/hcloud/apis/config/v1alpha1/types.go @@ -18,7 +18,7 @@ limitations under the License. package v1alpha1 import ( - extensionconfig "github.com/gardener/gardener/extensions/pkg/apis/config" + healthcheckconfigv1alpha1 "github.com/gardener/gardener/extensions/pkg/apis/config/v1alpha1" "k8s.io/apimachinery/pkg/api/resource" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/component-base/config" @@ -41,7 +41,7 @@ type ControllerConfiguration struct { ETCD *ETCD `json:"etcd"` // HealthCheckConfig is the config for the health check controller // +optional - HealthCheckConfig *extensionconfig.HealthCheckConfig `json:"healthCheckConfig,omitempty"` + HealthCheckConfig *healthcheckconfigv1alpha1.HealthCheckConfig `json:"healthCheckConfig,omitempty"` // HealthProbeBindAddress is the TCP address that the controller should bind to // for serving health probes // It can be set to "0" to disable the health probes listener. diff --git a/pkg/hcloud/apis/config/v1alpha1/zz_generated.conversion.go b/pkg/hcloud/apis/config/v1alpha1/zz_generated.conversion.go index 3be15b35f..0c89dc98e 100644 --- a/pkg/hcloud/apis/config/v1alpha1/zz_generated.conversion.go +++ b/pkg/hcloud/apis/config/v1alpha1/zz_generated.conversion.go @@ -12,12 +12,13 @@ package v1alpha1 import ( unsafe "unsafe" - config "github.com/23technologies/gardener-extension-provider-hcloud/pkg/hcloud/apis/config" - apisconfig "github.com/gardener/gardener/extensions/pkg/apis/config" + apisconfigv1alpha1 "github.com/gardener/gardener/extensions/pkg/apis/config/v1alpha1" + config "github.com/opendefensecloud/gardener-extension-provider-hcloud/pkg/hcloud/apis/config" resource "k8s.io/apimachinery/pkg/api/resource" conversion "k8s.io/apimachinery/pkg/conversion" runtime "k8s.io/apimachinery/pkg/runtime" componentbaseconfig "k8s.io/component-base/config" + configv1alpha1 "k8s.io/component-base/config/v1alpha1" ) func init() { @@ -62,9 +63,9 @@ func RegisterConversions(s *runtime.Scheme) error { func autoConvert_v1alpha1_ControllerConfiguration_To_config_ControllerConfiguration(in *ControllerConfiguration, out *config.ControllerConfiguration, s conversion.Scope) error { out.GardenId = in.GardenId - out.ClientConnection = (*componentbaseconfig.ClientConnectionConfiguration)(unsafe.Pointer(in.ClientConnection)) + out.ClientConnection = (*configv1alpha1.ClientConnectionConfiguration)(unsafe.Pointer(in.ClientConnection)) out.ETCD = (*config.ETCD)(unsafe.Pointer(in.ETCD)) - out.HealthCheckConfig = (*apisconfig.HealthCheckConfig)(unsafe.Pointer(in.HealthCheckConfig)) + out.HealthCheckConfig = (*apisconfigv1alpha1.HealthCheckConfig)(unsafe.Pointer(in.HealthCheckConfig)) out.HealthProbeBindAddress = in.HealthProbeBindAddress out.MetricsBindAddress = in.MetricsBindAddress return nil @@ -79,7 +80,7 @@ func autoConvert_config_ControllerConfiguration_To_v1alpha1_ControllerConfigurat out.GardenId = in.GardenId out.ClientConnection = (*componentbaseconfig.ClientConnectionConfiguration)(unsafe.Pointer(in.ClientConnection)) out.ETCD = (*ETCD)(unsafe.Pointer(in.ETCD)) - out.HealthCheckConfig = (*apisconfig.HealthCheckConfig)(unsafe.Pointer(in.HealthCheckConfig)) + out.HealthCheckConfig = (*apisconfigv1alpha1.HealthCheckConfig)(unsafe.Pointer(in.HealthCheckConfig)) out.HealthProbeBindAddress = in.HealthProbeBindAddress out.MetricsBindAddress = in.MetricsBindAddress return nil diff --git a/pkg/hcloud/apis/config/v1alpha1/zz_generated.deepcopy.go b/pkg/hcloud/apis/config/v1alpha1/zz_generated.deepcopy.go index 8ecdd895d..a20c0c345 100644 --- a/pkg/hcloud/apis/config/v1alpha1/zz_generated.deepcopy.go +++ b/pkg/hcloud/apis/config/v1alpha1/zz_generated.deepcopy.go @@ -10,7 +10,7 @@ package v1alpha1 import ( - apisconfig "github.com/gardener/gardener/extensions/pkg/apis/config" + configv1alpha1 "github.com/gardener/gardener/extensions/pkg/apis/config/v1alpha1" runtime "k8s.io/apimachinery/pkg/runtime" config "k8s.io/component-base/config" ) @@ -31,7 +31,7 @@ func (in *ControllerConfiguration) DeepCopyInto(out *ControllerConfiguration) { } if in.HealthCheckConfig != nil { in, out := &in.HealthCheckConfig, &out.HealthCheckConfig - *out = new(apisconfig.HealthCheckConfig) + *out = new(configv1alpha1.HealthCheckConfig) (*in).DeepCopyInto(*out) } return diff --git a/pkg/hcloud/apis/config/zz_generated.deepcopy.go b/pkg/hcloud/apis/config/zz_generated.deepcopy.go index d8fbe2bc4..11457bde7 100644 --- a/pkg/hcloud/apis/config/zz_generated.deepcopy.go +++ b/pkg/hcloud/apis/config/zz_generated.deepcopy.go @@ -10,9 +10,9 @@ package config import ( - apisconfig "github.com/gardener/gardener/extensions/pkg/apis/config" + configv1alpha1 "github.com/gardener/gardener/extensions/pkg/apis/config/v1alpha1" runtime "k8s.io/apimachinery/pkg/runtime" - componentbaseconfig "k8s.io/component-base/config" + v1alpha1 "k8s.io/component-base/config/v1alpha1" ) // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. @@ -21,7 +21,7 @@ func (in *ControllerConfiguration) DeepCopyInto(out *ControllerConfiguration) { out.TypeMeta = in.TypeMeta if in.ClientConnection != nil { in, out := &in.ClientConnection, &out.ClientConnection - *out = new(componentbaseconfig.ClientConnectionConfiguration) + *out = new(v1alpha1.ClientConnectionConfiguration) **out = **in } if in.ETCD != nil { @@ -31,7 +31,7 @@ func (in *ControllerConfiguration) DeepCopyInto(out *ControllerConfiguration) { } if in.HealthCheckConfig != nil { in, out := &in.HealthCheckConfig, &out.HealthCheckConfig - *out = new(apisconfig.HealthCheckConfig) + *out = new(configv1alpha1.HealthCheckConfig) (*in).DeepCopyInto(*out) } return diff --git a/pkg/hcloud/apis/controller/cloud_profile.go b/pkg/hcloud/apis/controller/cloud_profile.go index 27f738e04..3f89f5e95 100644 --- a/pkg/hcloud/apis/controller/cloud_profile.go +++ b/pkg/hcloud/apis/controller/cloud_profile.go @@ -20,8 +20,8 @@ package controller import ( "github.com/gardener/gardener/extensions/pkg/controller" - "github.com/23technologies/gardener-extension-provider-hcloud/pkg/hcloud/apis" - "github.com/23technologies/gardener-extension-provider-hcloud/pkg/hcloud/apis/transcoder" + "github.com/opendefensecloud/gardener-extension-provider-hcloud/pkg/hcloud/apis" + "github.com/opendefensecloud/gardener-extension-provider-hcloud/pkg/hcloud/apis/transcoder" ) func GetCloudProfileConfigFromControllerCluster(cluster *controller.Cluster) (*apis.CloudProfileConfig, error) { diff --git a/pkg/hcloud/apis/controller/imagevector.go b/pkg/hcloud/apis/controller/imagevector.go index aaea1e1c4..9fd8bcf51 100644 --- a/pkg/hcloud/apis/controller/imagevector.go +++ b/pkg/hcloud/apis/controller/imagevector.go @@ -21,7 +21,7 @@ import ( "github.com/gardener/gardener/pkg/utils/imagevector" "k8s.io/apimachinery/pkg/util/runtime" - "github.com/23technologies/gardener-extension-provider-hcloud/charts" + "github.com/opendefensecloud/gardener-extension-provider-hcloud/charts" ) var imageVector imagevector.ImageVector diff --git a/pkg/hcloud/apis/doc.go b/pkg/hcloud/apis/doc.go index 04b07c076..89ef46056 100644 --- a/pkg/hcloud/apis/doc.go +++ b/pkg/hcloud/apis/doc.go @@ -20,4 +20,4 @@ limitations under the License. //go:generate ../../../hack/update-codegen.sh // Package apis is the main package for HCloud specific APIs -package apis // import "github.com/23technologies/gardener-extension-provider-hcloud/pkg/hcloud/apis" +package apis // import "github.com/opendefensecloud/gardener-extension-provider-hcloud/pkg/hcloud/apis" diff --git a/pkg/hcloud/apis/install/install.go b/pkg/hcloud/apis/install/install.go index 46672edad..51de9371d 100644 --- a/pkg/hcloud/apis/install/install.go +++ b/pkg/hcloud/apis/install/install.go @@ -21,8 +21,8 @@ import ( "k8s.io/apimachinery/pkg/runtime" utilruntime "k8s.io/apimachinery/pkg/util/runtime" - "github.com/23technologies/gardener-extension-provider-hcloud/pkg/hcloud/apis" - "github.com/23technologies/gardener-extension-provider-hcloud/pkg/hcloud/apis/v1alpha1" + "github.com/opendefensecloud/gardener-extension-provider-hcloud/pkg/hcloud/apis" + "github.com/opendefensecloud/gardener-extension-provider-hcloud/pkg/hcloud/apis/v1alpha1" ) var ( diff --git a/pkg/hcloud/apis/mock/client/doc.go b/pkg/hcloud/apis/mock/client/doc.go new file mode 100644 index 000000000..28da9702d --- /dev/null +++ b/pkg/hcloud/apis/mock/client/doc.go @@ -0,0 +1,6 @@ +// Package client provides go.uber.org/mock mocks for the controller-runtime +// client interfaces, replacing the mocks gardener dropped from +// third_party/mock/controller-runtime with v1.14x. +package client + +//go:generate go run go.uber.org/mock/mockgen -package client -destination mocks.go sigs.k8s.io/controller-runtime/pkg/client Client,StatusWriter,SubResourceWriter diff --git a/pkg/hcloud/apis/mock/client/mocks.go b/pkg/hcloud/apis/mock/client/mocks.go new file mode 100644 index 000000000..3161f5a04 --- /dev/null +++ b/pkg/hcloud/apis/mock/client/mocks.go @@ -0,0 +1,483 @@ +// Code generated by MockGen. DO NOT EDIT. +// Source: sigs.k8s.io/controller-runtime/pkg/client (interfaces: Client,StatusWriter,SubResourceWriter) +// +// Generated by this command: +// +// mockgen -package client -destination mocks.go sigs.k8s.io/controller-runtime/pkg/client Client,StatusWriter,SubResourceWriter +// + +// Package client is a generated GoMock package. +package client + +import ( + context "context" + reflect "reflect" + + gomock "go.uber.org/mock/gomock" + meta "k8s.io/apimachinery/pkg/api/meta" + runtime "k8s.io/apimachinery/pkg/runtime" + schema "k8s.io/apimachinery/pkg/runtime/schema" + client "sigs.k8s.io/controller-runtime/pkg/client" +) + +// MockClient is a mock of Client interface. +type MockClient struct { + ctrl *gomock.Controller + recorder *MockClientMockRecorder + isgomock struct{} +} + +// MockClientMockRecorder is the mock recorder for MockClient. +type MockClientMockRecorder struct { + mock *MockClient +} + +// NewMockClient creates a new mock instance. +func NewMockClient(ctrl *gomock.Controller) *MockClient { + mock := &MockClient{ctrl: ctrl} + mock.recorder = &MockClientMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockClient) EXPECT() *MockClientMockRecorder { + return m.recorder +} + +// Apply mocks base method. +func (m *MockClient) Apply(ctx context.Context, obj runtime.ApplyConfiguration, opts ...client.ApplyOption) error { + m.ctrl.T.Helper() + varargs := []any{ctx, obj} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "Apply", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// Apply indicates an expected call of Apply. +func (mr *MockClientMockRecorder) Apply(ctx, obj any, opts ...any) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]any{ctx, obj}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Apply", reflect.TypeOf((*MockClient)(nil).Apply), varargs...) +} + +// Create mocks base method. +func (m *MockClient) Create(ctx context.Context, obj client.Object, opts ...client.CreateOption) error { + m.ctrl.T.Helper() + varargs := []any{ctx, obj} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "Create", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// Create indicates an expected call of Create. +func (mr *MockClientMockRecorder) Create(ctx, obj any, opts ...any) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]any{ctx, obj}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Create", reflect.TypeOf((*MockClient)(nil).Create), varargs...) +} + +// Delete mocks base method. +func (m *MockClient) Delete(ctx context.Context, obj client.Object, opts ...client.DeleteOption) error { + m.ctrl.T.Helper() + varargs := []any{ctx, obj} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "Delete", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// Delete indicates an expected call of Delete. +func (mr *MockClientMockRecorder) Delete(ctx, obj any, opts ...any) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]any{ctx, obj}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Delete", reflect.TypeOf((*MockClient)(nil).Delete), varargs...) +} + +// DeleteAllOf mocks base method. +func (m *MockClient) DeleteAllOf(ctx context.Context, obj client.Object, opts ...client.DeleteAllOfOption) error { + m.ctrl.T.Helper() + varargs := []any{ctx, obj} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "DeleteAllOf", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// DeleteAllOf indicates an expected call of DeleteAllOf. +func (mr *MockClientMockRecorder) DeleteAllOf(ctx, obj any, opts ...any) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]any{ctx, obj}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteAllOf", reflect.TypeOf((*MockClient)(nil).DeleteAllOf), varargs...) +} + +// Get mocks base method. +func (m *MockClient) Get(ctx context.Context, key client.ObjectKey, obj client.Object, opts ...client.GetOption) error { + m.ctrl.T.Helper() + varargs := []any{ctx, key, obj} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "Get", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// Get indicates an expected call of Get. +func (mr *MockClientMockRecorder) Get(ctx, key, obj any, opts ...any) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]any{ctx, key, obj}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Get", reflect.TypeOf((*MockClient)(nil).Get), varargs...) +} + +// GroupVersionKindFor mocks base method. +func (m *MockClient) GroupVersionKindFor(obj runtime.Object) (schema.GroupVersionKind, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "GroupVersionKindFor", obj) + ret0, _ := ret[0].(schema.GroupVersionKind) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// GroupVersionKindFor indicates an expected call of GroupVersionKindFor. +func (mr *MockClientMockRecorder) GroupVersionKindFor(obj any) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GroupVersionKindFor", reflect.TypeOf((*MockClient)(nil).GroupVersionKindFor), obj) +} + +// IsObjectNamespaced mocks base method. +func (m *MockClient) IsObjectNamespaced(obj runtime.Object) (bool, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "IsObjectNamespaced", obj) + ret0, _ := ret[0].(bool) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// IsObjectNamespaced indicates an expected call of IsObjectNamespaced. +func (mr *MockClientMockRecorder) IsObjectNamespaced(obj any) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "IsObjectNamespaced", reflect.TypeOf((*MockClient)(nil).IsObjectNamespaced), obj) +} + +// List mocks base method. +func (m *MockClient) List(ctx context.Context, list client.ObjectList, opts ...client.ListOption) error { + m.ctrl.T.Helper() + varargs := []any{ctx, list} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "List", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// List indicates an expected call of List. +func (mr *MockClientMockRecorder) List(ctx, list any, opts ...any) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]any{ctx, list}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "List", reflect.TypeOf((*MockClient)(nil).List), varargs...) +} + +// Patch mocks base method. +func (m *MockClient) Patch(ctx context.Context, obj client.Object, patch client.Patch, opts ...client.PatchOption) error { + m.ctrl.T.Helper() + varargs := []any{ctx, obj, patch} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "Patch", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// Patch indicates an expected call of Patch. +func (mr *MockClientMockRecorder) Patch(ctx, obj, patch any, opts ...any) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]any{ctx, obj, patch}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Patch", reflect.TypeOf((*MockClient)(nil).Patch), varargs...) +} + +// RESTMapper mocks base method. +func (m *MockClient) RESTMapper() meta.RESTMapper { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "RESTMapper") + ret0, _ := ret[0].(meta.RESTMapper) + return ret0 +} + +// RESTMapper indicates an expected call of RESTMapper. +func (mr *MockClientMockRecorder) RESTMapper() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RESTMapper", reflect.TypeOf((*MockClient)(nil).RESTMapper)) +} + +// Scheme mocks base method. +func (m *MockClient) Scheme() *runtime.Scheme { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Scheme") + ret0, _ := ret[0].(*runtime.Scheme) + return ret0 +} + +// Scheme indicates an expected call of Scheme. +func (mr *MockClientMockRecorder) Scheme() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Scheme", reflect.TypeOf((*MockClient)(nil).Scheme)) +} + +// Status mocks base method. +func (m *MockClient) Status() client.SubResourceWriter { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Status") + ret0, _ := ret[0].(client.SubResourceWriter) + return ret0 +} + +// Status indicates an expected call of Status. +func (mr *MockClientMockRecorder) Status() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Status", reflect.TypeOf((*MockClient)(nil).Status)) +} + +// SubResource mocks base method. +func (m *MockClient) SubResource(subResource string) client.SubResourceClient { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "SubResource", subResource) + ret0, _ := ret[0].(client.SubResourceClient) + return ret0 +} + +// SubResource indicates an expected call of SubResource. +func (mr *MockClientMockRecorder) SubResource(subResource any) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "SubResource", reflect.TypeOf((*MockClient)(nil).SubResource), subResource) +} + +// Update mocks base method. +func (m *MockClient) Update(ctx context.Context, obj client.Object, opts ...client.UpdateOption) error { + m.ctrl.T.Helper() + varargs := []any{ctx, obj} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "Update", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// Update indicates an expected call of Update. +func (mr *MockClientMockRecorder) Update(ctx, obj any, opts ...any) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]any{ctx, obj}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Update", reflect.TypeOf((*MockClient)(nil).Update), varargs...) +} + +// MockStatusWriter is a mock of StatusWriter interface. +type MockStatusWriter struct { + ctrl *gomock.Controller + recorder *MockStatusWriterMockRecorder + isgomock struct{} +} + +// MockStatusWriterMockRecorder is the mock recorder for MockStatusWriter. +type MockStatusWriterMockRecorder struct { + mock *MockStatusWriter +} + +// NewMockStatusWriter creates a new mock instance. +func NewMockStatusWriter(ctrl *gomock.Controller) *MockStatusWriter { + mock := &MockStatusWriter{ctrl: ctrl} + mock.recorder = &MockStatusWriterMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockStatusWriter) EXPECT() *MockStatusWriterMockRecorder { + return m.recorder +} + +// Apply mocks base method. +func (m *MockStatusWriter) Apply(ctx context.Context, obj runtime.ApplyConfiguration, opts ...client.SubResourceApplyOption) error { + m.ctrl.T.Helper() + varargs := []any{ctx, obj} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "Apply", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// Apply indicates an expected call of Apply. +func (mr *MockStatusWriterMockRecorder) Apply(ctx, obj any, opts ...any) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]any{ctx, obj}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Apply", reflect.TypeOf((*MockStatusWriter)(nil).Apply), varargs...) +} + +// Create mocks base method. +func (m *MockStatusWriter) Create(ctx context.Context, obj, subResource client.Object, opts ...client.SubResourceCreateOption) error { + m.ctrl.T.Helper() + varargs := []any{ctx, obj, subResource} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "Create", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// Create indicates an expected call of Create. +func (mr *MockStatusWriterMockRecorder) Create(ctx, obj, subResource any, opts ...any) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]any{ctx, obj, subResource}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Create", reflect.TypeOf((*MockStatusWriter)(nil).Create), varargs...) +} + +// Patch mocks base method. +func (m *MockStatusWriter) Patch(ctx context.Context, obj client.Object, patch client.Patch, opts ...client.SubResourcePatchOption) error { + m.ctrl.T.Helper() + varargs := []any{ctx, obj, patch} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "Patch", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// Patch indicates an expected call of Patch. +func (mr *MockStatusWriterMockRecorder) Patch(ctx, obj, patch any, opts ...any) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]any{ctx, obj, patch}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Patch", reflect.TypeOf((*MockStatusWriter)(nil).Patch), varargs...) +} + +// Update mocks base method. +func (m *MockStatusWriter) Update(ctx context.Context, obj client.Object, opts ...client.SubResourceUpdateOption) error { + m.ctrl.T.Helper() + varargs := []any{ctx, obj} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "Update", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// Update indicates an expected call of Update. +func (mr *MockStatusWriterMockRecorder) Update(ctx, obj any, opts ...any) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]any{ctx, obj}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Update", reflect.TypeOf((*MockStatusWriter)(nil).Update), varargs...) +} + +// MockSubResourceWriter is a mock of SubResourceWriter interface. +type MockSubResourceWriter struct { + ctrl *gomock.Controller + recorder *MockSubResourceWriterMockRecorder + isgomock struct{} +} + +// MockSubResourceWriterMockRecorder is the mock recorder for MockSubResourceWriter. +type MockSubResourceWriterMockRecorder struct { + mock *MockSubResourceWriter +} + +// NewMockSubResourceWriter creates a new mock instance. +func NewMockSubResourceWriter(ctrl *gomock.Controller) *MockSubResourceWriter { + mock := &MockSubResourceWriter{ctrl: ctrl} + mock.recorder = &MockSubResourceWriterMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockSubResourceWriter) EXPECT() *MockSubResourceWriterMockRecorder { + return m.recorder +} + +// Apply mocks base method. +func (m *MockSubResourceWriter) Apply(ctx context.Context, obj runtime.ApplyConfiguration, opts ...client.SubResourceApplyOption) error { + m.ctrl.T.Helper() + varargs := []any{ctx, obj} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "Apply", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// Apply indicates an expected call of Apply. +func (mr *MockSubResourceWriterMockRecorder) Apply(ctx, obj any, opts ...any) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]any{ctx, obj}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Apply", reflect.TypeOf((*MockSubResourceWriter)(nil).Apply), varargs...) +} + +// Create mocks base method. +func (m *MockSubResourceWriter) Create(ctx context.Context, obj, subResource client.Object, opts ...client.SubResourceCreateOption) error { + m.ctrl.T.Helper() + varargs := []any{ctx, obj, subResource} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "Create", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// Create indicates an expected call of Create. +func (mr *MockSubResourceWriterMockRecorder) Create(ctx, obj, subResource any, opts ...any) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]any{ctx, obj, subResource}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Create", reflect.TypeOf((*MockSubResourceWriter)(nil).Create), varargs...) +} + +// Patch mocks base method. +func (m *MockSubResourceWriter) Patch(ctx context.Context, obj client.Object, patch client.Patch, opts ...client.SubResourcePatchOption) error { + m.ctrl.T.Helper() + varargs := []any{ctx, obj, patch} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "Patch", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// Patch indicates an expected call of Patch. +func (mr *MockSubResourceWriterMockRecorder) Patch(ctx, obj, patch any, opts ...any) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]any{ctx, obj, patch}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Patch", reflect.TypeOf((*MockSubResourceWriter)(nil).Patch), varargs...) +} + +// Update mocks base method. +func (m *MockSubResourceWriter) Update(ctx context.Context, obj client.Object, opts ...client.SubResourceUpdateOption) error { + m.ctrl.T.Helper() + varargs := []any{ctx, obj} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "Update", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// Update indicates an expected call of Update. +func (mr *MockSubResourceWriterMockRecorder) Update(ctx, obj any, opts ...any) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]any{ctx, obj}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Update", reflect.TypeOf((*MockSubResourceWriter)(nil).Update), varargs...) +} diff --git a/pkg/hcloud/apis/mock/infrastructure.go b/pkg/hcloud/apis/mock/infrastructure.go index 33ff37ca3..cab69724a 100644 --- a/pkg/hcloud/apis/mock/infrastructure.go +++ b/pkg/hcloud/apis/mock/infrastructure.go @@ -26,7 +26,7 @@ import ( metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/runtime" - "github.com/23technologies/gardener-extension-provider-hcloud/pkg/hcloud/apis" + "github.com/opendefensecloud/gardener-extension-provider-hcloud/pkg/hcloud/apis" ) const ( diff --git a/pkg/hcloud/apis/mock/manager/doc.go b/pkg/hcloud/apis/mock/manager/doc.go new file mode 100644 index 000000000..d9725e749 --- /dev/null +++ b/pkg/hcloud/apis/mock/manager/doc.go @@ -0,0 +1,6 @@ +// Package manager provides go.uber.org/mock mocks for the controller-runtime +// manager interface, replacing the mocks gardener dropped from +// third_party/mock/controller-runtime with v1.14x. +package manager + +//go:generate go run go.uber.org/mock/mockgen -package manager -destination mocks.go sigs.k8s.io/controller-runtime/pkg/manager Manager diff --git a/pkg/hcloud/apis/mock/manager/mocks.go b/pkg/hcloud/apis/mock/manager/mocks.go new file mode 100644 index 000000000..cea27a25b --- /dev/null +++ b/pkg/hcloud/apis/mock/manager/mocks.go @@ -0,0 +1,335 @@ +// Code generated by MockGen. DO NOT EDIT. +// Source: sigs.k8s.io/controller-runtime/pkg/manager (interfaces: Manager) +// +// Generated by this command: +// +// mockgen -package manager -destination mocks.go sigs.k8s.io/controller-runtime/pkg/manager Manager +// + +// Package manager is a generated GoMock package. +package manager + +import ( + context "context" + http "net/http" + reflect "reflect" + + logr "github.com/go-logr/logr" + gomock "go.uber.org/mock/gomock" + meta "k8s.io/apimachinery/pkg/api/meta" + runtime "k8s.io/apimachinery/pkg/runtime" + rest "k8s.io/client-go/rest" + events "k8s.io/client-go/tools/events" + record "k8s.io/client-go/tools/record" + cache "sigs.k8s.io/controller-runtime/pkg/cache" + client "sigs.k8s.io/controller-runtime/pkg/client" + config "sigs.k8s.io/controller-runtime/pkg/config" + healthz "sigs.k8s.io/controller-runtime/pkg/healthz" + manager "sigs.k8s.io/controller-runtime/pkg/manager" + webhook "sigs.k8s.io/controller-runtime/pkg/webhook" + conversion "sigs.k8s.io/controller-runtime/pkg/webhook/conversion" +) + +// MockManager is a mock of Manager interface. +type MockManager struct { + ctrl *gomock.Controller + recorder *MockManagerMockRecorder + isgomock struct{} +} + +// MockManagerMockRecorder is the mock recorder for MockManager. +type MockManagerMockRecorder struct { + mock *MockManager +} + +// NewMockManager creates a new mock instance. +func NewMockManager(ctrl *gomock.Controller) *MockManager { + mock := &MockManager{ctrl: ctrl} + mock.recorder = &MockManagerMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockManager) EXPECT() *MockManagerMockRecorder { + return m.recorder +} + +// Add mocks base method. +func (m *MockManager) Add(arg0 manager.Runnable) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Add", arg0) + ret0, _ := ret[0].(error) + return ret0 +} + +// Add indicates an expected call of Add. +func (mr *MockManagerMockRecorder) Add(arg0 any) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Add", reflect.TypeOf((*MockManager)(nil).Add), arg0) +} + +// AddHealthzCheck mocks base method. +func (m *MockManager) AddHealthzCheck(name string, check healthz.Checker) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "AddHealthzCheck", name, check) + ret0, _ := ret[0].(error) + return ret0 +} + +// AddHealthzCheck indicates an expected call of AddHealthzCheck. +func (mr *MockManagerMockRecorder) AddHealthzCheck(name, check any) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "AddHealthzCheck", reflect.TypeOf((*MockManager)(nil).AddHealthzCheck), name, check) +} + +// AddMetricsServerExtraHandler mocks base method. +func (m *MockManager) AddMetricsServerExtraHandler(path string, handler http.Handler) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "AddMetricsServerExtraHandler", path, handler) + ret0, _ := ret[0].(error) + return ret0 +} + +// AddMetricsServerExtraHandler indicates an expected call of AddMetricsServerExtraHandler. +func (mr *MockManagerMockRecorder) AddMetricsServerExtraHandler(path, handler any) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "AddMetricsServerExtraHandler", reflect.TypeOf((*MockManager)(nil).AddMetricsServerExtraHandler), path, handler) +} + +// AddReadyzCheck mocks base method. +func (m *MockManager) AddReadyzCheck(name string, check healthz.Checker) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "AddReadyzCheck", name, check) + ret0, _ := ret[0].(error) + return ret0 +} + +// AddReadyzCheck indicates an expected call of AddReadyzCheck. +func (mr *MockManagerMockRecorder) AddReadyzCheck(name, check any) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "AddReadyzCheck", reflect.TypeOf((*MockManager)(nil).AddReadyzCheck), name, check) +} + +// Elected mocks base method. +func (m *MockManager) Elected() <-chan struct{} { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Elected") + ret0, _ := ret[0].(<-chan struct{}) + return ret0 +} + +// Elected indicates an expected call of Elected. +func (mr *MockManagerMockRecorder) Elected() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Elected", reflect.TypeOf((*MockManager)(nil).Elected)) +} + +// GetAPIReader mocks base method. +func (m *MockManager) GetAPIReader() client.Reader { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "GetAPIReader") + ret0, _ := ret[0].(client.Reader) + return ret0 +} + +// GetAPIReader indicates an expected call of GetAPIReader. +func (mr *MockManagerMockRecorder) GetAPIReader() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetAPIReader", reflect.TypeOf((*MockManager)(nil).GetAPIReader)) +} + +// GetCache mocks base method. +func (m *MockManager) GetCache() cache.Cache { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "GetCache") + ret0, _ := ret[0].(cache.Cache) + return ret0 +} + +// GetCache indicates an expected call of GetCache. +func (mr *MockManagerMockRecorder) GetCache() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetCache", reflect.TypeOf((*MockManager)(nil).GetCache)) +} + +// GetClient mocks base method. +func (m *MockManager) GetClient() client.Client { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "GetClient") + ret0, _ := ret[0].(client.Client) + return ret0 +} + +// GetClient indicates an expected call of GetClient. +func (mr *MockManagerMockRecorder) GetClient() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetClient", reflect.TypeOf((*MockManager)(nil).GetClient)) +} + +// GetConfig mocks base method. +func (m *MockManager) GetConfig() *rest.Config { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "GetConfig") + ret0, _ := ret[0].(*rest.Config) + return ret0 +} + +// GetConfig indicates an expected call of GetConfig. +func (mr *MockManagerMockRecorder) GetConfig() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetConfig", reflect.TypeOf((*MockManager)(nil).GetConfig)) +} + +// GetControllerOptions mocks base method. +func (m *MockManager) GetControllerOptions() config.Controller { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "GetControllerOptions") + ret0, _ := ret[0].(config.Controller) + return ret0 +} + +// GetControllerOptions indicates an expected call of GetControllerOptions. +func (mr *MockManagerMockRecorder) GetControllerOptions() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetControllerOptions", reflect.TypeOf((*MockManager)(nil).GetControllerOptions)) +} + +// GetConverterRegistry mocks base method. +func (m *MockManager) GetConverterRegistry() conversion.Registry { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "GetConverterRegistry") + ret0, _ := ret[0].(conversion.Registry) + return ret0 +} + +// GetConverterRegistry indicates an expected call of GetConverterRegistry. +func (mr *MockManagerMockRecorder) GetConverterRegistry() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetConverterRegistry", reflect.TypeOf((*MockManager)(nil).GetConverterRegistry)) +} + +// GetEventRecorder mocks base method. +func (m *MockManager) GetEventRecorder(name string) events.EventRecorder { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "GetEventRecorder", name) + ret0, _ := ret[0].(events.EventRecorder) + return ret0 +} + +// GetEventRecorder indicates an expected call of GetEventRecorder. +func (mr *MockManagerMockRecorder) GetEventRecorder(name any) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetEventRecorder", reflect.TypeOf((*MockManager)(nil).GetEventRecorder), name) +} + +// GetEventRecorderFor mocks base method. +func (m *MockManager) GetEventRecorderFor(name string) record.EventRecorder { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "GetEventRecorderFor", name) + ret0, _ := ret[0].(record.EventRecorder) + return ret0 +} + +// GetEventRecorderFor indicates an expected call of GetEventRecorderFor. +func (mr *MockManagerMockRecorder) GetEventRecorderFor(name any) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetEventRecorderFor", reflect.TypeOf((*MockManager)(nil).GetEventRecorderFor), name) +} + +// GetFieldIndexer mocks base method. +func (m *MockManager) GetFieldIndexer() client.FieldIndexer { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "GetFieldIndexer") + ret0, _ := ret[0].(client.FieldIndexer) + return ret0 +} + +// GetFieldIndexer indicates an expected call of GetFieldIndexer. +func (mr *MockManagerMockRecorder) GetFieldIndexer() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetFieldIndexer", reflect.TypeOf((*MockManager)(nil).GetFieldIndexer)) +} + +// GetHTTPClient mocks base method. +func (m *MockManager) GetHTTPClient() *http.Client { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "GetHTTPClient") + ret0, _ := ret[0].(*http.Client) + return ret0 +} + +// GetHTTPClient indicates an expected call of GetHTTPClient. +func (mr *MockManagerMockRecorder) GetHTTPClient() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetHTTPClient", reflect.TypeOf((*MockManager)(nil).GetHTTPClient)) +} + +// GetLogger mocks base method. +func (m *MockManager) GetLogger() logr.Logger { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "GetLogger") + ret0, _ := ret[0].(logr.Logger) + return ret0 +} + +// GetLogger indicates an expected call of GetLogger. +func (mr *MockManagerMockRecorder) GetLogger() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetLogger", reflect.TypeOf((*MockManager)(nil).GetLogger)) +} + +// GetRESTMapper mocks base method. +func (m *MockManager) GetRESTMapper() meta.RESTMapper { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "GetRESTMapper") + ret0, _ := ret[0].(meta.RESTMapper) + return ret0 +} + +// GetRESTMapper indicates an expected call of GetRESTMapper. +func (mr *MockManagerMockRecorder) GetRESTMapper() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetRESTMapper", reflect.TypeOf((*MockManager)(nil).GetRESTMapper)) +} + +// GetScheme mocks base method. +func (m *MockManager) GetScheme() *runtime.Scheme { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "GetScheme") + ret0, _ := ret[0].(*runtime.Scheme) + return ret0 +} + +// GetScheme indicates an expected call of GetScheme. +func (mr *MockManagerMockRecorder) GetScheme() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetScheme", reflect.TypeOf((*MockManager)(nil).GetScheme)) +} + +// GetWebhookServer mocks base method. +func (m *MockManager) GetWebhookServer() webhook.Server { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "GetWebhookServer") + ret0, _ := ret[0].(webhook.Server) + return ret0 +} + +// GetWebhookServer indicates an expected call of GetWebhookServer. +func (mr *MockManagerMockRecorder) GetWebhookServer() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetWebhookServer", reflect.TypeOf((*MockManager)(nil).GetWebhookServer)) +} + +// Start mocks base method. +func (m *MockManager) Start(ctx context.Context) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Start", ctx) + ret0, _ := ret[0].(error) + return ret0 +} + +// Start indicates an expected call of Start. +func (mr *MockManagerMockRecorder) Start(ctx any) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Start", reflect.TypeOf((*MockManager)(nil).Start), ctx) +} diff --git a/pkg/hcloud/apis/mock/test_env.go b/pkg/hcloud/apis/mock/test_env.go index 39b1f6271..d326a6138 100644 --- a/pkg/hcloud/apis/mock/test_env.go +++ b/pkg/hcloud/apis/mock/test_env.go @@ -22,10 +22,11 @@ import ( "net/http/httptest" mockkubernetes "github.com/gardener/gardener/pkg/client/kubernetes/mock" - mockclient "github.com/gardener/gardener/third_party/mock/controller-runtime/client" "github.com/hetznercloud/hcloud-go/v2/hcloud" "github.com/onsi/ginkgo/v2" gomock "go.uber.org/mock/gomock" + + mockclient "github.com/opendefensecloud/gardener-extension-provider-hcloud/pkg/hcloud/apis/mock/client" ) const ( diff --git a/pkg/hcloud/apis/mock/worker.go b/pkg/hcloud/apis/mock/worker.go index 73e7e5b43..576dcbe8b 100644 --- a/pkg/hcloud/apis/mock/worker.go +++ b/pkg/hcloud/apis/mock/worker.go @@ -29,6 +29,7 @@ import ( metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/runtime" "k8s.io/apimachinery/pkg/util/intstr" + "k8s.io/utils/ptr" ) const ( @@ -48,6 +49,7 @@ const ( TestWorkerUserData = "IyEvYmluL2Jhc2gKCmVjaG8gImhlbGxvIHdvcmxkIgo=" TestUserDataSecretName = "user-data-secret-name" TestUserDataSecretDataKey = "user-data-secret-data-key" + TestNodeAgentSecretName = "gardener-node-agent-hcloud-pool-1-77c1a" ) // NewWorker generates a new provider specification for testing purposes. @@ -82,6 +84,7 @@ func NewWorker() *v1alpha1.Worker { LocalObjectReference: corev1.LocalObjectReference{Name: TestUserDataSecretName}, Key: TestUserDataSecretDataKey, }, + NodeAgentSecretName: ptr.To(TestNodeAgentSecretName), Zones: []string{ TestZone, }, diff --git a/pkg/hcloud/apis/transcoder/cloud_profile.go b/pkg/hcloud/apis/transcoder/cloud_profile.go index 721dd4c65..739fad1ee 100644 --- a/pkg/hcloud/apis/transcoder/cloud_profile.go +++ b/pkg/hcloud/apis/transcoder/cloud_profile.go @@ -27,7 +27,7 @@ import ( "github.com/gardener/gardener/pkg/apis/core/v1beta1" "k8s.io/apimachinery/pkg/runtime" - "github.com/23technologies/gardener-extension-provider-hcloud/pkg/hcloud/apis" + "github.com/opendefensecloud/gardener-extension-provider-hcloud/pkg/hcloud/apis" ) // DecodeCloudProfileConfig extracts the CloudProfileConfig from the given diff --git a/pkg/hcloud/apis/transcoder/controlplane.go b/pkg/hcloud/apis/transcoder/controlplane.go index 40efb2115..5c4561333 100644 --- a/pkg/hcloud/apis/transcoder/controlplane.go +++ b/pkg/hcloud/apis/transcoder/controlplane.go @@ -24,7 +24,7 @@ import ( "github.com/gardener/gardener/pkg/apis/extensions/v1alpha1" "k8s.io/apimachinery/pkg/runtime" - "github.com/23technologies/gardener-extension-provider-hcloud/pkg/hcloud/apis" + "github.com/opendefensecloud/gardener-extension-provider-hcloud/pkg/hcloud/apis" ) // DecodeControlPlaneConfig extracts the ControlPlaneConfig from the diff --git a/pkg/hcloud/apis/transcoder/infrastructure.go b/pkg/hcloud/apis/transcoder/infrastructure.go index 614838cfb..59f5d18ee 100644 --- a/pkg/hcloud/apis/transcoder/infrastructure.go +++ b/pkg/hcloud/apis/transcoder/infrastructure.go @@ -24,7 +24,7 @@ import ( "github.com/gardener/gardener/pkg/apis/extensions/v1alpha1" "k8s.io/apimachinery/pkg/runtime" - "github.com/23technologies/gardener-extension-provider-hcloud/pkg/hcloud/apis" + "github.com/opendefensecloud/gardener-extension-provider-hcloud/pkg/hcloud/apis" ) // DecodeInfrastructureConfig extracts the InfrastructureConfig from the diff --git a/pkg/hcloud/apis/transcoder/scheme_decoder.go b/pkg/hcloud/apis/transcoder/scheme_decoder.go index cac291f38..de6931f0a 100644 --- a/pkg/hcloud/apis/transcoder/scheme_decoder.go +++ b/pkg/hcloud/apis/transcoder/scheme_decoder.go @@ -22,7 +22,7 @@ import ( "k8s.io/apimachinery/pkg/runtime/serializer" utilruntime "k8s.io/apimachinery/pkg/util/runtime" - "github.com/23technologies/gardener-extension-provider-hcloud/pkg/hcloud/apis/install" + "github.com/opendefensecloud/gardener-extension-provider-hcloud/pkg/hcloud/apis/install" ) var ( diff --git a/pkg/hcloud/apis/transcoder/worker.go b/pkg/hcloud/apis/transcoder/worker.go index 2ddb744dd..f39da0d2b 100644 --- a/pkg/hcloud/apis/transcoder/worker.go +++ b/pkg/hcloud/apis/transcoder/worker.go @@ -23,7 +23,7 @@ import ( "github.com/gardener/gardener/pkg/apis/extensions/v1alpha1" "k8s.io/apimachinery/pkg/runtime" - "github.com/23technologies/gardener-extension-provider-hcloud/pkg/hcloud/apis" + "github.com/opendefensecloud/gardener-extension-provider-hcloud/pkg/hcloud/apis" ) func DecodeInfrastructureStatusFromWorker(worker *v1alpha1.Worker) (*apis.InfrastructureStatus, error) { diff --git a/pkg/hcloud/apis/types_infrastructure.go b/pkg/hcloud/apis/types_infrastructure.go index febe84fc4..61b372dfe 100644 --- a/pkg/hcloud/apis/types_infrastructure.go +++ b/pkg/hcloud/apis/types_infrastructure.go @@ -61,7 +61,7 @@ type InfrastructureStatus struct { SSHFingerprint string `json:"sshFingerprint"` // PlacementGroupIDs contains the placement group IDs. - PlacementGroupIDs map[string]string `json:"placementGroupID,omitempty"` + PlacementGroupIDs map[string]string `json:"placementGroupIDs,omitempty"` // PlacementGroupID contains the placement group ID. PlacementGroupID string `json:"placementGroupID,omitempty"` // FloatingPoolName contains the FloatingPoolName name in which LoadBalancer FIPs should be created. diff --git a/pkg/hcloud/apis/v1alpha1/doc.go b/pkg/hcloud/apis/v1alpha1/doc.go index 38aacad78..58cc7d1f1 100644 --- a/pkg/hcloud/apis/v1alpha1/doc.go +++ b/pkg/hcloud/apis/v1alpha1/doc.go @@ -15,7 +15,7 @@ limitations under the License. */ // +k8s:deepcopy-gen=package -// +k8s:conversion-gen=github.com/23technologies/gardener-extension-provider-hcloud/pkg/hcloud/apis +// +k8s:conversion-gen=github.com/opendefensecloud/gardener-extension-provider-hcloud/pkg/hcloud/apis // +k8s:openapi-gen=true // +k8s:defaulter-gen=TypeMeta // +groupName=hcloud.provider.extensions.gardener.cloud @@ -23,4 +23,4 @@ limitations under the License. //go:generate ../../../../hack/update-codegen.sh // Package v1alpha1 contains the HCloud provider API resources. -package v1alpha1 // import "github.com/23technologies/gardener-extension-provider-hcloud/pkg/hcloud/apis/v1alpha1" +package v1alpha1 // import "github.com/opendefensecloud/gardener-extension-provider-hcloud/pkg/hcloud/apis/v1alpha1" diff --git a/pkg/hcloud/apis/v1alpha1/zz_generated.conversion.go b/pkg/hcloud/apis/v1alpha1/zz_generated.conversion.go index f5c847cad..9bb678faa 100644 --- a/pkg/hcloud/apis/v1alpha1/zz_generated.conversion.go +++ b/pkg/hcloud/apis/v1alpha1/zz_generated.conversion.go @@ -12,8 +12,8 @@ package v1alpha1 import ( unsafe "unsafe" - apis "github.com/23technologies/gardener-extension-provider-hcloud/pkg/hcloud/apis" hcloud "github.com/hetznercloud/hcloud-go/v2/hcloud" + apis "github.com/opendefensecloud/gardener-extension-provider-hcloud/pkg/hcloud/apis" conversion "k8s.io/apimachinery/pkg/conversion" runtime "k8s.io/apimachinery/pkg/runtime" ) diff --git a/pkg/hcloud/apis/validation/cloudprofile.go b/pkg/hcloud/apis/validation/cloudprofile.go index 2fd892289..f24c7423d 100644 --- a/pkg/hcloud/apis/validation/cloudprofile.go +++ b/pkg/hcloud/apis/validation/cloudprofile.go @@ -24,7 +24,7 @@ import ( "k8s.io/apimachinery/pkg/util/sets" "k8s.io/apimachinery/pkg/util/validation/field" - "github.com/23technologies/gardener-extension-provider-hcloud/pkg/hcloud/apis" + "github.com/opendefensecloud/gardener-extension-provider-hcloud/pkg/hcloud/apis" ) var validLoadBalancerSizeValues = sets.NewString("SMALL", "MEDIUM", "LARGE") diff --git a/pkg/hcloud/apis/validation/cloudprofile_test.go b/pkg/hcloud/apis/validation/cloudprofile_test.go index 4f17fa127..27d4f2220 100644 --- a/pkg/hcloud/apis/validation/cloudprofile_test.go +++ b/pkg/hcloud/apis/validation/cloudprofile_test.go @@ -21,8 +21,8 @@ package validation import ( "fmt" - "github.com/23technologies/gardener-extension-provider-hcloud/pkg/hcloud/apis" - "github.com/23technologies/gardener-extension-provider-hcloud/pkg/hcloud/apis/mock" + "github.com/opendefensecloud/gardener-extension-provider-hcloud/pkg/hcloud/apis" + "github.com/opendefensecloud/gardener-extension-provider-hcloud/pkg/hcloud/apis/mock" . "github.com/onsi/ginkgo/v2" . "github.com/onsi/ginkgo/v2/extensions/table" . "github.com/onsi/gomega" diff --git a/pkg/hcloud/apis/validation/controlplane.go b/pkg/hcloud/apis/validation/controlplane.go index 324f28c47..3e0aff874 100644 --- a/pkg/hcloud/apis/validation/controlplane.go +++ b/pkg/hcloud/apis/validation/controlplane.go @@ -21,7 +21,7 @@ import ( "k8s.io/apimachinery/pkg/util/sets" "k8s.io/apimachinery/pkg/util/validation/field" - "github.com/23technologies/gardener-extension-provider-hcloud/pkg/hcloud/apis" + "github.com/opendefensecloud/gardener-extension-provider-hcloud/pkg/hcloud/apis" ) // ValidateControlPlaneConfig validates a ControlPlaneConfig object. diff --git a/pkg/hcloud/apis/validation/infrastructure.go b/pkg/hcloud/apis/validation/infrastructure.go index 38171abe1..84fc2a854 100644 --- a/pkg/hcloud/apis/validation/infrastructure.go +++ b/pkg/hcloud/apis/validation/infrastructure.go @@ -24,7 +24,7 @@ import ( gardencorev1beta1 "github.com/gardener/gardener/pkg/apis/core/v1beta1" "k8s.io/apimachinery/pkg/util/validation/field" - "github.com/23technologies/gardener-extension-provider-hcloud/pkg/hcloud/apis" + "github.com/opendefensecloud/gardener-extension-provider-hcloud/pkg/hcloud/apis" ) // ValidateInfrastructureConfig validates infrastructure config diff --git a/pkg/hcloud/apis/validation/infrastructure_test.go b/pkg/hcloud/apis/validation/infrastructure_test.go index 453ef521b..9afd9df36 100644 --- a/pkg/hcloud/apis/validation/infrastructure_test.go +++ b/pkg/hcloud/apis/validation/infrastructure_test.go @@ -21,8 +21,8 @@ import ( . "github.com/onsi/ginkgo/v2" . "github.com/onsi/gomega" - "github.com/23technologies/gardener-extension-provider-hcloud/pkg/hcloud/apis" - "github.com/23technologies/gardener-extension-provider-hcloud/pkg/hcloud/apis/mock" + "github.com/opendefensecloud/gardener-extension-provider-hcloud/pkg/hcloud/apis" + "github.com/opendefensecloud/gardener-extension-provider-hcloud/pkg/hcloud/apis/mock" ) var _ = Describe("Infrastructure", func() { diff --git a/pkg/hcloud/apis/validation/workers.go b/pkg/hcloud/apis/validation/workers.go index 6263e657b..4c66051be 100644 --- a/pkg/hcloud/apis/validation/workers.go +++ b/pkg/hcloud/apis/validation/workers.go @@ -24,7 +24,7 @@ import ( "k8s.io/apimachinery/pkg/util/sets" "k8s.io/apimachinery/pkg/util/validation/field" - "github.com/23technologies/gardener-extension-provider-hcloud/pkg/hcloud/apis/transcoder" + "github.com/opendefensecloud/gardener-extension-provider-hcloud/pkg/hcloud/apis/transcoder" ) // ValidateWorkers validates the workers of a Shoot. diff --git a/pkg/hcloud/types.go b/pkg/hcloud/types.go index 949ab8f9b..71be6118a 100644 --- a/pkg/hcloud/types.go +++ b/pkg/hcloud/types.go @@ -25,8 +25,6 @@ const ( // Name is the name of the Hcloud provider controller. Name = "provider-hcloud" - // MachineControllerManagerImageName is the name of the MachineControllerManager image. - MachineControllerManagerImageName = "machine-controller-manager" // MCMProviderHcloudImageName is the namne of the HCloud provider plugin image. MCMProviderHcloudImageName = "machine-controller-manager-provider-hcloud" // CloudControllerImageName is the name of the external HCloud CloudProvider image. @@ -60,12 +58,6 @@ const ( CloudProviderConfig = "cloud-provider-config" // CloudProviderConfigMapKey is the key storing the cloud provider config as value in the cloud provider configmap. CloudProviderConfigMapKey = "cloudprovider.conf" - // MachineControllerManagerName is a constant for the name of the machine-controller-manager. - MachineControllerManagerName = "machine-controller-manager" - // MachineControllerManagerVpaName is the name of the VerticalPodAutoscaler of the machine-controller-manager deployment. - MachineControllerManagerVpaName = "machine-controller-manager-vpa" - // MachineControllerManagerMonitoringConfigName is the name of the ConfigMap containing monitoring stack configurations for machine-controller-manager. - MachineControllerManagerMonitoringConfigName = "machine-controller-manager-monitoring-config" // CloudControllerManagerName is the constant for the name of the CloudController deployed by the control plane controller. CloudControllerManagerName = "cloud-controller-manager" diff --git a/pkg/webhook/controlplane/ensurer.go b/pkg/webhook/controlplane/ensurer.go index f79276a20..cdef91e7c 100644 --- a/pkg/webhook/controlplane/ensurer.go +++ b/pkg/webhook/controlplane/ensurer.go @@ -41,9 +41,9 @@ import ( "sigs.k8s.io/controller-runtime/pkg/client" "sigs.k8s.io/controller-runtime/pkg/manager" - "github.com/23technologies/gardener-extension-provider-hcloud/pkg/hcloud" - controllerapis "github.com/23technologies/gardener-extension-provider-hcloud/pkg/hcloud/apis/controller" - "github.com/23technologies/gardener-extension-provider-hcloud/pkg/hcloud/apis/transcoder" + "github.com/opendefensecloud/gardener-extension-provider-hcloud/pkg/hcloud" + controllerapis "github.com/opendefensecloud/gardener-extension-provider-hcloud/pkg/hcloud/apis/controller" + "github.com/opendefensecloud/gardener-extension-provider-hcloud/pkg/hcloud/apis/transcoder" ) // NewEnsurer creates a new controlplane ensurer. @@ -70,15 +70,20 @@ func (e *ensurer) InjectClient(client client.Client) error { } // EnsureMachineControllerManagerDeployment ensures that the machine-controller-manager deployment conforms to the provider requirements. -func (e *ensurer) EnsureMachineControllerManagerDeployment(_ context.Context, _ gcontext.GardenContext, newObj, _ *appsv1.Deployment) error { +func (e *ensurer) EnsureMachineControllerManagerDeployment(ctx context.Context, gctx gcontext.GardenContext, newObj, _ *appsv1.Deployment) error { image, err := ImageVector.FindImage(hcloud.MCMProviderHcloudImageName) if err != nil { return err } + cluster, err := gctx.GetCluster(ctx) + if err != nil { + return err + } + newObj.Spec.Template.Spec.Containers = extensionswebhook.EnsureContainerWithName( newObj.Spec.Template.Spec.Containers, - machinecontrollermanager.ProviderSidecarContainer(newObj.Namespace, hcloud.Name, image.String()), + machinecontrollermanager.ProviderSidecarContainer(cluster.Shoot, newObj.Namespace, hcloud.Name, image.String()), ) return nil } @@ -100,8 +105,16 @@ func (e *ensurer) EnsureMachineControllerManagerVPA(_ context.Context, _ gcontex func (e *ensurer) EnsureKubeAPIServerDeployment(ctx context.Context, gctx gcontext.GardenContext, new, old *appsv1.Deployment) error { template := &new.Spec.Template ps := &template.Spec + cluster, err := gctx.GetCluster(ctx) + if err != nil { + return err + } + k8sVersion, err := semver.NewVersion(cluster.Shoot.Spec.Kubernetes.Version) + if err != nil { + return err + } if c := extensionswebhook.ContainerWithName(ps.Containers, "kube-apiserver"); c != nil { - ensureKubeAPIServerCommandLineArgs(c) + ensureKubeAPIServerCommandLineArgs(c, k8sVersion) } return nil } @@ -112,12 +125,9 @@ func (e *ensurer) EnsureKubeControllerManagerDeployment(ctx context.Context, gct return nil } -func ensureKubeAPIServerCommandLineArgs(c *corev1.Container) { - // Ensure CSI-related admission plugins - c.Command = extensionswebhook.EnsureNoStringWithPrefixContains(c.Command, "--enable-admission-plugins=", - "PersistentVolumeLabel", ",") - c.Command = extensionswebhook.EnsureStringWithPrefixContains(c.Command, "--disable-admission-plugins=", - "PersistentVolumeLabel", ",") +func ensureKubeAPIServerCommandLineArgs(c *corev1.Container, _ *semver.Version) { + // The PersistentVolumeLabel admission plugin handling only applied to + // Kubernetes < 1.31, which gardener >= v1.144 no longer supports. // Ensure CSI-related feature gates c.Command = extensionswebhook.EnsureNoStringWithPrefixContains(c.Command, "--feature-gates=", @@ -231,9 +241,51 @@ func (e *ensurer) EnsureAdditionalFiles(ctx context.Context, gctx gcontext.Garde return nil } +// EnsureAdditionalProvisionFiles ensures additional files for the 'provision' OperatingSystemConfig. +// "old" might be "nil" and must always be checked. +func (e *ensurer) EnsureAdditionalProvisionFiles(ctx context.Context, gctx gcontext.GardenContext, new, old *[]extensionsv1alpha1.File) error { + addContainerdAptPinFile(new) + return nil +} + +// addContainerdAptPinFile pins the APT package 'containerd' to the 1.7.x line. +// Ubuntu ships containerd 2.2.1 in the jammy/noble -updates pockets, whose +// 'ctr images mount' is broken (containerd/containerd#12549, fixed in 2.2.2); +// gardener-node-init depends on it, so worker nodes never join. Disabling the +// mount-manager plugin instead is not viable: the CRI image service in 2.2 has +// a hard dependency on it. See gardener/gardener-extension-os-ubuntu#313. The +// OS extension's provision script writes OSC files to disk before its +// 'apt-get install containerd' line, so the pin takes effect on first install; +// on operating systems without APT the file is inert. +// TODO: drop this once Ubuntu ships containerd >= 2.2.2 in -updates. +func addContainerdAptPinFile(new *[]extensionsv1alpha1.File) { + var ( + permissions uint32 = 0644 + content = `Explanation: containerd 2.2.x from Ubuntu -updates breaks 'ctr images mount' +Explanation: (containerd/containerd#12549), which gardener-node-init requires. +Explanation: Remove once Ubuntu ships containerd >= 2.2.2 +Explanation: (gardener/gardener-extension-os-ubuntu#313). +Package: containerd +Pin: version 1.7.* +Pin-Priority: 1001 +` + ) + + appendUniqueFile(new, extensionsv1alpha1.File{ + Path: "/etc/apt/preferences.d/gardener-containerd-pin", + Permissions: &permissions, + Content: extensionsv1alpha1.FileContent{ + Inline: &extensionsv1alpha1.FileContentInline{ + Encoding: "", + Data: content, + }, + }, + }) +} + func addDockerHTTPProxyFile(new *[]extensionsv1alpha1.File, httpProxyConf string) { var ( - permissions int32 = 0644 + permissions uint32 = 0644 ) appendUniqueFile(new, extensionsv1alpha1.File{ @@ -250,8 +302,8 @@ func addDockerHTTPProxyFile(new *[]extensionsv1alpha1.File, httpProxyConf string func addMergeDockerJSONFile(new *[]extensionsv1alpha1.File, insecureRegistries []string) { var ( - permissions int32 = 0755 - template = `#!/bin/sh + permissions uint32 = 0755 + template = `#!/bin/sh DOCKER_CONF=/etc/docker/daemon.json if [ ! -f ${DOCKER_CONF} ]; then diff --git a/pkg/webhook/controlplane/registration.go b/pkg/webhook/controlplane/registration.go index 81505ca70..59b0c391f 100644 --- a/pkg/webhook/controlplane/registration.go +++ b/pkg/webhook/controlplane/registration.go @@ -25,10 +25,11 @@ import ( "github.com/gardener/gardener/pkg/component/extensions/operatingsystemconfig/original/components/kubelet" oscutils "github.com/gardener/gardener/pkg/component/extensions/operatingsystemconfig/utils" appsv1 "k8s.io/api/apps/v1" + vpaautoscalingv1 "k8s.io/autoscaler/vertical-pod-autoscaler/pkg/apis/autoscaling.k8s.io/v1" "sigs.k8s.io/controller-runtime/pkg/log" "sigs.k8s.io/controller-runtime/pkg/manager" - "github.com/23technologies/gardener-extension-provider-hcloud/pkg/hcloud" + "github.com/opendefensecloud/gardener-extension-provider-hcloud/pkg/hcloud" ) var ( @@ -47,6 +48,7 @@ func AddToManager(mgr manager.Manager) (*extensionswebhook.Webhook, error) { Provider: hcloud.Type, Types: []extensionswebhook.Type{ {Obj: &appsv1.Deployment{}}, + {Obj: &vpaautoscalingv1.VerticalPodAutoscaler{}}, {Obj: &extensionsv1alpha1.OperatingSystemConfig{}}, }, Mutator: genericmutator.NewMutator( diff --git a/pkg/webhook/validator/registration.go b/pkg/webhook/validator/registration.go index f8f7319ea..f127518da 100644 --- a/pkg/webhook/validator/registration.go +++ b/pkg/webhook/validator/registration.go @@ -17,15 +17,14 @@ limitations under the License. package validator import ( - extensionspredicate "github.com/gardener/gardener/extensions/pkg/predicate" extensionswebhook "github.com/gardener/gardener/extensions/pkg/webhook" "github.com/gardener/gardener/pkg/apis/core" + v1beta1constants "github.com/gardener/gardener/pkg/apis/core/v1beta1/constants" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "sigs.k8s.io/controller-runtime/pkg/log" "sigs.k8s.io/controller-runtime/pkg/manager" - "sigs.k8s.io/controller-runtime/pkg/predicate" - "github.com/23technologies/gardener-extension-provider-hcloud/pkg/hcloud" + "github.com/opendefensecloud/gardener-extension-provider-hcloud/pkg/hcloud" ) const ( @@ -40,17 +39,14 @@ func New(mgr manager.Manager) (*extensionswebhook.Webhook, error) { logger.Info("Setting up webhook", "name", Name) return extensionswebhook.New(mgr, extensionswebhook.Args{ - Provider: hcloud.Type, - Name: Name, - Path: "/webhooks/validate", - Predicates: []predicate.Predicate{extensionspredicate.GardenCoreProviderType(hcloud.Type)}, + Name: Name, + Path: "/webhooks/validate", + Validators: map[extensionswebhook.Validator][]extensionswebhook.Type{ NewShootValidator(): {{Obj: &core.Shoot{}}}, NewCloudProfileValidator(): {{Obj: &core.CloudProfile{}}}, }, - Target: extensionswebhook.TargetSeed, - ObjectSelector: &metav1.LabelSelector{ - MatchLabels: map[string]string{"provider.extensions.gardener.cloud/hcloud": "true"}, - }, + Target: extensionswebhook.TargetSeed, + ObjectSelector: &metav1.LabelSelector{MatchLabels: map[string]string{v1beta1constants.LabelExtensionProviderTypePrefix + hcloud.Type: "true"}}, }) } diff --git a/pkg/webhook/validator/shoot.go b/pkg/webhook/validator/shoot.go index d0c5775bc..bd2f96cf0 100644 --- a/pkg/webhook/validator/shoot.go +++ b/pkg/webhook/validator/shoot.go @@ -29,9 +29,9 @@ import ( "k8s.io/apimachinery/pkg/util/validation/field" "sigs.k8s.io/controller-runtime/pkg/client" - "github.com/23technologies/gardener-extension-provider-hcloud/pkg/hcloud/apis" - "github.com/23technologies/gardener-extension-provider-hcloud/pkg/hcloud/apis/transcoder" - "github.com/23technologies/gardener-extension-provider-hcloud/pkg/hcloud/apis/validation" + "github.com/opendefensecloud/gardener-extension-provider-hcloud/pkg/hcloud/apis" + "github.com/opendefensecloud/gardener-extension-provider-hcloud/pkg/hcloud/apis/transcoder" + "github.com/opendefensecloud/gardener-extension-provider-hcloud/pkg/hcloud/apis/validation" ) // NewShootValidator returns a new instance of a shoot validator.