diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml index 76c9954..05ccf2c 100644 --- a/.github/workflows/test.yaml +++ b/.github/workflows/test.yaml @@ -20,10 +20,10 @@ jobs: - name: Checkout uses: actions/checkout@v4 - - name: Set up Go 1.22 + - name: Set up Go 1.23 uses: actions/setup-go@v5 with: - go-version: '1.22.x' + go-version: '1.23.x' - name: Check (lint) and Test run: | diff --git a/Dockerfile b/Dockerfile index 64583d8..74382bd 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM golang:1.22-alpine3.20 AS builder +FROM golang:1.23-alpine3.20 AS builder RUN apk add make git gcc musl-dev WORKDIR /work COPY . . diff --git a/Makefile b/Makefile index fc12dd2..f50d7ea 100644 --- a/Makefile +++ b/Makefile @@ -12,6 +12,8 @@ # See the License for the specific language governing permissions and # limitations under the License. +ENSURE_GARDENER_MOD := $(shell go get github.com/gardener/gardener@$$(go list -m -f "{{.Version}}" github.com/gardener/gardener)) +GARDENER_HACK_DIR := $(shell go list -m -f "{{.Dir}}" github.com/gardener/gardener)/hack REGISTRY := ghcr.io IMAGE_PREFIX := $(REGISTRY)/metal-stack IMAGE_TAG := $(or ${GITHUB_TAG_NAME}, latest) @@ -27,8 +29,8 @@ VERIFY := true LEADER_ELECTION := false IGNORE_OPERATION_ANNOTATION := false -GOLANGCI_LINT_VERSION := v1.59.1 -GO_VERSION := 1.22 +GOLANGCI_LINT_VERSION := v1.61.0 +GO_VERSION := 1.23 ifeq ($(CI),true) DOCKER_TTY_ARG="" @@ -41,8 +43,8 @@ export GO111MODULE := on ### Build commands -TOOLS_DIR := hack/tools --include vendor/github.com/gardener/gardener/hack/tools.mk +TOOLS_DIR := $(HACK_DIR)/tools +include $(GARDENER_HACK_DIR)/tools.mk .PHONY: all all: @@ -52,29 +54,25 @@ all: .PHONY: clean clean: rm os-metal + @$(shell find ./example -type f -name "controller-registration.yaml" -exec rm '{}' \;) + @bash $(GARDENER_HACK_DIR)/clean.sh ./cmd/... ./pkg/... .PHONY: install -install: revendor $(CONTROLLER_GEN) $(GEN_CRD_API_REFERENCE_DOCS) $(HELM) $(MOCKGEN) +install: tidy $(CONTROLLER_GEN) $(GEN_CRD_API_REFERENCE_DOCS) $(HELM) $(MOCKGEN) @LD_FLAGS="-w -X github.com/gardener/$(EXTENSION_PREFIX)-$(NAME)/pkg/version.Version=$(VERSION)" \ - $(REPO_ROOT)/vendor/github.com/gardener/gardener/hack/install.sh ./... + bash $(GARDENER_HACK_DIR)/install.sh ./... .PHONY: tidy tidy: @GO111MODULE=on go mod tidy - -.PHONY: revendor -revendor: - @GO111MODULE=on go mod tidy - @GO111MODULE=on go mod vendor - @chmod +x $(REPO_ROOT)/vendor/github.com/gardener/gardener/hack/* - @chmod +x $(REPO_ROOT)/vendor/github.com/gardener/gardener/hack/.ci/* + @mkdir -p $(REPO_ROOT)/.ci/hack && cp $(GARDENER_HACK_DIR)/.ci/* $(REPO_ROOT)/.ci/hack/ && chmod +xw $(REPO_ROOT)/.ci/hack/* .PHONY: generate -generate: $(HELM) $(YQ) - @$(REPO_ROOT)/vendor/github.com/gardener/gardener/hack/generate-sequential.sh ./charts/... ./cmd/... ./pkg/... +generate: $(VGOPATH) $(HELM) $(YQ) + @REPO_ROOT=$(REPO_ROOT) VGOPATH=$(VGOPATH) GARDENER_HACK_DIR=$(GARDENER_HACK_DIR) bash $(GARDENER_HACK_DIR)/generate-sequential.sh ./charts/... ./cmd/... ./pkg/... .PHONE: generate-in-docker -generate-in-docker: revendor $(HELM) $(YQ) +generate-in-docker: tidy $(HELM) $(YQ) docker run --rm -it -v $(PWD):/go/src/github.com/metal-stack/os-metal-extension golang:$(GO_VERSION) \ sh -c "cd /go/src/github.com/metal-stack/os-metal-extension \ && make generate \ @@ -86,15 +84,15 @@ check-generate: .PHONY: check check: $(GOIMPORTS) $(GOLANGCI_LINT) $(HELM) - @$(REPO_ROOT)/vendor/github.com/gardener/gardener/hack/check.sh --golangci-lint-config=./.golangci.yaml ./cmd/... ./pkg/... - @$(REPO_ROOT)/vendor/github.com/gardener/gardener/hack/check-charts.sh ./charts + @REPO_ROOT=$(REPO_ROOT) bash $(GARDENER_HACK_DIR)/check.sh --golangci-lint-config=./.golangci.yaml ./cmd/... ./pkg/... + @REPO_ROOT=$(REPO_ROOT) bash $(GARDENER_HACK_DIR)/check-charts.sh ./charts .PHONY: test test: - @SKIP_FETCH_TOOLS=1 $(REPO_ROOT)/vendor/github.com/gardener/gardener/hack/test.sh ./cmd/... ./pkg/... + @bash $(GARDENER_HACK_DIR)/test.sh ./cmd/... ./pkg/... .PHONY: test-in-docker -test-in-docker: revendor +test-in-docker: tidy docker run --rm -i$(DOCKER_TTY_ARG) \ --user $$(id -u):$$(id -g) \ --mount type=tmpfs,destination=/.cache \ diff --git a/charts/os-metal/doc.go b/charts/os-metal/doc.go index 99e2187..167a2cc 100644 --- a/charts/os-metal/doc.go +++ b/charts/os-metal/doc.go @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -//go:generate sh -c "../../vendor/github.com/gardener/gardener/hack/generate-controller-registration.sh os-metal . $(cat ../../VERSION) ../../example/controller-registration.yaml OperatingSystemConfig:ubuntu OperatingSystemConfig:debian" +//go:generate sh -c "bash $GARDENER_HACK_DIR/generate-controller-registration.sh os-metal . $(cat ../../VERSION) ../../example/controller-registration.yaml OperatingSystemConfig:ubuntu OperatingSystemConfig:debian" // Package chart enables go:generate support for generating the correct controller registration. package chart diff --git a/example/controller-registration.yaml b/example/controller-registration.yaml index 3ad9d21..1a21180 100644 --- a/example/controller-registration.yaml +++ b/example/controller-registration.yaml @@ -1,11 +1,10 @@ --- -apiVersion: core.gardener.cloud/v1beta1 +apiVersion: core.gardener.cloud/v1 kind: ControllerDeployment metadata: name: os-metal -type: helm -providerConfig: - chart: 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 +helm: + rawChart: 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 values: image: tag: 0.0.1 diff --git a/go.mod b/go.mod index bbc0c40..ccdaf9b 100644 --- a/go.mod +++ b/go.mod @@ -1,26 +1,24 @@ module github.com/metal-stack/os-metal-extension -go 1.22.0 - -toolchain go1.22.5 +go 1.23 require ( github.com/ahmetb/gen-crd-api-reference-docs v0.3.0 github.com/flatcar/container-linux-config-transpiler v0.9.4 - github.com/gardener/gardener v1.89.4 + github.com/gardener/gardener v1.96.6 github.com/go-logr/logr v1.4.2 github.com/golang/mock v1.6.0 github.com/google/go-cmp v0.6.0 - github.com/metal-stack/gardener-extension-provider-metal v0.24.4 + github.com/metal-stack/gardener-extension-provider-metal v0.25.0 github.com/onsi/ginkgo/v2 v2.20.0 github.com/onsi/gomega v1.34.1 github.com/spf13/cobra v1.8.1 - k8s.io/api v0.29.3 - k8s.io/apimachinery v0.29.3 - k8s.io/code-generator v0.29.3 - k8s.io/component-base v0.29.3 - k8s.io/utils v0.0.0-20240310230437-4693a0247e57 - sigs.k8s.io/controller-runtime v0.16.6 + k8s.io/api v0.29.5 + k8s.io/apimachinery v0.29.5 + k8s.io/code-generator v0.29.5 + k8s.io/component-base v0.29.5 + k8s.io/utils v0.0.0-20240502163921-fe8a2dddb1d0 + sigs.k8s.io/controller-runtime v0.17.5 ) require ( @@ -38,15 +36,16 @@ require ( github.com/cyphar/filepath-securejoin v0.2.4 // indirect github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect github.com/emicklei/go-restful/v3 v3.12.1 // indirect - github.com/evanphx/json-patch v5.6.0+incompatible // indirect + github.com/evanphx/json-patch v5.7.0+incompatible // indirect github.com/evanphx/json-patch/v5 v5.9.0 // indirect github.com/fatih/color v1.17.0 // indirect github.com/flatcar/ignition v0.36.2 // indirect - github.com/fluent/fluent-operator/v2 v2.2.0 // indirect + github.com/fluent/fluent-operator/v2 v2.8.0 // indirect github.com/fsnotify/fsnotify v1.7.0 // indirect + github.com/gardener/cert-management v0.14.3 // indirect github.com/gardener/etcd-druid v0.22.0 // indirect - github.com/gardener/hvpa-controller/api v0.5.0 // indirect - github.com/gardener/machine-controller-manager v0.50.1 // indirect + github.com/gardener/hvpa-controller/api v0.15.0 // indirect + github.com/gardener/machine-controller-manager v0.53.0 // indirect github.com/go-logr/zapr v1.3.0 // indirect github.com/go-openapi/errors v0.22.0 // indirect github.com/go-openapi/jsonpointer v0.21.0 // indirect @@ -68,7 +67,7 @@ require ( github.com/huandu/xstrings v1.4.0 // indirect github.com/imdario/mergo v0.3.16 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect - github.com/ironcore-dev/vgopath v0.1.3 // indirect + github.com/ironcore-dev/vgopath v0.1.4 // indirect github.com/josharian/intern v1.0.0 // indirect github.com/json-iterator/go v1.1.12 // indirect github.com/kubernetes-csi/external-snapshotter/client/v4 v4.2.0 // indirect @@ -83,24 +82,24 @@ require ( github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f // indirect github.com/pkg/errors v0.9.1 // indirect - github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring v0.71.0 // indirect + github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring v0.74.0 // indirect github.com/prometheus/client_golang v1.19.1 // indirect github.com/prometheus/client_model v0.6.1 // indirect - github.com/prometheus/common v0.54.0 // indirect + github.com/prometheus/common v0.55.0 // indirect github.com/prometheus/procfs v0.15.1 // indirect github.com/russross/blackfriday/v2 v2.1.0 // indirect - github.com/shopspring/decimal v1.2.0 // indirect + github.com/shopspring/decimal v1.3.1 // indirect github.com/spf13/afero v1.11.0 // indirect github.com/spf13/cast v1.6.0 // indirect github.com/spf13/pflag v1.0.5 // indirect github.com/vincent-petithory/dataurl v1.0.0 // indirect - github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f // 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.uber.org/mock v0.4.0 // indirect go.uber.org/multierr v1.11.0 // indirect go.uber.org/zap v1.27.0 // indirect - go4.org v0.0.0-20230225012048-214862532bf5 // indirect + go4.org v0.0.0-20201209231011-d4a079459e60 // indirect golang.org/x/crypto v0.26.0 // indirect golang.org/x/exp v0.0.0-20240808152545-0cdaa3abc0fa // indirect golang.org/x/mod v0.20.0 // indirect @@ -118,22 +117,21 @@ require ( 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.11.1 // indirect - istio.io/api v1.19.2-0.20231011000955-f3015ebb5bd4 // indirect - istio.io/client-go v1.19.3 // indirect - k8s.io/apiextensions-apiserver v0.29.3 // indirect + helm.sh/helm/v3 v3.14.4 // indirect + istio.io/api v1.22.0 // indirect + istio.io/client-go v1.22.0 // indirect + k8s.io/apiextensions-apiserver v0.29.5 // indirect k8s.io/autoscaler v0.0.0-20190805135949-100e91ba756e // indirect k8s.io/client-go v11.0.1-0.20190409021438-1a26190bd76a+incompatible // indirect k8s.io/gengo v0.0.0-20230829151522-9cce18d56c01 // indirect - k8s.io/helm v2.17.0+incompatible // indirect k8s.io/klog v1.0.0 // indirect - k8s.io/klog/v2 v2.110.1 // indirect - k8s.io/kube-aggregator v0.28.3 // indirect + k8s.io/klog/v2 v2.120.1 // indirect + k8s.io/kube-aggregator v0.29.5 // indirect k8s.io/kube-openapi v0.0.0-20231010175941-2dd684a91f00 // indirect - k8s.io/kubelet v0.29.3 // indirect - k8s.io/metrics v0.28.3 // indirect + k8s.io/kubelet v0.29.5 // indirect + k8s.io/metrics v0.29.5 // indirect sigs.k8s.io/controller-runtime/tools/setup-envtest v0.0.0-20231015215740-bf15e44028f9 // indirect - sigs.k8s.io/controller-tools v0.13.0 // indirect + sigs.k8s.io/controller-tools v0.14.0 // indirect sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd // indirect sigs.k8s.io/structured-merge-diff/v4 v4.4.1 // indirect sigs.k8s.io/yaml v1.4.0 // indirect diff --git a/go.sum b/go.sum index 683dbac..05d7d9c 100644 --- a/go.sum +++ b/go.sum @@ -624,8 +624,6 @@ github.com/ajstarks/deck v0.0.0-20200831202436-30c9fc6549a9/go.mod h1:JynElWSGnm github.com/ajstarks/deck/generate v0.0.0-20210309230005-c3f852c02e19/go.mod h1:T13YZdzov6OU0A1+RfKZiZN9ca6VeKdBdyDV+BY97Tk= github.com/ajstarks/svgo v0.0.0-20180226025133-644b8db467af/go.mod h1:K08gAheRH3/J6wwsYMMT4xOr94bZjxIelGM0+d/wbFw= github.com/ajstarks/svgo v0.0.0-20211024235047-1546f124cd8b/go.mod h1:1KcenG0jGWcpt8ov532z81sp/kMMUG485J2InIOyADM= -github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= -github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= github.com/alecthomas/units v0.0.0-20210208195552-ff826a37aa15/go.mod h1:OMCwj8VM1Kc9e19TLln2VL61YJF0x1XFtfdL4JdbSyE= github.com/alecthomas/units v0.0.0-20211218093645-b94a6e3cc137 h1:s6gZFSlWYmbqAuRjVTiNNhvNRfY2Wxp9nhfyel4rklc= github.com/alecthomas/units v0.0.0-20211218093645-b94a6e3cc137/go.mod h1:OMCwj8VM1Kc9e19TLln2VL61YJF0x1XFtfdL4JdbSyE= @@ -638,11 +636,8 @@ github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 h1:0CwZNZbxp69SHPd github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs= github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a/go.mod h1:lB+ZfQJz7igIIfQNfa7Ml4HSf2uFQQRzpGGRXenZAgY= github.com/aws/aws-sdk-go v1.8.39/go.mod h1:ZRmQr0FajVIyZ4ZzBYKG5P3ZqPz9IHG41ZoMu1ADI3k= -github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= -github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= 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 v3.5.0+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk= 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/boombuler/barcode v1.0.0/go.mod h1:paBWMcWSl3LHKBqUq+rly7CNSldXjb2rDl3JlRe0mD8= @@ -712,12 +707,10 @@ github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7 github.com/envoyproxy/protoc-gen-validate v0.6.7/go.mod h1:dyJXwwfPK2VSqiB9Klm1J6romD608Ba7Hij42vrOBCo= github.com/envoyproxy/protoc-gen-validate v0.9.1/go.mod h1:OKNgG7TCp5pF4d6XftA0++PMirau2/yoOwVac3AbF2w= github.com/envoyproxy/protoc-gen-validate v0.10.0/go.mod h1:DRjgyB0I43LtJapqN6NiRwroiAU2PaFuvk/vjgh61ss= -github.com/evanphx/json-patch v0.0.0-20200808040245-162e5629780b/go.mod h1:NAJj0yf/KaRKURN6nyi7A9IZydMivZEm9oQLWNjfKDc= -github.com/evanphx/json-patch v4.2.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= github.com/evanphx/json-patch v4.9.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= github.com/evanphx/json-patch v4.12.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= -github.com/evanphx/json-patch v5.6.0+incompatible h1:jBYDEEiFBPxA0v50tFdvOzQQTCvpL6mnFh5mB2/l16U= -github.com/evanphx/json-patch v5.6.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= +github.com/evanphx/json-patch v5.7.0+incompatible h1:vgGkfT/9f8zE6tvSCe74nfpAVDQ2tG6yudJd8LBksgI= +github.com/evanphx/json-patch v5.7.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= github.com/evanphx/json-patch/v5 v5.9.0 h1:kcBlZQbplgElYIlo/n1hJbls2z/1awpXxpRi0/FOJfg= github.com/evanphx/json-patch/v5 v5.9.0/go.mod h1:VNkHZ/282BpEyt/tObQO8s5CMPmYYq14uClGH4abBuQ= github.com/fatih/color v1.17.0 h1:GlRw1BRJxkpqUCBKzKOw098ed57fEsKeNjpTe3cSjK4= @@ -726,8 +719,8 @@ github.com/flatcar/container-linux-config-transpiler v0.9.4 h1:yXQ0NB8PeNrKJPrZv github.com/flatcar/container-linux-config-transpiler v0.9.4/go.mod h1:LxanhPvXkWgHG9PrkT4rX/p7YhUPdDGGsUdkNpV3L5U= github.com/flatcar/ignition v0.36.2 h1:xGHgScUe0P4Fkprjqv7L2CE58emiQgP833OCCn9z2v4= github.com/flatcar/ignition v0.36.2/go.mod h1:uk1tpzLFRXus4RrvzgMI+IqmmB8a/RGFSBlI+tMTbbA= -github.com/fluent/fluent-operator/v2 v2.2.0 h1:97CiP6WKOHRM7zY/zCynX187Rg+T8hgx2JzD2iuJof8= -github.com/fluent/fluent-operator/v2 v2.2.0/go.mod h1:v/q0zLEOWP6MKHP7xvrhtASZTwlrk4LcCne/kgPQ7J0= +github.com/fluent/fluent-operator/v2 v2.8.0 h1:G6TB1Fq6wx+HflXmv2mc7bhj2MiDoT9OfAeq/XkPCgI= +github.com/fluent/fluent-operator/v2 v2.8.0/go.mod h1:nGKS5Iryq98Jqt+Ixc8YSMmOzM/yNxD8Xwtt76DhmTg= github.com/fogleman/gg v1.2.1-0.20190220221249-0403632d5b90/go.mod h1:R/bRT+9gY/C5z7JzPU0zXsXHKM4/ayA+zqcVNZzPa1k= github.com/fogleman/gg v1.3.0/go.mod h1:R/bRT+9gY/C5z7JzPU0zXsXHKM4/ayA+zqcVNZzPa1k= github.com/frankban/quicktest v1.14.6 h1:7Xjx+VpznH+oBnejlPUj8oUpdxnVs4f8XU8WnHkI4W8= @@ -736,14 +729,16 @@ github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMo github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= github.com/fsnotify/fsnotify v1.7.0 h1:8JEhPFa5W2WU7YfeZzPNqzMP6Lwt7L2715Ggo0nosvA= github.com/fsnotify/fsnotify v1.7.0/go.mod h1:40Bi/Hjc2AVfZrqy+aj+yEI+/bRxZnMJyTJwOpGvigM= +github.com/gardener/cert-management v0.14.3 h1:u1Ucj6Q0GbNUjjROlzSdU5GS1ac2cSEZ4VFe7lLQe84= +github.com/gardener/cert-management v0.14.3/go.mod h1:qSUnrecP7AIccfSos1Afm6WqHCHO+Yy2befu17i/qQE= github.com/gardener/etcd-druid v0.22.0 h1:DVe+Zjrb93r9vI1uUiCTMHBffIUoMAKhNzFZNC6hsQ8= github.com/gardener/etcd-druid v0.22.0/go.mod h1:FROhfVKyWBo4krlPe3R6FIhJRmOmijEWBdEeUP0CJjE= -github.com/gardener/gardener v1.89.4 h1:m2K/lLL25wLta6mAFQ25/ngR+KYeMICF6MWLgrwEtu0= -github.com/gardener/gardener v1.89.4/go.mod h1:9XpmG8MvZ2p36J7200qaGcqaFQ9vaP2ogZVkU6VgNGI= -github.com/gardener/hvpa-controller/api v0.5.0 h1:f4F3O7YUrenwh4S3TgPREPiB287JjjUiUL18OqPLyAA= -github.com/gardener/hvpa-controller/api v0.5.0/go.mod h1:QQl3ELkCaki+8RhXl0FZMfvnm0WCGwGJlGmrxJj6lvM= -github.com/gardener/machine-controller-manager v0.50.1 h1:lL2q0O+K6jkgYzHPz85wIc9MzASZaiDvLYnTxW7P5ws= -github.com/gardener/machine-controller-manager v0.50.1/go.mod h1:RySZ40AgbNV/wMq60G/w49kb+okbj5Xs1A6usz5Pm/I= +github.com/gardener/gardener v1.96.6 h1:SWiK4U8UdxIb9GvN9XcZa1GIQEP+Ul5wAlgl5st0zR0= +github.com/gardener/gardener v1.96.6/go.mod h1:wXAk6DzltkuJzWvAmIvw1/GscfCn2Po3LWWCr4oCbiQ= +github.com/gardener/hvpa-controller/api v0.15.0 h1:igsalL5Z6kFMn1+Kv1Eq0cRjYW+4oBA1aEY/yDO2QtI= +github.com/gardener/hvpa-controller/api v0.15.0/go.mod h1:fqb4wNrQLESDKpm7ppXyCM2Gvx96wRlLL35aH0ge07U= +github.com/gardener/machine-controller-manager v0.53.0 h1:g2O0F7nEYZ9LjyPY6Gew8+q0n+rU88deexNq5k8CKks= +github.com/gardener/machine-controller-manager v0.53.0/go.mod h1:XWXHaTy32TU0qmLjWqOgtw8NncdB0HfFzXhUUrcpr7Y= github.com/ghodss/yaml v0.0.0-20150909031657-73d445a93680/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= github.com/go-fonts/dejavu v0.1.0/go.mod h1:4Wt4I4OU2Nq9asgDCteaAaWZOV24E+0/Pwo0gppep4g= @@ -755,10 +750,8 @@ github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9 github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= github.com/go-ini/ini v1.25.4/go.mod h1:ByCAeIL28uOIIG0E3PJtZPDL8WnHpFKFOtgjp+3Ies8= -github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= github.com/go-latex/latex v0.0.0-20210118124228-b3d85cf34e07/go.mod h1:CO1AlKB2CSIqUrmQPqA0gdRIlnLEY0gK5JGjh37zN5U= github.com/go-latex/latex v0.0.0-20210823091927-c0d11ff05a81/go.mod h1:SX0U8uGpxhq9o2S/CELCSUxEWWAuoCUcVCQWv7G2OCk= -github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= 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.2.0/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= @@ -794,7 +787,6 @@ github.com/go-openapi/swag v0.23.0 h1:vsEVJDUo2hPJ2tu0/Xc+4noaxyEffXNIs3cOULZ+Gr github.com/go-openapi/swag v0.23.0/go.mod h1:esZ8ITTYEsH1V2trKHjAN8Ai7xHb8RV+YSZ577vPjgQ= github.com/go-pdf/fpdf v0.5.0/go.mod h1:HzcnA+A23uwogo0tp9yU+l3V+KXhiESpt1PMayhOh5M= github.com/go-pdf/fpdf v0.6.0/go.mod h1:HzcnA+A23uwogo0tp9yU+l3V+KXhiESpt1PMayhOh5M= -github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0/go.mod h1:fyg7847qk6SyHyPtNmDHnmrv/HOrqktSC+C9fM+CJOE= github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572/go.mod h1:9Pwr4B2jHnOSGXyyzV8ROjYa2ojvAY6HCGYYfMoC3Ls= github.com/go-task/slim-sprig/v3 v3.0.0 h1:sUs3vkvUymDpBKi3qH1YSqBQk9+9D/8M2mN1vB6EwHI= @@ -805,7 +797,6 @@ 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-json v0.9.11/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I= github.com/godbus/dbus v0.0.0-20181025153459-66d97aec3384/go.mod h1:/YcGZj5zSblfDWMMoOzV4fas9FZnQYTkDnsGvmh2Grw= -github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= 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= @@ -813,7 +804,6 @@ github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0/go.mod h1:E/TSTwGw github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= github.com/golang/glog v1.0.0/go.mod h1:EWib/APOK0SL3dFbYqvxE3UYd8E6s1ouQ7iEp/0LWV4= github.com/golang/glog v1.1.0/go.mod h1:pfYeQZ3JWZoXTV5sFc986z3HTpwQs9At6P4ImfuP3NQ= -github.com/golang/groupcache v0.0.0-20160516000752-02826c3e7903/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= 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/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= @@ -829,7 +819,6 @@ github.com/golang/mock v1.4.4/go.mod h1:l3mdAwkq5BuhzHwde/uurv3sEJeZMXNpwsxVWU71 github.com/golang/mock v1.5.0/go.mod h1:CWnOUgYIOo4TcNZ0wHX3YZCqsaM1I1Jvs6v3mP3KVu8= 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 v0.0.0-20161109072736-4bd1920723d7/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= 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= @@ -931,8 +920,6 @@ github.com/googleapis/gax-go/v2 v2.7.1/go.mod h1:4orTrqY6hXxxaUL4LHIPl6lGo8vAE38 github.com/googleapis/gax-go/v2 v2.8.0/go.mod h1:4orTrqY6hXxxaUL4LHIPl6lGo8vAE38/qKbhSAKP6QI= github.com/googleapis/gax-go/v2 v2.10.0/go.mod h1:4UOEnMCrxsSqQ940WnTiD6qJ63le2ev3xfyagutxiPw= github.com/googleapis/gax-go/v2 v2.11.0/go.mod h1:DxmR61SGKkGLa2xigwuZIQpkCI2S5iydzRfb3peWZJI= -github.com/googleapis/gnostic v0.0.0-20170729233727-0c5108395e2d/go.mod h1:sJBsCZ4ayReDTBIg8b9dl28c5xFWyhBTVRp3pOg5EKY= -github.com/googleapis/gnostic v0.1.0/go.mod h1:sJBsCZ4ayReDTBIg8b9dl28c5xFWyhBTVRp3pOg5EKY= github.com/googleapis/gnostic v0.4.1/go.mod h1:LRhVm6pbyptWbWbuZ38d1eyptfvIytN3ir6b65WBswg= github.com/googleapis/go-type-adapters v1.0.0/go.mod h1:zHW75FOG2aur7gAO2B+MLby+cLsWGBF62rFAi7WjWO4= github.com/googleapis/google-cloud-go-testing v0.0.0-20200911160855-bcd43fbb19e8/go.mod h1:dvDLG8qkwmyD9a/MJJN3XJcT3xFxOKAvTZGvuZmac9g= @@ -964,21 +951,18 @@ github.com/imdario/mergo v0.3.16 h1:wwQJbIsHYGMUyLSPrEq1CT16AhnhNJQ51+4fdHUnCl4= github.com/imdario/mergo v0.3.16/go.mod h1:WBLT9ZmE3lPoWsEzCh9LPo3TiwVN+ZKEjmz+hD27ysY= 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.3 h1:/g3QJ29VrUkYEy52kcUhtvQ3mxfbMIlI1uvEbmt6S4E= -github.com/ironcore-dev/vgopath v0.1.3/go.mod h1:edfsCmU2M4r2N+t4RebSluq//tF3vzogyiDDhcf7MXs= -github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= +github.com/ironcore-dev/vgopath v0.1.4 h1:hBMuv7+wnZp5JHkVfdg4mtP8hsIGvuv42+l+F2wmQxk= +github.com/ironcore-dev/vgopath v0.1.4/go.mod h1:PTGnX8xW/QDytFR7oU4kcXr1RPDLCgAJ0ZUa5Rp8vyI= github.com/jmespath/go-jmespath v0.0.0-20160202185014-0b12d6b521d8/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= github.com/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8HmY= github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y= github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= -github.com/json-iterator/go v1.1.8/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= 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/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/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= -github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= github.com/jung-kurt/gofpdf v1.0.0/go.mod h1:7Id9E/uU8ce6rXgefFLlgrJj/GYY22cpxn+r32jIOes= github.com/jung-kurt/gofpdf v1.0.3-0.20190309125859-24315acbbda5/go.mod h1:7Id9E/uU8ce6rXgefFLlgrJj/GYY22cpxn+r32jIOes= github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51/go.mod h1:CzGEWj7cYgsdH8dAjBGEr58BoE7ScuLd+fwFZ44+/x8= @@ -988,9 +972,7 @@ github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+o github.com/klauspost/asmfmt v1.3.2/go.mod h1:AG8TuvYojzulgDAMCnYn50l/5QV3Bs/tp6j0HLHbNSE= github.com/klauspost/compress v1.15.9/go.mod h1:PhcZ0MbTNciWF3rruxRgKxI5NkcHHrHUDtV4Yw2GlzU= github.com/klauspost/cpuid/v2 v2.0.9/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg= -github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg= -github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= 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.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= @@ -1020,9 +1002,8 @@ github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/ 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-sqlite3 v1.14.14/go.mod h1:NyWgC/yNuGj7Q9rpYnZvas74GogHl5/Z4A/KQRfk6bU= -github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= -github.com/metal-stack/gardener-extension-provider-metal v0.24.4 h1:Elv176AGdkKpk1yrhkFs6s1t93j3Cq5WDqHGN2phVtc= -github.com/metal-stack/gardener-extension-provider-metal v0.24.4/go.mod h1:C/LSL4XGUbcg2HJUA2qMp19P3ZaXf8g8hGpM+8cepb4= +github.com/metal-stack/gardener-extension-provider-metal v0.25.0 h1:2VV4qCvgYQAHwVm6MECkUU4U4jhgB0PMcrMCbhzbUWo= +github.com/metal-stack/gardener-extension-provider-metal v0.25.0/go.mod h1:VeNKhyP28wMEOXjhC2rTbDkSIUFVByGbzpiNlsS2XoU= github.com/minio/asm2plan9s v0.0.0-20200509001527-cdd76441f9d8/go.mod h1:mC1jAcsrzbxHt8iiaC+zU4b1ylILSosueou12R++wfY= github.com/minio/c2goasm v0.0.0-20190812172519-36a3d3bbc4f3/go.mod h1:RagcQ7I8IeTMnF8JTXieKnO4Z6JCsikNEzj0DwauVzE= github.com/mitchellh/copystructure v1.0.0/go.mod h1:SNtv71yrdKgLRyLFxmLdkAbkKEFWgYaq1OVrnRcwhnw= @@ -1043,7 +1024,6 @@ github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjY 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-20161129095857-cc309e4a2223/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/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A= @@ -1104,7 +1084,6 @@ github.com/phpdave11/gofpdi v1.0.13/go.mod h1:vBmVV0Do6hSBHC8uKUQ71JGW+ZGQq74llk github.com/pierrec/lz4/v4 v4.1.15/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFuRQyBid4= github.com/pin/tftp v2.1.0+incompatible/go.mod h1:xVpZOMCXTy+A5QMjEVN0Glwa1sUvaJhFXbr/aAxuxGY= github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA= -github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= @@ -1113,25 +1092,17 @@ github.com/pkg/sftp v1.13.1/go.mod h1:3HaPG6Dq1ILlpPZRO0HVMrsydcdLt6HRDccSgb87qR 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.71.0 h1:et+XkusxWLz+XNqZiyMom9tv9ACvNAUyLXti2LTiV7o= -github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring v0.71.0/go.mod h1:3RiUkFmR9kmPZi9r/8a5jw0a9yg+LMmr7qa0wjqvSiI= -github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= -github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo= +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.19.1 h1:wZWJDwK+NameRJuPGDhlnFgx8e8HN3XHQeLaYJFJBOE= github.com/prometheus/client_golang v1.19.1/go.mod h1:mP78NwGzrVks5S2H6ab8+ZZGJLZUq1hoULYBAYBw1Ho= -github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= -github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.3.0/go.mod h1:LDGWKZIo7rky3hgvBe+caln+Dr3dPggB5dvjtD7w9+w= github.com/prometheus/client_model v0.6.1 h1:ZKSh/rekM+n3CeS952MLRAdFwIKqeY8b62p8ais2e9E= github.com/prometheus/client_model v0.6.1/go.mod h1:OrxVMOVHjw3lKMa8+x6HeMGkHMQyHDk9E3jmP2AmGiY= -github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= -github.com/prometheus/common v0.54.0 h1:ZlZy0BgJhTwVZUn7dLOkwCZHUkrAqd3WYtcFCWnM1D8= -github.com/prometheus/common v0.54.0/go.mod h1:/TQgMJP5CuVYveyT7n/0Ix8yLNNXy9yRSkhnLTHPDIQ= -github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= -github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= -github.com/prometheus/procfs v0.0.5/go.mod h1:4A/X28fw3Fc593LaREMrKMqOKvUAntwMDaekg4FpcdQ= +github.com/prometheus/common v0.55.0 h1:KEi6DK7lXW/m7Ig5i47x0vRzuBsHuvJdi5ee6Y3G1dc= +github.com/prometheus/common v0.55.0/go.mod h1:2SECS4xJG1kd8XF9IcM1gMX6510RAEL65zxzNImwdc8= github.com/prometheus/procfs v0.15.1 h1:YagwOFzUgYfKKHX6Dr+sHT7km/hxC76UB0learggepc= github.com/prometheus/procfs v0.15.1/go.mod h1:fB45yRUv8NstnjriLhBQLuOUt+WW4BsoGhij/e3PBqk= github.com/remyoudompheng/bigfft v0.0.0-20200410134404-eec4a21b6bb0/go.mod h1:qqbHyh8v60DhA7CoWK5oRCqLrMHRGoxYCSS9EjAz6Eo= @@ -1148,12 +1119,12 @@ github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQD github.com/ruudk/golang-pdf417 v0.0.0-20181029194003-1af4ab5afa58/go.mod h1:6lfFZQK844Gfx8o5WFuvpxWRwnSoipWe/p622j1v06w= github.com/ruudk/golang-pdf417 v0.0.0-20201230142125-a7e3863a1245/go.mod h1:pQAZKsJ8yyVxGRWYNEm9oFB8ieLgKFnamEyDmSA0BRk= github.com/rwcarlsen/goexif v0.0.0-20190401172101-9e8deecbddbd/go.mod h1:hPqNNc0+uJM6H+SuU8sEs5K5IQeKccPqeSjfgcKGgPk= -github.com/shopspring/decimal v1.2.0 h1:abSATXmQEYyShuxI4/vyW3tV1MrKAJzCZ/0zLUXYbsQ= github.com/shopspring/decimal v1.2.0/go.mod h1:DKyhrW/HYNuLGql+MJL6WCR6knT2jwCFRcu2hWCYk4o= +github.com/shopspring/decimal v1.3.1 h1:2Usl1nmF/WZucqkFZhnfFYxxxu8LG21F6nPQBE5gKV8= +github.com/shopspring/decimal v1.3.1/go.mod h1:DKyhrW/HYNuLGql+MJL6WCR6knT2jwCFRcu2hWCYk4o= github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= github.com/sigma/bdoor v0.0.0-20160202064022-babf2a4017b0/go.mod h1:WBu7REWbxC/s/J06jsk//d+9DOz9BbsmcIrimuGRFbs= github.com/sigma/vmw-guestinfo v0.0.0-20160204083807-95dd4126d6e8/go.mod h1:JrRFFC0veyh0cibh0DAhriSY7/gV3kDdNaVUOmfx01U= -github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= github.com/smartystreets/assertions v1.2.0/go.mod h1:tcbTF8ujkAEcZ8TElKY+i30BzYlVhC/LOxJk7iOWnoo= github.com/smartystreets/goconvey v1.7.2/go.mod h1:Vw0tHAZW6lzCRk3xgdin6fKYcG+G3Pg9vgXWeJpQFMM= github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= @@ -1172,7 +1143,6 @@ github.com/spf13/pflag v0.0.0-20170130214245-9ff6c6923cff/go.mod h1:DYY7MBk1bdzu github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/objx v0.1.1/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= @@ -1192,8 +1162,9 @@ github.com/vincent-petithory/dataurl v1.0.0 h1:cXw+kPto8NLuJtlMsI152irrVw9fRDX8A github.com/vincent-petithory/dataurl v1.0.0/go.mod h1:FHafX5vmDzyP+1CQATJn7WFKc9CvnvxyvZy6I1MrG/U= github.com/vmware/vmw-guestinfo v0.0.0-20170707015358-25eff159a728/go.mod h1:x9oS4Wk2s2u4tS29nEaDLdzvuHdB19CvSGJjPgkZJNk= github.com/vmware/vmw-ovflib v0.0.0-20170608004843-1f217b9dc714/go.mod h1:jiPk45kn7klhByRvUq5i2vo1RtHKBHj+iWGFpxbXuuI= -github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f h1:J9EGpcZtP0E/raorCMxlFGSTBrsSlaDGf3jU/qvAE2c= 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= @@ -1227,17 +1198,14 @@ go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN8 go.uber.org/zap v1.27.0 h1:aJMhYGrd5QSmlpLMr2MftRKl7t8J8PTZPA732ud/XR8= go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= go4.org v0.0.0-20160314031811-03efcb870d84/go.mod h1:MkTOUMDaeVYJUOUsaDXIhWPZYa1yOyC1qaOBpL57BhE= +go4.org v0.0.0-20201209231011-d4a079459e60 h1:iqAGo78tVOJXELHQFRjR6TMwItrvXH4hrGJ32I/NFF8= go4.org v0.0.0-20201209231011-d4a079459e60/go.mod h1:CIiUVy99QCPfoE13bO4EZaz5GZMZXMSBGhxRdsvzbkg= -go4.org v0.0.0-20230225012048-214862532bf5 h1:nifaUDeh+rPaBCMPMQHZmvJf+QdpLFnuQPwx+LxVmtc= -go4.org v0.0.0-20230225012048-214862532bf5/go.mod h1:F57wTi5Lrj6WLyswp5EYV1ncrEbFGHD4hhz6S1ZYeaU= -golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= 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= golang.org/x/crypto v0.0.0-20190611184440-5c40567a22f8/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190820162420-60c769a6c586/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20200221231518-2aa609cf4a9d/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= @@ -1320,11 +1288,9 @@ golang.org/x/mod v0.12.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.14.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= golang.org/x/mod v0.20.0 h1:utOm6MM3R3dnawAiJgn0y+xvuYRsm1RKM/4giyfDgV0= golang.org/x/mod v0.20.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= -golang.org/x/net v0.0.0-20170114055629-f2499483f923/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= 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= -golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= @@ -1338,7 +1304,6 @@ golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLL golang.org/x/net v0.0.0-20190628185345-da137c7871d7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190827160401-ba9fcec4b297/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20191004110552-13f9640d40b9/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= @@ -1451,11 +1416,8 @@ golang.org/x/sync v0.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= golang.org/x/sync v0.5.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sync v0.8.0 h1:3NFvSEYkUoMifnESzZl15y791HH1qU2xm6eCJU5ZPXQ= golang.org/x/sync v0.8.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= -golang.org/x/sys v0.0.0-20170830134202-bb24a47a89ea/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/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-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -1468,7 +1430,6 @@ golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191022100944-742c48ecaeb7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -1568,7 +1529,6 @@ golang.org/x/term v0.13.0/go.mod h1:LTmsnFJwVN6bCy1rVCoS+qHT1HhALEFxKncY3WNNh4U= golang.org/x/term v0.15.0/go.mod h1:BDl952bC7+uMoWR75FIrCDx79TPU9oHkTZ9yRbYOrX0= golang.org/x/term v0.23.0 h1:F6D4vR+EHoL9/sWAWgAR1H2DcHr4PareCbAaCo1RpuU= golang.org/x/term v0.23.0/go.mod h1:DgV24QBUrK6jhZXl+20l6UWznPlwAHm1Q1mGHtydmSk= -golang.org/x/text v0.0.0-20160726164857-2910a502d2bf/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= 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= @@ -1620,7 +1580,6 @@ golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgw golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20190920225731-5eefd052ad72/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20190927191325-030b2cf1153e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191113191852-77e3bb0ad9e7/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= @@ -1976,7 +1935,6 @@ google.golang.org/protobuf v1.31.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqw google.golang.org/protobuf v1.33.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= google.golang.org/protobuf v1.34.2 h1:6xV6lTsCfpGD21XK49h7MhtcApnLqkfYgPcdHftf6hg= google.golang.org/protobuf v1.34.2/go.mod h1:qYOHts0dSfpeUzUFpOMr/WGzszTmLH+DiWniOlNbLDw= -gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= 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= @@ -2000,8 +1958,8 @@ gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/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.11.1 h1:cmL9fFohOoNQf+wnp2Wa0OhNFH0KFnSzEkVxi3fcc3I= -helm.sh/helm/v3 v3.11.1/go.mod h1:z/Bu/BylToGno/6dtNGuSmjRqxKq5gaH+FU0BPO+AQ8= +helm.sh/helm/v3 v3.14.4 h1:6FSpEfqyDalHq3kUr4gOMThhgY55kXUEjdQoyODYnrM= +helm.sh/helm/v3 v3.14.4/go.mod h1:Tje7LL4gprZpuBNTbG34d1Xn5NmRT3OWfBRwpOSer9I= 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= @@ -2010,66 +1968,55 @@ honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= honnef.co/go/tools v0.1.3/go.mod h1:NgwopIslSNH47DimFoV78dnkksY2EFtX0ajyb3K/las= -istio.io/api v1.19.2-0.20231011000955-f3015ebb5bd4 h1:NoiArVONh9DPs/DovhCCl771BUeEkKp+/GhsRB1YbOk= -istio.io/api v1.19.2-0.20231011000955-f3015ebb5bd4/go.mod h1:KstZe4bKbXouALUJ5PqpjNEhu5nj90HrDFitZfpNhlU= -istio.io/client-go v1.19.3 h1:nxNcBhtpJJmSoiTbCzO4Ay4Y1qve4Uct6oiqPSJVNMg= -istio.io/client-go v1.19.3/go.mod h1:ra3fVlXcquh7EuQnNssuLxfp6lFv/nx5314PvNEzOUs= -k8s.io/api v0.18.3/go.mod h1:UOaMwERbqJMfeeeHc8XJKawj4P9TgDRnViIqqBeH2QA= -k8s.io/api v0.18.8/go.mod h1:d/CXqwWv+Z2XEG1LgceeDmHQwpUJhROPx16SlxJgERY= +istio.io/api v1.22.0 h1:CdMUHgN/OfQK9ojj6lCjxlJSuUe0vD0ZAvoCcoBfn20= +istio.io/api v1.22.0/go.mod h1:S3l8LWqNYS9yT+d4bH+jqzH2lMencPkW7SKM1Cu9EyM= +istio.io/client-go v1.22.0 h1:TQ+Y7hqZVQHvaJXF99Q1jBqnVG7gYAHR9IvCK2nlwfE= +istio.io/client-go v1.22.0/go.mod h1:1lAPr0DOVBbnRQqLAQKxWbEaxFk6b1CJTm+ypnP7sMo= k8s.io/api v0.19.0/go.mod h1:I1K45XlvTrDjmj5LoM5LuP/KYrhWbjUKT/SoPG0qTjw= -k8s.io/api v0.29.3 h1:2ORfZ7+bGC3YJqGpV0KSDDEVf8hdGQ6A03/50vj8pmw= k8s.io/api v0.29.3/go.mod h1:y2yg2NTyHUUkIoTC+phinTnEa3KFM6RZ3szxt014a80= -k8s.io/apiextensions-apiserver v0.29.3 h1:9HF+EtZaVpFjStakF4yVufnXGPRppWFEQ87qnO91YeI= -k8s.io/apiextensions-apiserver v0.29.3/go.mod h1:po0XiY5scnpJfFizNGo6puNU6Fq6D70UJY2Cb2KwAVc= -k8s.io/apimachinery v0.18.3/go.mod h1:OaXp26zu/5J7p0f92ASynJa1pZo06YlV9fG7BoWbCko= -k8s.io/apimachinery v0.18.8/go.mod h1:6sQd+iHEqmOtALqOFjSWp2KZ9F0wlU/nWm0ZgsYWMig= +k8s.io/api v0.29.5 h1:levS+umUigHCfI3riD36pMY1vQEbrzh4r1ivVWAhHaI= +k8s.io/api v0.29.5/go.mod h1:7b18TtPcJzdjk7w5zWyIHgoAtpGeRvGGASxlS7UZXdQ= +k8s.io/apiextensions-apiserver v0.29.5 h1:njDywexhE6n+1NEl3A4axT0TMQHREnndrk3/ztdWcNE= +k8s.io/apiextensions-apiserver v0.29.5/go.mod h1:pfIvij+MH9a8NQKtW7MD4EFnzvUjJ1ZQsDL8wuP8fnc= k8s.io/apimachinery v0.19.0/go.mod h1:DnPGDnARWFvYa3pMHgSxtbZb7gpzzAZ1pTfaUNDVlmA= -k8s.io/apimachinery v0.29.3 h1:2tbx+5L7RNvqJjn7RIuIKu9XTsIZ9Z5wX2G22XAa5EU= k8s.io/apimachinery v0.29.3/go.mod h1:hx/S4V2PNW4OMg3WizRrHutyB5la0iCUbZym+W0EQIU= -k8s.io/apiserver v0.29.3 h1:xR7ELlJ/BZSr2n4CnD3lfA4gzFivh0wwfNfz9L0WZcE= -k8s.io/apiserver v0.29.3/go.mod h1:hrvXlwfRulbMbBgmWRQlFru2b/JySDpmzvQwwk4GUOs= +k8s.io/apimachinery v0.29.5 h1:Hofa2BmPfpoT+IyDTlcPdCHSnHtEQMoJYGVoQpRTfv4= +k8s.io/apimachinery v0.29.5/go.mod h1:i3FJVwhvSp/6n8Fl4K97PJEP8C+MM+aoDq4+ZJBf70Y= +k8s.io/apiserver v0.29.5 h1:223C+JkRnGmudEU00GfpX6quDSrzwwP0DuXOYTyUYb0= +k8s.io/apiserver v0.29.5/go.mod h1:zN9xdatz5g7XwL1Xoz9hD4QQON1GN0c+1kV5e/NHejM= k8s.io/autoscaler v0.0.0-20190805135949-100e91ba756e h1:5AX59ZgftHpbmNupSWosdtW4q/rCnF4s/0J0dEfJkAQ= k8s.io/autoscaler v0.0.0-20190805135949-100e91ba756e/go.mod h1:QEXezc9uKPT91dwqhSJq3GNI3B1HxFRQHiku9kmrsSA= -k8s.io/autoscaler/vertical-pod-autoscaler v0.9.0/go.mod h1:PwWTGRRCxefhAezrDbG/tRYSAW7etHjjMPAr8fXKVAA= k8s.io/client-go v0.29.3 h1:R/zaZbEAxqComZ9FHeQwOh3Y1ZUs7FaHKZdQtIc2WZg= k8s.io/client-go v0.29.3/go.mod h1:tkDisCvgPfiRpxGnOORfkljmS+UrW+WtXAy2fTvXJB0= -k8s.io/code-generator v0.18.3/go.mod h1:TgNEVx9hCyPGpdtCWA34olQYLkh3ok9ar7XfSsr8b6c= k8s.io/code-generator v0.19.0/go.mod h1:moqLn7w0t9cMs4+5CQyxnfA/HV8MF6aAVENF+WZZhgk= -k8s.io/code-generator v0.29.3 h1:m7E25/t9R9NvejspO2zBdyu+/Gl0Z5m7dCRc680KS14= -k8s.io/code-generator v0.29.3/go.mod h1:x47ofBhN4gxYFcxeKA1PYXeaPreAGaDN85Y/lNUsPoM= -k8s.io/component-base v0.18.3/go.mod h1:bp5GzGR0aGkYEfTj+eTY0AN/vXTgkJdQXjNTTVUaa3k= -k8s.io/component-base v0.29.3 h1:Oq9/nddUxlnrCuuR2K/jp6aflVvc0uDvxMzAWxnGzAo= -k8s.io/component-base v0.29.3/go.mod h1:Yuj33XXjuOk2BAaHsIGHhCKZQAgYKhqIxIjIr2UXYio= +k8s.io/code-generator v0.29.5 h1:WqSdBPVV1B3jsPnKtPS39U02zj6Q7+FsjhAj1EPBJec= +k8s.io/code-generator v0.29.5/go.mod h1:7TYnI0dYItL2cKuhhgPSuF3WED9uMdELgbVXFfn/joE= +k8s.io/component-base v0.29.5 h1:Ptj8AzG+p8c2a839XriHwxakDpZH9uvIgYz+o1agjg8= +k8s.io/component-base v0.29.5/go.mod h1:9nBUoPxW/yimISIgAG7sJDrUGJlu7t8HnDafIrOdU8Q= k8s.io/gengo v0.0.0-20210813121822-485abfe95c7c h1:GohjlNKauSai7gN4wsJkeZ3WAJx4Sh+oT/b5IYn5suA= k8s.io/gengo v0.0.0-20210813121822-485abfe95c7c/go.mod h1:FiNAH4ZV3gBg2Kwh89tzAEV2be7d5xI0vBa/VySYy3E= -k8s.io/helm v2.17.0+incompatible h1:Bpn6o1wKLYqKM3+Osh8e+1/K2g/GsQJ4F4yNF2+deao= -k8s.io/helm v2.17.0+incompatible/go.mod h1:LZzlS4LQBHfciFOurYBFkCMTaZ0D1l+p0teMg7TSULI= -k8s.io/klog v0.0.0-20181102134211-b9b56d5dfc92/go.mod h1:Gq+BEi5rUBO/HRz0bTSXDUcqjScdoY3a9IHpCEIOOfk= k8s.io/klog v0.2.0/go.mod h1:Gq+BEi5rUBO/HRz0bTSXDUcqjScdoY3a9IHpCEIOOfk= -k8s.io/klog v0.3.0/go.mod h1:Gq+BEi5rUBO/HRz0bTSXDUcqjScdoY3a9IHpCEIOOfk= 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.80.1/go.mod h1:y1WjHnz7Dj687irZUWR/WLkLc5N1YHtjLdmgWjndZn0= -k8s.io/klog/v2 v2.110.1 h1:U/Af64HJf7FcwMcXyKm2RPM22WZzyR7OSpYj5tg3cL0= k8s.io/klog/v2 v2.110.1/go.mod h1:YGtd1984u+GgbuZ7e08/yBuAfKLSO0+uR1Fhi6ExXjo= -k8s.io/kube-aggregator v0.28.3 h1:CVbj3+cpshSHR5dWPzLYx3sVpIDEPLlzMSxY/lAc9cM= -k8s.io/kube-aggregator v0.28.3/go.mod h1:5DyLevbRTcWnT1f9b+lB3BfbXC1w7gDa/OtB6kKInCw= -k8s.io/kube-openapi v0.0.0-20200410145947-61e04a5be9a6/go.mod h1:GRQhZsXIAJ1xR0C9bd8UpWHZ5plfAS9fzPjJuQ6JL3E= +k8s.io/klog/v2 v2.120.1 h1:QXU6cPEOIslTGvZaXvFWiP9VKyeet3sawzTOvdXb4Vw= +k8s.io/klog/v2 v2.120.1/go.mod h1:3Jpz1GvMt720eyJH1ckRHK1EDfpxISzJ7I9OYgaDtPE= +k8s.io/kube-aggregator v0.29.5 h1:+ko7OE8HoXjPPxcQTXbo1ctkymYIohI/E0dYDnFM1vU= +k8s.io/kube-aggregator v0.29.5/go.mod h1:4MPs9uKrm5VgxXsoaSU0QJbgIuxvNCnVTYlCVz7VWzY= k8s.io/kube-openapi v0.0.0-20200805222855-6aeccd4b50c6/go.mod h1:UuqjUnNftUyPE5H64/qeyjQoUZhGpeFDVdxjTeEVN2o= k8s.io/kube-openapi v0.0.0-20231010175941-2dd684a91f00 h1:aVUu9fTY98ivBPKR9Y5w/AuzbMm96cd3YHRTU83I780= k8s.io/kube-openapi v0.0.0-20231010175941-2dd684a91f00/go.mod h1:AsvuZPBlUDVuCdzJ87iajxtXuR9oktsTctW/R9wwouA= -k8s.io/kubelet v0.29.3 h1:X9h0ZHzc+eUeNTaksbN0ItHyvGhQ7Z0HPjnQD2oHdwU= -k8s.io/kubelet v0.29.3/go.mod h1:jDiGuTkFOUynyBKzOoC1xRSWlgAZ9UPcTYeFyjr6vas= -k8s.io/metrics v0.18.3/go.mod h1:TkuJE3ezDZ1ym8pYkZoEzJB7HDiFE7qxl+EmExEBoPA= -k8s.io/metrics v0.28.3 h1:w2s3kVi7HulXqCVDFkF4hN/OsL1tXTTb4Biif995h/g= -k8s.io/metrics v0.28.3/go.mod h1:OZZ23AHFojPzU6r3xoHGRUcV3I9pauLua+07sAUbwLc= -k8s.io/utils v0.0.0-20200324210504-a9aa75ae1b89/go.mod h1:sZAwmy6armz5eXlNoLmJcl4F1QuKu7sr+mFQ0byX7Ew= +k8s.io/kubelet v0.29.5 h1:tYYyc2JcrDt8jFYTsKpgcIpp+S5a/nm85CY4liosprw= +k8s.io/kubelet v0.29.5/go.mod h1:eWJR0OtRRkLwKEYjsQXcTyTZlSfgR3Py1xJVFa0ISTk= +k8s.io/metrics v0.29.5 h1:5AZBM4pMiq+SHi2/RP1OuL90In3f07BrL610zunKoxA= +k8s.io/metrics v0.29.5/go.mod h1:Cx7JPEEbjdDpEQ2A1QyXSBd6z5bxlwaSf9rgFJ/adfQ= k8s.io/utils v0.0.0-20210802155522-efc7438f0176/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= k8s.io/utils v0.0.0-20230726121419-3b25d923346b/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= -k8s.io/utils v0.0.0-20240310230437-4693a0247e57 h1:gbqbevonBh57eILzModw6mrkbwM0gQBEuevE/AaBsHY= -k8s.io/utils v0.0.0-20240310230437-4693a0247e57/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= +k8s.io/utils v0.0.0-20240502163921-fe8a2dddb1d0 h1:jgGTlFYnhF1PM1Ax/lAlxUPE+KfCIXHaathvJg1C3ak= +k8s.io/utils v0.0.0-20240502163921-fe8a2dddb1d0/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= lukechampine.com/uint128 v1.1.1/go.mod h1:c4eWIwlEGaxC/+H1VguhU4PHXNWDCDMUlWdIWl2j1gk= lukechampine.com/uint128 v1.2.0/go.mod h1:c4eWIwlEGaxC/+H1VguhU4PHXNWDCDMUlWdIWl2j1gk= modernc.org/cc/v3 v3.36.0/go.mod h1:NFUHyPn4ekoC/JHeZFfZurN6ixxawE1BnVonP/oahEI= @@ -2108,16 +2055,14 @@ rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8 rsc.io/pdf v0.1.1/go.mod h1:n8OzWcQ6Sp37PL01nO98y4iUCRdTGarVfzxY20ICaU4= rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0= rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA= -sigs.k8s.io/controller-runtime v0.16.6 h1:FiXwTuFF5ZJKmozfP2Z0j7dh6kmxP4Ou1KLfxgKKC3I= -sigs.k8s.io/controller-runtime v0.16.6/go.mod h1:+dQzkZxnylD0u49e0a+7AR+vlibEBaThmPca7lTyUsI= +sigs.k8s.io/controller-runtime v0.17.5 h1:1FI9Lm7NiOOmBsgTV36/s2XrEFXnO2C4sbg/Zme72Rw= +sigs.k8s.io/controller-runtime v0.17.5/go.mod h1:N0jpP5Lo7lMTF9aL56Z/B2oWBJjey6StQM0jRbKQXtY= 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.13.0 h1:NfrvuZ4bxyolhDBt/rCZhDnx3M2hzlhgo5n3Iv2RykI= -sigs.k8s.io/controller-tools v0.13.0/go.mod h1:5vw3En2NazbejQGCeWKRrE7q4P+CW8/klfVqP8QZkgA= +sigs.k8s.io/controller-tools v0.14.0 h1:rnNoCC5wSXlrNoBKKzL70LNJKIQKEzT6lloG6/LF73A= +sigs.k8s.io/controller-tools v0.14.0/go.mod h1:TV7uOtNNnnR72SpzhStvPkoS/U5ir0nMudrkrC4M9Sc= sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd h1:EDPBXCAspyGV4jQlpZSudPeMmr1bNJefnuqLsRAsHZo= sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd/go.mod h1:B8JuhiUyNFVKdsE8h686QcCxMaH6HrOAZj4vswFpcB0= -sigs.k8s.io/structured-merge-diff/v3 v3.0.0-20200116222232-67a7b8c61874/go.mod h1:PlARxl6Hbt/+BC80dRLi1qAmnMqwqDg62YvvVkZjemw= -sigs.k8s.io/structured-merge-diff/v3 v3.0.0/go.mod h1:PlARxl6Hbt/+BC80dRLi1qAmnMqwqDg62YvvVkZjemw= sigs.k8s.io/structured-merge-diff/v4 v4.0.1/go.mod h1:bJZC9H9iH24zzfZ/41RGcq60oK1F7G282QMXDPYydCw= sigs.k8s.io/structured-merge-diff/v4 v4.2.3/go.mod h1:qjx8mGObPmV2aSZepjQjbmb2ihdVs8cGKBraizNC69E= sigs.k8s.io/structured-merge-diff/v4 v4.4.1 h1:150L+0vs/8DA78h1u02ooW1/fFq/Lwr+sGiqlzvrtq4= diff --git a/hack/update-codegen.sh b/hack/update-codegen.sh index cb71ac8..dbb18a4 100755 --- a/hack/update-codegen.sh +++ b/hack/update-codegen.sh @@ -4,11 +4,20 @@ 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) + +# 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 PROJECT_ROOT=$(dirname $0)/.. -bash "${PROJECT_ROOT}"/vendor/k8s.io/code-generator/generate-internal-groups.sh \ +bash "${CODE_GEN_DIR}/generate-internal-groups.sh" \ deepcopy,defaulter \ github.com/metal-stack/os-metal-extension/pkg/client \ github.com/metal-stack/os-metal-extension/pkg/apis \ @@ -16,7 +25,7 @@ bash "${PROJECT_ROOT}"/vendor/k8s.io/code-generator/generate-internal-groups.sh "metal:v1alpha1" \ --go-header-file "${PROJECT_ROOT}/vendor/github.com/gardener/gardener/hack/LICENSE_BOILERPLATE.txt" -bash "${PROJECT_ROOT}"/vendor/k8s.io/code-generator/generate-internal-groups.sh \ +bash "${CODE_GEN_DIR}/generate-internal-groups.sh" \ conversion \ github.com/metal-stack/os-metal-extension/pkg/client \ github.com/metal-stack/os-metal-extension/pkg/apis \ @@ -25,7 +34,7 @@ bash "${PROJECT_ROOT}"/vendor/k8s.io/code-generator/generate-internal-groups.sh --extra-peer-dirs=github.com/metal-stack/os-metal-extension/pkg/apis/metal,github.com/metal-stack/os-metal-extension/pkg/apis/metal/v1alpha1,k8s.io/apimachinery/pkg/apis/meta/v1,k8s.io/apimachinery/pkg/conversion,k8s.io/apimachinery/pkg/runtime \ --go-header-file "${PROJECT_ROOT}/vendor/github.com/gardener/gardener/hack/LICENSE_BOILERPLATE.txt" -bash "${PROJECT_ROOT}"/vendor/k8s.io/code-generator/generate-internal-groups.sh \ +bash "${CODE_GEN_DIR}/generate-internal-groups.sh" \ deepcopy,defaulter \ github.com/metal-stack/os-metal-extension/pkg/client/componentconfig \ github.com/metal-stack/os-metal-extension/pkg/apis \ @@ -33,7 +42,7 @@ bash "${PROJECT_ROOT}"/vendor/k8s.io/code-generator/generate-internal-groups.sh "config:v1alpha1" \ --go-header-file "${PROJECT_ROOT}/vendor/github.com/gardener/gardener/hack/LICENSE_BOILERPLATE.txt" -bash "${PROJECT_ROOT}"/vendor/k8s.io/code-generator/generate-internal-groups.sh \ +bash "${CODE_GEN_DIR}/generate-internal-groups.sh" \ conversion \ github.com/metal-stack/os-metal-extension/pkg/client/componentconfig \ github.com/metal-stack/os-metal-extension/pkg/apis \ diff --git a/pkg/controller/operatingsystemconfig/actuator.go b/pkg/controller/operatingsystemconfig/actuator.go index f7990bc..b193b26 100644 --- a/pkg/controller/operatingsystemconfig/actuator.go +++ b/pkg/controller/operatingsystemconfig/actuator.go @@ -22,12 +22,11 @@ import ( "strings" "github.com/gardener/gardener/extensions/pkg/controller/operatingsystemconfig" - oscommonactuator "github.com/gardener/gardener/extensions/pkg/controller/operatingsystemconfig/oscommon/actuator" gardenv1beta1 "github.com/gardener/gardener/pkg/apis/core/v1beta1" extensionsv1alpha1 "github.com/gardener/gardener/pkg/apis/extensions/v1alpha1" "github.com/go-logr/logr" metalextensionv1alpha1 "github.com/metal-stack/gardener-extension-provider-metal/pkg/apis/metal/v1alpha1" - "github.com/metal-stack/os-metal-extension/pkg/controller/operatingsystemconfig/generator" + "github.com/metal-stack/os-metal-extension/pkg/controller/operatingsystemconfig/ignition" "k8s.io/apimachinery/pkg/runtime" "k8s.io/apimachinery/pkg/runtime/serializer" utilruntime "k8s.io/apimachinery/pkg/util/runtime" @@ -64,14 +63,14 @@ func NewActuator(mgr manager.Manager) operatingsystemconfig.Actuator { } } -func (a *actuator) Reconcile(ctx context.Context, log logr.Logger, osc *extensionsv1alpha1.OperatingSystemConfig) ([]byte, *string, []string, []string, []extensionsv1alpha1.Unit, []extensionsv1alpha1.File, error) { +func (a *actuator) Reconcile(ctx context.Context, log logr.Logger, osc *extensionsv1alpha1.OperatingSystemConfig) ([]byte, []extensionsv1alpha1.Unit, []extensionsv1alpha1.File, error) { imageProviderConfig := &metalextensionv1alpha1.ImageProviderConfig{} networkIsolation := &metalextensionv1alpha1.NetworkIsolation{} if osc.Spec.ProviderConfig != nil { err := decodeProviderConfig(a.decoder, osc.Spec.ProviderConfig, imageProviderConfig) if err != nil { - return nil, nil, nil, nil, nil, nil, fmt.Errorf("unable to decode providerConfig") + return nil, nil, nil, fmt.Errorf("unable to decode providerConfig") } } if imageProviderConfig.NetworkIsolation != nil { @@ -80,14 +79,19 @@ func (a *actuator) Reconcile(ctx context.Context, log logr.Logger, osc *extensio extensionFiles := getExtensionFiles(osc, networkIsolation) - osc.Spec.Files = EnsureFiles(osc.Spec.Files, extensionFiles...) + switch purpose := osc.Spec.Purpose; purpose { + case extensionsv1alpha1.OperatingSystemConfigPurposeProvision: + osc := osc.DeepCopy() + osc.Spec.Files = EnsureFiles(osc.Spec.Files, extensionFiles...) - cloudConfig, command, err := oscommonactuator.CloudConfigFromOperatingSystemConfig(ctx, log, a.client, osc, generator.IgnitionGenerator()) - if err != nil { - return nil, nil, nil, nil, nil, nil, fmt.Errorf("could not generate cloud config: %w", err) - } + userData, err := ignition.New(log).Transpile(osc) + return userData, nil, nil, err - return cloudConfig, command, oscommonactuator.OperatingSystemConfigUnitNames(osc), oscommonactuator.OperatingSystemConfigFilePaths(osc), nil, extensionFiles, nil + case extensionsv1alpha1.OperatingSystemConfigPurposeReconcile: + return nil, nil, extensionFiles, nil + default: + return nil, nil, nil, fmt.Errorf("unknown purpose: %s", purpose) + } } func (a *actuator) Delete(_ context.Context, _ logr.Logger, _ *extensionsv1alpha1.OperatingSystemConfig) error { @@ -102,7 +106,7 @@ func (a *actuator) ForceDelete(ctx context.Context, log logr.Logger, osc *extens return a.Delete(ctx, log, osc) } -func (a *actuator) Restore(ctx context.Context, log logr.Logger, osc *extensionsv1alpha1.OperatingSystemConfig) ([]byte, *string, []string, []string, []extensionsv1alpha1.Unit, []extensionsv1alpha1.File, error) { +func (a *actuator) Restore(ctx context.Context, log logr.Logger, osc *extensionsv1alpha1.OperatingSystemConfig) ([]byte, []extensionsv1alpha1.Unit, []extensionsv1alpha1.File, error) { return a.Reconcile(ctx, log, osc) } diff --git a/pkg/controller/operatingsystemconfig/actuator_test.go b/pkg/controller/operatingsystemconfig/actuator_test.go index 9d9825c..00e77fd 100644 --- a/pkg/controller/operatingsystemconfig/actuator_test.go +++ b/pkg/controller/operatingsystemconfig/actuator_test.go @@ -41,8 +41,9 @@ var _ = Describe("Actuator", func() { fakeClient client.Client mgr manager.Manager - osc *extensionsv1alpha1.OperatingSystemConfig - actuator operatingsystemconfig.Actuator + osc *extensionsv1alpha1.OperatingSystemConfig + isolatedClusterProviderConfig *runtime.RawExtension + actuator operatingsystemconfig.Actuator ) BeforeEach(func() { @@ -59,129 +60,162 @@ var _ = Describe("Actuator", func() { Files: []extensionsv1alpha1.File{{Path: "/some/file", Content: extensionsv1alpha1.FileContent{Inline: &extensionsv1alpha1.FileContentInline{Data: "bar"}}}}, }, } + isolatedClusterProviderConfig = &runtime.RawExtension{ + Raw: mustMarshal(&metalextensionv1alpha1.ImageProviderConfig{ + NetworkIsolation: &metalextensionv1alpha1.NetworkIsolation{ + AllowedNetworks: metalextensionv1alpha1.AllowedNetworks{ + Ingress: []string{"10.0.0.1/24"}, + Egress: []string{"100.0.0.1/24"}, + }, + DNSServers: []string{"1.1.1.1", "1.0.0.1"}, + NTPServers: []string{"134.60.1.27", "134.60.111.110"}, + RegistryMirrors: []metalextensionv1alpha1.RegistryMirror{ + { + Name: "metal-stack registry", + Endpoint: "https://r.metal-stack.dev", + IP: "1.2.3.4", + Port: 443, + MirrorOf: []string{ + "ghcr.io", + "quay.io", + }, + }, + { + Name: "local registry", + Endpoint: "http://localhost:8080", + IP: "127.0.0.1", + Port: 8080, + MirrorOf: []string{ + "docker.io", + }, + }, + }, + }, + }), + } }) - When("UseGardenerNodeAgent is true", func() { - BeforeEach(func() { - actuator = NewActuator(mgr) - }) + BeforeEach(func() { + actuator = NewActuator(mgr) + }) + Describe("#Reconcile", func() { When("purpose is 'provision'", func() { - Describe("#Reconcile", func() { - It("should not return an error", func() { - userData, command, unitNames, fileNames, extensionUnits, extensionFiles, err := actuator.Reconcile(ctx, log, osc) - Expect(err).NotTo(HaveOccurred()) + BeforeEach(func() { + osc.Spec.Purpose = extensionsv1alpha1.OperatingSystemConfigPurposeProvision + }) - Expect(string(userData)).To(ContainSubstring("/etc/containerd/config.toml")) - Expect(string(userData)).To(HavePrefix("{")) // check we have ignition format - Expect(string(userData)).To(HaveSuffix("}")) // check we have ignition format - Expect(command).To(BeNil()) - Expect(unitNames).To(ConsistOf("some-unit.service")) - Expect(fileNames).To(ConsistOf("/some/file", "/etc/containerd/config.toml")) - Expect(extensionUnits).To(BeEmpty()) - Expect(extensionFiles).To(HaveLen(1)) - }) + It("should not return an error", func() { + userData, extensionUnits, extensionFiles, err := actuator.Reconcile(ctx, log, osc) + Expect(err).NotTo(HaveOccurred()) - It("network isolation files are added", func() { - osc = osc.DeepCopy() - osc.Spec.ProviderConfig = &runtime.RawExtension{ - Raw: mustMarshal(&metalextensionv1alpha1.ImageProviderConfig{ - NetworkIsolation: &metalextensionv1alpha1.NetworkIsolation{ - AllowedNetworks: metalextensionv1alpha1.AllowedNetworks{ - Ingress: []string{"10.0.0.1/24"}, - Egress: []string{"100.0.0.1/24"}, - }, - DNSServers: []string{"1.1.1.1", "1.0.0.1"}, - NTPServers: []string{"134.60.1.27", "134.60.111.110"}, - RegistryMirrors: []metalextensionv1alpha1.RegistryMirror{ - { - Name: "metal-stack registry", - Endpoint: "https://r.metal-stack.dev", - IP: "1.2.3.4", - Port: 443, - MirrorOf: []string{ - "ghcr.io", - "quay.io", - }, - }, - { - Name: "local registry", - Endpoint: "http://localhost:8080", - IP: "127.0.0.1", - Port: 8080, - MirrorOf: []string{ - "docker.io", - }, - }, - }, - }, - }), - } + Expect(string(userData)).To(ContainSubstring("/etc/containerd/config.toml")) + Expect(string(userData)).To(HavePrefix("{")) // check we have ignition format + Expect(string(userData)).To(HaveSuffix("}")) // check we have ignition format + Expect(extensionUnits).To(BeEmpty()) + Expect(extensionFiles).To(BeEmpty()) + }) + + It("network isolation files are added", func() { + osc = osc.DeepCopy() + osc.Spec.ProviderConfig = isolatedClusterProviderConfig - userData, command, unitNames, fileNames, extensionUnits, extensionFiles, err := actuator.Reconcile(ctx, log, osc) - Expect(err).NotTo(HaveOccurred()) + userData, extensionUnits, extensionFiles, err := actuator.Reconcile(ctx, log, osc) + Expect(err).NotTo(HaveOccurred()) + + Expect(string(userData)).To(ContainSubstring("/etc/containerd/config.toml")) + Expect(string(userData)).To(ContainSubstring("/etc/resolv.conf")) + Expect(string(userData)).To(HavePrefix("{")) // check we have ignition format + Expect(string(userData)).To(HaveSuffix("}")) // check we have ignition format + Expect(extensionUnits).To(BeEmpty()) + Expect(extensionFiles).To(BeEmpty()) + }) + }) - Expect(string(userData)).To(ContainSubstring("/etc/containerd/config.toml")) - Expect(string(userData)).To(HavePrefix("{")) // check we have ignition format - Expect(string(userData)).To(HaveSuffix("}")) // check we have ignition format - Expect(command).To(BeNil()) - Expect(unitNames).To(ConsistOf("some-unit.service")) - Expect(fileNames).To(ConsistOf( - "/some/file", - "/etc/containerd/config.toml", - "/etc/systemd/resolved.conf.d/dns.conf", - "/etc/resolv.conf", - "/etc/systemd/timesyncd.conf", - "/etc/containerd/certs.d/ghcr.io/hosts.toml", - "/etc/containerd/certs.d/quay.io/hosts.toml", - "/etc/containerd/certs.d/docker.io/hosts.toml", - )) - Expect(extensionUnits).To(BeEmpty()) - Expect(extensionFiles).To(ConsistOf( - extensionsv1alpha1.File{ - Path: "/etc/systemd/resolved.conf.d/dns.conf", - Content: extensionsv1alpha1.FileContent{ - Inline: &extensionsv1alpha1.FileContentInline{ - Encoding: string(extensionsv1alpha1.PlainFileCodecID), - Data: `# Generated by os-extension-metal + When("purpose is 'reconcile'", func() { + BeforeEach(func() { + osc.Spec.Purpose = extensionsv1alpha1.OperatingSystemConfigPurposeReconcile + }) + + It("should not return an error", func() { + userData, extensionUnits, extensionFiles, err := actuator.Reconcile(ctx, log, osc) + Expect(err).NotTo(HaveOccurred()) + + Expect(userData).To(BeEmpty()) + Expect(extensionUnits).To(BeNil()) + Expect(extensionFiles).To(ConsistOf(extensionsv1alpha1.File{ + Path: "/etc/containerd/config.toml", + Permissions: ptr.To(int32(420)), + Content: extensionsv1alpha1.FileContent{ + Inline: &extensionsv1alpha1.FileContentInline{ + Encoding: string(extensionsv1alpha1.PlainFileCodecID), + Data: `# Generated by os-extension-metal +version = 2 +imports = ["/etc/containerd/conf.d/*.toml"] +disabled_plugins = [] + +[plugins."io.containerd.grpc.v1.cri".registry] + config_path = "/etc/containerd/certs.d" +`, + }, + }, + })) + }) + + It("network isolation files are added", func() { + osc = osc.DeepCopy() + osc.Spec.ProviderConfig = isolatedClusterProviderConfig + + userData, extensionUnits, extensionFiles, err := actuator.Reconcile(ctx, log, osc) + Expect(err).NotTo(HaveOccurred()) + + Expect(string(userData)).To(BeEmpty()) + Expect(extensionUnits).To(BeEmpty()) + Expect(extensionFiles).To(ConsistOf( + extensionsv1alpha1.File{ + Path: "/etc/systemd/resolved.conf.d/dns.conf", + Content: extensionsv1alpha1.FileContent{ + Inline: &extensionsv1alpha1.FileContentInline{ + Encoding: string(extensionsv1alpha1.PlainFileCodecID), + Data: `# Generated by os-extension-metal [Resolve] DNS=1.1.1.1 1.0.0.1 Domain=~. `, - }, }, }, - extensionsv1alpha1.File{ - Path: "/etc/resolv.conf", - Content: extensionsv1alpha1.FileContent{ - Inline: &extensionsv1alpha1.FileContentInline{ - Encoding: string(extensionsv1alpha1.PlainFileCodecID), - Data: `# Generated by os-extension-metal + }, + extensionsv1alpha1.File{ + Path: "/etc/resolv.conf", + Content: extensionsv1alpha1.FileContent{ + Inline: &extensionsv1alpha1.FileContentInline{ + Encoding: string(extensionsv1alpha1.PlainFileCodecID), + Data: `# Generated by os-extension-metal nameserver 1.1.1.1 nameserver 1.0.0.1 `, - }, }, }, - extensionsv1alpha1.File{ - Path: "/etc/systemd/timesyncd.conf", - Content: extensionsv1alpha1.FileContent{ - Inline: &extensionsv1alpha1.FileContentInline{ - Encoding: string(extensionsv1alpha1.PlainFileCodecID), - Data: `# Generated by os-extension-metal + }, + extensionsv1alpha1.File{ + Path: "/etc/systemd/timesyncd.conf", + Content: extensionsv1alpha1.FileContent{ + Inline: &extensionsv1alpha1.FileContentInline{ + Encoding: string(extensionsv1alpha1.PlainFileCodecID), + Data: `# Generated by os-extension-metal [Time] NTP=134.60.1.27 134.60.111.110 `, - }, }, }, - extensionsv1alpha1.File{ - Path: "/etc/containerd/config.toml", - Permissions: ptr.To(int32(420)), - Content: extensionsv1alpha1.FileContent{ - Inline: &extensionsv1alpha1.FileContentInline{ - Encoding: string(extensionsv1alpha1.PlainFileCodecID), - Data: `# Generated by os-extension-metal + }, + extensionsv1alpha1.File{ + Path: "/etc/containerd/config.toml", + Permissions: ptr.To(int32(420)), + Content: extensionsv1alpha1.FileContent{ + Inline: &extensionsv1alpha1.FileContentInline{ + Encoding: string(extensionsv1alpha1.PlainFileCodecID), + Data: `# Generated by os-extension-metal version = 2 imports = ["/etc/containerd/conf.d/*.toml"] disabled_plugins = [] @@ -189,68 +223,49 @@ disabled_plugins = [] [plugins."io.containerd.grpc.v1.cri".registry] config_path = "/etc/containerd/certs.d" `, - }, }, }, - extensionsv1alpha1.File{ - Path: "/etc/containerd/certs.d/ghcr.io/hosts.toml", - Content: extensionsv1alpha1.FileContent{ - Inline: &extensionsv1alpha1.FileContentInline{ - Encoding: string(extensionsv1alpha1.PlainFileCodecID), - Data: `server = "https://ghcr.io" + }, + extensionsv1alpha1.File{ + Path: "/etc/containerd/certs.d/ghcr.io/hosts.toml", + Content: extensionsv1alpha1.FileContent{ + Inline: &extensionsv1alpha1.FileContentInline{ + Encoding: string(extensionsv1alpha1.PlainFileCodecID), + Data: `server = "https://ghcr.io" [host."https://r.metal-stack.dev"] capabilities = ["pull", "resolve"] `, - }, }, }, - extensionsv1alpha1.File{ - Path: "/etc/containerd/certs.d/quay.io/hosts.toml", - Content: extensionsv1alpha1.FileContent{ - Inline: &extensionsv1alpha1.FileContentInline{ - Encoding: string(extensionsv1alpha1.PlainFileCodecID), - Data: `server = "https://quay.io" + }, + extensionsv1alpha1.File{ + Path: "/etc/containerd/certs.d/quay.io/hosts.toml", + Content: extensionsv1alpha1.FileContent{ + Inline: &extensionsv1alpha1.FileContentInline{ + Encoding: string(extensionsv1alpha1.PlainFileCodecID), + Data: `server = "https://quay.io" [host."https://r.metal-stack.dev"] capabilities = ["pull", "resolve"] `, - }, }, }, - extensionsv1alpha1.File{ - Path: "/etc/containerd/certs.d/docker.io/hosts.toml", - Content: extensionsv1alpha1.FileContent{ - Inline: &extensionsv1alpha1.FileContentInline{ - Encoding: string(extensionsv1alpha1.PlainFileCodecID), - Data: `server = "https://docker.io" + }, + extensionsv1alpha1.File{ + Path: "/etc/containerd/certs.d/docker.io/hosts.toml", + Content: extensionsv1alpha1.FileContent{ + Inline: &extensionsv1alpha1.FileContentInline{ + Encoding: string(extensionsv1alpha1.PlainFileCodecID), + Data: `server = "https://docker.io" [host."http://localhost:8080"] capabilities = ["pull", "resolve"] `, - }, }, }, - )) - }) - }) - }) - - When("purpose is 'reconcile'", func() { - BeforeEach(func() { - osc.Spec.Purpose = extensionsv1alpha1.OperatingSystemConfigPurposeReconcile - }) - - Describe("#Reconcile", func() { - It("should not return an error", func() { - userData, command, unitNames, fileNames, _, _, err := actuator.Reconcile(ctx, log, osc) - Expect(err).NotTo(HaveOccurred()) - - Expect(userData).NotTo(BeEmpty()) // legacy logic is tested in ./generator/generator_test.go - Expect(command).To(BeNil()) - Expect(unitNames).To(ConsistOf("some-unit.service")) - Expect(fileNames).To(ConsistOf("/some/file", "/etc/containerd/config.toml")) - }) + }, + )) }) }) }) diff --git a/pkg/controller/operatingsystemconfig/generator/generator.go b/pkg/controller/operatingsystemconfig/generator/generator.go deleted file mode 100644 index 01b173f..0000000 --- a/pkg/controller/operatingsystemconfig/generator/generator.go +++ /dev/null @@ -1,34 +0,0 @@ -package generator - -import ( - "embed" - - commongen "github.com/gardener/gardener/extensions/pkg/controller/operatingsystemconfig/oscommon/generator" - ostemplate "github.com/gardener/gardener/extensions/pkg/controller/operatingsystemconfig/oscommon/template" - extensionsv1alpha1 "github.com/gardener/gardener/pkg/apis/extensions/v1alpha1" - "k8s.io/apimachinery/pkg/util/runtime" - - "github.com/metal-stack/os-metal-extension/pkg/controller/operatingsystemconfig/generator/ignition" -) - -var ( - cmd = "/usr/bin/env bash %s" - - //go:embed templates/* - templates embed.FS -) - -// IgnitionGenerator is the generator which will generete the ignition userdata and provider-specific shell script parts for the cloud config downloader. -func IgnitionGenerator() commongen.Generator { - cloudInitTemplateString, err := templates.ReadFile("templates/cloud-init.sh.template") - runtime.Must(err) - - cloudInitTemplate, err := ostemplate.NewTemplate("cloud-init").Parse(string(cloudInitTemplateString)) - runtime.Must(err) - - return ignition.New(cloudInitTemplate, ostemplate.DefaultUnitsPath, cmd, additionalValues) -} - -func additionalValues(*extensionsv1alpha1.OperatingSystemConfig) (map[string]interface{}, error) { - return nil, nil -} diff --git a/pkg/controller/operatingsystemconfig/generator/ignition/generator.go b/pkg/controller/operatingsystemconfig/generator/ignition/generator.go deleted file mode 100644 index f2ce066..0000000 --- a/pkg/controller/operatingsystemconfig/generator/ignition/generator.go +++ /dev/null @@ -1,106 +0,0 @@ -package ignition - -import ( - "encoding/json" - "fmt" - "text/template" - - "github.com/flatcar/container-linux-config-transpiler/config/types" - "github.com/gardener/gardener/extensions/pkg/controller/operatingsystemconfig/oscommon/generator" - ostemplate "github.com/gardener/gardener/extensions/pkg/controller/operatingsystemconfig/oscommon/template" - extensionsv1alpha1 "github.com/gardener/gardener/pkg/apis/extensions/v1alpha1" - "github.com/go-logr/logr" - "k8s.io/utils/ptr" -) - -// IgnitionGenerator generates cloud-init scripts. -type IgnitionGenerator struct { - cloudInitGenerator generator.Generator - cmd string -} - -// New creates a new IgnitionGenerator with the given units path. -func New(template *template.Template, unitsPath string, cmd string, additionalValuesFunc func(*extensionsv1alpha1.OperatingSystemConfig) (map[string]interface{}, error)) *IgnitionGenerator { - return &IgnitionGenerator{ - cloudInitGenerator: ostemplate.NewCloudInitGenerator(template, unitsPath, cmd, additionalValuesFunc), - cmd: cmd, - } -} - -// Generate generates an ignition script from the given OperatingSystemConfig. -func (t *IgnitionGenerator) Generate(logr logr.Logger, config *generator.OperatingSystemConfig) ([]byte, *string, error) { - if config.Object.Spec.Purpose != extensionsv1alpha1.OperatingSystemConfigPurposeProvision { - return t.cloudInitGenerator.Generate(logr, config) - } - - var cmd *string - if config.Path != nil { - c := fmt.Sprintf(t.cmd, *config.Path) - cmd = &c - } - - cfg := ignitionFromOperatingSystemConfig(config) - - outCfg, report := types.Convert(cfg, "", nil) - if report.IsFatal() { - return nil, nil, fmt.Errorf("could not transpile ignition config: %s", report.String()) - } - - data, err := json.Marshal(outCfg) - if err != nil { - return nil, nil, err - } - - return data, cmd, err -} - -// ignitionFromOperatingSystemConfig is responsible to transpile the gardener OperatingSystemConfig to a ignition configuration. -// This is currently done with container-linux-config-transpile v0.9.0 and creates ignition v2.2.0 compatible configuration, -// which is used by ignition 0.32.0. -// TODO -// Starting with ignition 2.0, ignition itself contains the required parsing logic, so we can use ignition directly. -// see https://github.com/coreos/ignition/blob/master/config/config.go#L38 -// Therefore we must update ignition to 2.0.0 in the images and transform the gardener config to the ignition config types instead. -func ignitionFromOperatingSystemConfig(config *generator.OperatingSystemConfig) types.Config { - cfg := types.Config{} - - cfg.Systemd = types.Systemd{} - for _, u := range config.Units { - contents := string(u.Content) - - unit := types.SystemdUnit{ - Contents: contents, - Name: u.Name, - Enabled: ptr.To(true), - } - for _, dr := range u.DropIns { - unit.Dropins = append(unit.Dropins, types.SystemdUnitDropIn{ - Name: dr.Name, - Contents: string(dr.Content), - }) - } - cfg.Systemd.Units = append(cfg.Systemd.Units, unit) - } - - cfg.Storage = types.Storage{} - for _, f := range config.Files { - var mode *int - if f.Permissions != nil { - m := int(*f.Permissions) - mode = &m - } - - ignitionFile := types.File{ - Path: f.Path, - Filesystem: "root", - Mode: mode, - Contents: types.FileContents{ - Inline: string(f.Content), - }, - Overwrite: ptr.To(true), - } - cfg.Storage.Files = append(cfg.Storage.Files, ignitionFile) - } - - return cfg -} diff --git a/pkg/controller/operatingsystemconfig/generator/ignition/generator_test.go b/pkg/controller/operatingsystemconfig/generator/ignition/generator_test.go deleted file mode 100644 index a1263f1..0000000 --- a/pkg/controller/operatingsystemconfig/generator/ignition/generator_test.go +++ /dev/null @@ -1,133 +0,0 @@ -package ignition - -import ( - "testing" - - "github.com/flatcar/container-linux-config-transpiler/config/types" - "github.com/gardener/gardener/extensions/pkg/controller/operatingsystemconfig/oscommon/generator" - "github.com/gardener/gardener/pkg/apis/extensions/v1alpha1" - "github.com/go-logr/logr" - "github.com/google/go-cmp/cmp" - "k8s.io/utils/ptr" -) - -func TestIgnitionFromOperatingSystemConfig(t *testing.T) { - tests := []struct { - name string - config *generator.OperatingSystemConfig - want types.Config - }{ - { - name: "simple service", - config: &generator.OperatingSystemConfig{ - Units: []*generator.Unit{ - { - Name: "kubelet.service", - Content: []byte("[Unit]\nDescription=kubelet\n[Install]\nWantedBy=multi-user.target\n[Service]\nExecStart=/bin/kubelet"), - }, - }, - }, - want: types.Config{ - Systemd: types.Systemd{ - Units: []types.SystemdUnit{ - { - Name: "kubelet.service", - Contents: "[Unit]\nDescription=kubelet\n[Install]\nWantedBy=multi-user.target\n[Service]\nExecStart=/bin/kubelet", - Enabled: ptr.To(true), - }, - }, - }, - }, - }, - { - name: "simple files", - config: &generator.OperatingSystemConfig{ - Files: []*generator.File{ - { - Path: "/etc/hostname", - Content: []byte("testhost"), - Permissions: ptr.To(int32(0644)), - }, - { - Path: "/etc/foo", - Content: []byte("foo"), - Permissions: ptr.To(int32(0744)), - }, - }, - }, - want: types.Config{ - Storage: types.Storage{ - Files: []types.File{ - { - Filesystem: "root", - Path: "/etc/hostname", - Contents: types.FileContents{ - Inline: "testhost", - }, - Mode: ptr.To(0644), - Overwrite: ptr.To(true), - }, - { - Filesystem: "root", - Path: "/etc/foo", - Contents: types.FileContents{ - Inline: "foo", - }, - Mode: ptr.To(0744), - Overwrite: ptr.To(true), - }, - }, - }, - }, - }, - } - for _, tt := range tests { - tt := tt - t.Run(tt.name, func(t *testing.T) { - got := ignitionFromOperatingSystemConfig(tt.config) - if diff := cmp.Diff(got, tt.want); diff != "" { - t.Errorf("diff = %s", diff) - } - }) - } -} - -func Test_ignition_Transpile(t *testing.T) { - tests := []struct { - name string - osc *generator.OperatingSystemConfig - want string - wantErr bool - }{ - { - name: "transpiles to ignition format 2.3.0", - osc: &generator.OperatingSystemConfig{ - Object: &v1alpha1.OperatingSystemConfig{ - Spec: v1alpha1.OperatingSystemConfigSpec{ - Purpose: v1alpha1.OperatingSystemConfigPurposeProvision, - }, - }, - Files: []*generator.File{ - { - Path: "/etc/a", - }, - }, - }, - want: `{"ignition":{"config":{},"security":{"tls":{}},"timeouts":{},"version":"2.3.0"},"networkd":{},"passwd":{},"storage":{"files":[{"filesystem":"root","overwrite":true,"path":"/etc/a","contents":{"source":"data:,","verification":{}},"mode":420}]},"systemd":{}}`, - }, - } - for _, tt := range tests { - t.Run(tt.name, func(t *testing.T) { - tr := &IgnitionGenerator{} - - got, _, err := tr.Generate(logr.Discard(), tt.osc) - if (err != nil) != tt.wantErr { - t.Errorf("error = %v, wantErr %v", err, tt.wantErr) - return - } - if diff := cmp.Diff(string(got), tt.want); diff != "" { - t.Errorf("diff = %s", diff) - } - }) - } -} diff --git a/pkg/controller/operatingsystemconfig/generator/templates/cloud-init.sh.template b/pkg/controller/operatingsystemconfig/generator/templates/cloud-init.sh.template deleted file mode 100644 index e360832..0000000 --- a/pkg/controller/operatingsystemconfig/generator/templates/cloud-init.sh.template +++ /dev/null @@ -1,60 +0,0 @@ -#!/bin/bash - -{{- define "put-content" -}} -cat << EOF | base64 -d > '{{ .Path }}' -{{ .Content }} -EOF -{{- end -}} - -{{- define "put-content-unencoded" -}} -cat << EOF > '{{ .Path }}' -{{ .Content }} -EOF -{{- end -}} - -{{- if .Bootstrap }} -# Fix mis-configuration of dockerd -mkdir -p /etc/docker -echo '{ "storage-driver": "devicemapper" }' > /etc/docker/daemon.json -sed -i '/Environment=DOCKER_SELINUX=--selinux-enabled=true/s/^/#/g' /run/systemd/system/docker.service - -# Change existing worker to use docker registry-mirror -file="/etc/docker/daemon.json" -if [ $(jq -r 'has("registry-mirrors")' "${file}") == "false" ]; then - contents=$(jq -M '. += {"registry-mirrors": ["https://mirror.gcr.io"]}' ${file}) - echo "${contents}" > ${file} -fi - -systemctl daemon-reload -systemctl reload docker -{{- end }} - -{{ range $_, $file := .Files -}} -mkdir -p '{{ $file.Dirname }}' -{{ if $file.TransmitUnencoded -}} -{{ template "put-content-unencoded" $file }} -{{- else -}} -{{ template "put-content" $file }} -{{- end }} -{{ if $file.Permissions -}} -chmod '{{ $file.Permissions }}' '{{ $file.Path }}' -{{ end }} -{{ end }} - -{{ range $_, $unit := .Units -}} -{{ if $unit.Content -}} -{{ template "put-content" $unit }} -{{- end }} -{{ if $unit.DropIns }} -mkdir -p '{{ $unit.DropIns.Path }}' -{{ range $_, $dropIn := $unit.DropIns.Items -}} -{{ template "put-content" $dropIn }} -{{- end }} -{{- end }} -{{- end }} - -{{ if .Bootstrap -}} -{{ range $_, $unit := .Units -}} -systemctl enable '{{ $unit.Name }}' && systemctl restart '{{ $unit.Name }}' -{{- end -}} -{{- end -}} diff --git a/pkg/controller/operatingsystemconfig/ignition/ignition.go b/pkg/controller/operatingsystemconfig/ignition/ignition.go new file mode 100644 index 0000000..aab05ce --- /dev/null +++ b/pkg/controller/operatingsystemconfig/ignition/ignition.go @@ -0,0 +1,95 @@ +package ignition + +import ( + "encoding/json" + "fmt" + + "github.com/flatcar/container-linux-config-transpiler/config/types" + extensionsv1alpha1 "github.com/gardener/gardener/pkg/apis/extensions/v1alpha1" + "github.com/gardener/gardener/pkg/apis/extensions/v1alpha1/helper" + "github.com/go-logr/logr" + "k8s.io/utils/ptr" +) + +type ignition struct { + log logr.Logger +} + +// New creates a new IgnitionGenerator. +func New(log logr.Logger) *ignition { + return &ignition{ + log: log, + } +} + +// Transpile transpiles the OSC into an ignition script. +func (t *ignition) Transpile(osc *extensionsv1alpha1.OperatingSystemConfig) ([]byte, error) { + data, err := ignitionFromOperatingSystemConfig(osc) + if err != nil { + return nil, fmt.Errorf("unable to map osc into ignition config: %w", err) + } + + out, report := types.Convert(data, "", nil) + if report.IsFatal() { + return nil, fmt.Errorf("could not transpile ignition config: %s", report.String()) + } + + return json.Marshal(out) +} + +// ignitionFromOperatingSystemConfig is responsible to transpile the gardener OperatingSystemConfig to a ignition configuration. +// This is currently done with container-linux-config-transpile v0.9.0 and creates ignition v2.2.0 compatible configuration, +// which is used by ignition 0.32.0. +// TODO +// Starting with ignition 2.0, ignition itself contains the required parsing logic, so we can use ignition directly. +// see https://github.com/coreos/ignition/blob/master/config/config.go#L38 +// Therefore we must update ignition to 2.0.0 in the images and transform the gardener config to the ignition config types instead. +func ignitionFromOperatingSystemConfig(osc *extensionsv1alpha1.OperatingSystemConfig) (types.Config, error) { + cfg := types.Config{} + + cfg.Systemd = types.Systemd{} + for _, u := range osc.Spec.Units { + + unit := types.SystemdUnit{ + Contents: ptr.Deref(u.Content, ""), + Name: u.Name, + Enabled: ptr.To(true), + } + for _, dr := range u.DropIns { + unit.Dropins = append(unit.Dropins, types.SystemdUnitDropIn{ + Name: dr.Name, + Contents: string(dr.Content), + }) + } + cfg.Systemd.Units = append(cfg.Systemd.Units, unit) + } + + cfg.Storage = types.Storage{} + for _, f := range osc.Spec.Files { + var mode *int + if f.Permissions != nil { + m := int(*f.Permissions) + mode = &m + } + + ignitionFile := types.File{ + Path: f.Path, + Filesystem: "root", + Mode: mode, + Overwrite: ptr.To(true), + } + + if f.Content.Inline != nil { + inline, err := helper.Decode(f.Content.Inline.Encoding, []byte(f.Content.Inline.Data)) + if err != nil { + return types.Config{}, fmt.Errorf("unable to decode content from osc: %w", err) + } + + ignitionFile.Contents.Inline = string(inline) + } + + cfg.Storage.Files = append(cfg.Storage.Files, ignitionFile) + } + + return cfg, nil +} diff --git a/pkg/controller/operatingsystemconfig/ignition/ignition_test.go b/pkg/controller/operatingsystemconfig/ignition/ignition_test.go new file mode 100644 index 0000000..8aedf4c --- /dev/null +++ b/pkg/controller/operatingsystemconfig/ignition/ignition_test.go @@ -0,0 +1,171 @@ +package ignition + +import ( + "testing" + + "github.com/flatcar/container-linux-config-transpiler/config/types" + extensionsv1alpha1 "github.com/gardener/gardener/pkg/apis/extensions/v1alpha1" + "github.com/go-logr/logr" + "github.com/google/go-cmp/cmp" + "k8s.io/utils/ptr" +) + +func TestIgnitionFromOperatingSystemConfig(t *testing.T) { + tests := []struct { + name string + config *extensionsv1alpha1.OperatingSystemConfig + want types.Config + wantErr bool + }{ + { + name: "simple service", + config: &extensionsv1alpha1.OperatingSystemConfig{ + Spec: extensionsv1alpha1.OperatingSystemConfigSpec{ + Units: []extensionsv1alpha1.Unit{ + { + Name: "kubelet.service", + Content: ptr.To("[Unit]\nDescription=kubelet\n[Install]\nWantedBy=multi-user.target\n[Service]\nExecStart=/bin/kubelet"), + }, + }, + }, + }, + wantErr: false, + want: types.Config{ + Systemd: types.Systemd{ + Units: []types.SystemdUnit{ + { + Name: "kubelet.service", + Contents: "[Unit]\nDescription=kubelet\n[Install]\nWantedBy=multi-user.target\n[Service]\nExecStart=/bin/kubelet", + Enabled: ptr.To(true), + }, + }, + }, + }, + }, + + { + name: "simple files", + config: &extensionsv1alpha1.OperatingSystemConfig{ + Spec: extensionsv1alpha1.OperatingSystemConfigSpec{ + Files: []extensionsv1alpha1.File{ + { + Path: "/etc/hostname", + Content: extensionsv1alpha1.FileContent{ + Inline: &extensionsv1alpha1.FileContentInline{ + Data: "testhost", + }, + }, + Permissions: ptr.To(int32(0644)), + }, + { + Path: "/etc/foo", + Content: extensionsv1alpha1.FileContent{ + Inline: &extensionsv1alpha1.FileContentInline{ + Data: "foo", + Encoding: string(extensionsv1alpha1.PlainFileCodecID), + }, + }, + Permissions: ptr.To(int32(0744)), + }, + { + Path: "/etc/bar", + Content: extensionsv1alpha1.FileContent{ + Inline: &extensionsv1alpha1.FileContentInline{ + Data: "YmFy", + Encoding: string(extensionsv1alpha1.B64FileCodecID), + }, + }, + Permissions: ptr.To(int32(0744)), + }, + }, + }, + }, + wantErr: false, + want: types.Config{ + Storage: types.Storage{ + Files: []types.File{ + { + Filesystem: "root", + Path: "/etc/hostname", + Contents: types.FileContents{ + Inline: "testhost", + }, + Mode: ptr.To(0644), + Overwrite: ptr.To(true), + }, + { + Filesystem: "root", + Path: "/etc/foo", + Contents: types.FileContents{ + Inline: "foo", + }, + Mode: ptr.To(0744), + Overwrite: ptr.To(true), + }, + { + Filesystem: "root", + Path: "/etc/bar", + Contents: types.FileContents{ + Inline: "bar", + }, + Mode: ptr.To(0744), + Overwrite: ptr.To(true), + }, + }, + }, + }, + }, + } + for _, tt := range tests { + tt := tt + t.Run(tt.name, func(t *testing.T) { + got, err := ignitionFromOperatingSystemConfig(tt.config) + if (err != nil) != tt.wantErr { + t.Errorf("error = %v, wantErr %v", err, tt.wantErr) + return + } + + if diff := cmp.Diff(got, tt.want); diff != "" { + t.Errorf("diff: %s", diff) + } + }) + } +} + +func Test_ignition_Transpile(t *testing.T) { + tests := []struct { + name string + osc *extensionsv1alpha1.OperatingSystemConfig + want string + wantErr bool + }{ + { + name: "transpiles to ignition format 2.3.0", + osc: &extensionsv1alpha1.OperatingSystemConfig{ + Spec: extensionsv1alpha1.OperatingSystemConfigSpec{ + Files: []extensionsv1alpha1.File{ + { + Path: "/etc/a", + }, + }, + }, + }, + want: `{"ignition":{"config":{},"security":{"tls":{}},"timeouts":{},"version":"2.3.0"},"networkd":{},"passwd":{},"storage":{"files":[{"filesystem":"root","overwrite":true,"path":"/etc/a","contents":{"source":"data:,","verification":{}},"mode":420}]},"systemd":{}}`, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + tr := &ignition{ + log: logr.Discard(), + } + got, err := tr.Transpile(tt.osc) + if (err != nil) != tt.wantErr { + t.Errorf("ignition.Transpile() error = %v, wantErr %v", err, tt.wantErr) + return + } + if diff := cmp.Diff(string(got), tt.want); diff != "" { + t.Errorf("ignition.Transpile() diff = %s", diff) + } + }) + } +}