From 4552910a57f1369b7a5887025333b3fb5eea7552 Mon Sep 17 00:00:00 2001 From: Patryk Strusiewicz-Surmacki Date: Wed, 6 Mar 2024 01:10:17 +0100 Subject: [PATCH] Added basic e2e tests Signed-off-by: Patryk Strusiewicz-Surmacki --- .golangci.yaml | 2 - Dockerfile | 2 +- Makefile | 56 +- README.md | 27 +- api/go.mod | 38 +- api/go.sum | 88 +- api/v1alpha5/common_types.go | 70 - api/v1alpha5/conversion.go | 331 -- api/v1alpha5/conversion_test.go | 91 - api/v1alpha5/doc.go | 24 - api/v1alpha5/groupversion_info.go | 47 - api/v1alpha5/metal3cluster_types.go | 115 - api/v1alpha5/metal3cluster_types_test.go | 85 - api/v1alpha5/metal3data_types.go | 89 - api/v1alpha5/metal3dataclaim_types.go | 72 - api/v1alpha5/metal3datatemplate_types.go | 486 --- api/v1alpha5/metal3machine_types.go | 200 -- api/v1alpha5/metal3machine_types_test.go | 158 - api/v1alpha5/metal3machinetemplate_types.go | 66 - api/v1alpha5/metal3remediation_types.go | 120 - .../metal3remediationtemplate_types.go | 67 - api/v1alpha5/v1alpha5_suite_test.go | 55 - api/v1alpha5/zz_generated.conversion.go | 2706 ----------------- api/v1alpha5/zz_generated.deepcopy.go | 1675 ---------- baremetal/metal3data_manager.go | 14 +- clusterctl-settings.json | 2 +- ...cture.cluster.x-k8s.io_metal3clusters.yaml | 96 - ...ure.cluster.x-k8s.io_metal3dataclaims.yaml | 116 - ...tructure.cluster.x-k8s.io_metal3datas.yaml | 157 - ....cluster.x-k8s.io_metal3datatemplates.yaml | 831 ----- ...cture.cluster.x-k8s.io_metal3machines.yaml | 359 --- ...uster.x-k8s.io_metal3machinetemplates.yaml | 214 -- ...e.cluster.x-k8s.io_metal3remediations.yaml | 79 - ...r.x-k8s.io_metal3remediationtemplates.yaml | 81 - config/crd/kustomization.yaml | 1 - config/ipam/image_patch.yaml | 4 +- config/ipam/kustomization.yaml | 2 +- go.mod | 46 +- go.sum | 120 +- hack/codegen.sh | 1 - hack/gofmt.sh | 34 - hack/govet.sh | 22 - hack/shellcheck.sh | 2 +- hack/tools/go.mod | 14 +- hack/tools/go.sum | 36 +- hack/verify-release.sh | 32 + main.go | 2 - metadata.yaml | 6 +- scripts/ci-e2e.sh | 26 +- scripts/environment.sh | 8 +- test/e2e/common.go | 16 +- test/e2e/config/e2e_conf.yaml | 102 +- .../clusterclass-centos-kubeadm-config.yaml | 244 ++ .../kustomization.yaml | 4 + .../cluster-with-kcp.yaml | 119 + .../bases/clusterclass-cluster/crs.yaml | 24 + .../clusterclass-cluster/kustomization.yaml | 4 + .../bases/clusterclass-cluster/md.yaml | 85 + .../clusterclass-ubuntu-kubeadm-config.yaml | 158 + .../kustomization.yaml | 5 + .../bases/clusterclass/clusterclass.yaml | 165 + .../bases/clusterclass/kustomization.yaml | 2 + .../kustomization.yaml | 3 + .../kustomization.yaml | 3 + .../kustomization.yaml | 2 + .../clusterclass/kustomization.yaml | 2 + .../infrastructure-metal3/main/metadata.yaml | 6 +- .../infrastructure-metal3/v0.5/metadata.yaml | 6 - .../infrastructure-metal3/v1.2/metadata.yaml | 3 - .../infrastructure-metal3/v1.3/metadata.yaml | 3 - .../infrastructure-metal3/v1.4/metadata.yaml | 3 - .../infrastructure-metal3/v1.5/metadata.yaml | 3 - .../infrastructure-metal3/v1.6/metadata.yaml | 3 - .../infrastructure-metal3/v1.7/metadata.yaml | 27 + test/e2e/data/shared/main/metadata.yaml | 9 +- test/e2e/data/shared/v0.4/metadata.yaml | 9 - test/e2e/data/shared/v1.2/metadata.yaml | 6 - test/e2e/data/shared/v1.3/metadata.yaml | 6 - test/e2e/data/shared/v1.4/metadata.yaml | 6 - test/e2e/data/shared/v1.5/metadata.yaml | 6 - test/e2e/data/shared/v1.6/metadata.yaml | 6 - test/e2e/data/shared/v1.7/metadata.yaml | 27 + test/e2e/e2e_suite_test.go | 2 - test/e2e/healthchek.go | 8 +- test/e2e/pivoting.go | 7 +- test/e2e/upgrade_clusterctl_test.go | 240 +- test/go.mod | 70 +- test/go.sum | 565 +--- 88 files changed, 1496 insertions(+), 9438 deletions(-) delete mode 100644 api/v1alpha5/common_types.go delete mode 100644 api/v1alpha5/conversion.go delete mode 100644 api/v1alpha5/conversion_test.go delete mode 100644 api/v1alpha5/doc.go delete mode 100644 api/v1alpha5/groupversion_info.go delete mode 100644 api/v1alpha5/metal3cluster_types.go delete mode 100644 api/v1alpha5/metal3cluster_types_test.go delete mode 100644 api/v1alpha5/metal3data_types.go delete mode 100644 api/v1alpha5/metal3dataclaim_types.go delete mode 100644 api/v1alpha5/metal3datatemplate_types.go delete mode 100644 api/v1alpha5/metal3machine_types.go delete mode 100644 api/v1alpha5/metal3machine_types_test.go delete mode 100644 api/v1alpha5/metal3machinetemplate_types.go delete mode 100644 api/v1alpha5/metal3remediation_types.go delete mode 100644 api/v1alpha5/metal3remediationtemplate_types.go delete mode 100644 api/v1alpha5/v1alpha5_suite_test.go delete mode 100644 api/v1alpha5/zz_generated.conversion.go delete mode 100644 api/v1alpha5/zz_generated.deepcopy.go delete mode 100755 hack/gofmt.sh delete mode 100755 hack/govet.sh create mode 100644 test/e2e/data/infrastructure-metal3/bases/clusterclass-centos-kubeadm-config/clusterclass-centos-kubeadm-config.yaml create mode 100644 test/e2e/data/infrastructure-metal3/bases/clusterclass-centos-kubeadm-config/kustomization.yaml create mode 100644 test/e2e/data/infrastructure-metal3/bases/clusterclass-cluster/cluster-with-kcp.yaml create mode 100644 test/e2e/data/infrastructure-metal3/bases/clusterclass-cluster/crs.yaml create mode 100644 test/e2e/data/infrastructure-metal3/bases/clusterclass-cluster/kustomization.yaml create mode 100644 test/e2e/data/infrastructure-metal3/bases/clusterclass-cluster/md.yaml create mode 100644 test/e2e/data/infrastructure-metal3/bases/clusterclass-ubuntu-kubeadm-config/clusterclass-ubuntu-kubeadm-config.yaml create mode 100644 test/e2e/data/infrastructure-metal3/bases/clusterclass-ubuntu-kubeadm-config/kustomization.yaml create mode 100644 test/e2e/data/infrastructure-metal3/bases/clusterclass/clusterclass.yaml create mode 100644 test/e2e/data/infrastructure-metal3/bases/clusterclass/kustomization.yaml create mode 100644 test/e2e/data/infrastructure-metal3/clusterclass-template-centos/kustomization.yaml create mode 100644 test/e2e/data/infrastructure-metal3/clusterclass-template-ubuntu/kustomization.yaml create mode 100644 test/e2e/data/infrastructure-metal3/clusterclass-template-upgrade-workload/kustomization.yaml create mode 100644 test/e2e/data/infrastructure-metal3/clusterclass/kustomization.yaml delete mode 100644 test/e2e/data/infrastructure-metal3/v0.5/metadata.yaml create mode 100644 test/e2e/data/infrastructure-metal3/v1.7/metadata.yaml delete mode 100644 test/e2e/data/shared/v0.4/metadata.yaml create mode 100644 test/e2e/data/shared/v1.7/metadata.yaml diff --git a/.golangci.yaml b/.golangci.yaml index f754245bb9..5f8d6a6336 100644 --- a/.golangci.yaml +++ b/.golangci.yaml @@ -91,8 +91,6 @@ linters-settings: - pkg: sigs.k8s.io/cluster-api/api/v1beta1 alias: clusterv1 # CAPM3 - - pkg: github.com/metal3-io/cluster-api-provider-metal3/api/v1alpha5 - alias: infrav1alpha5 - pkg: github.com/metal3-io/cluster-api-provider-metal3/api/v1beta1 alias: infrav1 # BMO diff --git a/Dockerfile b/Dockerfile index 8b3ec5b17f..64bbb6ea3a 100644 --- a/Dockerfile +++ b/Dockerfile @@ -13,7 +13,7 @@ # limitations under the License. # Support FROM override -ARG BUILD_IMAGE=docker.io/golang:1.21.7@sha256:549dd88a1a53715f177b41ab5fee25f7a376a6bb5322ac7abe263480d9554021 +ARG BUILD_IMAGE=docker.io/golang:1.21.8@sha256:c82d4ad02c062cf2b393bf0374df26638c6fed3dfe52cdbd3635d4a7befab86e ARG BASE_IMAGE=gcr.io/distroless/static:nonroot@sha256:9ecc53c269509f63c69a266168e4a687c7eb8c0cfd753bd8bfcaa4f58a90876f # Build the manager binary on golang image diff --git a/Makefile b/Makefile index 7b04823519..005f9f490a 100644 --- a/Makefile +++ b/Makefile @@ -20,7 +20,7 @@ SHELL:=/usr/bin/env bash .DEFAULT_GOAL:=help -GO_VERSION ?= 1.21.7 +GO_VERSION ?= 1.21.8 GO := $(shell type -P go) # Use GOPROXY environment variable if set GOPROXY := $(shell $(GO) env GOPROXY) @@ -134,12 +134,16 @@ unit-cover-verbose: GO_TEST_FLAGS=-v GINKGO_TEST_FLAGS=-ginkgo.v $(MAKE) unit-cover .PHONY: test -test: fmt lint unit ## Run tests +test: lint unit ## Run tests .PHONY: test-e2e test-e2e: ## Run e2e tests with capi e2e testing framework ./scripts/ci-e2e.sh +.PHONY: test-clusterclass-e2e +test-clusterclass-e2e: ## Run e2e tests with capi e2e testing framework + CLUSTER_TOPOLOGY=true GINKGO_FOCUS=basic ./scripts/ci-e2e.sh + GINKGO_NOCOLOR ?= false ARTIFACTS ?= $(ROOT_DIR)/_artifacts E2E_CONF_FILE ?= $(ROOT_DIR)/test/e2e/config/e2e_conf.yaml @@ -168,6 +172,14 @@ cluster-templates: $(KUSTOMIZE) ## Generate cluster templates $(KUSTOMIZE) build $(E2E_TEMPLATES_DIR)/cluster-template-ubuntu > $(E2E_OUT_DIR)/cluster-template-ubuntu.yaml $(KUSTOMIZE) build $(E2E_TEMPLATES_DIR)/cluster-template-centos > $(E2E_OUT_DIR)/cluster-template-centos.yaml $(KUSTOMIZE) build $(E2E_TEMPLATES_DIR)/cluster-template-upgrade-workload > $(E2E_OUT_DIR)/cluster-template-upgrade-workload.yaml + touch $(E2E_OUT_DIR)/clusterclass.yaml + +.PHONY: clusterclass-templates +clusterclass-templates: $(KUSTOMIZE) ## Generate cluster templates + $(KUSTOMIZE) build $(E2E_TEMPLATES_DIR)/clusterclass-template-ubuntu > $(E2E_OUT_DIR)/cluster-template-ubuntu.yaml + $(KUSTOMIZE) build $(E2E_TEMPLATES_DIR)/clusterclass-template-centos > $(E2E_OUT_DIR)/cluster-template-centos.yaml + $(KUSTOMIZE) build $(E2E_TEMPLATES_DIR)/clusterclass-template-upgrade-workload > $(E2E_OUT_DIR)/cluster-template-upgrade-workload.yaml + $(KUSTOMIZE) build $(E2E_TEMPLATES_DIR)/clusterclass > $(E2E_OUT_DIR)/clusterclass.yaml ## -------------------------------------- ## E2E Testing @@ -204,6 +216,29 @@ e2e-tests: $(GINKGO) e2e-substitutions cluster-templates # This target should be rm $(E2E_CONF_FILE_ENVSUBST) +.PHONY: e2e-clusterclass-tests +e2e-clusterclass-tests: CONTAINER_RUNTIME?=docker # Env variable can override this default +export CONTAINER_RUNTIME + +e2e-clusterclass-tests: $(GINKGO) e2e-substitutions clusterclass-templates # This target should be called from scripts/ci-e2e.sh + for image in $(E2E_CONTAINERS); do \ + $(CONTAINER_RUNTIME) pull $$image; \ + done + + $(GINKGO) --timeout=$(GINKGO_TIMEOUT) -v --trace --tags=e2e \ + --show-node-events --no-color=$(GINKGO_NOCOLOR) \ + --fail-fast="$(KEEP_TEST_ENV)" \ + --junit-report="junit.e2e_suite.1.xml" \ + --focus="$(GINKGO_FOCUS)" $(_SKIP_ARGS) "$(ROOT_DIR)/$(TEST_DIR)/e2e/" -- \ + -e2e.artifacts-folder="$(ARTIFACTS)" \ + -e2e.config="$(E2E_CONF_FILE_ENVSUBST)" \ + -e2e.skip-resource-cleanup=$(SKIP_CLEANUP) \ + -e2e.keep-test-environment=$(KEEP_TEST_ENV) \ + -e2e.trigger-ephemeral-test=$(EPHEMERAL_TEST) \ + -e2e.use-existing-cluster=$(SKIP_CREATE_MGMT_CLUSTER) + + rm $(E2E_CONF_FILE_ENVSUBST) + ## -------------------------------------- ## Build ## -------------------------------------- @@ -292,18 +327,6 @@ lint-full: $(GOLANGCI_LINT) ## Run slower linters to detect possible issues cd $(APIS_DIR) && $(GOLANGCI_LINT) run -v --fast=false --timeout=30m cd $(TEST_DIR) && $(GOLANGCI_LINT) run -v --fast=false --timeout=30m -# Run go fmt against code -fmt: - $(GO) fmt ./controllers/... ./baremetal/... . - cd $(APIS_DIR) && $(GO) fmt ./... - cd $(TEST_DIR) && $(GO) fmt ./... - -# Run go vet against code -vet: - $(GO) vet ./controllers/... ./baremetal/... . - cd $(APIS_DIR) && $(GO) vet ./... - cd $(TEST_DIR) && $(GO) fmt ./... - # Run manifest validation .PHONY: manifest-lint manifest-lint: @@ -388,11 +411,6 @@ generate-go: $(CONTROLLER_GEN) $(MOCKGEN) $(CONVERSION_GEN) $(KUBEBUILDER) $(KUS -copyright_file=./hack/boilerplate/boilerplate.generatego.txt \ ManagerFactoryInterface - $(CONVERSION_GEN) \ - --input-dirs=./api/v1alpha5 \ - --output-file-base=zz_generated.conversion $(CONVERSION_GEN_OUTPUT_BASE) \ - --go-header-file=./hack/boilerplate/boilerplate.generatego.txt - .PHONY: generate-manifests generate-manifests: $(CONTROLLER_GEN) ## Generate manifests e.g. CRD, RBAC etc. $(CONTROLLER_GEN) \ diff --git a/README.md b/README.md index 931eb77781..366c8dd347 100644 --- a/README.md +++ b/README.md @@ -22,7 +22,6 @@ Metal3. | CAPM3 version | Cluster API version | CAPM3 Release |  CAPI Release | | ------------- | ------------------- | ------------- | -------------- | -| v1alpha5 | v1alpha4 | v0.5.X |  v0.4.X        | | v1beta1 | v1beta1 | v1.1.X |  v1.1.X        | | v1beta1 | v1beta1 | v1.2.X |  v1.2.X        | | v1beta1 | v1beta1 | v1.3.X |  v1.3.X        | @@ -47,8 +46,9 @@ need to be manually installed. Example flow of installing Metal3 provider: level of the logging verbose with a positive integer number, ie. -v5. ```shell - clusterctl init --core cluster-api:v1.6.2 --bootstrap kubeadm:v1.6.2 \ - --control-plane kubeadm:v1.6.2 -v5 + clusterctl init --core cluster-api:v1.7.0-beta.0 \ + --bootstrap kubeadm:v1.7.0-beta.0 \ + --control-plane kubeadm:v1.7.0-beta.0 -v5 ``` 1. Install Metal3 provider. This will install the latest version of Cluster API @@ -164,10 +164,12 @@ Release-1.4 branch: ## Basic tests Unlike integration tests, basic tests focus on the target cluster creation -without involving pivoting from the bootstrap cluster. To run basic tests, -replace `integration` with `basic` for instance: +without involving pivoting from the bootstrap cluster. To run basic tests use: -- **/test-ubuntu-e2e-basic-main** runs basic e2e tests with main branch on Ubuntu +- **/test metal3-ubuntu-e2e-basic-test-main** runs basic e2e tests with main + branch on Ubuntu +- **/test metal3-centos-e2e-basic-test-release-1-6** runs basic e2e tests on + release-1.6 branch with centos ### Feature tests @@ -209,19 +211,10 @@ Release-1.4 branch: ### Upgrade tests -CAPM3 tests upgrade from all supported release to the current one, while also -maintaining a test for the previous API version release v1alpha5. +CAPM3 tests upgrade from all supported release to the current one. We run upgrade test on main branch from different releases: -- **/test-e2e-upgrade-main-from-release-0-5** runs e2e upgrade tests from CAPM3 - API version v1alpha5/branch release-0.5 to CAPM3 API version v1beta1/branch - main on Ubuntu - -- **/test-e2e-upgrade-main-from-release-1-2** runs e2e upgrade tests from CAPM3 - API version v1beta1/branch release-1.2 to CAPM3 API version v1beta1/branch - main on Ubuntu - -- **/test-e2e-upgrade-main-from-release-1-3** runs e2e upgrade tests from CAPM3 +z- **/test-e2e-upgrade-main-from-release-1-3** runs e2e upgrade tests from CAPM3 API version v1beta1/branch release-1.3 to CAPM3 API version v1beta1/branch main on Ubuntu diff --git a/api/go.mod b/api/go.mod index ff7255a8b4..4e861f09aa 100644 --- a/api/go.mod +++ b/api/go.mod @@ -3,39 +3,37 @@ module github.com/metal3-io/cluster-api-provider-metal3/api go 1.21 require ( - github.com/google/gofuzz v1.2.0 - github.com/metal3-io/ip-address-manager/api v1.6.0 - github.com/onsi/gomega v1.31.1 + github.com/metal3-io/ip-address-manager/api v1.7.0-beta.0 + github.com/onsi/gomega v1.32.0 github.com/pkg/errors v0.9.1 - golang.org/x/net v0.21.0 - k8s.io/api v0.29.2 - k8s.io/apimachinery v0.29.2 - k8s.io/client-go v0.29.2 + golang.org/x/net v0.22.0 + k8s.io/api v0.29.3 + k8s.io/apimachinery v0.29.3 + k8s.io/client-go v0.29.3 k8s.io/utils v0.0.0-20231127182322-b307cd553661 - sigs.k8s.io/cluster-api v1.6.2 + sigs.k8s.io/cluster-api v1.7.0-beta.0 sigs.k8s.io/controller-runtime v0.17.2 ) require ( github.com/beorn7/perks v1.0.1 // indirect - github.com/blang/semver/v4 v4.0.0 // indirect github.com/cespare/xxhash/v2 v2.2.0 // indirect github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect github.com/emicklei/go-restful/v3 v3.11.0 // indirect - github.com/evanphx/json-patch/v5 v5.8.0 // indirect + github.com/evanphx/json-patch/v5 v5.9.0 // indirect github.com/fsnotify/fsnotify v1.7.0 // indirect github.com/go-logr/logr v1.4.1 // indirect github.com/go-openapi/jsonpointer v0.19.6 // indirect github.com/go-openapi/jsonreference v0.20.2 // indirect github.com/go-openapi/swag v0.22.3 // indirect - github.com/gobuffalo/flect v1.0.2 // indirect github.com/gogo/protobuf v1.3.2 // indirect github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect - github.com/golang/protobuf v1.5.3 // indirect + github.com/golang/protobuf v1.5.4 // indirect github.com/google/gnostic-models v0.6.8 // indirect github.com/google/go-cmp v0.6.0 // indirect - github.com/google/uuid v1.3.1 // indirect + github.com/google/gofuzz v1.2.0 // indirect + github.com/google/uuid v1.4.0 // indirect github.com/imdario/mergo v0.3.13 // indirect github.com/josharian/intern v1.0.0 // indirect github.com/json-iterator/go v1.1.12 // indirect @@ -50,19 +48,19 @@ require ( github.com/prometheus/procfs v0.12.0 // indirect github.com/spf13/pflag v1.0.5 // indirect golang.org/x/exp v0.0.0-20230905200255-921286631fa9 // indirect - golang.org/x/oauth2 v0.14.0 // indirect - golang.org/x/sys v0.17.0 // indirect - golang.org/x/term v0.17.0 // indirect + golang.org/x/oauth2 v0.18.0 // indirect + golang.org/x/sys v0.18.0 // indirect + golang.org/x/term v0.18.0 // indirect golang.org/x/text v0.14.0 // indirect - golang.org/x/time v0.3.0 // indirect + golang.org/x/time v0.5.0 // indirect gomodules.xyz/jsonpatch/v2 v2.4.0 // indirect google.golang.org/appengine v1.6.7 // indirect - google.golang.org/protobuf v1.31.0 // indirect + google.golang.org/protobuf v1.33.0 // indirect gopkg.in/inf.v0 v0.9.1 // indirect gopkg.in/yaml.v2 v2.4.0 // indirect gopkg.in/yaml.v3 v3.0.1 //indirect - k8s.io/apiextensions-apiserver v0.29.1 // indirect - k8s.io/component-base v0.29.1 // indirect + k8s.io/apiextensions-apiserver v0.29.3 // indirect + k8s.io/component-base v0.29.3 // indirect k8s.io/klog/v2 v2.110.1 // indirect k8s.io/kube-openapi v0.0.0-20231010175941-2dd684a91f00 // indirect sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd // indirect diff --git a/api/go.sum b/api/go.sum index b598445f56..9cd97417ac 100644 --- a/api/go.sum +++ b/api/go.sum @@ -1,7 +1,5 @@ github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= -github.com/blang/semver/v4 v4.0.0 h1:1PFHFE6yCCTv8C1TeyNNarDzntLi7wMI5i/pzqYIsAM= -github.com/blang/semver/v4 v4.0.0/go.mod h1:IbckMUScFkM3pff0VJDNKRiT6TG/YpiHIM2yvyW5YoQ= github.com/cespare/xxhash/v2 v2.2.0 h1:DC2CZ1Ep5Y4k3ZQ899DldepgrayRUGE6BBZ/cd9Cj44= github.com/cespare/xxhash/v2 v2.2.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= @@ -11,10 +9,10 @@ github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1 github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/emicklei/go-restful/v3 v3.11.0 h1:rAQeMHw1c7zTmncogyy8VvRZwtkmkZ4FxERmMY4rD+g= github.com/emicklei/go-restful/v3 v3.11.0/go.mod h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc= -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 v5.8.0 h1:lRj6N9Nci7MvzrXuX6HFzU8XjmhPiXPlsKEy1u0KQro= -github.com/evanphx/json-patch/v5 v5.8.0/go.mod h1:VNkHZ/282BpEyt/tObQO8s5CMPmYYq14uClGH4abBuQ= +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/fsnotify/fsnotify v1.7.0 h1:8JEhPFa5W2WU7YfeZzPNqzMP6Lwt7L2715Ggo0nosvA= github.com/fsnotify/fsnotify v1.7.0/go.mod h1:40Bi/Hjc2AVfZrqy+aj+yEI+/bRxZnMJyTJwOpGvigM= github.com/go-logr/logr v1.3.0/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= @@ -30,19 +28,15 @@ github.com/go-openapi/swag v0.22.3 h1:yMBqmnQ0gyZvEb/+KzuWZOXgllrXT4SADYbvDaXHv/ github.com/go-openapi/swag v0.22.3/go.mod h1:UzaqsxGiab7freDnrUUra0MwWfN/q7tE4j+VcZ0yl14= github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572 h1:tfuBGBXKqDEevZMzYi5KSi8KkcZtzBcTgAUUtapy0OI= github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572/go.mod h1:9Pwr4B2jHnOSGXyyzV8ROjYa2ojvAY6HCGYYfMoC3Ls= -github.com/gobuffalo/flect v1.0.2 h1:eqjPGSo2WmjgY2XlpGwo2NXgL3RucAKo4k4qQMNA5sA= -github.com/gobuffalo/flect v1.0.2/go.mod h1:A5msMlrHtLqh9umBSnvabjsMrCcCpAyzglnDvkbYKHs= github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da h1:oI5xCqsCo564l8iNU+DwB5epxmsaqB+rhGL0m5jtYqE= github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= -github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= -github.com/golang/protobuf v1.5.3 h1:KhyjKVUg7Usr/dYsdSqoFveMYd5ko72D+zANwlG1mmg= -github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= +github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= +github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= github.com/google/gnostic-models v0.6.8 h1:yo/ABAfM5IMRsS1VnXjTBvUb61tFIHozhlYvRgGre9I= github.com/google/gnostic-models v0.6.8/go.mod h1:5n7qKqH0f5wFt+aWF8CW6pZLLNOfYuF5OpfBSENuI8U= -github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= @@ -51,8 +45,8 @@ github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0= github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1 h1:K6RDEckDVWvDI9JAJYCmNdQXq6neHJOYx3V6jnqNEec= github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/uuid v1.3.1 h1:KjJaJ9iWZ3jOFZIf1Lqf4laDRCasjl0BCmnEGxkdLb4= -github.com/google/uuid v1.3.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/google/uuid v1.4.0 h1:MtMxsa51/r9yyhkyLsVeVt0B+BGQZzpQiTQ4eHZ8bc4= +github.com/google/uuid v1.4.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/imdario/mergo v0.3.13 h1:lFzP57bqS/wsqKssCGmtLAb8A0wKjLGrve2q3PPVcBk= github.com/imdario/mergo v0.3.13/go.mod h1:4lJ1jqUDcsbIECGy0RUJAXNIhg+6ocWgb1ALK2O4oXg= github.com/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8HmY= @@ -72,8 +66,8 @@ github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0 github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc= github.com/matttproud/golang_protobuf_extensions/v2 v2.0.0 h1:jWpvCLoY8Z/e3VKvlsiIGKtc+UG6U5vzxaoagmhXfyg= github.com/matttproud/golang_protobuf_extensions/v2 v2.0.0/go.mod h1:QUyp042oQthUoa9bqDv0ER0wrtXnBruoNd7aNjkbP+k= -github.com/metal3-io/ip-address-manager/api v1.6.0 h1:9AZhHHnFv/P0iC2UHvjzRwc34yPjRUmZkdWhF65sjZE= -github.com/metal3-io/ip-address-manager/api v1.6.0/go.mod h1:qDeEwi/ebU/SS5r2Ek0vmC7tdIPgDsO3eFIpylZAM04= +github.com/metal3-io/ip-address-manager/api v1.7.0-beta.0 h1:/SDjqdGlRswFRC/QnREW4AGIB1EmGPBUplP9SyXYpKc= +github.com/metal3-io/ip-address-manager/api v1.7.0-beta.0/go.mod h1:2b/grCN91QU0vhsxfafTpKLjBo8EapjkVc5IXINYwAY= github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= @@ -81,10 +75,10 @@ github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9G github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= -github.com/onsi/ginkgo/v2 v2.15.0 h1:79HwNRBAZHOEwrczrgSOPy+eFTTlIGELKy5as+ClttY= -github.com/onsi/ginkgo/v2 v2.15.0/go.mod h1:HlxMHtYF57y6Dpf+mc5529KKmSq9h2FpCF+/ZkwUxKM= -github.com/onsi/gomega v1.31.1 h1:KYppCUK+bUgAZwHOu7EXVBKyQA6ILvOESHkn/tgoqvo= -github.com/onsi/gomega v1.31.1/go.mod h1:y40C95dwAD1Nz36SsEnxvfFe8FFfNxzI5eJ0EYGyAy0= +github.com/onsi/ginkgo/v2 v2.16.0 h1:7q1w9frJDzninhXxjZd+Y/x54XNjG/UlRLIYPZafsPM= +github.com/onsi/ginkgo/v2 v2.16.0/go.mod h1:llBI3WDLL9Z6taip6f33H76YcWtJv+7R3HigUjbIBOs= +github.com/onsi/gomega v1.32.0 h1:JRYU78fJ1LPxlckP6Txi/EYqJvjtMrDC04/MM5XRHPk= +github.com/onsi/gomega v1.32.0/go.mod h1:a4x4gW6Pz2yK1MAmvluYme5lvYTn61afQ2ETw/8n4Lg= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= @@ -130,33 +124,33 @@ golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.21.0 h1:AQyQV4dYCvJ7vGmJyKki9+PBdyvhkSd8EIx/qb0AYv4= -golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44= -golang.org/x/oauth2 v0.14.0 h1:P0Vrf/2538nmC0H+pEQ3MNFRRnVR7RlqyVw+bvm26z0= -golang.org/x/oauth2 v0.14.0/go.mod h1:lAtNWgaWfL4cm7j2OV8TxGi9Qb7ECORx8DktCY74OwM= +golang.org/x/net v0.22.0 h1:9sGLhx7iRIHEiX0oAJ3MRZMUCElJgy7Br1nO+AMN3Tc= +golang.org/x/net v0.22.0/go.mod h1:JKghWKKOSdJwpW2GEx0Ja7fmaKnMsbu+MWVZTokSYmg= +golang.org/x/oauth2 v0.18.0 h1:09qnuIAgzdx1XplqJvW6CQqMCtGZykZWcXzPMPUusvI= +golang.org/x/oauth2 v0.18.0/go.mod h1:Wf7knwG0MPoWIMMBgFlEaSUDaKskp0dCfrlJRJXbBi8= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.17.0 h1:25cE3gD+tdBA7lp7QfhuV+rJiE9YXTcS3VG1SqssI/Y= -golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/term v0.17.0 h1:mkTF7LCd6WGJNL3K1Ad7kwxNfYAW6a8a8QqtMblp/4U= -golang.org/x/term v0.17.0/go.mod h1:lLRBjIVuehSbZlaOtGMbcMncT+aqLLLmKrsjNrUguwk= +golang.org/x/sys v0.18.0 h1:DBdB3niSjOA/O0blCZBqDefyWNYveAYMNF1Wum0DYQ4= +golang.org/x/sys v0.18.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/term v0.18.0 h1:FcHjZXDMxI8mM3nwhX9HlKop4C0YQvCVCdwYl2wOtE8= +golang.org/x/term v0.18.0/go.mod h1:ILwASektA3OnRv7amZ1xhE/KTR+u50pbXfZ03+6Nx58= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ= golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= -golang.org/x/time v0.3.0 h1:rg5rLMjNzMS1RkNLzCG38eapWhnYLFYXDXj2gOlr8j4= -golang.org/x/time v0.3.0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.5.0 h1:o7cqy6amK/52YcAKIPlM3a+Fpj35zvRj2TP+e1xFSfk= +golang.org/x/time v0.5.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.16.1 h1:TLyB3WofjdOEepBHAU20JdNC1Zbg87elYofWYAY5oZA= -golang.org/x/tools v0.16.1/go.mod h1:kYVVN6I1mBNoB1OX+noeBjbRk4IUEPa7JJ+TJMEooJ0= +golang.org/x/tools v0.17.0 h1:FvmRgNOcs3kOa+T20R1uhfP9F6HgG2mfxDv1vrx1Htc= +golang.org/x/tools v0.17.0/go.mod h1:xsh6VxdV005rRVaS6SSAf9oiAqljS7UZUacMZ8Bnsps= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -165,10 +159,8 @@ gomodules.xyz/jsonpatch/v2 v2.4.0 h1:Ci3iUJyx9UeRx7CeFN8ARgGbkESwJK+KB9lLcWxY/Zw gomodules.xyz/jsonpatch/v2 v2.4.0/go.mod h1:AH3dM2RI6uoBZxn3LVrfvJ3E0/9dG4cSrbuBJT4moAY= google.golang.org/appengine v1.6.7 h1:FZR1q0exgwxzPzp/aF+VccGrSfxfPpkBqjIIEq3ru6c= google.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= -google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= -google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= -google.golang.org/protobuf v1.31.0 h1:g0LDEJHgrBl9N9r17Ru3sqWhkIx2NB67okBHPwC7hs8= -google.golang.org/protobuf v1.31.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= +google.golang.org/protobuf v1.33.0 h1:uNO2rsAINq/JlFpSdYEKIZ0uKD/R9cpdv0T+yoGwGmI= +google.golang.org/protobuf v1.33.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= @@ -181,24 +173,24 @@ gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C gopkg.in/yaml.v3 v3.0.0/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -k8s.io/api v0.29.2 h1:hBC7B9+MU+ptchxEqTNW2DkUosJpp1P+Wn6YncZ474A= -k8s.io/api v0.29.2/go.mod h1:sdIaaKuU7P44aoyyLlikSLayT6Vb7bvJNCX105xZXY0= -k8s.io/apiextensions-apiserver v0.29.1 h1:S9xOtyk9M3Sk1tIpQMu9wXHm5O2MX6Y1kIpPMimZBZw= -k8s.io/apiextensions-apiserver v0.29.1/go.mod h1:zZECpujY5yTW58co8V2EQR4BD6A9pktVgHhvc0uLfeU= -k8s.io/apimachinery v0.29.2 h1:EWGpfJ856oj11C52NRCHuU7rFDwxev48z+6DSlGNsV8= -k8s.io/apimachinery v0.29.2/go.mod h1:6HVkd1FwxIagpYrHSwJlQqZI3G9LfYWRPAkUvLnXTKU= -k8s.io/client-go v0.29.2 h1:FEg85el1TeZp+/vYJM7hkDlSTFZ+c5nnK44DJ4FyoRg= -k8s.io/client-go v0.29.2/go.mod h1:knlvFZE58VpqbQpJNbCbctTVXcd35mMyAAwBdpt4jrA= -k8s.io/component-base v0.29.1 h1:MUimqJPCRnnHsskTTjKD+IC1EHBbRCVyi37IoFBrkYw= -k8s.io/component-base v0.29.1/go.mod h1:fP9GFjxYrLERq1GcWWZAE3bqbNcDKDytn2srWuHTtKc= +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.29.3 h1:2tbx+5L7RNvqJjn7RIuIKu9XTsIZ9Z5wX2G22XAa5EU= +k8s.io/apimachinery v0.29.3/go.mod h1:hx/S4V2PNW4OMg3WizRrHutyB5la0iCUbZym+W0EQIU= +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/component-base v0.29.3 h1:Oq9/nddUxlnrCuuR2K/jp6aflVvc0uDvxMzAWxnGzAo= +k8s.io/component-base v0.29.3/go.mod h1:Yuj33XXjuOk2BAaHsIGHhCKZQAgYKhqIxIjIr2UXYio= 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-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/utils v0.0.0-20231127182322-b307cd553661 h1:FepOBzJ0GXm8t0su67ln2wAZjbQ6RxQGZDnzuLcrUTI= k8s.io/utils v0.0.0-20231127182322-b307cd553661/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= -sigs.k8s.io/cluster-api v1.6.2 h1:ruUi4q/9jXFuI+hmnDjo9izHgrBk4bjfQXLKx678PQE= -sigs.k8s.io/cluster-api v1.6.2/go.mod h1:Anm4cA6R/AIP6KdIuVje8CdFc/TdGl+382bi5oPawRc= +sigs.k8s.io/cluster-api v1.7.0-beta.0 h1:IjYfeXLwAcY6QRG/47numLQoHY8V6Zb8cHVkgF7Jz80= +sigs.k8s.io/cluster-api v1.7.0-beta.0/go.mod h1:2mRD4V2SSC8oj5/kzBPH3dBqdP3tkZKv+ENHLBy5A/s= sigs.k8s.io/controller-runtime v0.17.2 h1:FwHwD1CTUemg0pW2otk7/U5/i5m2ymzvOXdbeGOUvw0= sigs.k8s.io/controller-runtime v0.17.2/go.mod h1:+MngTvIQQQhfXtwfdGw/UOQ/aIaqsYywfCINOtwMO/s= sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd h1:EDPBXCAspyGV4jQlpZSudPeMmr1bNJefnuqLsRAsHZo= diff --git a/api/v1alpha5/common_types.go b/api/v1alpha5/common_types.go deleted file mode 100644 index a71ac0c60c..0000000000 --- a/api/v1alpha5/common_types.go +++ /dev/null @@ -1,70 +0,0 @@ -/* -Copyright 2021 The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package v1alpha5 - -import ( - "k8s.io/apimachinery/pkg/selection" -) - -const ( - // UnhealthyAnnotation is the annotation that sets unhealthy status of BMH. - UnhealthyAnnotation = "capi.metal3.io/unhealthy" -) - -// APIEndpoint represents a reachable Kubernetes API endpoint. -type APIEndpoint struct { - // Host is the hostname on which the API server is serving. - Host string `json:"host"` - - // Port is the port on which the API server is serving. - Port int `json:"port"` -} - -// HostSelector specifies matching criteria for labels on BareMetalHosts. -// This is used to limit the set of BareMetalHost objects considered for -// claiming for a Machine. -type HostSelector struct { - // Key/value pairs of labels that must exist on a chosen BareMetalHost - MatchLabels map[string]string `json:"matchLabels,omitempty"` - - // Label match expressions that must be true on a chosen BareMetalHost - MatchExpressions []HostSelectorRequirement `json:"matchExpressions,omitempty"` -} - -type HostSelectorRequirement struct { - Key string `json:"key"` - Operator selection.Operator `json:"operator"` - Values []string `json:"values"` -} - -// Image holds the details of an image to use during provisioning. -type Image struct { - // URL is a location of an image to deploy. - URL string `json:"url"` - - // Checksum is a md5sum, sha256sum or sha512sum value or a URL to retrieve one. - Checksum string `json:"checksum"` - - // ChecksumType is the checksum algorithm for the image. - // e.g md5, sha256, sha512 - // +kubebuilder:validation:Enum=md5;sha256;sha512 - ChecksumType *string `json:"checksumType,omitempty"` - - // DiskFormat contains the image disk format - // +kubebuilder:validation:Enum=raw;qcow2;vdi;vmdk;live-iso - DiskFormat *string `json:"format,omitempty"` -} diff --git a/api/v1alpha5/conversion.go b/api/v1alpha5/conversion.go deleted file mode 100644 index d206443b38..0000000000 --- a/api/v1alpha5/conversion.go +++ /dev/null @@ -1,331 +0,0 @@ -/* -Copyright 2021 The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package v1alpha5 - -import ( - "github.com/metal3-io/cluster-api-provider-metal3/api/v1beta1" - apiconversion "k8s.io/apimachinery/pkg/conversion" - utilconversion "sigs.k8s.io/cluster-api/util/conversion" - "sigs.k8s.io/controller-runtime/pkg/conversion" -) - -// Constant variables -const ( - APIEndpointPort = "6443" -) - -func (src *Metal3Cluster) ConvertTo(dstRaw conversion.Hub) error { - dst := dstRaw.(*v1beta1.Metal3Cluster) - if err := Convert_v1alpha5_Metal3Cluster_To_v1beta1_Metal3Cluster(src, dst, nil); err != nil { - return err - } - // Manually restore data. - restored := &v1beta1.Metal3Cluster{} - if ok, err := utilconversion.UnmarshalData(src, restored); err != nil || !ok { - return err - } - dst.Status.Conditions = restored.Status.Conditions - return nil -} - -func (dst *Metal3Cluster) ConvertFrom(srcRaw conversion.Hub) error { - src := srcRaw.(*v1beta1.Metal3Cluster) - if err := Convert_v1beta1_Metal3Cluster_To_v1alpha5_Metal3Cluster(src, dst, nil); err != nil { - return err - } - // Preserve Hub data on down-conversion except for metadata - if err := utilconversion.MarshalData(src, dst); err != nil { - return err - } - return nil -} - -// Status.Conditions was introduced in v1beta1, thus requiring a custom conversion function; the values is going to be preserved in an annotation thus allowing roundtrip without losing information. -func Convert_v1beta1_Metal3ClusterStatus_To_v1alpha5_Metal3ClusterStatus(in *v1beta1.Metal3ClusterStatus, out *Metal3ClusterStatus, s apiconversion.Scope) error { - return autoConvert_v1beta1_Metal3ClusterStatus_To_v1alpha5_Metal3ClusterStatus(in, out, s) -} - -func (src *Metal3ClusterList) ConvertTo(dstRaw conversion.Hub) error { - dst := dstRaw.(*v1beta1.Metal3ClusterList) - return Convert_v1alpha5_Metal3ClusterList_To_v1beta1_Metal3ClusterList(src, dst, nil) -} - -func (dst *Metal3ClusterList) ConvertFrom(srcRaw conversion.Hub) error { - src := srcRaw.(*v1beta1.Metal3ClusterList) - return Convert_v1beta1_Metal3ClusterList_To_v1alpha5_Metal3ClusterList(src, dst, nil) -} - -func (src *Metal3Machine) ConvertTo(dstRaw conversion.Hub) error { - dst := dstRaw.(*v1beta1.Metal3Machine) - if err := Convert_v1alpha5_Metal3Machine_To_v1beta1_Metal3Machine(src, dst, nil); err != nil { - return err - } - // Manually restore data. - restored := &v1beta1.Metal3Machine{} - if ok, err := utilconversion.UnmarshalData(src, restored); err != nil || !ok { - return err - } - dst.Status.Conditions = restored.Status.Conditions - return nil -} - -func (dst *Metal3Machine) ConvertFrom(srcRaw conversion.Hub) error { - src := srcRaw.(*v1beta1.Metal3Machine) - if err := Convert_v1beta1_Metal3Machine_To_v1alpha5_Metal3Machine(src, dst, nil); err != nil { - return err - } - // Preserve Hub data on down-conversion except for metadata - if err := utilconversion.MarshalData(src, dst); err != nil { - return err - } - return nil -} - -// Status.Conditions was introduced in v1beta1, thus requiring a custom conversion function; the values is going to be preserved in an annotation thus allowing roundtrip without losing information. -func Convert_v1beta1_Metal3MachineStatus_To_v1alpha5_Metal3MachineStatus(in *v1beta1.Metal3MachineStatus, out *Metal3MachineStatus, s apiconversion.Scope) error { - return autoConvert_v1beta1_Metal3MachineStatus_To_v1alpha5_Metal3MachineStatus(in, out, s) -} - -func (src *Metal3MachineList) ConvertTo(dstRaw conversion.Hub) error { - dst := dstRaw.(*v1beta1.Metal3MachineList) - return Convert_v1alpha5_Metal3MachineList_To_v1beta1_Metal3MachineList(src, dst, nil) -} - -func (dst *Metal3MachineList) ConvertFrom(srcRaw conversion.Hub) error { - src := srcRaw.(*v1beta1.Metal3MachineList) - return Convert_v1beta1_Metal3MachineList_To_v1alpha5_Metal3MachineList(src, dst, nil) -} - -func (src *Metal3MachineTemplate) ConvertTo(dstRaw conversion.Hub) error { - dst := dstRaw.(*v1beta1.Metal3MachineTemplate) - if err := Convert_v1alpha5_Metal3MachineTemplate_To_v1beta1_Metal3MachineTemplate(src, dst, nil); err != nil { - return err - } - - return nil -} - -func (dst *Metal3MachineTemplate) ConvertFrom(srcRaw conversion.Hub) error { - src := srcRaw.(*v1beta1.Metal3MachineTemplate) - if err := Convert_v1beta1_Metal3MachineTemplate_To_v1alpha5_Metal3MachineTemplate(src, dst, nil); err != nil { - return err - } - - return nil -} - -func (src *Metal3MachineTemplateList) ConvertTo(dstRaw conversion.Hub) error { - dst := dstRaw.(*v1beta1.Metal3MachineTemplateList) - return Convert_v1alpha5_Metal3MachineTemplateList_To_v1beta1_Metal3MachineTemplateList(src, dst, nil) -} - -func (dst *Metal3MachineTemplateList) ConvertFrom(srcRaw conversion.Hub) error { - src := srcRaw.(*v1beta1.Metal3MachineTemplateList) - return Convert_v1beta1_Metal3MachineTemplateList_To_v1alpha5_Metal3MachineTemplateList(src, dst, nil) -} - -func (src *Metal3Data) ConvertTo(dstRaw conversion.Hub) error { - dst := dstRaw.(*v1beta1.Metal3Data) - if err := Convert_v1alpha5_Metal3Data_To_v1beta1_Metal3Data(src, dst, nil); err != nil { - return err - } - - return nil -} - -func (dst *Metal3Data) ConvertFrom(srcRaw conversion.Hub) error { - src := srcRaw.(*v1beta1.Metal3Data) - if err := Convert_v1beta1_Metal3Data_To_v1alpha5_Metal3Data(src, dst, nil); err != nil { - return err - } - - return nil -} - -func (src *Metal3DataList) ConvertTo(dstRaw conversion.Hub) error { - dst := dstRaw.(*v1beta1.Metal3DataList) - return Convert_v1alpha5_Metal3DataList_To_v1beta1_Metal3DataList(src, dst, nil) -} - -func (dst *Metal3DataList) ConvertFrom(srcRaw conversion.Hub) error { - src := srcRaw.(*v1beta1.Metal3DataList) - return Convert_v1beta1_Metal3DataList_To_v1alpha5_Metal3DataList(src, dst, nil) -} - -func (src *Metal3DataTemplate) ConvertTo(dstRaw conversion.Hub) error { - dst := dstRaw.(*v1beta1.Metal3DataTemplate) - if err := Convert_v1alpha5_Metal3DataTemplate_To_v1beta1_Metal3DataTemplate(src, dst, nil); err != nil { - return err - } - - restored := &v1beta1.Metal3DataTemplate{} - if ok, err := utilconversion.UnmarshalData(src, restored); err != nil || !ok { - return err - } - - if dst.Spec.MetaData != nil && restored.Spec.MetaData != nil { - for k := range dst.Spec.MetaData.IPAddressesFromPool { - dst.Spec.MetaData.IPAddressesFromPool[k].APIGroup = restored.Spec.MetaData.IPAddressesFromPool[k].APIGroup - dst.Spec.MetaData.IPAddressesFromPool[k].Kind = restored.Spec.MetaData.IPAddressesFromPool[k].Kind - } - for k := range dst.Spec.MetaData.GatewaysFromPool { - dst.Spec.MetaData.GatewaysFromPool[k].APIGroup = restored.Spec.MetaData.GatewaysFromPool[k].APIGroup - dst.Spec.MetaData.GatewaysFromPool[k].Kind = restored.Spec.MetaData.GatewaysFromPool[k].Kind - } - for k := range dst.Spec.MetaData.PrefixesFromPool { - dst.Spec.MetaData.PrefixesFromPool[k].APIGroup = restored.Spec.MetaData.PrefixesFromPool[k].APIGroup - dst.Spec.MetaData.PrefixesFromPool[k].Kind = restored.Spec.MetaData.PrefixesFromPool[k].Kind - } - for k := range dst.Spec.MetaData.DNSServersFromPool { - dst.Spec.MetaData.DNSServersFromPool[k].APIGroup = restored.Spec.MetaData.DNSServersFromPool[k].APIGroup - dst.Spec.MetaData.DNSServersFromPool[k].Kind = restored.Spec.MetaData.DNSServersFromPool[k].Kind - } - } - if dst.Spec.NetworkData != nil && restored.Spec.NetworkData != nil { - for k := range dst.Spec.NetworkData.Links.Ethernets { - dst.Spec.NetworkData.Links.Ethernets[k].MACAddress = restored.Spec.NetworkData.Links.Ethernets[k].MACAddress - } - for k := range dst.Spec.NetworkData.Links.Vlans { - dst.Spec.NetworkData.Links.Vlans[k].MACAddress = restored.Spec.NetworkData.Links.Vlans[k].MACAddress - } - for k := range dst.Spec.NetworkData.Links.Bonds { - dst.Spec.NetworkData.Links.Bonds[k].MACAddress = restored.Spec.NetworkData.Links.Bonds[k].MACAddress - } - for k := range dst.Spec.NetworkData.Networks.IPv4 { - dst.Spec.NetworkData.Networks.IPv4[k].FromPoolRef = restored.Spec.NetworkData.Networks.IPv4[k].FromPoolRef - } - for k := range dst.Spec.NetworkData.Networks.IPv6 { - dst.Spec.NetworkData.Networks.IPv6[k].FromPoolRef = restored.Spec.NetworkData.Networks.IPv6[k].FromPoolRef - } - for k := range dst.Spec.NetworkData.Links.Bonds { - dst.Spec.NetworkData.Links.Bonds[k].BondXmitHashPolicy = restored.Spec.NetworkData.Links.Bonds[k].BondXmitHashPolicy - } - } - - return nil -} - -func (dst *Metal3DataTemplate) ConvertFrom(srcRaw conversion.Hub) error { - src := srcRaw.(*v1beta1.Metal3DataTemplate) - if err := Convert_v1beta1_Metal3DataTemplate_To_v1alpha5_Metal3DataTemplate(src, dst, nil); err != nil { - return err - } - - return utilconversion.MarshalData(src, dst) -} - -func Convert_v1beta1_NetworkLinkEthernetMac_To_v1alpha5_NetworkLinkEthernetMac(in *v1beta1.NetworkLinkEthernetMac, out *NetworkLinkEthernetMac, s apiconversion.Scope) error { - // fromAnnotation was added with v1betaX. - return autoConvert_v1beta1_NetworkLinkEthernetMac_To_v1alpha5_NetworkLinkEthernetMac(in, out, s) -} - -func Convert_v1beta1_NetworkDataIPv6_To_v1alpha5_NetworkDataIPv6(in *v1beta1.NetworkDataIPv6, out *NetworkDataIPv6, s apiconversion.Scope) error { - // fromPoolRef was added with v1beta1. - return autoConvert_v1beta1_NetworkDataIPv6_To_v1alpha5_NetworkDataIPv6(in, out, s) -} - -func Convert_v1beta1_NetworkDataIPv4_To_v1alpha5_NetworkDataIPv4(in *v1beta1.NetworkDataIPv4, out *NetworkDataIPv4, s apiconversion.Scope) error { - // fromPoolRef was added with v1beta1. - return autoConvert_v1beta1_NetworkDataIPv4_To_v1alpha5_NetworkDataIPv4(in, out, s) -} - -func Convert_v1beta1_FromPool_To_v1alpha5_FromPool(in *v1beta1.FromPool, out *FromPool, s apiconversion.Scope) error { - // apiGroup and kind was added with v1beta1. - return autoConvert_v1beta1_FromPool_To_v1alpha5_FromPool(in, out, s) -} - -func Convert_v1beta1_NetworkDataLinkBond_To_v1alpha5_NetworkDataLinkBond(in *v1beta1.NetworkDataLinkBond, out *NetworkDataLinkBond, s apiconversion.Scope) error { - return autoConvert_v1beta1_NetworkDataLinkBond_To_v1alpha5_NetworkDataLinkBond(in, out, s) -} - -func (src *Metal3DataTemplateList) ConvertTo(dstRaw conversion.Hub) error { - dst := dstRaw.(*v1beta1.Metal3DataTemplateList) - return Convert_v1alpha5_Metal3DataTemplateList_To_v1beta1_Metal3DataTemplateList(src, dst, nil) -} - -func (dst *Metal3DataTemplateList) ConvertFrom(srcRaw conversion.Hub) error { - src := srcRaw.(*v1beta1.Metal3DataTemplateList) - return Convert_v1beta1_Metal3DataTemplateList_To_v1alpha5_Metal3DataTemplateList(src, dst, nil) -} - -func (src *Metal3DataClaim) ConvertTo(dstRaw conversion.Hub) error { - dst := dstRaw.(*v1beta1.Metal3DataClaim) - if err := Convert_v1alpha5_Metal3DataClaim_To_v1beta1_Metal3DataClaim(src, dst, nil); err != nil { - return err - } - - return nil -} - -func (dst *Metal3DataClaim) ConvertFrom(srcRaw conversion.Hub) error { - src := srcRaw.(*v1beta1.Metal3DataClaim) - if err := Convert_v1beta1_Metal3DataClaim_To_v1alpha5_Metal3DataClaim(src, dst, nil); err != nil { - return err - } - - return nil -} - -func (src *Metal3DataClaimList) ConvertTo(dstRaw conversion.Hub) error { - dst := dstRaw.(*v1beta1.Metal3DataClaimList) - return Convert_v1alpha5_Metal3DataClaimList_To_v1beta1_Metal3DataClaimList(src, dst, nil) -} - -func (dst *Metal3DataClaimList) ConvertFrom(srcRaw conversion.Hub) error { - src := srcRaw.(*v1beta1.Metal3DataClaimList) - return Convert_v1beta1_Metal3DataClaimList_To_v1alpha5_Metal3DataClaimList(src, dst, nil) -} - -func (src *Metal3Remediation) ConvertTo(dstRaw conversion.Hub) error { - dst := dstRaw.(*v1beta1.Metal3Remediation) - return Convert_v1alpha5_Metal3Remediation_To_v1beta1_Metal3Remediation(src, dst, nil) -} - -func (dst *Metal3Remediation) ConvertFrom(srcRaw conversion.Hub) error { - src := srcRaw.(*v1beta1.Metal3Remediation) - return Convert_v1beta1_Metal3Remediation_To_v1alpha5_Metal3Remediation(src, dst, nil) -} - -func (src *Metal3RemediationList) ConvertTo(dstRaw conversion.Hub) error { - dst := dstRaw.(*v1beta1.Metal3RemediationList) - return Convert_v1alpha5_Metal3RemediationList_To_v1beta1_Metal3RemediationList(src, dst, nil) -} - -func (dst *Metal3RemediationList) ConvertFrom(srcRaw conversion.Hub) error { - src := srcRaw.(*v1beta1.Metal3RemediationList) - return Convert_v1beta1_Metal3RemediationList_To_v1alpha5_Metal3RemediationList(src, dst, nil) -} - -func (src *Metal3RemediationTemplate) ConvertTo(dstRaw conversion.Hub) error { - dst := dstRaw.(*v1beta1.Metal3RemediationTemplate) - return Convert_v1alpha5_Metal3RemediationTemplate_To_v1beta1_Metal3RemediationTemplate(src, dst, nil) -} - -func (dst *Metal3RemediationTemplate) ConvertFrom(srcRaw conversion.Hub) error { - src := srcRaw.(*v1beta1.Metal3RemediationTemplate) - return Convert_v1beta1_Metal3RemediationTemplate_To_v1alpha5_Metal3RemediationTemplate(src, dst, nil) -} - -func (src *Metal3RemediationTemplateList) ConvertTo(dstRaw conversion.Hub) error { - dst := dstRaw.(*v1beta1.Metal3RemediationTemplateList) - return Convert_v1alpha5_Metal3RemediationTemplateList_To_v1beta1_Metal3RemediationTemplateList(src, dst, nil) -} - -func (dst *Metal3RemediationTemplateList) ConvertFrom(srcRaw conversion.Hub) error { - src := srcRaw.(*v1beta1.Metal3RemediationTemplateList) - return Convert_v1beta1_Metal3RemediationTemplateList_To_v1alpha5_Metal3RemediationTemplateList(src, dst, nil) -} diff --git a/api/v1alpha5/conversion_test.go b/api/v1alpha5/conversion_test.go deleted file mode 100644 index cb129ebfea..0000000000 --- a/api/v1alpha5/conversion_test.go +++ /dev/null @@ -1,91 +0,0 @@ -/* -Copyright 2021 The Kubernetes Authors. -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - http://www.apache.org/licenses/LICENSE-2.0 -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package v1alpha5 - -import ( - "math/rand" - "testing" - "time" - - fuzz "github.com/google/gofuzz" - "github.com/metal3-io/cluster-api-provider-metal3/api/v1beta1" - . "github.com/onsi/gomega" - "k8s.io/apimachinery/pkg/api/apitesting/fuzzer" - "k8s.io/apimachinery/pkg/runtime" - runtimeserializer "k8s.io/apimachinery/pkg/runtime/serializer" - utilconversion "sigs.k8s.io/cluster-api/util/conversion" -) - -const charset = "abcdefghijklmnopqrstuvwxyz" + - "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-._" - -var seededRand *rand.Rand = rand.New( - rand.NewSource(time.Now().UnixNano())) - -func apiEndpointFuzzerFuncs(codecs runtimeserializer.CodecFactory) []interface{} { - return []interface{}{ - func(i *v1beta1.APIEndpoint, c fuzz.Continue) { - b := make([]byte, seededRand.Intn(264)) - for i := range b { - b[i] = charset[seededRand.Intn(len(charset))] - } - i.Host = string(b) - i.Port = seededRand.Intn(65535) - }, - } -} - -func TestFuzzyConversion(t *testing.T) { - g := NewWithT(t) - scheme := runtime.NewScheme() - g.Expect(AddToScheme(scheme)).To(Succeed()) - g.Expect(v1beta1.AddToScheme(scheme)).To(Succeed()) - - t.Run("for Metal3Cluster", utilconversion.FuzzTestFunc(utilconversion.FuzzTestFuncInput{ - Scheme: scheme, - Hub: &v1beta1.Metal3Cluster{}, - Spoke: &Metal3Cluster{}, - FuzzerFuncs: []fuzzer.FuzzerFuncs{apiEndpointFuzzerFuncs}, - })) - - t.Run("for Metal3Machine", utilconversion.FuzzTestFunc(utilconversion.FuzzTestFuncInput{ - Scheme: scheme, - Hub: &v1beta1.Metal3Machine{}, - Spoke: &Metal3Machine{}, - })) - - t.Run("for Metal3MachineTemplate", utilconversion.FuzzTestFunc(utilconversion.FuzzTestFuncInput{ - Scheme: scheme, - Hub: &v1beta1.Metal3MachineTemplate{}, - Spoke: &Metal3MachineTemplate{}, - })) - - t.Run("for Metal3Data", utilconversion.FuzzTestFunc(utilconversion.FuzzTestFuncInput{ - Scheme: scheme, - Hub: &v1beta1.Metal3Data{}, - Spoke: &Metal3Data{}, - })) - - t.Run("for Metal3DataTemplate", utilconversion.FuzzTestFunc(utilconversion.FuzzTestFuncInput{ - Scheme: scheme, - Hub: &v1beta1.Metal3DataTemplate{}, - Spoke: &Metal3DataTemplate{}, - })) - - t.Run("for Metal3DataClaim", utilconversion.FuzzTestFunc(utilconversion.FuzzTestFuncInput{ - Scheme: scheme, - Hub: &v1beta1.Metal3DataClaim{}, - Spoke: &Metal3DataClaim{}, - })) -} diff --git a/api/v1alpha5/doc.go b/api/v1alpha5/doc.go deleted file mode 100644 index dbdd8b91bc..0000000000 --- a/api/v1alpha5/doc.go +++ /dev/null @@ -1,24 +0,0 @@ -/* -Copyright 2021 The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Package v1alpha5 contains API Schema definitions for the metal3 v1alpha5 API group -// +k8s:openapi-gen=true -// +k8s:deepcopy-gen=package,register -// +k8s:defaulter-gen=TypeMeta -// +k8s:conversion-gen=github.com/metal3-io/cluster-api-provider-metal3/api/v1beta1 -// +kubebuilder:object:generate=true -// +groupName=infrastructure.cluster.x-k8s.io -package v1alpha5 diff --git a/api/v1alpha5/groupversion_info.go b/api/v1alpha5/groupversion_info.go deleted file mode 100644 index 1043b406b1..0000000000 --- a/api/v1alpha5/groupversion_info.go +++ /dev/null @@ -1,47 +0,0 @@ -/* -Copyright 2021 The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Package v1alpha5 contains API Schema definitions for the infrastructure v1alpha5 API group -// +kubebuilder:object:generate=true -// +k8s:openapi-gen=true -// +k8s:deepcopy-gen=package,register -// +k8s:defaulter-gen=TypeMeta -// +groupName=infrastructure.cluster.x-k8s.io -package v1alpha5 - -import ( - "k8s.io/apimachinery/pkg/runtime/schema" - "sigs.k8s.io/controller-runtime/pkg/scheme" -) - -var ( - // GroupVersion is group version used to register these objects. - GroupVersion = schema.GroupVersion{Group: "infrastructure.cluster.x-k8s.io", Version: "v1alpha5"} - - // SchemeBuilder is used to add go types to the GroupVersionKind scheme. - SchemeBuilder = &scheme.Builder{GroupVersion: GroupVersion} - - // AddToScheme adds the types in this group-version to the given scheme. - AddToScheme = SchemeBuilder.AddToScheme - - // localSchemeBuilder is for automatically generated conversions. - localSchemeBuilder = SchemeBuilder.SchemeBuilder -) - -// Resource is required by pkg/client/listers/... -// func Resource(resource string) schema.GroupResource { -// return SchemeGroupVersion.WithResource(resource).GroupResource() -// } diff --git a/api/v1alpha5/metal3cluster_types.go b/api/v1alpha5/metal3cluster_types.go deleted file mode 100644 index 7ed746e77c..0000000000 --- a/api/v1alpha5/metal3cluster_types.go +++ /dev/null @@ -1,115 +0,0 @@ -/* -Copyright 2021 The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package v1alpha5 - -import ( - "github.com/pkg/errors" - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" - capierrors "sigs.k8s.io/cluster-api/errors" -) - -const ( - // ClusterFinalizer allows Metal3ClusterReconciler to clean up resources associated with Metal3Cluster before - // removing it from the apiserver. - ClusterFinalizer = "metal3cluster.infrastructure.cluster.x-k8s.io" -) - -// Metal3ClusterSpec defines the desired state of Metal3Cluster. -type Metal3ClusterSpec struct { - // ControlPlaneEndpoint represents the endpoint used to communicate with the control plane. - ControlPlaneEndpoint APIEndpoint `json:"controlPlaneEndpoint"` - // Determines if the cluster is not to be deployed with an external cloud provider. - // If set to true, CAPM3 will use node labels to set providerID on the kubernetes nodes. - // If set to false, providerID is set on nodes by other entities and CAPM3 uses the value of the providerID on the m3m resource. - NoCloudProvider bool `json:"noCloudProvider,omitempty"` -} - -// IsValid returns an error if the object is not valid, otherwise nil. The -// string representation of the error is suitable for human consumption. -func (s *Metal3ClusterSpec) IsValid() error { - missing := []string{} - if s.ControlPlaneEndpoint.Host == "" { - missing = append(missing, "ControlPlaneEndpoint.Host") - } - - if s.ControlPlaneEndpoint.Port == 0 { - missing = append(missing, "ControlPlaneEndpoint.Host") - } - - if len(missing) > 0 { - return errors.Errorf("Missing fields from Spec: %v", missing) - } - return nil -} - -// Metal3ClusterStatus defines the observed state of Metal3Cluster. -type Metal3ClusterStatus struct { - // LastUpdated identifies when this status was last observed. - // +optional - LastUpdated *metav1.Time `json:"lastUpdated,omitempty"` - - // FailureReason indicates that there is a fatal problem reconciling the - // state, and will be set to a token value suitable for - // programmatic interpretation. - // +optional - FailureReason *capierrors.ClusterStatusError `json:"failureReason,omitempty"` - - // FailureMessage indicates that there is a fatal problem reconciling the - // state, and will be set to a descriptive error message. - // +optional - FailureMessage *string `json:"failureMessage,omitempty"` - - // Ready denotes that the Metal3 cluster (infrastructure) is ready. In - // Baremetal case, it does not mean anything for now as no infrastructure - // steps need to be performed. Required by Cluster API. Set to True by the - // metal3Cluster controller after creation. - Ready bool `json:"ready"` -} - -// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object -// +kubebuilder:resource:path=metal3clusters,scope=Namespaced,categories=cluster-api,shortName=m3c;m3cluster;m3clusters;metal3c;metal3cluster -// +kubebuilder:subresource:status -// +kubebuilder:object:root=true -// +kubebuilder:unservedversion -// +kubebuilder:deprecatedversion -// +kubebuilder:printcolumn:name="Age",type="date",JSONPath=".metadata.creationTimestamp",description="Time duration since creation of Metal3Cluster" -// +kubebuilder:printcolumn:name="Ready",type="string",JSONPath=".status.ready",description="metal3Cluster is Ready" -// +kubebuilder:printcolumn:name="Error",type="string",JSONPath=".status.failureReason",description="Most recent error" -// +kubebuilder:printcolumn:name="Cluster",type="string",JSONPath=".metadata.labels.cluster\\.x-k8s\\.io/cluster-name",description="Cluster to which this BMCluster belongs" -// +kubebuilder:printcolumn:name="Endpoint",type="string",JSONPath=".spec.controlPlaneEndpoint",description="Control plane endpoint" - -// Metal3Cluster is the Schema for the metal3clusters API. -type Metal3Cluster struct { - metav1.TypeMeta `json:",inline"` - metav1.ObjectMeta `json:"metadata,omitempty"` - - Spec Metal3ClusterSpec `json:"spec,omitempty"` - Status Metal3ClusterStatus `json:"status,omitempty"` -} - -// +kubebuilder:object:root=true - -// Metal3ClusterList contains a list of Metal3Cluster. -type Metal3ClusterList struct { - metav1.TypeMeta `json:",inline"` - metav1.ListMeta `json:"metadata,omitempty"` - Items []Metal3Cluster `json:"items"` -} - -func init() { - SchemeBuilder.Register(&Metal3Cluster{}, &Metal3ClusterList{}) -} diff --git a/api/v1alpha5/metal3cluster_types_test.go b/api/v1alpha5/metal3cluster_types_test.go deleted file mode 100644 index 5158091c4d..0000000000 --- a/api/v1alpha5/metal3cluster_types_test.go +++ /dev/null @@ -1,85 +0,0 @@ -/* -Copyright 2021 The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package v1alpha5 - -import ( - "testing" -) - -func TestClusterSpecIsValid(t *testing.T) { - cases := []struct { - Spec Metal3ClusterSpec - ErrorExpected bool - Name string - }{ - { - Spec: Metal3ClusterSpec{}, - ErrorExpected: true, - Name: "empty spec", - }, - { - Spec: Metal3ClusterSpec{ - ControlPlaneEndpoint: APIEndpoint{ - Host: "foo.bar", - Port: 6443, - }, - }, - ErrorExpected: false, - Name: "Correct spec", - }, - { - Spec: Metal3ClusterSpec{ - ControlPlaneEndpoint: APIEndpoint{ - Host: "", - Port: 0, - }, - }, - ErrorExpected: true, - Name: "Incorrect spec, no host and port", - }, - { - Spec: Metal3ClusterSpec{ - ControlPlaneEndpoint: APIEndpoint{ - Host: "", - Port: 6443, - }, - }, - ErrorExpected: true, - Name: "Incorrect spec, no host", - }, - { - Spec: Metal3ClusterSpec{ - ControlPlaneEndpoint: APIEndpoint{ - Host: "foo.bar", - Port: 0, - }, - }, - ErrorExpected: true, - Name: "Incorrect spec, no port", - }, - } - - for _, tc := range cases { - err := tc.Spec.IsValid() - if tc.ErrorExpected && err == nil { - t.Errorf("Did not get error from case \"%v\"", tc.Name) - } - if !tc.ErrorExpected && err != nil { - t.Errorf("Got unexpected error from case \"%v\": %v", tc.Name, err) - } - } -} diff --git a/api/v1alpha5/metal3data_types.go b/api/v1alpha5/metal3data_types.go deleted file mode 100644 index 935e3ea9fc..0000000000 --- a/api/v1alpha5/metal3data_types.go +++ /dev/null @@ -1,89 +0,0 @@ -/* -Copyright 2021 The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package v1alpha5 - -import ( - corev1 "k8s.io/api/core/v1" - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" -) - -const ( - // DataFinalizer allows Metal3DataReconciler to clean up resources - // associated with Metal3Data before removing it from the apiserver. - DataFinalizer = "metal3data.infrastructure.cluster.x-k8s.io" -) - -// Metal3DataSpec defines the desired state of Metal3Data. -type Metal3DataSpec struct { - // Index stores the index value of this instance in the Metal3DataTemplate. - Index int `json:"index,omitempty"` - - // TemplateReference refers to the Template the Metal3MachineTemplate refers to. - // It can be matched against the key or it may also point to the name of the template - // Metal3Data refers to - TemplateReference string `json:"templateReference,omitempty"` - - // MetaData points to the rendered MetaData secret. - MetaData *corev1.SecretReference `json:"metaData,omitempty"` - - // NetworkData points to the rendered NetworkData secret. - NetworkData *corev1.SecretReference `json:"networkData,omitempty"` - - // DataClaim points to the Metal3DataClaim the Metal3Data was created for. - Claim corev1.ObjectReference `json:"claim"` - - // DataTemplate is the Metal3DataTemplate this was generated from. - Template corev1.ObjectReference `json:"template"` -} - -// Metal3DataStatus defines the observed state of Metal3Data. -type Metal3DataStatus struct { - // Ready is a flag set to True if the secrets were rendered properly - Ready bool `json:"ready,omitempty"` - - // ErrorMessage contains the error message - ErrorMessage *string `json:"errorMessage,omitempty"` -} - -// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object -// +kubebuilder:resource:path=metal3datas,scope=Namespaced,categories=cluster-api,shortName=m3d;m3data;m3datas;metal3d;metal3data -// +kubebuilder:subresource:status -// +kubebuilder:object:root=true -// +kubebuilder:unservedversion -// +kubebuilder:deprecatedversion -// +kubebuilder:printcolumn:name="Age",type="date",JSONPath=".metadata.creationTimestamp",description="Time duration since creation of Metal3Data" -// Metal3Data is the Schema for the metal3datas API. -type Metal3Data struct { - metav1.TypeMeta `json:",inline"` - metav1.ObjectMeta `json:"metadata,omitempty"` - - Spec Metal3DataSpec `json:"spec,omitempty"` - Status Metal3DataStatus `json:"status,omitempty"` -} - -// +kubebuilder:object:root=true - -// Metal3DataList contains a list of Metal3Data. -type Metal3DataList struct { - metav1.TypeMeta `json:",inline"` - metav1.ListMeta `json:"metadata,omitempty"` - Items []Metal3Data `json:"items"` -} - -func init() { - SchemeBuilder.Register(&Metal3Data{}, &Metal3DataList{}) -} diff --git a/api/v1alpha5/metal3dataclaim_types.go b/api/v1alpha5/metal3dataclaim_types.go deleted file mode 100644 index d1237caf1f..0000000000 --- a/api/v1alpha5/metal3dataclaim_types.go +++ /dev/null @@ -1,72 +0,0 @@ -/* -Copyright 2021 The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package v1alpha5 - -import ( - corev1 "k8s.io/api/core/v1" - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" -) - -const ( - // DataClaimFinalizer allows Metal3DataReconciler to clean up resources - // associated with Metal3DataClaim before removing it from the apiserver. - DataClaimFinalizer = "metal3dataclaim.infrastructure.cluster.x-k8s.io" -) - -// Metal3DataClaimSpec defines the desired state of Metal3DataClaim. -type Metal3DataClaimSpec struct { - // Template is the Metal3DataTemplate this was generated for. - Template corev1.ObjectReference `json:"template"` -} - -// Metal3DataClaimStatus defines the observed state of Metal3DataClaim. -type Metal3DataClaimStatus struct { - // RenderedData references the Metal3Data when ready - RenderedData *corev1.ObjectReference `json:"renderedData,omitempty"` - - // ErrorMessage contains the error message - ErrorMessage *string `json:"errorMessage,omitempty"` -} - -// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object -// +kubebuilder:resource:path=metal3dataclaims,scope=Namespaced,categories=cluster-api,shortName=m3dc;m3dataclaim;m3dataclaims;metal3dc;metal3dataclaim -// +kubebuilder:subresource:status -// +kubebuilder:object:root=true -// +kubebuilder:unservedversion -// +kubebuilder:deprecatedversion -// +kubebuilder:printcolumn:name="Age",type="date",JSONPath=".metadata.creationTimestamp",description="Time duration since creation of Metal3DataClaim" -// Metal3DataClaim is the Schema for the metal3datas API. -type Metal3DataClaim struct { - metav1.TypeMeta `json:",inline"` - metav1.ObjectMeta `json:"metadata,omitempty"` - - Spec Metal3DataClaimSpec `json:"spec,omitempty"` - Status Metal3DataClaimStatus `json:"status,omitempty"` -} - -// +kubebuilder:object:root=true - -// Metal3DataClaimList contains a list of Metal3DataClaim. -type Metal3DataClaimList struct { - metav1.TypeMeta `json:",inline"` - metav1.ListMeta `json:"metadata,omitempty"` - Items []Metal3DataClaim `json:"items"` -} - -func init() { - SchemeBuilder.Register(&Metal3DataClaim{}, &Metal3DataClaimList{}) -} diff --git a/api/v1alpha5/metal3datatemplate_types.go b/api/v1alpha5/metal3datatemplate_types.go deleted file mode 100644 index 5d3d9e5986..0000000000 --- a/api/v1alpha5/metal3datatemplate_types.go +++ /dev/null @@ -1,486 +0,0 @@ -/* -Copyright 2021 The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package v1alpha5 - -import ( - ipamv1 "github.com/metal3-io/ip-address-manager/api/v1alpha1" - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" -) - -const ( - // DataTemplateFinalizer allows Metal3DataTemplateReconciler to clean up resources - // associated with Metal3DataTemplate before removing it from the apiserver. - DataTemplateFinalizer = "metal3datatemplate.infrastructure.cluster.x-k8s.io" -) - -// MetaDataIndex contains the information to render the index. -type MetaDataIndex struct { - // Key will be used as the key to set in the metadata map for cloud-init - Key string `json:"key"` - // Offset is the offset to apply to the index when rendering it - Offset int `json:"offset,omitempty"` - // +kubebuilder:default=1 - // Step is the multiplier of the index - Step int `json:"step,omitempty"` - // Prefix is the prefix string - Prefix string `json:"prefix,omitempty"` - // Suffix is the suffix string - Suffix string `json:"suffix,omitempty"` -} - -// MetaDataFromLabel contains the information to fetch a label content, if the -// label does not exist, it is rendered as empty string. -type MetaDataFromLabel struct { - // Key will be used as the key to set in the metadata map for cloud-init - Key string `json:"key"` - // +kubebuilder:validation:Enum=machine;metal3machine;baremetalhost - // Object is the type of the object from which we retrieve the name - Object string `json:"object"` - // Label is the key of the label to fetch - Label string `json:"label"` -} - -// MetaDataFromAnnotation contains the information to fetch an annotation -// content, if the label does not exist, it is rendered as empty string. -type MetaDataFromAnnotation struct { - // Key will be used as the key to set in the metadata map for cloud-init - Key string `json:"key"` - // +kubebuilder:validation:Enum=machine;metal3machine;baremetalhost - // Object is the type of the object from which we retrieve the name - Object string `json:"object"` - // Annotation is the key of the Annotation to fetch - Annotation string `json:"annotation"` -} - -// MetaDataString contains the information to render the string. -type MetaDataString struct { - // Key will be used as the key to set in the metadata map for cloud-init - Key string `json:"key"` - // Value is the string to render. - Value string `json:"value"` -} - -// MetaDataNamespace contains the information to render the namespace. -type MetaDataNamespace struct { - // Key will be used as the key to set in the metadata map for cloud-init - Key string `json:"key"` -} - -// MetaDataObjectName contains the information to render the object name. -type MetaDataObjectName struct { - // Key will be used as the key to set in the metadata map for cloud-init - Key string `json:"key"` - // +kubebuilder:validation:Enum=machine;metal3machine;baremetalhost - // Object is the type of the object from which we retrieve the name - Object string `json:"object"` -} - -// MetaDataHostInterface contains the information to render the object name. -type MetaDataHostInterface struct { - // Key will be used as the key to set in the metadata map for cloud-init - Key string `json:"key"` - // Interface is the name of the interface in the BareMetalHost Status Hardware - // Details list of interfaces from which to fetch the MAC address. - Interface string `json:"interface"` -} - -// MetaDataIPAddress contains the info to render th ip address. It is IP-version -// agnostic. -type MetaDataIPAddress struct { - // Key will be used as the key to set in the metadata map for cloud-init - Key string `json:"key"` - // Start is the first ip address that can be rendered - Start *ipamv1.IPAddressStr `json:"start,omitempty"` - // End is the last IP address that can be rendered. It is used as a validation - // that the rendered IP is in bound. - End *ipamv1.IPAddressStr `json:"end,omitempty"` - // Subnet is used to validate that the rendered IP is in bounds. In case the - // Start value is not given, it is derived from the subnet ip incremented by 1 - // (`192.168.0.1` for `192.168.0.0/24`) - Subnet *ipamv1.IPSubnetStr `json:"subnet,omitempty"` - // +kubebuilder:default=1 - // Step is the step between the IP addresses rendered. - Step int `json:"step,omitempty"` -} - -type FromPool struct { - // Key will be used as the key to set in the metadata map for cloud-init - Key string `json:"key"` - - // Name is the name of the IPPool used to fetch the value to set in the metadata map for cloud-init - Name string `json:"name"` -} - -// MetaData represents a keyand value of the metadata. -type MetaData struct { - // Strings is the list of metadata items to be rendered from strings - Strings []MetaDataString `json:"strings,omitempty"` - - // ObjectNames is the list of metadata items to be rendered from the name - // of objects. - ObjectNames []MetaDataObjectName `json:"objectNames,omitempty"` - - // Indexes is the list of metadata items to be rendered from the index of the - // Metal3Data - Indexes []MetaDataIndex `json:"indexes,omitempty"` - - // Namespaces is the list of metadata items to be rendered from the namespace - Namespaces []MetaDataNamespace `json:"namespaces,omitempty"` - - // IPAddressesFromPool is the list of metadata items to be rendered as ip addresses. - IPAddressesFromPool []FromPool `json:"ipAddressesFromIPPool,omitempty"` - - // PrefixesFromPool is the list of metadata items to be rendered as network prefixes. - PrefixesFromPool []FromPool `json:"prefixesFromIPPool,omitempty"` - - // GatewaysFromPool is the list of metadata items to be rendered as gateway addresses. - GatewaysFromPool []FromPool `json:"gatewaysFromIPPool,omitempty"` - - // DNSServersFromPool is the list of metadata items to be rendered as dns servers. - DNSServersFromPool []FromPool `json:"dnsServersFromIPPool,omitempty"` - - // FromHostInterfaces is the list of metadata items to be rendered as MAC - // addresses of the host interfaces. - FromHostInterfaces []MetaDataHostInterface `json:"fromHostInterfaces,omitempty"` - - // FromLabels is the list of metadata items to be fetched from object labels - FromLabels []MetaDataFromLabel `json:"fromLabels,omitempty"` - - // FromAnnotations is the list of metadata items to be fetched from object - // Annotations - FromAnnotations []MetaDataFromAnnotation `json:"fromAnnotations,omitempty"` -} - -// NetworkLinkEthernetMac represents the Mac address content. -type NetworkLinkEthernetMac struct { - // String contains the MAC address given as a string - String *string `json:"string,omitempty"` - - // FromHostInterface contains the name of the interface in the BareMetalHost - // Introspection details from which to fetch the MAC address - FromHostInterface *string `json:"fromHostInterface,omitempty"` -} - -// NetworkDataLinkEthernet represents an ethernet link object. -type NetworkDataLinkEthernet struct { - // +kubebuilder:validation:Enum=bridge;dvs;hw_veb;hyperv;ovs;tap;vhostuser;vif;phy - // Type is the type of the ethernet link. It can be one of: - // bridge, dvs, hw_veb, hyperv, ovs, tap, vhostuser, vif, phy - Type string `json:"type"` - - // Id is the ID of the interface (used for naming) - Id string `json:"id"` //nolint:revive,stylecheck - - // +kubebuilder:default=1500 - // +kubebuilder:validation:Maximum=9000 - // MTU is the MTU of the interface - MTU int `json:"mtu,omitempty"` - - // MACAddress is the MAC address of the interface, containing the object - // used to render it. - MACAddress *NetworkLinkEthernetMac `json:"macAddress"` -} - -// NetworkDataLinkBond represents a bond link object. -type NetworkDataLinkBond struct { - // +kubebuilder:validation:Enum="balance-rr";"active-backup";"balance-xor";"broadcast";"balance-tlb";"balance-alb";"802.3ad" - // BondMode is the mode of bond used. It can be one of - // balance-rr, active-backup, balance-xor, broadcast, balance-tlb, balance-alb, 802.3ad - BondMode string `json:"bondMode"` - - // Id is the ID of the interface (used for naming) - Id string `json:"id"` //nolint:revive,stylecheck - - // +kubebuilder:default=1500 - // +kubebuilder:validation:Maximum=9000 - // MTU is the MTU of the interface - MTU int `json:"mtu,omitempty"` - - // MACAddress is the MAC address of the interface, containing the object - // used to render it. - MACAddress *NetworkLinkEthernetMac `json:"macAddress"` - - // BondLinks is the list of links that are part of the bond. - BondLinks []string `json:"bondLinks"` -} - -// NetworkDataLinkVlan represents a vlan link object. -type NetworkDataLinkVlan struct { - // +kubebuilder:validation:Maximum=4096 - // VlanID is the Vlan ID - VlanID int `json:"vlanID"` - - // Id is the ID of the interface (used for naming) - Id string `json:"id"` //nolint:revive,stylecheck - - // +kubebuilder:default=1500 - // +kubebuilder:validation:Maximum=9000 - // MTU is the MTU of the interface - MTU int `json:"mtu,omitempty"` - - // MACAddress is the MAC address of the interface, containing the object - // used to render it. - MACAddress *NetworkLinkEthernetMac `json:"macAddress"` - - // VlanLink is the name of the link on which the vlan should be added - VlanLink string `json:"vlanLink"` -} - -// NetworkDataLink contains list of different link objects. -type NetworkDataLink struct { - - // Ethernets contains a list of Ethernet links - Ethernets []NetworkDataLinkEthernet `json:"ethernets,omitempty"` - - // Bonds contains a list of Bond links - Bonds []NetworkDataLinkBond `json:"bonds,omitempty"` - - // Vlans contains a list of Vlan links - Vlans []NetworkDataLinkVlan `json:"vlans,omitempty"` -} - -// NetworkDataService represents a service object. -type NetworkDataService struct { - - // DNS is a list of DNS services - DNS []ipamv1.IPAddressStr `json:"dns,omitempty"` - - // DNSFromIPPool is the name of the IPPool from which to get the DNS servers - DNSFromIPPool *string `json:"dnsFromIPPool,omitempty"` -} - -// NetworkDataServicev4 represents a service object. -type NetworkDataServicev4 struct { - // DNS is a list of IPv4 DNS services - DNS []ipamv1.IPAddressv4Str `json:"dns,omitempty"` - - // DNSFromIPPool is the name of the IPPool from which to get the DNS servers - DNSFromIPPool *string `json:"dnsFromIPPool,omitempty"` -} - -// NetworkDataServicev6 represents a service object. -type NetworkDataServicev6 struct { - // DNS is a list of IPv6 DNS services - DNS []ipamv1.IPAddressv6Str `json:"dns,omitempty"` - - // DNSFromIPPool is the name of the IPPool from which to get the DNS servers - DNSFromIPPool *string `json:"dnsFromIPPool,omitempty"` -} - -// NetworkGatewayv4 represents a gateway, given as a string or as a reference to -// a Metal3IPPool. -type NetworkGatewayv4 struct { - - // String is the gateway given as a string - String *ipamv1.IPAddressv4Str `json:"string,omitempty"` - - // FromIPPool is the name of the IPPool to fetch the gateway from - FromIPPool *string `json:"fromIPPool,omitempty"` -} - -// NetworkGatewayv6 represents a gateway, given as a string or as a reference to -// a Metal3IPPool. -type NetworkGatewayv6 struct { - - // String is the gateway given as a string - String *ipamv1.IPAddressv6Str `json:"string,omitempty"` - - // FromIPPool is the name of the IPPool to fetch the gateway from - FromIPPool *string `json:"fromIPPool,omitempty"` -} - -// NetworkDataRoutev4 represents an ipv4 route object. -type NetworkDataRoutev4 struct { - // Network is the IPv4 network address - Network ipamv1.IPAddressv4Str `json:"network"` - - // +kubebuilder:validation:Maximum=32 - // Prefix is the mask of the network as integer (max 32) - Prefix int `json:"prefix,omitempty"` - - // Gateway is the IPv4 address of the gateway - Gateway NetworkGatewayv4 `json:"gateway"` - - // Services is a list of IPv4 services - Services NetworkDataServicev4 `json:"services,omitempty"` -} - -// NetworkDataRoutev6 represents an ipv6 route object. -type NetworkDataRoutev6 struct { - // Network is the IPv6 network address - Network ipamv1.IPAddressv6Str `json:"network"` - - // +kubebuilder:validation:Maximum=128 - // Prefix is the mask of the network as integer (max 128) - Prefix int `json:"prefix,omitempty"` - - // Gateway is the IPv6 address of the gateway - Gateway NetworkGatewayv6 `json:"gateway"` - - // Services is a list of IPv6 services - Services NetworkDataServicev6 `json:"services,omitempty"` -} - -// NetworkDataIPv4 represents an ipv4 static network object. -type NetworkDataIPv4 struct { - - // ID is the network ID (name) - ID string `json:"id"` - - // Link is the link on which the network applies - Link string `json:"link"` - - // IPAddressFromIPPool contains the name of the IPPool to use to get an ip address - IPAddressFromIPPool string `json:"ipAddressFromIPPool"` - - // Routes contains a list of IPv4 routes - Routes []NetworkDataRoutev4 `json:"routes,omitempty"` -} - -// NetworkDataIPv6 represents an ipv6 static network object. -type NetworkDataIPv6 struct { - - // ID is the network ID (name) - ID string `json:"id"` - - // Link is the link on which the network applies - Link string `json:"link"` - - // IPAddressFromIPPool contains the name of the IPPool to use to get an ip address - IPAddressFromIPPool string `json:"ipAddressFromIPPool"` - - // Routes contains a list of IPv6 routes - Routes []NetworkDataRoutev6 `json:"routes,omitempty"` -} - -// NetworkDataIPv4DHCP represents an ipv4 DHCP network object. -type NetworkDataIPv4DHCP struct { - - // ID is the network ID (name) - ID string `json:"id"` - - // Link is the link on which the network applies - Link string `json:"link"` - - // Routes contains a list of IPv4 routes - Routes []NetworkDataRoutev4 `json:"routes,omitempty"` -} - -// NetworkDataIPv6DHCP represents an ipv6 DHCP network object. -type NetworkDataIPv6DHCP struct { - - // ID is the network ID (name) - ID string `json:"id"` - - // Link is the link on which the network applies - Link string `json:"link"` - - // Routes contains a list of IPv6 routes - Routes []NetworkDataRoutev6 `json:"routes,omitempty"` -} - -// NetworkDataNetwork represents a network object. -type NetworkDataNetwork struct { - - // IPv4 contains a list of IPv4 static allocations - IPv4 []NetworkDataIPv4 `json:"ipv4,omitempty"` - - // IPv4 contains a list of IPv6 static allocations - IPv6 []NetworkDataIPv6 `json:"ipv6,omitempty"` - - // IPv4 contains a list of IPv4 DHCP allocations - IPv4DHCP []NetworkDataIPv4DHCP `json:"ipv4DHCP,omitempty"` - - // IPv4 contains a list of IPv6 DHCP allocations - IPv6DHCP []NetworkDataIPv6DHCP `json:"ipv6DHCP,omitempty"` - - // IPv4 contains a list of IPv6 SLAAC allocations - IPv6SLAAC []NetworkDataIPv6DHCP `json:"ipv6SLAAC,omitempty"` -} - -// NetworkData represents a networkData object. -type NetworkData struct { - // Links is a structure containing lists of different types objects - Links NetworkDataLink `json:"links,omitempty"` - - // Networks is a structure containing lists of different types objects - Networks NetworkDataNetwork `json:"networks,omitempty"` - - // Services is a structure containing lists of different types objects - Services NetworkDataService `json:"services,omitempty"` -} - -// Metal3DataTemplateSpec defines the desired state of Metal3DataTemplate. -type Metal3DataTemplateSpec struct { - - // ClusterName is the name of the Cluster this object belongs to. - // +kubebuilder:validation:MinLength=1 - ClusterName string `json:"clusterName"` - - // TemplateReference refers to the Template the Metal3MachineTemplate refers to. - // It can be matched against the key or it may also point to the name of the template - // Metal3Data refers to - TemplateReference string `json:"templateReference,omitempty"` - - // MetaData contains the information needed to generate the metadata secret - MetaData *MetaData `json:"metaData,omitempty"` - - // NetworkData contains the information needed to generate the networkdata - // secret - NetworkData *NetworkData `json:"networkData,omitempty"` -} - -// Metal3DataTemplateStatus defines the observed state of Metal3DataTemplate. -type Metal3DataTemplateStatus struct { - // LastUpdated identifies when this status was last observed. - // +optional - LastUpdated *metav1.Time `json:"lastUpdated,omitempty"` - - // Indexes contains the map of Metal3Machine and index used - Indexes map[string]int `json:"indexes,omitempty"` -} - -// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object -// +kubebuilder:resource:path=metal3datatemplates,scope=Namespaced,categories=cluster-api,shortName=m3dt;m3datatemplate;m3datatemplates;metal3dt;metal3datatemplate -// +kubebuilder:subresource:status -// +kubebuilder:object:root=true -// +kubebuilder:unservedversion -// +kubebuilder:deprecatedversion -// +kubebuilder:printcolumn:name="Cluster",type="string",JSONPath=".metadata.labels.cluster\\.x-k8s\\.io/cluster-name",description="Cluster to which this template belongs" -// +kubebuilder:printcolumn:name="Age",type="date",JSONPath=".metadata.creationTimestamp",description="Time duration since creation of Metal3DataTemplate" - -// Metal3DataTemplate is the Schema for the metal3datatemplates API. -type Metal3DataTemplate struct { - metav1.TypeMeta `json:",inline"` - metav1.ObjectMeta `json:"metadata,omitempty"` - - Spec Metal3DataTemplateSpec `json:"spec,omitempty"` - Status Metal3DataTemplateStatus `json:"status,omitempty"` -} - -// +kubebuilder:object:root=true - -// Metal3DataTemplateList contains a list of Metal3DataTemplate. -type Metal3DataTemplateList struct { - metav1.TypeMeta `json:",inline"` - metav1.ListMeta `json:"metadata,omitempty"` - Items []Metal3DataTemplate `json:"items"` -} - -func init() { - SchemeBuilder.Register(&Metal3DataTemplate{}, &Metal3DataTemplateList{}) -} diff --git a/api/v1alpha5/metal3machine_types.go b/api/v1alpha5/metal3machine_types.go deleted file mode 100644 index c77578ead3..0000000000 --- a/api/v1alpha5/metal3machine_types.go +++ /dev/null @@ -1,200 +0,0 @@ -/* -Copyright 2021 The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package v1alpha5 - -import ( - "github.com/pkg/errors" - corev1 "k8s.io/api/core/v1" - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" - clusterv1alpha4 "sigs.k8s.io/cluster-api/api/v1alpha4" - capierrors "sigs.k8s.io/cluster-api/errors" -) - -const ( - // MachineFinalizer allows ReconcileMetal3Machine to clean up resources associated with Metal3Machine before - // removing it from the apiserver. - MachineFinalizer = "metal3machine.infrastructure.cluster.x-k8s.io" -) - -// Metal3MachineSpec defines the desired state of Metal3Machine. -type Metal3MachineSpec struct { - // ProviderID will be the Metal3 machine in ProviderID format - // (metal3://) - // +optional - ProviderID *string `json:"providerID,omitempty"` - - // Image is the image to be provisioned. - Image Image `json:"image"` - - // UserData references the Secret that holds user data needed by the bare metal - // operator. The Namespace is optional; it will default to the metal3machine's - // namespace if not specified. - UserData *corev1.SecretReference `json:"userData,omitempty"` - - // HostSelector specifies matching criteria for labels on BareMetalHosts. - // This is used to limit the set of BareMetalHost objects considered for - // claiming for a metal3machine. - HostSelector HostSelector `json:"hostSelector,omitempty"` - - // MetadataTemplate is a reference to a Metal3DataTemplate object containing - // a template of metadata to be rendered. Metadata keys defined in the - // metadataTemplate take precedence over keys defined in metadata field. - DataTemplate *corev1.ObjectReference `json:"dataTemplate,omitempty"` - - // MetaData is an object storing the reference to the secret containing the - // Metadata given by the user. - MetaData *corev1.SecretReference `json:"metaData,omitempty"` - - // NetworkData is an object storing the reference to the secret containing the - // network data given by the user. - NetworkData *corev1.SecretReference `json:"networkData,omitempty"` - - // When set to disabled, automated cleaning of host disks will be skipped - // during provisioning and deprovisioning. - // +kubebuilder:validation:Enum:=metadata;disabled - AutomatedCleaningMode *string `json:"automatedCleaningMode,omitempty"` -} - -// IsValid returns an error if the object is not valid, otherwise nil. The -// string representation of the error is suitable for human consumption. -func (s *Metal3MachineSpec) IsValid() error { - missing := []string{} - if s.Image.URL == "" { - missing = append(missing, "Image.URL") - } - if s.Image.Checksum == "" { - missing = append(missing, "Image.Checksum") - } - if len(missing) > 0 { - return errors.Errorf("Missing fields from ProviderSpec: %v", missing) - } - return nil -} - -// Metal3MachineStatus defines the observed state of Metal3Machine. -type Metal3MachineStatus struct { - - // LastUpdated identifies when this status was last observed. - // +optional - LastUpdated *metav1.Time `json:"lastUpdated,omitempty"` - - // FailureReason will be set in the event that there is a terminal problem - // reconciling the metal3machine and will contain a succinct value suitable - // for machine interpretation. - // - // This field should not be set for transitive errors that a controller - // faces that are expected to be fixed automatically over - // time (like service outages), but instead indicate that something is - // fundamentally wrong with the metal3machine's spec or the configuration of - // the controller, and that manual intervention is required. Examples - // of terminal errors would be invalid combinations of settings in the - // spec, values that are unsupported by the controller, or the - // responsible controller itself being critically misconfigured. - // - // Any transient errors that occur during the reconciliation of - // metal3machines can be added as events to the metal3machine object - // and/or logged in the controller's output. - // +optional - FailureReason *capierrors.MachineStatusError `json:"failureReason,omitempty"` - - // FailureMessage will be set in the event that there is a terminal problem - // reconciling the metal3machine and will contain a more verbose string suitable - // for logging and human consumption. - // - // This field should not be set for transitive errors that a controller - // faces that are expected to be fixed automatically over - // time (like service outages), but instead indicate that something is - // fundamentally wrong with the metal3machine's spec or the configuration of - // the controller, and that manual intervention is required. Examples - // of terminal errors would be invalid combinations of settings in the - // spec, values that are unsupported by the controller, or the - // responsible controller itself being critically misconfigured. - // - // Any transient errors that occur during the reconciliation of - // metal3machines can be added as events to the metal3machine object - // and/or logged in the controller's output. - // +optional - FailureMessage *string `json:"failureMessage,omitempty"` - - // Addresses is a list of addresses assigned to the machine. - // This field is copied from the infrastructure provider reference. - // +optional - Addresses clusterv1alpha4.MachineAddresses `json:"addresses,omitempty"` - - // Phase represents the current phase of machine actuation. - // E.g. Pending, Running, Terminating, Failed etc. - // +optional - Phase string `json:"phase,omitempty"` - - // Ready is the state of the metal3. - // TODO : Document the variable : - // mhrivnak: " it would be good to document what this means, how to interpret - // it, under what circumstances the value changes, etc." - // +optional - Ready bool `json:"ready"` - - // UserData references the Secret that holds user data needed by the bare metal - // operator. The Namespace is optional; it will default to the metal3machine's - // namespace if not specified. - UserData *corev1.SecretReference `json:"userData,omitempty"` - - // RenderedData is a reference to a rendered Metal3Data object containing - // the references to metaData and networkData secrets. - RenderedData *corev1.ObjectReference `json:"renderedData,omitempty"` - - // MetaData is an object storing the reference to the secret containing the - // Metadata used to deploy the BareMetalHost. - MetaData *corev1.SecretReference `json:"metaData,omitempty"` - - // NetworkData is an object storing the reference to the secret containing the - // network data used to deploy the BareMetalHost. - NetworkData *corev1.SecretReference `json:"networkData,omitempty"` -} - -// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object -// +kubebuilder:resource:path=metal3machines,scope=Namespaced,categories=cluster-api,shortName=m3m;m3machine;m3machines;metal3m;metal3machine -// +kubebuilder:object:root=true -// +kubebuilder:unservedversion -// +kubebuilder:deprecatedversion -// +kubebuilder:subresource:status -// +kubebuilder:printcolumn:name="Age",type="date",JSONPath=".metadata.creationTimestamp",description="Time duration since creation of Metal3Machine" -// +kubebuilder:printcolumn:name="ProviderID",type="string",JSONPath=".spec.providerID",description="Provider ID" -// +kubebuilder:printcolumn:name="Ready",type="string",JSONPath=".status.ready",description="metal3machine is Ready" -// +kubebuilder:printcolumn:name="Cluster",type="string",JSONPath=".metadata.labels.cluster\\.x-k8s\\.io/cluster-name",description="Cluster to which this M3Machine belongs" -// +kubebuilder:printcolumn:name="Phase",type="string",JSONPath=".status.phase",description="metal3machine current phase" - -// Metal3Machine is the Schema for the metal3machines API. -type Metal3Machine struct { - metav1.TypeMeta `json:",inline"` - metav1.ObjectMeta `json:"metadata,omitempty"` - - Spec Metal3MachineSpec `json:"spec,omitempty"` - Status Metal3MachineStatus `json:"status,omitempty"` -} - -// +kubebuilder:object:root=true - -// Metal3MachineList contains a list of Metal3Machine. -type Metal3MachineList struct { - metav1.TypeMeta `json:",inline"` - metav1.ListMeta `json:"metadata,omitempty"` - Items []Metal3Machine `json:"items"` -} - -func init() { - SchemeBuilder.Register(&Metal3Machine{}, &Metal3MachineList{}) -} diff --git a/api/v1alpha5/metal3machine_types_test.go b/api/v1alpha5/metal3machine_types_test.go deleted file mode 100644 index 665314f600..0000000000 --- a/api/v1alpha5/metal3machine_types_test.go +++ /dev/null @@ -1,158 +0,0 @@ -/* -Copyright 2021 The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package v1alpha5 - -import ( - "testing" - - corev1 "k8s.io/api/core/v1" -) - -func TestSpecIsValid(t *testing.T) { - cases := []struct { - Spec Metal3MachineSpec - ErrorExpected bool - Name string - }{ - { - Spec: Metal3MachineSpec{}, - ErrorExpected: true, - Name: "empty spec", - }, - { - Spec: Metal3MachineSpec{ - Image: Image{ - URL: "http://172.22.0.1/images/rhcos-ootpa-latest.qcow2", - Checksum: "http://172.22.0.1/images/rhcos-ootpa-latest.qcow2.sha256sum", - }, - UserData: &corev1.SecretReference{ - Name: "worker-user-data", - }, - }, - ErrorExpected: false, - Name: "Valid spec without UserData.Namespace", - }, - { - Spec: Metal3MachineSpec{ - Image: Image{ - URL: "http://172.22.0.1/images/rhcos-ootpa-latest.qcow2", - Checksum: "http://172.22.0.1/images/rhcos-ootpa-latest.qcow2.sha256sum", - }, - UserData: &corev1.SecretReference{ - Name: "worker-user-data", - Namespace: "otherns", - }, - }, - ErrorExpected: false, - Name: "Valid spec with UserData.Namespace", - }, - { - Spec: Metal3MachineSpec{ - Image: Image{ - Checksum: "http://172.22.0.1/images/rhcos-ootpa-latest.qcow2.sha256sum", - }, - UserData: &corev1.SecretReference{ - Name: "worker-user-data", - }, - }, - ErrorExpected: true, - Name: "missing Image.URL", - }, - { - Spec: Metal3MachineSpec{ - Image: Image{ - URL: "http://172.22.0.1/images/rhcos-ootpa-latest.qcow2", - }, - UserData: &corev1.SecretReference{ - Name: "worker-user-data", - }, - }, - ErrorExpected: true, - Name: "missing Image.Checksum", - }, - { - Spec: Metal3MachineSpec{ - Image: Image{ - URL: "http://172.22.0.1/images/rhcos-ootpa-latest.qcow2", - Checksum: "http://172.22.0.1/images/rhcos-ootpa-latest.qcow2.sha256sum", - }, - }, - ErrorExpected: false, - Name: "missing optional UserData", - }, - { - Spec: Metal3MachineSpec{ - Image: Image{ - URL: "http://172.22.0.1/images/rhcos-ootpa-latest.qcow2", - Checksum: "http://172.22.0.1/images/rhcos-ootpa-latest.qcow2.sha256sum", - }, - UserData: &corev1.SecretReference{ - Namespace: "otherns", - }, - }, - ErrorExpected: false, - Name: "missing optional UserData.Name", - }, - { - Spec: Metal3MachineSpec{ - Image: Image{ - URL: "http://172.22.0.1/images/rhcos-ootpa-latest.qcow2", - Checksum: "http://172.22.0.1/images/rhcos-ootpa-latest.qcow2.sha256sum", - }, - HostSelector: HostSelector{}, - }, - ErrorExpected: false, - Name: "Empty HostSelector provided", - }, - { - Spec: Metal3MachineSpec{ - Image: Image{ - URL: "http://172.22.0.1/images/rhcos-ootpa-latest.qcow2", - Checksum: "http://172.22.0.1/images/rhcos-ootpa-latest.qcow2.sha256sum", - }, - HostSelector: HostSelector{ - MatchLabels: map[string]string{"key": "value"}, - }, - }, - ErrorExpected: false, - Name: "HostSelector Single MatchLabel provided", - }, - { - Spec: Metal3MachineSpec{ - Image: Image{ - URL: "http://172.22.0.1/images/rhcos-ootpa-latest.qcow2", - Checksum: "http://172.22.0.1/images/rhcos-ootpa-latest.qcow2.sha256sum", - }, - HostSelector: HostSelector{ - MatchLabels: map[string]string{"key": "value", "key2": "value2"}, - }, - }, - ErrorExpected: false, - Name: "HostSelector Multiple MatchLabels provided", - }, - } - - for _, tc := range cases { - err := tc.Spec.IsValid() - if tc.ErrorExpected && err == nil { - t.Errorf("Did not get error from case \"%v\"", tc.Name) - } - if !tc.ErrorExpected && err != nil { - t.Errorf("Got unexpected error from case \"%v\": %v", tc.Name, err) - } - } -} diff --git a/api/v1alpha5/metal3machinetemplate_types.go b/api/v1alpha5/metal3machinetemplate_types.go deleted file mode 100644 index 22bd1f0a5a..0000000000 --- a/api/v1alpha5/metal3machinetemplate_types.go +++ /dev/null @@ -1,66 +0,0 @@ -/* -Copyright 2021 The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package v1alpha5 - -import ( - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" -) - -// Metal3MachineTemplateSpec defines the desired state of Metal3MachineTemplate. -type Metal3MachineTemplateSpec struct { - Template Metal3MachineTemplateResource `json:"template"` - - // When set to True, CAPM3 Machine controller will - // pick the same pool of BMHs' that were released during the upgrade operation. - // +kubebuilder:default=false - // +optional - NodeReuse bool `json:"nodeReuse"` -} - -// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object -// +kubebuilder:object:root=true -// +kubebuilder:unservedversion -// +kubebuilder:deprecatedversion -// +kubebuilder:printcolumn:name="Age",type="date",JSONPath=".metadata.creationTimestamp",description="Time duration since creation of Metal3MachineTemplate" -// +kubebuilder:resource:path=metal3machinetemplates,scope=Namespaced,categories=cluster-api,shortName=m3mt;m3machinetemplate;m3machinetemplates;metal3mt;metal3machinetemplate - -// Metal3MachineTemplate is the Schema for the metal3machinetemplates API. -type Metal3MachineTemplate struct { - metav1.TypeMeta `json:",inline"` - metav1.ObjectMeta `json:"metadata,omitempty"` - - Spec Metal3MachineTemplateSpec `json:"spec,omitempty"` -} - -// +kubebuilder:object:root=true - -// Metal3MachineTemplateList contains a list of Metal3MachineTemplate. -type Metal3MachineTemplateList struct { - metav1.TypeMeta `json:",inline"` - metav1.ListMeta `json:"metadata,omitempty"` - Items []Metal3MachineTemplate `json:"items"` -} - -func init() { - SchemeBuilder.Register(&Metal3MachineTemplate{}, &Metal3MachineTemplateList{}) -} - -// Metal3MachineTemplateResource describes the data needed to create a Metal3Machine from a template. -type Metal3MachineTemplateResource struct { - // Spec is the specification of the desired behavior of the machine. - Spec Metal3MachineSpec `json:"spec"` -} diff --git a/api/v1alpha5/metal3remediation_types.go b/api/v1alpha5/metal3remediation_types.go deleted file mode 100644 index b7e8c179e3..0000000000 --- a/api/v1alpha5/metal3remediation_types.go +++ /dev/null @@ -1,120 +0,0 @@ -/* -Copyright The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package v1alpha5 - -import ( - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" -) - -type RemediationType string - -const ( - // RemediationFinalizer allows Metal3RemediationReconciler to clean up resources associated with Metal3Remediation before - // removing it from the apiserver. - RemediationFinalizer = "metal3remediation.infrastructure.cluster.x-k8s.io" - - // RebootRemediationStrategy sets RemediationType to Reboot. - RebootRemediationStrategy RemediationType = "Reboot" -) - -const ( - // PhaseRunning represents the running state during remediation. - PhaseRunning = "Running" - - // PhaseWaiting represents the state during remediation when the controller has done its job but still waiting for the result of the last remediation step. - PhaseWaiting = "Waiting" - - // PhaseDeleting represents the state where host remediation has failed and the controller is deleting the unhealthy Machine object from the cluster. - PhaseDeleting = "Deleting machine" - - // PhaseFailed represents the state where host will not be remediated. - // Remediation Controller will set the state to PhaseFailed when a user has set bmh.Spec.Online to false. - PhaseFailed = "Failed" -) - -// Metal3RemediationSpec defines the desired state of Metal3Remediation. -type Metal3RemediationSpec struct { - // Strategy field defines remediation strategy. - Strategy *RemediationStrategy `json:"strategy,omitempty"` -} - -// RemediationStrategy describes how to remediate machines. -type RemediationStrategy struct { - // Type of remediation. - Type RemediationType `json:"type,omitempty"` - - // Sets maximum number of remediation retries. - // +optional - RetryLimit int `json:"retryLimit,omitempty"` - - // Sets the timeout between remediation retries. - // +optional - Timeout *metav1.Duration `json:"timeout"` -} - -// Metal3RemediationStatus defines the observed state of Metal3Remediation. -type Metal3RemediationStatus struct { - // Phase represents the current phase of machine remediation. - // E.g. Pending, Running, Done etc. - // +optional - Phase string `json:"phase,omitempty"` - - // RetryCount can be used as a counter during the remediation. - // Field can hold number of reboots etc. - // +optional - RetryCount int `json:"retryCount,omitempty"` - - // LastRemediated identifies when the host was last remediated - // +optional - LastRemediated *metav1.Time `json:"lastRemediated,omitempty"` -} - -// +kubebuilder:object:root=true - -// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object -// +kubebuilder:resource:path=metal3remediations,scope=Namespaced,categories=cluster-api,shortName=m3r;m3remediation -// +kubebuilder:object:root=true -// +kubebuilder:unservedversion -// +kubebuilder:deprecatedversion -// +kubebuilder:subresource:status -// +kubebuilder:printcolumn:name="Retry limit",type=string,JSONPath=".spec.strategy.retryLimit",description="How many times remediation controller should attempt to remediate the host" -// +kubebuilder:printcolumn:name="Retry count",type=string,JSONPath=".status.retryCount",description="How many times remediation controller has tried to remediate the node" -// +kubebuilder:printcolumn:name="Last Remediated",type=string,JSONPath=".status.lastRemediated",description="Timestamp of the last remediation attempt" -// +kubebuilder:printcolumn:name="Strategy",type=string,JSONPath=".spec.strategy.type",description="Type of the remediation strategy" -// +kubebuilder:printcolumn:name="Phase",type=string,JSONPath=".status.phase",description="Phase of the remediation" - -// Metal3Remediation is the Schema for the metal3remediations API. -type Metal3Remediation struct { - metav1.TypeMeta `json:",inline"` - metav1.ObjectMeta `json:"metadata,omitempty"` - - Spec Metal3RemediationSpec `json:"spec,omitempty"` - Status Metal3RemediationStatus `json:"status,omitempty"` -} - -// +kubebuilder:object:root=true - -// Metal3RemediationList contains a list of Metal3Remediation. -type Metal3RemediationList struct { - metav1.TypeMeta `json:",inline"` - metav1.ListMeta `json:"metadata,omitempty"` - Items []Metal3Remediation `json:"items"` -} - -func init() { - SchemeBuilder.Register(&Metal3Remediation{}, &Metal3RemediationList{}) -} diff --git a/api/v1alpha5/metal3remediationtemplate_types.go b/api/v1alpha5/metal3remediationtemplate_types.go deleted file mode 100644 index 0bd0ac960a..0000000000 --- a/api/v1alpha5/metal3remediationtemplate_types.go +++ /dev/null @@ -1,67 +0,0 @@ -/* -Copyright The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package v1alpha5 - -import ( - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" -) - -// Metal3RemediationTemplateSpec defines the desired state of Metal3RemediationTemplate. -type Metal3RemediationTemplateSpec struct { - Template Metal3RemediationTemplateResource `json:"template"` -} - -// Metal3RemediationTemplateResource describes the data needed to create a Metal3Remediation from a template. -type Metal3RemediationTemplateResource struct { - // Spec is the specification of the desired behavior of the Metal3Remediation. - Spec Metal3RemediationSpec `json:"spec"` -} - -// Metal3RemediationTemplateStatus defines the observed state of Metal3RemediationTemplate. -type Metal3RemediationTemplateStatus struct { - // Metal3RemediationStatus defines the observed state of Metal3Remediation - Status Metal3RemediationStatus `json:"status"` -} - -// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object -// +kubebuilder:resource:path=metal3remediationtemplates,scope=Namespaced,categories=cluster-api,shortName=m3rt;m3remediationtemplate;m3remediationtemplates;metal3rt;metal3remediationtemplate -// +kubebuilder:subresource:status -// +kubebuilder:object:root=true -// +kubebuilder:unservedversion -// +kubebuilder:deprecatedversion - -// Metal3RemediationTemplate is the Schema for the metal3remediationtemplates API. -type Metal3RemediationTemplate struct { - metav1.TypeMeta `json:",inline"` - metav1.ObjectMeta `json:"metadata,omitempty"` - - Spec Metal3RemediationTemplateSpec `json:"spec,omitempty"` - Status Metal3RemediationTemplateStatus `json:"status,omitempty"` -} - -// +kubebuilder:object:root=true - -// Metal3RemediationTemplateList contains a list of Metal3RemediationTemplate. -type Metal3RemediationTemplateList struct { - metav1.TypeMeta `json:",inline"` - metav1.ListMeta `json:"metadata,omitempty"` - Items []Metal3RemediationTemplate `json:"items"` -} - -func init() { - SchemeBuilder.Register(&Metal3RemediationTemplate{}, &Metal3RemediationTemplateList{}) -} diff --git a/api/v1alpha5/v1alpha5_suite_test.go b/api/v1alpha5/v1alpha5_suite_test.go deleted file mode 100644 index 9fec3c8a12..0000000000 --- a/api/v1alpha5/v1alpha5_suite_test.go +++ /dev/null @@ -1,55 +0,0 @@ -/* -Copyright 2021 The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package v1alpha5 - -import ( - "log" - "os" - "path/filepath" - "testing" - - "k8s.io/client-go/kubernetes/scheme" - "k8s.io/client-go/rest" - "sigs.k8s.io/controller-runtime/pkg/client" - "sigs.k8s.io/controller-runtime/pkg/envtest" -) - -var cfg *rest.Config -var c client.Client - -func TestMain(m *testing.M) { - t := &envtest.Environment{ - CRDDirectoryPaths: []string{filepath.Join("..", "..", "config", "crd", "bases")}, - } - - err := SchemeBuilder.AddToScheme(scheme.Scheme) - if err != nil { - log.Fatal(err) - } - - if cfg, err = t.Start(); err != nil { - log.Fatal(err) - } - - if c, err = client.New(cfg, client.Options{Scheme: scheme.Scheme}); err != nil { - log.Fatal(err) - } - - code := m.Run() - _ = t.Stop() - os.Exit(code) -} diff --git a/api/v1alpha5/zz_generated.conversion.go b/api/v1alpha5/zz_generated.conversion.go deleted file mode 100644 index 4944e2ecb7..0000000000 --- a/api/v1alpha5/zz_generated.conversion.go +++ /dev/null @@ -1,2706 +0,0 @@ -//go:build !ignore_autogenerated -// +build !ignore_autogenerated - -/* -Copyright The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by conversion-gen. DO NOT EDIT. - -package v1alpha5 - -import ( - unsafe "unsafe" - - v1beta1 "github.com/metal3-io/cluster-api-provider-metal3/api/v1beta1" - v1alpha1 "github.com/metal3-io/ip-address-manager/api/v1alpha1" - corev1 "k8s.io/api/core/v1" - v1 "k8s.io/apimachinery/pkg/apis/meta/v1" - conversion "k8s.io/apimachinery/pkg/conversion" - runtime "k8s.io/apimachinery/pkg/runtime" - selection "k8s.io/apimachinery/pkg/selection" - v1alpha4 "sigs.k8s.io/cluster-api/api/v1alpha4" - apiv1beta1 "sigs.k8s.io/cluster-api/api/v1beta1" - errors "sigs.k8s.io/cluster-api/errors" -) - -func init() { - localSchemeBuilder.Register(RegisterConversions) -} - -// RegisterConversions adds conversion functions to the given scheme. -// Public to allow building arbitrary schemes. -func RegisterConversions(s *runtime.Scheme) error { - if err := s.AddGeneratedConversionFunc((*APIEndpoint)(nil), (*v1beta1.APIEndpoint)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1alpha5_APIEndpoint_To_v1beta1_APIEndpoint(a.(*APIEndpoint), b.(*v1beta1.APIEndpoint), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*v1beta1.APIEndpoint)(nil), (*APIEndpoint)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1beta1_APIEndpoint_To_v1alpha5_APIEndpoint(a.(*v1beta1.APIEndpoint), b.(*APIEndpoint), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*FromPool)(nil), (*v1beta1.FromPool)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1alpha5_FromPool_To_v1beta1_FromPool(a.(*FromPool), b.(*v1beta1.FromPool), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*HostSelector)(nil), (*v1beta1.HostSelector)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1alpha5_HostSelector_To_v1beta1_HostSelector(a.(*HostSelector), b.(*v1beta1.HostSelector), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*v1beta1.HostSelector)(nil), (*HostSelector)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1beta1_HostSelector_To_v1alpha5_HostSelector(a.(*v1beta1.HostSelector), b.(*HostSelector), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*HostSelectorRequirement)(nil), (*v1beta1.HostSelectorRequirement)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1alpha5_HostSelectorRequirement_To_v1beta1_HostSelectorRequirement(a.(*HostSelectorRequirement), b.(*v1beta1.HostSelectorRequirement), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*v1beta1.HostSelectorRequirement)(nil), (*HostSelectorRequirement)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1beta1_HostSelectorRequirement_To_v1alpha5_HostSelectorRequirement(a.(*v1beta1.HostSelectorRequirement), b.(*HostSelectorRequirement), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*Image)(nil), (*v1beta1.Image)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1alpha5_Image_To_v1beta1_Image(a.(*Image), b.(*v1beta1.Image), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*v1beta1.Image)(nil), (*Image)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1beta1_Image_To_v1alpha5_Image(a.(*v1beta1.Image), b.(*Image), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*MetaData)(nil), (*v1beta1.MetaData)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1alpha5_MetaData_To_v1beta1_MetaData(a.(*MetaData), b.(*v1beta1.MetaData), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*v1beta1.MetaData)(nil), (*MetaData)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1beta1_MetaData_To_v1alpha5_MetaData(a.(*v1beta1.MetaData), b.(*MetaData), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*MetaDataFromAnnotation)(nil), (*v1beta1.MetaDataFromAnnotation)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1alpha5_MetaDataFromAnnotation_To_v1beta1_MetaDataFromAnnotation(a.(*MetaDataFromAnnotation), b.(*v1beta1.MetaDataFromAnnotation), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*v1beta1.MetaDataFromAnnotation)(nil), (*MetaDataFromAnnotation)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1beta1_MetaDataFromAnnotation_To_v1alpha5_MetaDataFromAnnotation(a.(*v1beta1.MetaDataFromAnnotation), b.(*MetaDataFromAnnotation), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*MetaDataFromLabel)(nil), (*v1beta1.MetaDataFromLabel)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1alpha5_MetaDataFromLabel_To_v1beta1_MetaDataFromLabel(a.(*MetaDataFromLabel), b.(*v1beta1.MetaDataFromLabel), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*v1beta1.MetaDataFromLabel)(nil), (*MetaDataFromLabel)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1beta1_MetaDataFromLabel_To_v1alpha5_MetaDataFromLabel(a.(*v1beta1.MetaDataFromLabel), b.(*MetaDataFromLabel), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*MetaDataHostInterface)(nil), (*v1beta1.MetaDataHostInterface)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1alpha5_MetaDataHostInterface_To_v1beta1_MetaDataHostInterface(a.(*MetaDataHostInterface), b.(*v1beta1.MetaDataHostInterface), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*v1beta1.MetaDataHostInterface)(nil), (*MetaDataHostInterface)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1beta1_MetaDataHostInterface_To_v1alpha5_MetaDataHostInterface(a.(*v1beta1.MetaDataHostInterface), b.(*MetaDataHostInterface), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*MetaDataIPAddress)(nil), (*v1beta1.MetaDataIPAddress)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1alpha5_MetaDataIPAddress_To_v1beta1_MetaDataIPAddress(a.(*MetaDataIPAddress), b.(*v1beta1.MetaDataIPAddress), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*v1beta1.MetaDataIPAddress)(nil), (*MetaDataIPAddress)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1beta1_MetaDataIPAddress_To_v1alpha5_MetaDataIPAddress(a.(*v1beta1.MetaDataIPAddress), b.(*MetaDataIPAddress), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*MetaDataIndex)(nil), (*v1beta1.MetaDataIndex)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1alpha5_MetaDataIndex_To_v1beta1_MetaDataIndex(a.(*MetaDataIndex), b.(*v1beta1.MetaDataIndex), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*v1beta1.MetaDataIndex)(nil), (*MetaDataIndex)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1beta1_MetaDataIndex_To_v1alpha5_MetaDataIndex(a.(*v1beta1.MetaDataIndex), b.(*MetaDataIndex), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*MetaDataNamespace)(nil), (*v1beta1.MetaDataNamespace)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1alpha5_MetaDataNamespace_To_v1beta1_MetaDataNamespace(a.(*MetaDataNamespace), b.(*v1beta1.MetaDataNamespace), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*v1beta1.MetaDataNamespace)(nil), (*MetaDataNamespace)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1beta1_MetaDataNamespace_To_v1alpha5_MetaDataNamespace(a.(*v1beta1.MetaDataNamespace), b.(*MetaDataNamespace), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*MetaDataObjectName)(nil), (*v1beta1.MetaDataObjectName)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1alpha5_MetaDataObjectName_To_v1beta1_MetaDataObjectName(a.(*MetaDataObjectName), b.(*v1beta1.MetaDataObjectName), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*v1beta1.MetaDataObjectName)(nil), (*MetaDataObjectName)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1beta1_MetaDataObjectName_To_v1alpha5_MetaDataObjectName(a.(*v1beta1.MetaDataObjectName), b.(*MetaDataObjectName), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*MetaDataString)(nil), (*v1beta1.MetaDataString)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1alpha5_MetaDataString_To_v1beta1_MetaDataString(a.(*MetaDataString), b.(*v1beta1.MetaDataString), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*v1beta1.MetaDataString)(nil), (*MetaDataString)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1beta1_MetaDataString_To_v1alpha5_MetaDataString(a.(*v1beta1.MetaDataString), b.(*MetaDataString), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*Metal3Cluster)(nil), (*v1beta1.Metal3Cluster)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1alpha5_Metal3Cluster_To_v1beta1_Metal3Cluster(a.(*Metal3Cluster), b.(*v1beta1.Metal3Cluster), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*v1beta1.Metal3Cluster)(nil), (*Metal3Cluster)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1beta1_Metal3Cluster_To_v1alpha5_Metal3Cluster(a.(*v1beta1.Metal3Cluster), b.(*Metal3Cluster), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*Metal3ClusterList)(nil), (*v1beta1.Metal3ClusterList)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1alpha5_Metal3ClusterList_To_v1beta1_Metal3ClusterList(a.(*Metal3ClusterList), b.(*v1beta1.Metal3ClusterList), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*v1beta1.Metal3ClusterList)(nil), (*Metal3ClusterList)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1beta1_Metal3ClusterList_To_v1alpha5_Metal3ClusterList(a.(*v1beta1.Metal3ClusterList), b.(*Metal3ClusterList), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*Metal3ClusterSpec)(nil), (*v1beta1.Metal3ClusterSpec)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1alpha5_Metal3ClusterSpec_To_v1beta1_Metal3ClusterSpec(a.(*Metal3ClusterSpec), b.(*v1beta1.Metal3ClusterSpec), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*v1beta1.Metal3ClusterSpec)(nil), (*Metal3ClusterSpec)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1beta1_Metal3ClusterSpec_To_v1alpha5_Metal3ClusterSpec(a.(*v1beta1.Metal3ClusterSpec), b.(*Metal3ClusterSpec), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*Metal3ClusterStatus)(nil), (*v1beta1.Metal3ClusterStatus)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1alpha5_Metal3ClusterStatus_To_v1beta1_Metal3ClusterStatus(a.(*Metal3ClusterStatus), b.(*v1beta1.Metal3ClusterStatus), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*Metal3Data)(nil), (*v1beta1.Metal3Data)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1alpha5_Metal3Data_To_v1beta1_Metal3Data(a.(*Metal3Data), b.(*v1beta1.Metal3Data), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*v1beta1.Metal3Data)(nil), (*Metal3Data)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1beta1_Metal3Data_To_v1alpha5_Metal3Data(a.(*v1beta1.Metal3Data), b.(*Metal3Data), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*Metal3DataClaim)(nil), (*v1beta1.Metal3DataClaim)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1alpha5_Metal3DataClaim_To_v1beta1_Metal3DataClaim(a.(*Metal3DataClaim), b.(*v1beta1.Metal3DataClaim), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*v1beta1.Metal3DataClaim)(nil), (*Metal3DataClaim)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1beta1_Metal3DataClaim_To_v1alpha5_Metal3DataClaim(a.(*v1beta1.Metal3DataClaim), b.(*Metal3DataClaim), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*Metal3DataClaimList)(nil), (*v1beta1.Metal3DataClaimList)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1alpha5_Metal3DataClaimList_To_v1beta1_Metal3DataClaimList(a.(*Metal3DataClaimList), b.(*v1beta1.Metal3DataClaimList), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*v1beta1.Metal3DataClaimList)(nil), (*Metal3DataClaimList)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1beta1_Metal3DataClaimList_To_v1alpha5_Metal3DataClaimList(a.(*v1beta1.Metal3DataClaimList), b.(*Metal3DataClaimList), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*Metal3DataClaimSpec)(nil), (*v1beta1.Metal3DataClaimSpec)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1alpha5_Metal3DataClaimSpec_To_v1beta1_Metal3DataClaimSpec(a.(*Metal3DataClaimSpec), b.(*v1beta1.Metal3DataClaimSpec), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*v1beta1.Metal3DataClaimSpec)(nil), (*Metal3DataClaimSpec)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1beta1_Metal3DataClaimSpec_To_v1alpha5_Metal3DataClaimSpec(a.(*v1beta1.Metal3DataClaimSpec), b.(*Metal3DataClaimSpec), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*Metal3DataClaimStatus)(nil), (*v1beta1.Metal3DataClaimStatus)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1alpha5_Metal3DataClaimStatus_To_v1beta1_Metal3DataClaimStatus(a.(*Metal3DataClaimStatus), b.(*v1beta1.Metal3DataClaimStatus), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*v1beta1.Metal3DataClaimStatus)(nil), (*Metal3DataClaimStatus)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1beta1_Metal3DataClaimStatus_To_v1alpha5_Metal3DataClaimStatus(a.(*v1beta1.Metal3DataClaimStatus), b.(*Metal3DataClaimStatus), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*Metal3DataList)(nil), (*v1beta1.Metal3DataList)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1alpha5_Metal3DataList_To_v1beta1_Metal3DataList(a.(*Metal3DataList), b.(*v1beta1.Metal3DataList), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*v1beta1.Metal3DataList)(nil), (*Metal3DataList)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1beta1_Metal3DataList_To_v1alpha5_Metal3DataList(a.(*v1beta1.Metal3DataList), b.(*Metal3DataList), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*Metal3DataSpec)(nil), (*v1beta1.Metal3DataSpec)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1alpha5_Metal3DataSpec_To_v1beta1_Metal3DataSpec(a.(*Metal3DataSpec), b.(*v1beta1.Metal3DataSpec), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*v1beta1.Metal3DataSpec)(nil), (*Metal3DataSpec)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1beta1_Metal3DataSpec_To_v1alpha5_Metal3DataSpec(a.(*v1beta1.Metal3DataSpec), b.(*Metal3DataSpec), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*Metal3DataStatus)(nil), (*v1beta1.Metal3DataStatus)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1alpha5_Metal3DataStatus_To_v1beta1_Metal3DataStatus(a.(*Metal3DataStatus), b.(*v1beta1.Metal3DataStatus), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*v1beta1.Metal3DataStatus)(nil), (*Metal3DataStatus)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1beta1_Metal3DataStatus_To_v1alpha5_Metal3DataStatus(a.(*v1beta1.Metal3DataStatus), b.(*Metal3DataStatus), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*Metal3DataTemplate)(nil), (*v1beta1.Metal3DataTemplate)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1alpha5_Metal3DataTemplate_To_v1beta1_Metal3DataTemplate(a.(*Metal3DataTemplate), b.(*v1beta1.Metal3DataTemplate), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*v1beta1.Metal3DataTemplate)(nil), (*Metal3DataTemplate)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1beta1_Metal3DataTemplate_To_v1alpha5_Metal3DataTemplate(a.(*v1beta1.Metal3DataTemplate), b.(*Metal3DataTemplate), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*Metal3DataTemplateList)(nil), (*v1beta1.Metal3DataTemplateList)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1alpha5_Metal3DataTemplateList_To_v1beta1_Metal3DataTemplateList(a.(*Metal3DataTemplateList), b.(*v1beta1.Metal3DataTemplateList), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*v1beta1.Metal3DataTemplateList)(nil), (*Metal3DataTemplateList)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1beta1_Metal3DataTemplateList_To_v1alpha5_Metal3DataTemplateList(a.(*v1beta1.Metal3DataTemplateList), b.(*Metal3DataTemplateList), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*Metal3DataTemplateSpec)(nil), (*v1beta1.Metal3DataTemplateSpec)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1alpha5_Metal3DataTemplateSpec_To_v1beta1_Metal3DataTemplateSpec(a.(*Metal3DataTemplateSpec), b.(*v1beta1.Metal3DataTemplateSpec), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*v1beta1.Metal3DataTemplateSpec)(nil), (*Metal3DataTemplateSpec)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1beta1_Metal3DataTemplateSpec_To_v1alpha5_Metal3DataTemplateSpec(a.(*v1beta1.Metal3DataTemplateSpec), b.(*Metal3DataTemplateSpec), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*Metal3DataTemplateStatus)(nil), (*v1beta1.Metal3DataTemplateStatus)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1alpha5_Metal3DataTemplateStatus_To_v1beta1_Metal3DataTemplateStatus(a.(*Metal3DataTemplateStatus), b.(*v1beta1.Metal3DataTemplateStatus), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*v1beta1.Metal3DataTemplateStatus)(nil), (*Metal3DataTemplateStatus)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1beta1_Metal3DataTemplateStatus_To_v1alpha5_Metal3DataTemplateStatus(a.(*v1beta1.Metal3DataTemplateStatus), b.(*Metal3DataTemplateStatus), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*Metal3Machine)(nil), (*v1beta1.Metal3Machine)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1alpha5_Metal3Machine_To_v1beta1_Metal3Machine(a.(*Metal3Machine), b.(*v1beta1.Metal3Machine), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*v1beta1.Metal3Machine)(nil), (*Metal3Machine)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1beta1_Metal3Machine_To_v1alpha5_Metal3Machine(a.(*v1beta1.Metal3Machine), b.(*Metal3Machine), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*Metal3MachineList)(nil), (*v1beta1.Metal3MachineList)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1alpha5_Metal3MachineList_To_v1beta1_Metal3MachineList(a.(*Metal3MachineList), b.(*v1beta1.Metal3MachineList), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*v1beta1.Metal3MachineList)(nil), (*Metal3MachineList)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1beta1_Metal3MachineList_To_v1alpha5_Metal3MachineList(a.(*v1beta1.Metal3MachineList), b.(*Metal3MachineList), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*Metal3MachineSpec)(nil), (*v1beta1.Metal3MachineSpec)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1alpha5_Metal3MachineSpec_To_v1beta1_Metal3MachineSpec(a.(*Metal3MachineSpec), b.(*v1beta1.Metal3MachineSpec), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*v1beta1.Metal3MachineSpec)(nil), (*Metal3MachineSpec)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1beta1_Metal3MachineSpec_To_v1alpha5_Metal3MachineSpec(a.(*v1beta1.Metal3MachineSpec), b.(*Metal3MachineSpec), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*Metal3MachineStatus)(nil), (*v1beta1.Metal3MachineStatus)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1alpha5_Metal3MachineStatus_To_v1beta1_Metal3MachineStatus(a.(*Metal3MachineStatus), b.(*v1beta1.Metal3MachineStatus), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*Metal3MachineTemplate)(nil), (*v1beta1.Metal3MachineTemplate)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1alpha5_Metal3MachineTemplate_To_v1beta1_Metal3MachineTemplate(a.(*Metal3MachineTemplate), b.(*v1beta1.Metal3MachineTemplate), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*v1beta1.Metal3MachineTemplate)(nil), (*Metal3MachineTemplate)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1beta1_Metal3MachineTemplate_To_v1alpha5_Metal3MachineTemplate(a.(*v1beta1.Metal3MachineTemplate), b.(*Metal3MachineTemplate), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*Metal3MachineTemplateList)(nil), (*v1beta1.Metal3MachineTemplateList)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1alpha5_Metal3MachineTemplateList_To_v1beta1_Metal3MachineTemplateList(a.(*Metal3MachineTemplateList), b.(*v1beta1.Metal3MachineTemplateList), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*v1beta1.Metal3MachineTemplateList)(nil), (*Metal3MachineTemplateList)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1beta1_Metal3MachineTemplateList_To_v1alpha5_Metal3MachineTemplateList(a.(*v1beta1.Metal3MachineTemplateList), b.(*Metal3MachineTemplateList), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*Metal3MachineTemplateResource)(nil), (*v1beta1.Metal3MachineTemplateResource)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1alpha5_Metal3MachineTemplateResource_To_v1beta1_Metal3MachineTemplateResource(a.(*Metal3MachineTemplateResource), b.(*v1beta1.Metal3MachineTemplateResource), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*v1beta1.Metal3MachineTemplateResource)(nil), (*Metal3MachineTemplateResource)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1beta1_Metal3MachineTemplateResource_To_v1alpha5_Metal3MachineTemplateResource(a.(*v1beta1.Metal3MachineTemplateResource), b.(*Metal3MachineTemplateResource), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*Metal3MachineTemplateSpec)(nil), (*v1beta1.Metal3MachineTemplateSpec)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1alpha5_Metal3MachineTemplateSpec_To_v1beta1_Metal3MachineTemplateSpec(a.(*Metal3MachineTemplateSpec), b.(*v1beta1.Metal3MachineTemplateSpec), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*v1beta1.Metal3MachineTemplateSpec)(nil), (*Metal3MachineTemplateSpec)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1beta1_Metal3MachineTemplateSpec_To_v1alpha5_Metal3MachineTemplateSpec(a.(*v1beta1.Metal3MachineTemplateSpec), b.(*Metal3MachineTemplateSpec), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*Metal3Remediation)(nil), (*v1beta1.Metal3Remediation)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1alpha5_Metal3Remediation_To_v1beta1_Metal3Remediation(a.(*Metal3Remediation), b.(*v1beta1.Metal3Remediation), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*v1beta1.Metal3Remediation)(nil), (*Metal3Remediation)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1beta1_Metal3Remediation_To_v1alpha5_Metal3Remediation(a.(*v1beta1.Metal3Remediation), b.(*Metal3Remediation), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*Metal3RemediationList)(nil), (*v1beta1.Metal3RemediationList)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1alpha5_Metal3RemediationList_To_v1beta1_Metal3RemediationList(a.(*Metal3RemediationList), b.(*v1beta1.Metal3RemediationList), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*v1beta1.Metal3RemediationList)(nil), (*Metal3RemediationList)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1beta1_Metal3RemediationList_To_v1alpha5_Metal3RemediationList(a.(*v1beta1.Metal3RemediationList), b.(*Metal3RemediationList), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*Metal3RemediationSpec)(nil), (*v1beta1.Metal3RemediationSpec)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1alpha5_Metal3RemediationSpec_To_v1beta1_Metal3RemediationSpec(a.(*Metal3RemediationSpec), b.(*v1beta1.Metal3RemediationSpec), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*v1beta1.Metal3RemediationSpec)(nil), (*Metal3RemediationSpec)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1beta1_Metal3RemediationSpec_To_v1alpha5_Metal3RemediationSpec(a.(*v1beta1.Metal3RemediationSpec), b.(*Metal3RemediationSpec), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*Metal3RemediationStatus)(nil), (*v1beta1.Metal3RemediationStatus)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1alpha5_Metal3RemediationStatus_To_v1beta1_Metal3RemediationStatus(a.(*Metal3RemediationStatus), b.(*v1beta1.Metal3RemediationStatus), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*v1beta1.Metal3RemediationStatus)(nil), (*Metal3RemediationStatus)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1beta1_Metal3RemediationStatus_To_v1alpha5_Metal3RemediationStatus(a.(*v1beta1.Metal3RemediationStatus), b.(*Metal3RemediationStatus), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*Metal3RemediationTemplate)(nil), (*v1beta1.Metal3RemediationTemplate)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1alpha5_Metal3RemediationTemplate_To_v1beta1_Metal3RemediationTemplate(a.(*Metal3RemediationTemplate), b.(*v1beta1.Metal3RemediationTemplate), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*v1beta1.Metal3RemediationTemplate)(nil), (*Metal3RemediationTemplate)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1beta1_Metal3RemediationTemplate_To_v1alpha5_Metal3RemediationTemplate(a.(*v1beta1.Metal3RemediationTemplate), b.(*Metal3RemediationTemplate), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*Metal3RemediationTemplateList)(nil), (*v1beta1.Metal3RemediationTemplateList)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1alpha5_Metal3RemediationTemplateList_To_v1beta1_Metal3RemediationTemplateList(a.(*Metal3RemediationTemplateList), b.(*v1beta1.Metal3RemediationTemplateList), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*v1beta1.Metal3RemediationTemplateList)(nil), (*Metal3RemediationTemplateList)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1beta1_Metal3RemediationTemplateList_To_v1alpha5_Metal3RemediationTemplateList(a.(*v1beta1.Metal3RemediationTemplateList), b.(*Metal3RemediationTemplateList), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*Metal3RemediationTemplateResource)(nil), (*v1beta1.Metal3RemediationTemplateResource)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1alpha5_Metal3RemediationTemplateResource_To_v1beta1_Metal3RemediationTemplateResource(a.(*Metal3RemediationTemplateResource), b.(*v1beta1.Metal3RemediationTemplateResource), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*v1beta1.Metal3RemediationTemplateResource)(nil), (*Metal3RemediationTemplateResource)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1beta1_Metal3RemediationTemplateResource_To_v1alpha5_Metal3RemediationTemplateResource(a.(*v1beta1.Metal3RemediationTemplateResource), b.(*Metal3RemediationTemplateResource), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*Metal3RemediationTemplateSpec)(nil), (*v1beta1.Metal3RemediationTemplateSpec)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1alpha5_Metal3RemediationTemplateSpec_To_v1beta1_Metal3RemediationTemplateSpec(a.(*Metal3RemediationTemplateSpec), b.(*v1beta1.Metal3RemediationTemplateSpec), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*v1beta1.Metal3RemediationTemplateSpec)(nil), (*Metal3RemediationTemplateSpec)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1beta1_Metal3RemediationTemplateSpec_To_v1alpha5_Metal3RemediationTemplateSpec(a.(*v1beta1.Metal3RemediationTemplateSpec), b.(*Metal3RemediationTemplateSpec), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*Metal3RemediationTemplateStatus)(nil), (*v1beta1.Metal3RemediationTemplateStatus)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1alpha5_Metal3RemediationTemplateStatus_To_v1beta1_Metal3RemediationTemplateStatus(a.(*Metal3RemediationTemplateStatus), b.(*v1beta1.Metal3RemediationTemplateStatus), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*v1beta1.Metal3RemediationTemplateStatus)(nil), (*Metal3RemediationTemplateStatus)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1beta1_Metal3RemediationTemplateStatus_To_v1alpha5_Metal3RemediationTemplateStatus(a.(*v1beta1.Metal3RemediationTemplateStatus), b.(*Metal3RemediationTemplateStatus), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*NetworkData)(nil), (*v1beta1.NetworkData)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1alpha5_NetworkData_To_v1beta1_NetworkData(a.(*NetworkData), b.(*v1beta1.NetworkData), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*v1beta1.NetworkData)(nil), (*NetworkData)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1beta1_NetworkData_To_v1alpha5_NetworkData(a.(*v1beta1.NetworkData), b.(*NetworkData), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*NetworkDataIPv4)(nil), (*v1beta1.NetworkDataIPv4)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1alpha5_NetworkDataIPv4_To_v1beta1_NetworkDataIPv4(a.(*NetworkDataIPv4), b.(*v1beta1.NetworkDataIPv4), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*NetworkDataIPv4DHCP)(nil), (*v1beta1.NetworkDataIPv4DHCP)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1alpha5_NetworkDataIPv4DHCP_To_v1beta1_NetworkDataIPv4DHCP(a.(*NetworkDataIPv4DHCP), b.(*v1beta1.NetworkDataIPv4DHCP), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*v1beta1.NetworkDataIPv4DHCP)(nil), (*NetworkDataIPv4DHCP)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1beta1_NetworkDataIPv4DHCP_To_v1alpha5_NetworkDataIPv4DHCP(a.(*v1beta1.NetworkDataIPv4DHCP), b.(*NetworkDataIPv4DHCP), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*NetworkDataIPv6)(nil), (*v1beta1.NetworkDataIPv6)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1alpha5_NetworkDataIPv6_To_v1beta1_NetworkDataIPv6(a.(*NetworkDataIPv6), b.(*v1beta1.NetworkDataIPv6), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*NetworkDataIPv6DHCP)(nil), (*v1beta1.NetworkDataIPv6DHCP)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1alpha5_NetworkDataIPv6DHCP_To_v1beta1_NetworkDataIPv6DHCP(a.(*NetworkDataIPv6DHCP), b.(*v1beta1.NetworkDataIPv6DHCP), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*v1beta1.NetworkDataIPv6DHCP)(nil), (*NetworkDataIPv6DHCP)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1beta1_NetworkDataIPv6DHCP_To_v1alpha5_NetworkDataIPv6DHCP(a.(*v1beta1.NetworkDataIPv6DHCP), b.(*NetworkDataIPv6DHCP), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*NetworkDataLink)(nil), (*v1beta1.NetworkDataLink)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1alpha5_NetworkDataLink_To_v1beta1_NetworkDataLink(a.(*NetworkDataLink), b.(*v1beta1.NetworkDataLink), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*v1beta1.NetworkDataLink)(nil), (*NetworkDataLink)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1beta1_NetworkDataLink_To_v1alpha5_NetworkDataLink(a.(*v1beta1.NetworkDataLink), b.(*NetworkDataLink), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*NetworkDataLinkBond)(nil), (*v1beta1.NetworkDataLinkBond)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1alpha5_NetworkDataLinkBond_To_v1beta1_NetworkDataLinkBond(a.(*NetworkDataLinkBond), b.(*v1beta1.NetworkDataLinkBond), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*NetworkDataLinkEthernet)(nil), (*v1beta1.NetworkDataLinkEthernet)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1alpha5_NetworkDataLinkEthernet_To_v1beta1_NetworkDataLinkEthernet(a.(*NetworkDataLinkEthernet), b.(*v1beta1.NetworkDataLinkEthernet), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*v1beta1.NetworkDataLinkEthernet)(nil), (*NetworkDataLinkEthernet)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1beta1_NetworkDataLinkEthernet_To_v1alpha5_NetworkDataLinkEthernet(a.(*v1beta1.NetworkDataLinkEthernet), b.(*NetworkDataLinkEthernet), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*NetworkDataLinkVlan)(nil), (*v1beta1.NetworkDataLinkVlan)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1alpha5_NetworkDataLinkVlan_To_v1beta1_NetworkDataLinkVlan(a.(*NetworkDataLinkVlan), b.(*v1beta1.NetworkDataLinkVlan), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*v1beta1.NetworkDataLinkVlan)(nil), (*NetworkDataLinkVlan)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1beta1_NetworkDataLinkVlan_To_v1alpha5_NetworkDataLinkVlan(a.(*v1beta1.NetworkDataLinkVlan), b.(*NetworkDataLinkVlan), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*NetworkDataNetwork)(nil), (*v1beta1.NetworkDataNetwork)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1alpha5_NetworkDataNetwork_To_v1beta1_NetworkDataNetwork(a.(*NetworkDataNetwork), b.(*v1beta1.NetworkDataNetwork), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*v1beta1.NetworkDataNetwork)(nil), (*NetworkDataNetwork)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1beta1_NetworkDataNetwork_To_v1alpha5_NetworkDataNetwork(a.(*v1beta1.NetworkDataNetwork), b.(*NetworkDataNetwork), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*NetworkDataRoutev4)(nil), (*v1beta1.NetworkDataRoutev4)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1alpha5_NetworkDataRoutev4_To_v1beta1_NetworkDataRoutev4(a.(*NetworkDataRoutev4), b.(*v1beta1.NetworkDataRoutev4), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*v1beta1.NetworkDataRoutev4)(nil), (*NetworkDataRoutev4)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1beta1_NetworkDataRoutev4_To_v1alpha5_NetworkDataRoutev4(a.(*v1beta1.NetworkDataRoutev4), b.(*NetworkDataRoutev4), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*NetworkDataRoutev6)(nil), (*v1beta1.NetworkDataRoutev6)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1alpha5_NetworkDataRoutev6_To_v1beta1_NetworkDataRoutev6(a.(*NetworkDataRoutev6), b.(*v1beta1.NetworkDataRoutev6), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*v1beta1.NetworkDataRoutev6)(nil), (*NetworkDataRoutev6)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1beta1_NetworkDataRoutev6_To_v1alpha5_NetworkDataRoutev6(a.(*v1beta1.NetworkDataRoutev6), b.(*NetworkDataRoutev6), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*NetworkDataService)(nil), (*v1beta1.NetworkDataService)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1alpha5_NetworkDataService_To_v1beta1_NetworkDataService(a.(*NetworkDataService), b.(*v1beta1.NetworkDataService), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*v1beta1.NetworkDataService)(nil), (*NetworkDataService)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1beta1_NetworkDataService_To_v1alpha5_NetworkDataService(a.(*v1beta1.NetworkDataService), b.(*NetworkDataService), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*NetworkDataServicev4)(nil), (*v1beta1.NetworkDataServicev4)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1alpha5_NetworkDataServicev4_To_v1beta1_NetworkDataServicev4(a.(*NetworkDataServicev4), b.(*v1beta1.NetworkDataServicev4), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*v1beta1.NetworkDataServicev4)(nil), (*NetworkDataServicev4)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1beta1_NetworkDataServicev4_To_v1alpha5_NetworkDataServicev4(a.(*v1beta1.NetworkDataServicev4), b.(*NetworkDataServicev4), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*NetworkDataServicev6)(nil), (*v1beta1.NetworkDataServicev6)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1alpha5_NetworkDataServicev6_To_v1beta1_NetworkDataServicev6(a.(*NetworkDataServicev6), b.(*v1beta1.NetworkDataServicev6), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*v1beta1.NetworkDataServicev6)(nil), (*NetworkDataServicev6)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1beta1_NetworkDataServicev6_To_v1alpha5_NetworkDataServicev6(a.(*v1beta1.NetworkDataServicev6), b.(*NetworkDataServicev6), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*NetworkGatewayv4)(nil), (*v1beta1.NetworkGatewayv4)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1alpha5_NetworkGatewayv4_To_v1beta1_NetworkGatewayv4(a.(*NetworkGatewayv4), b.(*v1beta1.NetworkGatewayv4), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*v1beta1.NetworkGatewayv4)(nil), (*NetworkGatewayv4)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1beta1_NetworkGatewayv4_To_v1alpha5_NetworkGatewayv4(a.(*v1beta1.NetworkGatewayv4), b.(*NetworkGatewayv4), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*NetworkGatewayv6)(nil), (*v1beta1.NetworkGatewayv6)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1alpha5_NetworkGatewayv6_To_v1beta1_NetworkGatewayv6(a.(*NetworkGatewayv6), b.(*v1beta1.NetworkGatewayv6), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*v1beta1.NetworkGatewayv6)(nil), (*NetworkGatewayv6)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1beta1_NetworkGatewayv6_To_v1alpha5_NetworkGatewayv6(a.(*v1beta1.NetworkGatewayv6), b.(*NetworkGatewayv6), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*NetworkLinkEthernetMac)(nil), (*v1beta1.NetworkLinkEthernetMac)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1alpha5_NetworkLinkEthernetMac_To_v1beta1_NetworkLinkEthernetMac(a.(*NetworkLinkEthernetMac), b.(*v1beta1.NetworkLinkEthernetMac), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*RemediationStrategy)(nil), (*v1beta1.RemediationStrategy)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1alpha5_RemediationStrategy_To_v1beta1_RemediationStrategy(a.(*RemediationStrategy), b.(*v1beta1.RemediationStrategy), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*v1beta1.RemediationStrategy)(nil), (*RemediationStrategy)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1beta1_RemediationStrategy_To_v1alpha5_RemediationStrategy(a.(*v1beta1.RemediationStrategy), b.(*RemediationStrategy), scope) - }); err != nil { - return err - } - if err := s.AddConversionFunc((*v1beta1.FromPool)(nil), (*FromPool)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1beta1_FromPool_To_v1alpha5_FromPool(a.(*v1beta1.FromPool), b.(*FromPool), scope) - }); err != nil { - return err - } - if err := s.AddConversionFunc((*v1beta1.Metal3ClusterStatus)(nil), (*Metal3ClusterStatus)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1beta1_Metal3ClusterStatus_To_v1alpha5_Metal3ClusterStatus(a.(*v1beta1.Metal3ClusterStatus), b.(*Metal3ClusterStatus), scope) - }); err != nil { - return err - } - if err := s.AddConversionFunc((*v1beta1.Metal3MachineStatus)(nil), (*Metal3MachineStatus)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1beta1_Metal3MachineStatus_To_v1alpha5_Metal3MachineStatus(a.(*v1beta1.Metal3MachineStatus), b.(*Metal3MachineStatus), scope) - }); err != nil { - return err - } - if err := s.AddConversionFunc((*v1beta1.NetworkDataIPv4)(nil), (*NetworkDataIPv4)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1beta1_NetworkDataIPv4_To_v1alpha5_NetworkDataIPv4(a.(*v1beta1.NetworkDataIPv4), b.(*NetworkDataIPv4), scope) - }); err != nil { - return err - } - if err := s.AddConversionFunc((*v1beta1.NetworkDataIPv6)(nil), (*NetworkDataIPv6)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1beta1_NetworkDataIPv6_To_v1alpha5_NetworkDataIPv6(a.(*v1beta1.NetworkDataIPv6), b.(*NetworkDataIPv6), scope) - }); err != nil { - return err - } - if err := s.AddConversionFunc((*v1beta1.NetworkDataLinkBond)(nil), (*NetworkDataLinkBond)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1beta1_NetworkDataLinkBond_To_v1alpha5_NetworkDataLinkBond(a.(*v1beta1.NetworkDataLinkBond), b.(*NetworkDataLinkBond), scope) - }); err != nil { - return err - } - if err := s.AddConversionFunc((*v1beta1.NetworkLinkEthernetMac)(nil), (*NetworkLinkEthernetMac)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1beta1_NetworkLinkEthernetMac_To_v1alpha5_NetworkLinkEthernetMac(a.(*v1beta1.NetworkLinkEthernetMac), b.(*NetworkLinkEthernetMac), scope) - }); err != nil { - return err - } - return nil -} - -func autoConvert_v1alpha5_APIEndpoint_To_v1beta1_APIEndpoint(in *APIEndpoint, out *v1beta1.APIEndpoint, s conversion.Scope) error { - out.Host = in.Host - out.Port = in.Port - return nil -} - -// Convert_v1alpha5_APIEndpoint_To_v1beta1_APIEndpoint is an autogenerated conversion function. -func Convert_v1alpha5_APIEndpoint_To_v1beta1_APIEndpoint(in *APIEndpoint, out *v1beta1.APIEndpoint, s conversion.Scope) error { - return autoConvert_v1alpha5_APIEndpoint_To_v1beta1_APIEndpoint(in, out, s) -} - -func autoConvert_v1beta1_APIEndpoint_To_v1alpha5_APIEndpoint(in *v1beta1.APIEndpoint, out *APIEndpoint, s conversion.Scope) error { - out.Host = in.Host - out.Port = in.Port - return nil -} - -// Convert_v1beta1_APIEndpoint_To_v1alpha5_APIEndpoint is an autogenerated conversion function. -func Convert_v1beta1_APIEndpoint_To_v1alpha5_APIEndpoint(in *v1beta1.APIEndpoint, out *APIEndpoint, s conversion.Scope) error { - return autoConvert_v1beta1_APIEndpoint_To_v1alpha5_APIEndpoint(in, out, s) -} - -func autoConvert_v1alpha5_FromPool_To_v1beta1_FromPool(in *FromPool, out *v1beta1.FromPool, s conversion.Scope) error { - out.Key = in.Key - out.Name = in.Name - return nil -} - -// Convert_v1alpha5_FromPool_To_v1beta1_FromPool is an autogenerated conversion function. -func Convert_v1alpha5_FromPool_To_v1beta1_FromPool(in *FromPool, out *v1beta1.FromPool, s conversion.Scope) error { - return autoConvert_v1alpha5_FromPool_To_v1beta1_FromPool(in, out, s) -} - -func autoConvert_v1beta1_FromPool_To_v1alpha5_FromPool(in *v1beta1.FromPool, out *FromPool, s conversion.Scope) error { - out.Key = in.Key - out.Name = in.Name - // WARNING: in.APIGroup requires manual conversion: does not exist in peer-type - // WARNING: in.Kind requires manual conversion: does not exist in peer-type - return nil -} - -func autoConvert_v1alpha5_HostSelector_To_v1beta1_HostSelector(in *HostSelector, out *v1beta1.HostSelector, s conversion.Scope) error { - out.MatchLabels = *(*map[string]string)(unsafe.Pointer(&in.MatchLabels)) - out.MatchExpressions = *(*[]v1beta1.HostSelectorRequirement)(unsafe.Pointer(&in.MatchExpressions)) - return nil -} - -// Convert_v1alpha5_HostSelector_To_v1beta1_HostSelector is an autogenerated conversion function. -func Convert_v1alpha5_HostSelector_To_v1beta1_HostSelector(in *HostSelector, out *v1beta1.HostSelector, s conversion.Scope) error { - return autoConvert_v1alpha5_HostSelector_To_v1beta1_HostSelector(in, out, s) -} - -func autoConvert_v1beta1_HostSelector_To_v1alpha5_HostSelector(in *v1beta1.HostSelector, out *HostSelector, s conversion.Scope) error { - out.MatchLabels = *(*map[string]string)(unsafe.Pointer(&in.MatchLabels)) - out.MatchExpressions = *(*[]HostSelectorRequirement)(unsafe.Pointer(&in.MatchExpressions)) - return nil -} - -// Convert_v1beta1_HostSelector_To_v1alpha5_HostSelector is an autogenerated conversion function. -func Convert_v1beta1_HostSelector_To_v1alpha5_HostSelector(in *v1beta1.HostSelector, out *HostSelector, s conversion.Scope) error { - return autoConvert_v1beta1_HostSelector_To_v1alpha5_HostSelector(in, out, s) -} - -func autoConvert_v1alpha5_HostSelectorRequirement_To_v1beta1_HostSelectorRequirement(in *HostSelectorRequirement, out *v1beta1.HostSelectorRequirement, s conversion.Scope) error { - out.Key = in.Key - out.Operator = selection.Operator(in.Operator) - out.Values = *(*[]string)(unsafe.Pointer(&in.Values)) - return nil -} - -// Convert_v1alpha5_HostSelectorRequirement_To_v1beta1_HostSelectorRequirement is an autogenerated conversion function. -func Convert_v1alpha5_HostSelectorRequirement_To_v1beta1_HostSelectorRequirement(in *HostSelectorRequirement, out *v1beta1.HostSelectorRequirement, s conversion.Scope) error { - return autoConvert_v1alpha5_HostSelectorRequirement_To_v1beta1_HostSelectorRequirement(in, out, s) -} - -func autoConvert_v1beta1_HostSelectorRequirement_To_v1alpha5_HostSelectorRequirement(in *v1beta1.HostSelectorRequirement, out *HostSelectorRequirement, s conversion.Scope) error { - out.Key = in.Key - out.Operator = selection.Operator(in.Operator) - out.Values = *(*[]string)(unsafe.Pointer(&in.Values)) - return nil -} - -// Convert_v1beta1_HostSelectorRequirement_To_v1alpha5_HostSelectorRequirement is an autogenerated conversion function. -func Convert_v1beta1_HostSelectorRequirement_To_v1alpha5_HostSelectorRequirement(in *v1beta1.HostSelectorRequirement, out *HostSelectorRequirement, s conversion.Scope) error { - return autoConvert_v1beta1_HostSelectorRequirement_To_v1alpha5_HostSelectorRequirement(in, out, s) -} - -func autoConvert_v1alpha5_Image_To_v1beta1_Image(in *Image, out *v1beta1.Image, s conversion.Scope) error { - out.URL = in.URL - out.Checksum = in.Checksum - out.ChecksumType = (*string)(unsafe.Pointer(in.ChecksumType)) - out.DiskFormat = (*string)(unsafe.Pointer(in.DiskFormat)) - return nil -} - -// Convert_v1alpha5_Image_To_v1beta1_Image is an autogenerated conversion function. -func Convert_v1alpha5_Image_To_v1beta1_Image(in *Image, out *v1beta1.Image, s conversion.Scope) error { - return autoConvert_v1alpha5_Image_To_v1beta1_Image(in, out, s) -} - -func autoConvert_v1beta1_Image_To_v1alpha5_Image(in *v1beta1.Image, out *Image, s conversion.Scope) error { - out.URL = in.URL - out.Checksum = in.Checksum - out.ChecksumType = (*string)(unsafe.Pointer(in.ChecksumType)) - out.DiskFormat = (*string)(unsafe.Pointer(in.DiskFormat)) - return nil -} - -// Convert_v1beta1_Image_To_v1alpha5_Image is an autogenerated conversion function. -func Convert_v1beta1_Image_To_v1alpha5_Image(in *v1beta1.Image, out *Image, s conversion.Scope) error { - return autoConvert_v1beta1_Image_To_v1alpha5_Image(in, out, s) -} - -func autoConvert_v1alpha5_MetaData_To_v1beta1_MetaData(in *MetaData, out *v1beta1.MetaData, s conversion.Scope) error { - out.Strings = *(*[]v1beta1.MetaDataString)(unsafe.Pointer(&in.Strings)) - out.ObjectNames = *(*[]v1beta1.MetaDataObjectName)(unsafe.Pointer(&in.ObjectNames)) - out.Indexes = *(*[]v1beta1.MetaDataIndex)(unsafe.Pointer(&in.Indexes)) - out.Namespaces = *(*[]v1beta1.MetaDataNamespace)(unsafe.Pointer(&in.Namespaces)) - if in.IPAddressesFromPool != nil { - in, out := &in.IPAddressesFromPool, &out.IPAddressesFromPool - *out = make([]v1beta1.FromPool, len(*in)) - for i := range *in { - if err := Convert_v1alpha5_FromPool_To_v1beta1_FromPool(&(*in)[i], &(*out)[i], s); err != nil { - return err - } - } - } else { - out.IPAddressesFromPool = nil - } - if in.PrefixesFromPool != nil { - in, out := &in.PrefixesFromPool, &out.PrefixesFromPool - *out = make([]v1beta1.FromPool, len(*in)) - for i := range *in { - if err := Convert_v1alpha5_FromPool_To_v1beta1_FromPool(&(*in)[i], &(*out)[i], s); err != nil { - return err - } - } - } else { - out.PrefixesFromPool = nil - } - if in.GatewaysFromPool != nil { - in, out := &in.GatewaysFromPool, &out.GatewaysFromPool - *out = make([]v1beta1.FromPool, len(*in)) - for i := range *in { - if err := Convert_v1alpha5_FromPool_To_v1beta1_FromPool(&(*in)[i], &(*out)[i], s); err != nil { - return err - } - } - } else { - out.GatewaysFromPool = nil - } - if in.DNSServersFromPool != nil { - in, out := &in.DNSServersFromPool, &out.DNSServersFromPool - *out = make([]v1beta1.FromPool, len(*in)) - for i := range *in { - if err := Convert_v1alpha5_FromPool_To_v1beta1_FromPool(&(*in)[i], &(*out)[i], s); err != nil { - return err - } - } - } else { - out.DNSServersFromPool = nil - } - out.FromHostInterfaces = *(*[]v1beta1.MetaDataHostInterface)(unsafe.Pointer(&in.FromHostInterfaces)) - out.FromLabels = *(*[]v1beta1.MetaDataFromLabel)(unsafe.Pointer(&in.FromLabels)) - out.FromAnnotations = *(*[]v1beta1.MetaDataFromAnnotation)(unsafe.Pointer(&in.FromAnnotations)) - return nil -} - -// Convert_v1alpha5_MetaData_To_v1beta1_MetaData is an autogenerated conversion function. -func Convert_v1alpha5_MetaData_To_v1beta1_MetaData(in *MetaData, out *v1beta1.MetaData, s conversion.Scope) error { - return autoConvert_v1alpha5_MetaData_To_v1beta1_MetaData(in, out, s) -} - -func autoConvert_v1beta1_MetaData_To_v1alpha5_MetaData(in *v1beta1.MetaData, out *MetaData, s conversion.Scope) error { - out.Strings = *(*[]MetaDataString)(unsafe.Pointer(&in.Strings)) - out.ObjectNames = *(*[]MetaDataObjectName)(unsafe.Pointer(&in.ObjectNames)) - out.Indexes = *(*[]MetaDataIndex)(unsafe.Pointer(&in.Indexes)) - out.Namespaces = *(*[]MetaDataNamespace)(unsafe.Pointer(&in.Namespaces)) - if in.IPAddressesFromPool != nil { - in, out := &in.IPAddressesFromPool, &out.IPAddressesFromPool - *out = make([]FromPool, len(*in)) - for i := range *in { - if err := Convert_v1beta1_FromPool_To_v1alpha5_FromPool(&(*in)[i], &(*out)[i], s); err != nil { - return err - } - } - } else { - out.IPAddressesFromPool = nil - } - if in.PrefixesFromPool != nil { - in, out := &in.PrefixesFromPool, &out.PrefixesFromPool - *out = make([]FromPool, len(*in)) - for i := range *in { - if err := Convert_v1beta1_FromPool_To_v1alpha5_FromPool(&(*in)[i], &(*out)[i], s); err != nil { - return err - } - } - } else { - out.PrefixesFromPool = nil - } - if in.GatewaysFromPool != nil { - in, out := &in.GatewaysFromPool, &out.GatewaysFromPool - *out = make([]FromPool, len(*in)) - for i := range *in { - if err := Convert_v1beta1_FromPool_To_v1alpha5_FromPool(&(*in)[i], &(*out)[i], s); err != nil { - return err - } - } - } else { - out.GatewaysFromPool = nil - } - if in.DNSServersFromPool != nil { - in, out := &in.DNSServersFromPool, &out.DNSServersFromPool - *out = make([]FromPool, len(*in)) - for i := range *in { - if err := Convert_v1beta1_FromPool_To_v1alpha5_FromPool(&(*in)[i], &(*out)[i], s); err != nil { - return err - } - } - } else { - out.DNSServersFromPool = nil - } - out.FromHostInterfaces = *(*[]MetaDataHostInterface)(unsafe.Pointer(&in.FromHostInterfaces)) - out.FromLabels = *(*[]MetaDataFromLabel)(unsafe.Pointer(&in.FromLabels)) - out.FromAnnotations = *(*[]MetaDataFromAnnotation)(unsafe.Pointer(&in.FromAnnotations)) - return nil -} - -// Convert_v1beta1_MetaData_To_v1alpha5_MetaData is an autogenerated conversion function. -func Convert_v1beta1_MetaData_To_v1alpha5_MetaData(in *v1beta1.MetaData, out *MetaData, s conversion.Scope) error { - return autoConvert_v1beta1_MetaData_To_v1alpha5_MetaData(in, out, s) -} - -func autoConvert_v1alpha5_MetaDataFromAnnotation_To_v1beta1_MetaDataFromAnnotation(in *MetaDataFromAnnotation, out *v1beta1.MetaDataFromAnnotation, s conversion.Scope) error { - out.Key = in.Key - out.Object = in.Object - out.Annotation = in.Annotation - return nil -} - -// Convert_v1alpha5_MetaDataFromAnnotation_To_v1beta1_MetaDataFromAnnotation is an autogenerated conversion function. -func Convert_v1alpha5_MetaDataFromAnnotation_To_v1beta1_MetaDataFromAnnotation(in *MetaDataFromAnnotation, out *v1beta1.MetaDataFromAnnotation, s conversion.Scope) error { - return autoConvert_v1alpha5_MetaDataFromAnnotation_To_v1beta1_MetaDataFromAnnotation(in, out, s) -} - -func autoConvert_v1beta1_MetaDataFromAnnotation_To_v1alpha5_MetaDataFromAnnotation(in *v1beta1.MetaDataFromAnnotation, out *MetaDataFromAnnotation, s conversion.Scope) error { - out.Key = in.Key - out.Object = in.Object - out.Annotation = in.Annotation - return nil -} - -// Convert_v1beta1_MetaDataFromAnnotation_To_v1alpha5_MetaDataFromAnnotation is an autogenerated conversion function. -func Convert_v1beta1_MetaDataFromAnnotation_To_v1alpha5_MetaDataFromAnnotation(in *v1beta1.MetaDataFromAnnotation, out *MetaDataFromAnnotation, s conversion.Scope) error { - return autoConvert_v1beta1_MetaDataFromAnnotation_To_v1alpha5_MetaDataFromAnnotation(in, out, s) -} - -func autoConvert_v1alpha5_MetaDataFromLabel_To_v1beta1_MetaDataFromLabel(in *MetaDataFromLabel, out *v1beta1.MetaDataFromLabel, s conversion.Scope) error { - out.Key = in.Key - out.Object = in.Object - out.Label = in.Label - return nil -} - -// Convert_v1alpha5_MetaDataFromLabel_To_v1beta1_MetaDataFromLabel is an autogenerated conversion function. -func Convert_v1alpha5_MetaDataFromLabel_To_v1beta1_MetaDataFromLabel(in *MetaDataFromLabel, out *v1beta1.MetaDataFromLabel, s conversion.Scope) error { - return autoConvert_v1alpha5_MetaDataFromLabel_To_v1beta1_MetaDataFromLabel(in, out, s) -} - -func autoConvert_v1beta1_MetaDataFromLabel_To_v1alpha5_MetaDataFromLabel(in *v1beta1.MetaDataFromLabel, out *MetaDataFromLabel, s conversion.Scope) error { - out.Key = in.Key - out.Object = in.Object - out.Label = in.Label - return nil -} - -// Convert_v1beta1_MetaDataFromLabel_To_v1alpha5_MetaDataFromLabel is an autogenerated conversion function. -func Convert_v1beta1_MetaDataFromLabel_To_v1alpha5_MetaDataFromLabel(in *v1beta1.MetaDataFromLabel, out *MetaDataFromLabel, s conversion.Scope) error { - return autoConvert_v1beta1_MetaDataFromLabel_To_v1alpha5_MetaDataFromLabel(in, out, s) -} - -func autoConvert_v1alpha5_MetaDataHostInterface_To_v1beta1_MetaDataHostInterface(in *MetaDataHostInterface, out *v1beta1.MetaDataHostInterface, s conversion.Scope) error { - out.Key = in.Key - out.Interface = in.Interface - return nil -} - -// Convert_v1alpha5_MetaDataHostInterface_To_v1beta1_MetaDataHostInterface is an autogenerated conversion function. -func Convert_v1alpha5_MetaDataHostInterface_To_v1beta1_MetaDataHostInterface(in *MetaDataHostInterface, out *v1beta1.MetaDataHostInterface, s conversion.Scope) error { - return autoConvert_v1alpha5_MetaDataHostInterface_To_v1beta1_MetaDataHostInterface(in, out, s) -} - -func autoConvert_v1beta1_MetaDataHostInterface_To_v1alpha5_MetaDataHostInterface(in *v1beta1.MetaDataHostInterface, out *MetaDataHostInterface, s conversion.Scope) error { - out.Key = in.Key - out.Interface = in.Interface - return nil -} - -// Convert_v1beta1_MetaDataHostInterface_To_v1alpha5_MetaDataHostInterface is an autogenerated conversion function. -func Convert_v1beta1_MetaDataHostInterface_To_v1alpha5_MetaDataHostInterface(in *v1beta1.MetaDataHostInterface, out *MetaDataHostInterface, s conversion.Scope) error { - return autoConvert_v1beta1_MetaDataHostInterface_To_v1alpha5_MetaDataHostInterface(in, out, s) -} - -func autoConvert_v1alpha5_MetaDataIPAddress_To_v1beta1_MetaDataIPAddress(in *MetaDataIPAddress, out *v1beta1.MetaDataIPAddress, s conversion.Scope) error { - out.Key = in.Key - out.Start = (*v1alpha1.IPAddressStr)(unsafe.Pointer(in.Start)) - out.End = (*v1alpha1.IPAddressStr)(unsafe.Pointer(in.End)) - out.Subnet = (*v1alpha1.IPSubnetStr)(unsafe.Pointer(in.Subnet)) - out.Step = in.Step - return nil -} - -// Convert_v1alpha5_MetaDataIPAddress_To_v1beta1_MetaDataIPAddress is an autogenerated conversion function. -func Convert_v1alpha5_MetaDataIPAddress_To_v1beta1_MetaDataIPAddress(in *MetaDataIPAddress, out *v1beta1.MetaDataIPAddress, s conversion.Scope) error { - return autoConvert_v1alpha5_MetaDataIPAddress_To_v1beta1_MetaDataIPAddress(in, out, s) -} - -func autoConvert_v1beta1_MetaDataIPAddress_To_v1alpha5_MetaDataIPAddress(in *v1beta1.MetaDataIPAddress, out *MetaDataIPAddress, s conversion.Scope) error { - out.Key = in.Key - out.Start = (*v1alpha1.IPAddressStr)(unsafe.Pointer(in.Start)) - out.End = (*v1alpha1.IPAddressStr)(unsafe.Pointer(in.End)) - out.Subnet = (*v1alpha1.IPSubnetStr)(unsafe.Pointer(in.Subnet)) - out.Step = in.Step - return nil -} - -// Convert_v1beta1_MetaDataIPAddress_To_v1alpha5_MetaDataIPAddress is an autogenerated conversion function. -func Convert_v1beta1_MetaDataIPAddress_To_v1alpha5_MetaDataIPAddress(in *v1beta1.MetaDataIPAddress, out *MetaDataIPAddress, s conversion.Scope) error { - return autoConvert_v1beta1_MetaDataIPAddress_To_v1alpha5_MetaDataIPAddress(in, out, s) -} - -func autoConvert_v1alpha5_MetaDataIndex_To_v1beta1_MetaDataIndex(in *MetaDataIndex, out *v1beta1.MetaDataIndex, s conversion.Scope) error { - out.Key = in.Key - out.Offset = in.Offset - out.Step = in.Step - out.Prefix = in.Prefix - out.Suffix = in.Suffix - return nil -} - -// Convert_v1alpha5_MetaDataIndex_To_v1beta1_MetaDataIndex is an autogenerated conversion function. -func Convert_v1alpha5_MetaDataIndex_To_v1beta1_MetaDataIndex(in *MetaDataIndex, out *v1beta1.MetaDataIndex, s conversion.Scope) error { - return autoConvert_v1alpha5_MetaDataIndex_To_v1beta1_MetaDataIndex(in, out, s) -} - -func autoConvert_v1beta1_MetaDataIndex_To_v1alpha5_MetaDataIndex(in *v1beta1.MetaDataIndex, out *MetaDataIndex, s conversion.Scope) error { - out.Key = in.Key - out.Offset = in.Offset - out.Step = in.Step - out.Prefix = in.Prefix - out.Suffix = in.Suffix - return nil -} - -// Convert_v1beta1_MetaDataIndex_To_v1alpha5_MetaDataIndex is an autogenerated conversion function. -func Convert_v1beta1_MetaDataIndex_To_v1alpha5_MetaDataIndex(in *v1beta1.MetaDataIndex, out *MetaDataIndex, s conversion.Scope) error { - return autoConvert_v1beta1_MetaDataIndex_To_v1alpha5_MetaDataIndex(in, out, s) -} - -func autoConvert_v1alpha5_MetaDataNamespace_To_v1beta1_MetaDataNamespace(in *MetaDataNamespace, out *v1beta1.MetaDataNamespace, s conversion.Scope) error { - out.Key = in.Key - return nil -} - -// Convert_v1alpha5_MetaDataNamespace_To_v1beta1_MetaDataNamespace is an autogenerated conversion function. -func Convert_v1alpha5_MetaDataNamespace_To_v1beta1_MetaDataNamespace(in *MetaDataNamespace, out *v1beta1.MetaDataNamespace, s conversion.Scope) error { - return autoConvert_v1alpha5_MetaDataNamespace_To_v1beta1_MetaDataNamespace(in, out, s) -} - -func autoConvert_v1beta1_MetaDataNamespace_To_v1alpha5_MetaDataNamespace(in *v1beta1.MetaDataNamespace, out *MetaDataNamespace, s conversion.Scope) error { - out.Key = in.Key - return nil -} - -// Convert_v1beta1_MetaDataNamespace_To_v1alpha5_MetaDataNamespace is an autogenerated conversion function. -func Convert_v1beta1_MetaDataNamespace_To_v1alpha5_MetaDataNamespace(in *v1beta1.MetaDataNamespace, out *MetaDataNamespace, s conversion.Scope) error { - return autoConvert_v1beta1_MetaDataNamespace_To_v1alpha5_MetaDataNamespace(in, out, s) -} - -func autoConvert_v1alpha5_MetaDataObjectName_To_v1beta1_MetaDataObjectName(in *MetaDataObjectName, out *v1beta1.MetaDataObjectName, s conversion.Scope) error { - out.Key = in.Key - out.Object = in.Object - return nil -} - -// Convert_v1alpha5_MetaDataObjectName_To_v1beta1_MetaDataObjectName is an autogenerated conversion function. -func Convert_v1alpha5_MetaDataObjectName_To_v1beta1_MetaDataObjectName(in *MetaDataObjectName, out *v1beta1.MetaDataObjectName, s conversion.Scope) error { - return autoConvert_v1alpha5_MetaDataObjectName_To_v1beta1_MetaDataObjectName(in, out, s) -} - -func autoConvert_v1beta1_MetaDataObjectName_To_v1alpha5_MetaDataObjectName(in *v1beta1.MetaDataObjectName, out *MetaDataObjectName, s conversion.Scope) error { - out.Key = in.Key - out.Object = in.Object - return nil -} - -// Convert_v1beta1_MetaDataObjectName_To_v1alpha5_MetaDataObjectName is an autogenerated conversion function. -func Convert_v1beta1_MetaDataObjectName_To_v1alpha5_MetaDataObjectName(in *v1beta1.MetaDataObjectName, out *MetaDataObjectName, s conversion.Scope) error { - return autoConvert_v1beta1_MetaDataObjectName_To_v1alpha5_MetaDataObjectName(in, out, s) -} - -func autoConvert_v1alpha5_MetaDataString_To_v1beta1_MetaDataString(in *MetaDataString, out *v1beta1.MetaDataString, s conversion.Scope) error { - out.Key = in.Key - out.Value = in.Value - return nil -} - -// Convert_v1alpha5_MetaDataString_To_v1beta1_MetaDataString is an autogenerated conversion function. -func Convert_v1alpha5_MetaDataString_To_v1beta1_MetaDataString(in *MetaDataString, out *v1beta1.MetaDataString, s conversion.Scope) error { - return autoConvert_v1alpha5_MetaDataString_To_v1beta1_MetaDataString(in, out, s) -} - -func autoConvert_v1beta1_MetaDataString_To_v1alpha5_MetaDataString(in *v1beta1.MetaDataString, out *MetaDataString, s conversion.Scope) error { - out.Key = in.Key - out.Value = in.Value - return nil -} - -// Convert_v1beta1_MetaDataString_To_v1alpha5_MetaDataString is an autogenerated conversion function. -func Convert_v1beta1_MetaDataString_To_v1alpha5_MetaDataString(in *v1beta1.MetaDataString, out *MetaDataString, s conversion.Scope) error { - return autoConvert_v1beta1_MetaDataString_To_v1alpha5_MetaDataString(in, out, s) -} - -func autoConvert_v1alpha5_Metal3Cluster_To_v1beta1_Metal3Cluster(in *Metal3Cluster, out *v1beta1.Metal3Cluster, s conversion.Scope) error { - out.ObjectMeta = in.ObjectMeta - if err := Convert_v1alpha5_Metal3ClusterSpec_To_v1beta1_Metal3ClusterSpec(&in.Spec, &out.Spec, s); err != nil { - return err - } - if err := Convert_v1alpha5_Metal3ClusterStatus_To_v1beta1_Metal3ClusterStatus(&in.Status, &out.Status, s); err != nil { - return err - } - return nil -} - -// Convert_v1alpha5_Metal3Cluster_To_v1beta1_Metal3Cluster is an autogenerated conversion function. -func Convert_v1alpha5_Metal3Cluster_To_v1beta1_Metal3Cluster(in *Metal3Cluster, out *v1beta1.Metal3Cluster, s conversion.Scope) error { - return autoConvert_v1alpha5_Metal3Cluster_To_v1beta1_Metal3Cluster(in, out, s) -} - -func autoConvert_v1beta1_Metal3Cluster_To_v1alpha5_Metal3Cluster(in *v1beta1.Metal3Cluster, out *Metal3Cluster, s conversion.Scope) error { - out.ObjectMeta = in.ObjectMeta - if err := Convert_v1beta1_Metal3ClusterSpec_To_v1alpha5_Metal3ClusterSpec(&in.Spec, &out.Spec, s); err != nil { - return err - } - if err := Convert_v1beta1_Metal3ClusterStatus_To_v1alpha5_Metal3ClusterStatus(&in.Status, &out.Status, s); err != nil { - return err - } - return nil -} - -// Convert_v1beta1_Metal3Cluster_To_v1alpha5_Metal3Cluster is an autogenerated conversion function. -func Convert_v1beta1_Metal3Cluster_To_v1alpha5_Metal3Cluster(in *v1beta1.Metal3Cluster, out *Metal3Cluster, s conversion.Scope) error { - return autoConvert_v1beta1_Metal3Cluster_To_v1alpha5_Metal3Cluster(in, out, s) -} - -func autoConvert_v1alpha5_Metal3ClusterList_To_v1beta1_Metal3ClusterList(in *Metal3ClusterList, out *v1beta1.Metal3ClusterList, s conversion.Scope) error { - out.ListMeta = in.ListMeta - if in.Items != nil { - in, out := &in.Items, &out.Items - *out = make([]v1beta1.Metal3Cluster, len(*in)) - for i := range *in { - if err := Convert_v1alpha5_Metal3Cluster_To_v1beta1_Metal3Cluster(&(*in)[i], &(*out)[i], s); err != nil { - return err - } - } - } else { - out.Items = nil - } - return nil -} - -// Convert_v1alpha5_Metal3ClusterList_To_v1beta1_Metal3ClusterList is an autogenerated conversion function. -func Convert_v1alpha5_Metal3ClusterList_To_v1beta1_Metal3ClusterList(in *Metal3ClusterList, out *v1beta1.Metal3ClusterList, s conversion.Scope) error { - return autoConvert_v1alpha5_Metal3ClusterList_To_v1beta1_Metal3ClusterList(in, out, s) -} - -func autoConvert_v1beta1_Metal3ClusterList_To_v1alpha5_Metal3ClusterList(in *v1beta1.Metal3ClusterList, out *Metal3ClusterList, s conversion.Scope) error { - out.ListMeta = in.ListMeta - if in.Items != nil { - in, out := &in.Items, &out.Items - *out = make([]Metal3Cluster, len(*in)) - for i := range *in { - if err := Convert_v1beta1_Metal3Cluster_To_v1alpha5_Metal3Cluster(&(*in)[i], &(*out)[i], s); err != nil { - return err - } - } - } else { - out.Items = nil - } - return nil -} - -// Convert_v1beta1_Metal3ClusterList_To_v1alpha5_Metal3ClusterList is an autogenerated conversion function. -func Convert_v1beta1_Metal3ClusterList_To_v1alpha5_Metal3ClusterList(in *v1beta1.Metal3ClusterList, out *Metal3ClusterList, s conversion.Scope) error { - return autoConvert_v1beta1_Metal3ClusterList_To_v1alpha5_Metal3ClusterList(in, out, s) -} - -func autoConvert_v1alpha5_Metal3ClusterSpec_To_v1beta1_Metal3ClusterSpec(in *Metal3ClusterSpec, out *v1beta1.Metal3ClusterSpec, s conversion.Scope) error { - if err := Convert_v1alpha5_APIEndpoint_To_v1beta1_APIEndpoint(&in.ControlPlaneEndpoint, &out.ControlPlaneEndpoint, s); err != nil { - return err - } - out.NoCloudProvider = in.NoCloudProvider - return nil -} - -// Convert_v1alpha5_Metal3ClusterSpec_To_v1beta1_Metal3ClusterSpec is an autogenerated conversion function. -func Convert_v1alpha5_Metal3ClusterSpec_To_v1beta1_Metal3ClusterSpec(in *Metal3ClusterSpec, out *v1beta1.Metal3ClusterSpec, s conversion.Scope) error { - return autoConvert_v1alpha5_Metal3ClusterSpec_To_v1beta1_Metal3ClusterSpec(in, out, s) -} - -func autoConvert_v1beta1_Metal3ClusterSpec_To_v1alpha5_Metal3ClusterSpec(in *v1beta1.Metal3ClusterSpec, out *Metal3ClusterSpec, s conversion.Scope) error { - if err := Convert_v1beta1_APIEndpoint_To_v1alpha5_APIEndpoint(&in.ControlPlaneEndpoint, &out.ControlPlaneEndpoint, s); err != nil { - return err - } - out.NoCloudProvider = in.NoCloudProvider - return nil -} - -// Convert_v1beta1_Metal3ClusterSpec_To_v1alpha5_Metal3ClusterSpec is an autogenerated conversion function. -func Convert_v1beta1_Metal3ClusterSpec_To_v1alpha5_Metal3ClusterSpec(in *v1beta1.Metal3ClusterSpec, out *Metal3ClusterSpec, s conversion.Scope) error { - return autoConvert_v1beta1_Metal3ClusterSpec_To_v1alpha5_Metal3ClusterSpec(in, out, s) -} - -func autoConvert_v1alpha5_Metal3ClusterStatus_To_v1beta1_Metal3ClusterStatus(in *Metal3ClusterStatus, out *v1beta1.Metal3ClusterStatus, s conversion.Scope) error { - out.LastUpdated = (*v1.Time)(unsafe.Pointer(in.LastUpdated)) - out.FailureReason = (*errors.ClusterStatusError)(unsafe.Pointer(in.FailureReason)) - out.FailureMessage = (*string)(unsafe.Pointer(in.FailureMessage)) - out.Ready = in.Ready - return nil -} - -// Convert_v1alpha5_Metal3ClusterStatus_To_v1beta1_Metal3ClusterStatus is an autogenerated conversion function. -func Convert_v1alpha5_Metal3ClusterStatus_To_v1beta1_Metal3ClusterStatus(in *Metal3ClusterStatus, out *v1beta1.Metal3ClusterStatus, s conversion.Scope) error { - return autoConvert_v1alpha5_Metal3ClusterStatus_To_v1beta1_Metal3ClusterStatus(in, out, s) -} - -func autoConvert_v1beta1_Metal3ClusterStatus_To_v1alpha5_Metal3ClusterStatus(in *v1beta1.Metal3ClusterStatus, out *Metal3ClusterStatus, s conversion.Scope) error { - out.LastUpdated = (*v1.Time)(unsafe.Pointer(in.LastUpdated)) - out.FailureReason = (*errors.ClusterStatusError)(unsafe.Pointer(in.FailureReason)) - out.FailureMessage = (*string)(unsafe.Pointer(in.FailureMessage)) - out.Ready = in.Ready - // WARNING: in.Conditions requires manual conversion: does not exist in peer-type - return nil -} - -func autoConvert_v1alpha5_Metal3Data_To_v1beta1_Metal3Data(in *Metal3Data, out *v1beta1.Metal3Data, s conversion.Scope) error { - out.ObjectMeta = in.ObjectMeta - if err := Convert_v1alpha5_Metal3DataSpec_To_v1beta1_Metal3DataSpec(&in.Spec, &out.Spec, s); err != nil { - return err - } - if err := Convert_v1alpha5_Metal3DataStatus_To_v1beta1_Metal3DataStatus(&in.Status, &out.Status, s); err != nil { - return err - } - return nil -} - -// Convert_v1alpha5_Metal3Data_To_v1beta1_Metal3Data is an autogenerated conversion function. -func Convert_v1alpha5_Metal3Data_To_v1beta1_Metal3Data(in *Metal3Data, out *v1beta1.Metal3Data, s conversion.Scope) error { - return autoConvert_v1alpha5_Metal3Data_To_v1beta1_Metal3Data(in, out, s) -} - -func autoConvert_v1beta1_Metal3Data_To_v1alpha5_Metal3Data(in *v1beta1.Metal3Data, out *Metal3Data, s conversion.Scope) error { - out.ObjectMeta = in.ObjectMeta - if err := Convert_v1beta1_Metal3DataSpec_To_v1alpha5_Metal3DataSpec(&in.Spec, &out.Spec, s); err != nil { - return err - } - if err := Convert_v1beta1_Metal3DataStatus_To_v1alpha5_Metal3DataStatus(&in.Status, &out.Status, s); err != nil { - return err - } - return nil -} - -// Convert_v1beta1_Metal3Data_To_v1alpha5_Metal3Data is an autogenerated conversion function. -func Convert_v1beta1_Metal3Data_To_v1alpha5_Metal3Data(in *v1beta1.Metal3Data, out *Metal3Data, s conversion.Scope) error { - return autoConvert_v1beta1_Metal3Data_To_v1alpha5_Metal3Data(in, out, s) -} - -func autoConvert_v1alpha5_Metal3DataClaim_To_v1beta1_Metal3DataClaim(in *Metal3DataClaim, out *v1beta1.Metal3DataClaim, s conversion.Scope) error { - out.ObjectMeta = in.ObjectMeta - if err := Convert_v1alpha5_Metal3DataClaimSpec_To_v1beta1_Metal3DataClaimSpec(&in.Spec, &out.Spec, s); err != nil { - return err - } - if err := Convert_v1alpha5_Metal3DataClaimStatus_To_v1beta1_Metal3DataClaimStatus(&in.Status, &out.Status, s); err != nil { - return err - } - return nil -} - -// Convert_v1alpha5_Metal3DataClaim_To_v1beta1_Metal3DataClaim is an autogenerated conversion function. -func Convert_v1alpha5_Metal3DataClaim_To_v1beta1_Metal3DataClaim(in *Metal3DataClaim, out *v1beta1.Metal3DataClaim, s conversion.Scope) error { - return autoConvert_v1alpha5_Metal3DataClaim_To_v1beta1_Metal3DataClaim(in, out, s) -} - -func autoConvert_v1beta1_Metal3DataClaim_To_v1alpha5_Metal3DataClaim(in *v1beta1.Metal3DataClaim, out *Metal3DataClaim, s conversion.Scope) error { - out.ObjectMeta = in.ObjectMeta - if err := Convert_v1beta1_Metal3DataClaimSpec_To_v1alpha5_Metal3DataClaimSpec(&in.Spec, &out.Spec, s); err != nil { - return err - } - if err := Convert_v1beta1_Metal3DataClaimStatus_To_v1alpha5_Metal3DataClaimStatus(&in.Status, &out.Status, s); err != nil { - return err - } - return nil -} - -// Convert_v1beta1_Metal3DataClaim_To_v1alpha5_Metal3DataClaim is an autogenerated conversion function. -func Convert_v1beta1_Metal3DataClaim_To_v1alpha5_Metal3DataClaim(in *v1beta1.Metal3DataClaim, out *Metal3DataClaim, s conversion.Scope) error { - return autoConvert_v1beta1_Metal3DataClaim_To_v1alpha5_Metal3DataClaim(in, out, s) -} - -func autoConvert_v1alpha5_Metal3DataClaimList_To_v1beta1_Metal3DataClaimList(in *Metal3DataClaimList, out *v1beta1.Metal3DataClaimList, s conversion.Scope) error { - out.ListMeta = in.ListMeta - out.Items = *(*[]v1beta1.Metal3DataClaim)(unsafe.Pointer(&in.Items)) - return nil -} - -// Convert_v1alpha5_Metal3DataClaimList_To_v1beta1_Metal3DataClaimList is an autogenerated conversion function. -func Convert_v1alpha5_Metal3DataClaimList_To_v1beta1_Metal3DataClaimList(in *Metal3DataClaimList, out *v1beta1.Metal3DataClaimList, s conversion.Scope) error { - return autoConvert_v1alpha5_Metal3DataClaimList_To_v1beta1_Metal3DataClaimList(in, out, s) -} - -func autoConvert_v1beta1_Metal3DataClaimList_To_v1alpha5_Metal3DataClaimList(in *v1beta1.Metal3DataClaimList, out *Metal3DataClaimList, s conversion.Scope) error { - out.ListMeta = in.ListMeta - out.Items = *(*[]Metal3DataClaim)(unsafe.Pointer(&in.Items)) - return nil -} - -// Convert_v1beta1_Metal3DataClaimList_To_v1alpha5_Metal3DataClaimList is an autogenerated conversion function. -func Convert_v1beta1_Metal3DataClaimList_To_v1alpha5_Metal3DataClaimList(in *v1beta1.Metal3DataClaimList, out *Metal3DataClaimList, s conversion.Scope) error { - return autoConvert_v1beta1_Metal3DataClaimList_To_v1alpha5_Metal3DataClaimList(in, out, s) -} - -func autoConvert_v1alpha5_Metal3DataClaimSpec_To_v1beta1_Metal3DataClaimSpec(in *Metal3DataClaimSpec, out *v1beta1.Metal3DataClaimSpec, s conversion.Scope) error { - out.Template = in.Template - return nil -} - -// Convert_v1alpha5_Metal3DataClaimSpec_To_v1beta1_Metal3DataClaimSpec is an autogenerated conversion function. -func Convert_v1alpha5_Metal3DataClaimSpec_To_v1beta1_Metal3DataClaimSpec(in *Metal3DataClaimSpec, out *v1beta1.Metal3DataClaimSpec, s conversion.Scope) error { - return autoConvert_v1alpha5_Metal3DataClaimSpec_To_v1beta1_Metal3DataClaimSpec(in, out, s) -} - -func autoConvert_v1beta1_Metal3DataClaimSpec_To_v1alpha5_Metal3DataClaimSpec(in *v1beta1.Metal3DataClaimSpec, out *Metal3DataClaimSpec, s conversion.Scope) error { - out.Template = in.Template - return nil -} - -// Convert_v1beta1_Metal3DataClaimSpec_To_v1alpha5_Metal3DataClaimSpec is an autogenerated conversion function. -func Convert_v1beta1_Metal3DataClaimSpec_To_v1alpha5_Metal3DataClaimSpec(in *v1beta1.Metal3DataClaimSpec, out *Metal3DataClaimSpec, s conversion.Scope) error { - return autoConvert_v1beta1_Metal3DataClaimSpec_To_v1alpha5_Metal3DataClaimSpec(in, out, s) -} - -func autoConvert_v1alpha5_Metal3DataClaimStatus_To_v1beta1_Metal3DataClaimStatus(in *Metal3DataClaimStatus, out *v1beta1.Metal3DataClaimStatus, s conversion.Scope) error { - out.RenderedData = (*corev1.ObjectReference)(unsafe.Pointer(in.RenderedData)) - out.ErrorMessage = (*string)(unsafe.Pointer(in.ErrorMessage)) - return nil -} - -// Convert_v1alpha5_Metal3DataClaimStatus_To_v1beta1_Metal3DataClaimStatus is an autogenerated conversion function. -func Convert_v1alpha5_Metal3DataClaimStatus_To_v1beta1_Metal3DataClaimStatus(in *Metal3DataClaimStatus, out *v1beta1.Metal3DataClaimStatus, s conversion.Scope) error { - return autoConvert_v1alpha5_Metal3DataClaimStatus_To_v1beta1_Metal3DataClaimStatus(in, out, s) -} - -func autoConvert_v1beta1_Metal3DataClaimStatus_To_v1alpha5_Metal3DataClaimStatus(in *v1beta1.Metal3DataClaimStatus, out *Metal3DataClaimStatus, s conversion.Scope) error { - out.RenderedData = (*corev1.ObjectReference)(unsafe.Pointer(in.RenderedData)) - out.ErrorMessage = (*string)(unsafe.Pointer(in.ErrorMessage)) - return nil -} - -// Convert_v1beta1_Metal3DataClaimStatus_To_v1alpha5_Metal3DataClaimStatus is an autogenerated conversion function. -func Convert_v1beta1_Metal3DataClaimStatus_To_v1alpha5_Metal3DataClaimStatus(in *v1beta1.Metal3DataClaimStatus, out *Metal3DataClaimStatus, s conversion.Scope) error { - return autoConvert_v1beta1_Metal3DataClaimStatus_To_v1alpha5_Metal3DataClaimStatus(in, out, s) -} - -func autoConvert_v1alpha5_Metal3DataList_To_v1beta1_Metal3DataList(in *Metal3DataList, out *v1beta1.Metal3DataList, s conversion.Scope) error { - out.ListMeta = in.ListMeta - out.Items = *(*[]v1beta1.Metal3Data)(unsafe.Pointer(&in.Items)) - return nil -} - -// Convert_v1alpha5_Metal3DataList_To_v1beta1_Metal3DataList is an autogenerated conversion function. -func Convert_v1alpha5_Metal3DataList_To_v1beta1_Metal3DataList(in *Metal3DataList, out *v1beta1.Metal3DataList, s conversion.Scope) error { - return autoConvert_v1alpha5_Metal3DataList_To_v1beta1_Metal3DataList(in, out, s) -} - -func autoConvert_v1beta1_Metal3DataList_To_v1alpha5_Metal3DataList(in *v1beta1.Metal3DataList, out *Metal3DataList, s conversion.Scope) error { - out.ListMeta = in.ListMeta - out.Items = *(*[]Metal3Data)(unsafe.Pointer(&in.Items)) - return nil -} - -// Convert_v1beta1_Metal3DataList_To_v1alpha5_Metal3DataList is an autogenerated conversion function. -func Convert_v1beta1_Metal3DataList_To_v1alpha5_Metal3DataList(in *v1beta1.Metal3DataList, out *Metal3DataList, s conversion.Scope) error { - return autoConvert_v1beta1_Metal3DataList_To_v1alpha5_Metal3DataList(in, out, s) -} - -func autoConvert_v1alpha5_Metal3DataSpec_To_v1beta1_Metal3DataSpec(in *Metal3DataSpec, out *v1beta1.Metal3DataSpec, s conversion.Scope) error { - out.Index = in.Index - out.TemplateReference = in.TemplateReference - out.MetaData = (*corev1.SecretReference)(unsafe.Pointer(in.MetaData)) - out.NetworkData = (*corev1.SecretReference)(unsafe.Pointer(in.NetworkData)) - out.Claim = in.Claim - out.Template = in.Template - return nil -} - -// Convert_v1alpha5_Metal3DataSpec_To_v1beta1_Metal3DataSpec is an autogenerated conversion function. -func Convert_v1alpha5_Metal3DataSpec_To_v1beta1_Metal3DataSpec(in *Metal3DataSpec, out *v1beta1.Metal3DataSpec, s conversion.Scope) error { - return autoConvert_v1alpha5_Metal3DataSpec_To_v1beta1_Metal3DataSpec(in, out, s) -} - -func autoConvert_v1beta1_Metal3DataSpec_To_v1alpha5_Metal3DataSpec(in *v1beta1.Metal3DataSpec, out *Metal3DataSpec, s conversion.Scope) error { - out.Index = in.Index - out.TemplateReference = in.TemplateReference - out.MetaData = (*corev1.SecretReference)(unsafe.Pointer(in.MetaData)) - out.NetworkData = (*corev1.SecretReference)(unsafe.Pointer(in.NetworkData)) - out.Claim = in.Claim - out.Template = in.Template - return nil -} - -// Convert_v1beta1_Metal3DataSpec_To_v1alpha5_Metal3DataSpec is an autogenerated conversion function. -func Convert_v1beta1_Metal3DataSpec_To_v1alpha5_Metal3DataSpec(in *v1beta1.Metal3DataSpec, out *Metal3DataSpec, s conversion.Scope) error { - return autoConvert_v1beta1_Metal3DataSpec_To_v1alpha5_Metal3DataSpec(in, out, s) -} - -func autoConvert_v1alpha5_Metal3DataStatus_To_v1beta1_Metal3DataStatus(in *Metal3DataStatus, out *v1beta1.Metal3DataStatus, s conversion.Scope) error { - out.Ready = in.Ready - out.ErrorMessage = (*string)(unsafe.Pointer(in.ErrorMessage)) - return nil -} - -// Convert_v1alpha5_Metal3DataStatus_To_v1beta1_Metal3DataStatus is an autogenerated conversion function. -func Convert_v1alpha5_Metal3DataStatus_To_v1beta1_Metal3DataStatus(in *Metal3DataStatus, out *v1beta1.Metal3DataStatus, s conversion.Scope) error { - return autoConvert_v1alpha5_Metal3DataStatus_To_v1beta1_Metal3DataStatus(in, out, s) -} - -func autoConvert_v1beta1_Metal3DataStatus_To_v1alpha5_Metal3DataStatus(in *v1beta1.Metal3DataStatus, out *Metal3DataStatus, s conversion.Scope) error { - out.Ready = in.Ready - out.ErrorMessage = (*string)(unsafe.Pointer(in.ErrorMessage)) - return nil -} - -// Convert_v1beta1_Metal3DataStatus_To_v1alpha5_Metal3DataStatus is an autogenerated conversion function. -func Convert_v1beta1_Metal3DataStatus_To_v1alpha5_Metal3DataStatus(in *v1beta1.Metal3DataStatus, out *Metal3DataStatus, s conversion.Scope) error { - return autoConvert_v1beta1_Metal3DataStatus_To_v1alpha5_Metal3DataStatus(in, out, s) -} - -func autoConvert_v1alpha5_Metal3DataTemplate_To_v1beta1_Metal3DataTemplate(in *Metal3DataTemplate, out *v1beta1.Metal3DataTemplate, s conversion.Scope) error { - out.ObjectMeta = in.ObjectMeta - if err := Convert_v1alpha5_Metal3DataTemplateSpec_To_v1beta1_Metal3DataTemplateSpec(&in.Spec, &out.Spec, s); err != nil { - return err - } - if err := Convert_v1alpha5_Metal3DataTemplateStatus_To_v1beta1_Metal3DataTemplateStatus(&in.Status, &out.Status, s); err != nil { - return err - } - return nil -} - -// Convert_v1alpha5_Metal3DataTemplate_To_v1beta1_Metal3DataTemplate is an autogenerated conversion function. -func Convert_v1alpha5_Metal3DataTemplate_To_v1beta1_Metal3DataTemplate(in *Metal3DataTemplate, out *v1beta1.Metal3DataTemplate, s conversion.Scope) error { - return autoConvert_v1alpha5_Metal3DataTemplate_To_v1beta1_Metal3DataTemplate(in, out, s) -} - -func autoConvert_v1beta1_Metal3DataTemplate_To_v1alpha5_Metal3DataTemplate(in *v1beta1.Metal3DataTemplate, out *Metal3DataTemplate, s conversion.Scope) error { - out.ObjectMeta = in.ObjectMeta - if err := Convert_v1beta1_Metal3DataTemplateSpec_To_v1alpha5_Metal3DataTemplateSpec(&in.Spec, &out.Spec, s); err != nil { - return err - } - if err := Convert_v1beta1_Metal3DataTemplateStatus_To_v1alpha5_Metal3DataTemplateStatus(&in.Status, &out.Status, s); err != nil { - return err - } - return nil -} - -// Convert_v1beta1_Metal3DataTemplate_To_v1alpha5_Metal3DataTemplate is an autogenerated conversion function. -func Convert_v1beta1_Metal3DataTemplate_To_v1alpha5_Metal3DataTemplate(in *v1beta1.Metal3DataTemplate, out *Metal3DataTemplate, s conversion.Scope) error { - return autoConvert_v1beta1_Metal3DataTemplate_To_v1alpha5_Metal3DataTemplate(in, out, s) -} - -func autoConvert_v1alpha5_Metal3DataTemplateList_To_v1beta1_Metal3DataTemplateList(in *Metal3DataTemplateList, out *v1beta1.Metal3DataTemplateList, s conversion.Scope) error { - out.ListMeta = in.ListMeta - if in.Items != nil { - in, out := &in.Items, &out.Items - *out = make([]v1beta1.Metal3DataTemplate, len(*in)) - for i := range *in { - if err := Convert_v1alpha5_Metal3DataTemplate_To_v1beta1_Metal3DataTemplate(&(*in)[i], &(*out)[i], s); err != nil { - return err - } - } - } else { - out.Items = nil - } - return nil -} - -// Convert_v1alpha5_Metal3DataTemplateList_To_v1beta1_Metal3DataTemplateList is an autogenerated conversion function. -func Convert_v1alpha5_Metal3DataTemplateList_To_v1beta1_Metal3DataTemplateList(in *Metal3DataTemplateList, out *v1beta1.Metal3DataTemplateList, s conversion.Scope) error { - return autoConvert_v1alpha5_Metal3DataTemplateList_To_v1beta1_Metal3DataTemplateList(in, out, s) -} - -func autoConvert_v1beta1_Metal3DataTemplateList_To_v1alpha5_Metal3DataTemplateList(in *v1beta1.Metal3DataTemplateList, out *Metal3DataTemplateList, s conversion.Scope) error { - out.ListMeta = in.ListMeta - if in.Items != nil { - in, out := &in.Items, &out.Items - *out = make([]Metal3DataTemplate, len(*in)) - for i := range *in { - if err := Convert_v1beta1_Metal3DataTemplate_To_v1alpha5_Metal3DataTemplate(&(*in)[i], &(*out)[i], s); err != nil { - return err - } - } - } else { - out.Items = nil - } - return nil -} - -// Convert_v1beta1_Metal3DataTemplateList_To_v1alpha5_Metal3DataTemplateList is an autogenerated conversion function. -func Convert_v1beta1_Metal3DataTemplateList_To_v1alpha5_Metal3DataTemplateList(in *v1beta1.Metal3DataTemplateList, out *Metal3DataTemplateList, s conversion.Scope) error { - return autoConvert_v1beta1_Metal3DataTemplateList_To_v1alpha5_Metal3DataTemplateList(in, out, s) -} - -func autoConvert_v1alpha5_Metal3DataTemplateSpec_To_v1beta1_Metal3DataTemplateSpec(in *Metal3DataTemplateSpec, out *v1beta1.Metal3DataTemplateSpec, s conversion.Scope) error { - out.ClusterName = in.ClusterName - out.TemplateReference = in.TemplateReference - if in.MetaData != nil { - in, out := &in.MetaData, &out.MetaData - *out = new(v1beta1.MetaData) - if err := Convert_v1alpha5_MetaData_To_v1beta1_MetaData(*in, *out, s); err != nil { - return err - } - } else { - out.MetaData = nil - } - if in.NetworkData != nil { - in, out := &in.NetworkData, &out.NetworkData - *out = new(v1beta1.NetworkData) - if err := Convert_v1alpha5_NetworkData_To_v1beta1_NetworkData(*in, *out, s); err != nil { - return err - } - } else { - out.NetworkData = nil - } - return nil -} - -// Convert_v1alpha5_Metal3DataTemplateSpec_To_v1beta1_Metal3DataTemplateSpec is an autogenerated conversion function. -func Convert_v1alpha5_Metal3DataTemplateSpec_To_v1beta1_Metal3DataTemplateSpec(in *Metal3DataTemplateSpec, out *v1beta1.Metal3DataTemplateSpec, s conversion.Scope) error { - return autoConvert_v1alpha5_Metal3DataTemplateSpec_To_v1beta1_Metal3DataTemplateSpec(in, out, s) -} - -func autoConvert_v1beta1_Metal3DataTemplateSpec_To_v1alpha5_Metal3DataTemplateSpec(in *v1beta1.Metal3DataTemplateSpec, out *Metal3DataTemplateSpec, s conversion.Scope) error { - out.ClusterName = in.ClusterName - out.TemplateReference = in.TemplateReference - if in.MetaData != nil { - in, out := &in.MetaData, &out.MetaData - *out = new(MetaData) - if err := Convert_v1beta1_MetaData_To_v1alpha5_MetaData(*in, *out, s); err != nil { - return err - } - } else { - out.MetaData = nil - } - if in.NetworkData != nil { - in, out := &in.NetworkData, &out.NetworkData - *out = new(NetworkData) - if err := Convert_v1beta1_NetworkData_To_v1alpha5_NetworkData(*in, *out, s); err != nil { - return err - } - } else { - out.NetworkData = nil - } - return nil -} - -// Convert_v1beta1_Metal3DataTemplateSpec_To_v1alpha5_Metal3DataTemplateSpec is an autogenerated conversion function. -func Convert_v1beta1_Metal3DataTemplateSpec_To_v1alpha5_Metal3DataTemplateSpec(in *v1beta1.Metal3DataTemplateSpec, out *Metal3DataTemplateSpec, s conversion.Scope) error { - return autoConvert_v1beta1_Metal3DataTemplateSpec_To_v1alpha5_Metal3DataTemplateSpec(in, out, s) -} - -func autoConvert_v1alpha5_Metal3DataTemplateStatus_To_v1beta1_Metal3DataTemplateStatus(in *Metal3DataTemplateStatus, out *v1beta1.Metal3DataTemplateStatus, s conversion.Scope) error { - out.LastUpdated = (*v1.Time)(unsafe.Pointer(in.LastUpdated)) - out.Indexes = *(*map[string]int)(unsafe.Pointer(&in.Indexes)) - return nil -} - -// Convert_v1alpha5_Metal3DataTemplateStatus_To_v1beta1_Metal3DataTemplateStatus is an autogenerated conversion function. -func Convert_v1alpha5_Metal3DataTemplateStatus_To_v1beta1_Metal3DataTemplateStatus(in *Metal3DataTemplateStatus, out *v1beta1.Metal3DataTemplateStatus, s conversion.Scope) error { - return autoConvert_v1alpha5_Metal3DataTemplateStatus_To_v1beta1_Metal3DataTemplateStatus(in, out, s) -} - -func autoConvert_v1beta1_Metal3DataTemplateStatus_To_v1alpha5_Metal3DataTemplateStatus(in *v1beta1.Metal3DataTemplateStatus, out *Metal3DataTemplateStatus, s conversion.Scope) error { - out.LastUpdated = (*v1.Time)(unsafe.Pointer(in.LastUpdated)) - out.Indexes = *(*map[string]int)(unsafe.Pointer(&in.Indexes)) - return nil -} - -// Convert_v1beta1_Metal3DataTemplateStatus_To_v1alpha5_Metal3DataTemplateStatus is an autogenerated conversion function. -func Convert_v1beta1_Metal3DataTemplateStatus_To_v1alpha5_Metal3DataTemplateStatus(in *v1beta1.Metal3DataTemplateStatus, out *Metal3DataTemplateStatus, s conversion.Scope) error { - return autoConvert_v1beta1_Metal3DataTemplateStatus_To_v1alpha5_Metal3DataTemplateStatus(in, out, s) -} - -func autoConvert_v1alpha5_Metal3Machine_To_v1beta1_Metal3Machine(in *Metal3Machine, out *v1beta1.Metal3Machine, s conversion.Scope) error { - out.ObjectMeta = in.ObjectMeta - if err := Convert_v1alpha5_Metal3MachineSpec_To_v1beta1_Metal3MachineSpec(&in.Spec, &out.Spec, s); err != nil { - return err - } - if err := Convert_v1alpha5_Metal3MachineStatus_To_v1beta1_Metal3MachineStatus(&in.Status, &out.Status, s); err != nil { - return err - } - return nil -} - -// Convert_v1alpha5_Metal3Machine_To_v1beta1_Metal3Machine is an autogenerated conversion function. -func Convert_v1alpha5_Metal3Machine_To_v1beta1_Metal3Machine(in *Metal3Machine, out *v1beta1.Metal3Machine, s conversion.Scope) error { - return autoConvert_v1alpha5_Metal3Machine_To_v1beta1_Metal3Machine(in, out, s) -} - -func autoConvert_v1beta1_Metal3Machine_To_v1alpha5_Metal3Machine(in *v1beta1.Metal3Machine, out *Metal3Machine, s conversion.Scope) error { - out.ObjectMeta = in.ObjectMeta - if err := Convert_v1beta1_Metal3MachineSpec_To_v1alpha5_Metal3MachineSpec(&in.Spec, &out.Spec, s); err != nil { - return err - } - if err := Convert_v1beta1_Metal3MachineStatus_To_v1alpha5_Metal3MachineStatus(&in.Status, &out.Status, s); err != nil { - return err - } - return nil -} - -// Convert_v1beta1_Metal3Machine_To_v1alpha5_Metal3Machine is an autogenerated conversion function. -func Convert_v1beta1_Metal3Machine_To_v1alpha5_Metal3Machine(in *v1beta1.Metal3Machine, out *Metal3Machine, s conversion.Scope) error { - return autoConvert_v1beta1_Metal3Machine_To_v1alpha5_Metal3Machine(in, out, s) -} - -func autoConvert_v1alpha5_Metal3MachineList_To_v1beta1_Metal3MachineList(in *Metal3MachineList, out *v1beta1.Metal3MachineList, s conversion.Scope) error { - out.ListMeta = in.ListMeta - if in.Items != nil { - in, out := &in.Items, &out.Items - *out = make([]v1beta1.Metal3Machine, len(*in)) - for i := range *in { - if err := Convert_v1alpha5_Metal3Machine_To_v1beta1_Metal3Machine(&(*in)[i], &(*out)[i], s); err != nil { - return err - } - } - } else { - out.Items = nil - } - return nil -} - -// Convert_v1alpha5_Metal3MachineList_To_v1beta1_Metal3MachineList is an autogenerated conversion function. -func Convert_v1alpha5_Metal3MachineList_To_v1beta1_Metal3MachineList(in *Metal3MachineList, out *v1beta1.Metal3MachineList, s conversion.Scope) error { - return autoConvert_v1alpha5_Metal3MachineList_To_v1beta1_Metal3MachineList(in, out, s) -} - -func autoConvert_v1beta1_Metal3MachineList_To_v1alpha5_Metal3MachineList(in *v1beta1.Metal3MachineList, out *Metal3MachineList, s conversion.Scope) error { - out.ListMeta = in.ListMeta - if in.Items != nil { - in, out := &in.Items, &out.Items - *out = make([]Metal3Machine, len(*in)) - for i := range *in { - if err := Convert_v1beta1_Metal3Machine_To_v1alpha5_Metal3Machine(&(*in)[i], &(*out)[i], s); err != nil { - return err - } - } - } else { - out.Items = nil - } - return nil -} - -// Convert_v1beta1_Metal3MachineList_To_v1alpha5_Metal3MachineList is an autogenerated conversion function. -func Convert_v1beta1_Metal3MachineList_To_v1alpha5_Metal3MachineList(in *v1beta1.Metal3MachineList, out *Metal3MachineList, s conversion.Scope) error { - return autoConvert_v1beta1_Metal3MachineList_To_v1alpha5_Metal3MachineList(in, out, s) -} - -func autoConvert_v1alpha5_Metal3MachineSpec_To_v1beta1_Metal3MachineSpec(in *Metal3MachineSpec, out *v1beta1.Metal3MachineSpec, s conversion.Scope) error { - out.ProviderID = (*string)(unsafe.Pointer(in.ProviderID)) - if err := Convert_v1alpha5_Image_To_v1beta1_Image(&in.Image, &out.Image, s); err != nil { - return err - } - out.UserData = (*corev1.SecretReference)(unsafe.Pointer(in.UserData)) - if err := Convert_v1alpha5_HostSelector_To_v1beta1_HostSelector(&in.HostSelector, &out.HostSelector, s); err != nil { - return err - } - out.DataTemplate = (*corev1.ObjectReference)(unsafe.Pointer(in.DataTemplate)) - out.MetaData = (*corev1.SecretReference)(unsafe.Pointer(in.MetaData)) - out.NetworkData = (*corev1.SecretReference)(unsafe.Pointer(in.NetworkData)) - out.AutomatedCleaningMode = (*string)(unsafe.Pointer(in.AutomatedCleaningMode)) - return nil -} - -// Convert_v1alpha5_Metal3MachineSpec_To_v1beta1_Metal3MachineSpec is an autogenerated conversion function. -func Convert_v1alpha5_Metal3MachineSpec_To_v1beta1_Metal3MachineSpec(in *Metal3MachineSpec, out *v1beta1.Metal3MachineSpec, s conversion.Scope) error { - return autoConvert_v1alpha5_Metal3MachineSpec_To_v1beta1_Metal3MachineSpec(in, out, s) -} - -func autoConvert_v1beta1_Metal3MachineSpec_To_v1alpha5_Metal3MachineSpec(in *v1beta1.Metal3MachineSpec, out *Metal3MachineSpec, s conversion.Scope) error { - out.ProviderID = (*string)(unsafe.Pointer(in.ProviderID)) - if err := Convert_v1beta1_Image_To_v1alpha5_Image(&in.Image, &out.Image, s); err != nil { - return err - } - out.UserData = (*corev1.SecretReference)(unsafe.Pointer(in.UserData)) - if err := Convert_v1beta1_HostSelector_To_v1alpha5_HostSelector(&in.HostSelector, &out.HostSelector, s); err != nil { - return err - } - out.DataTemplate = (*corev1.ObjectReference)(unsafe.Pointer(in.DataTemplate)) - out.MetaData = (*corev1.SecretReference)(unsafe.Pointer(in.MetaData)) - out.NetworkData = (*corev1.SecretReference)(unsafe.Pointer(in.NetworkData)) - out.AutomatedCleaningMode = (*string)(unsafe.Pointer(in.AutomatedCleaningMode)) - return nil -} - -// Convert_v1beta1_Metal3MachineSpec_To_v1alpha5_Metal3MachineSpec is an autogenerated conversion function. -func Convert_v1beta1_Metal3MachineSpec_To_v1alpha5_Metal3MachineSpec(in *v1beta1.Metal3MachineSpec, out *Metal3MachineSpec, s conversion.Scope) error { - return autoConvert_v1beta1_Metal3MachineSpec_To_v1alpha5_Metal3MachineSpec(in, out, s) -} - -func autoConvert_v1alpha5_Metal3MachineStatus_To_v1beta1_Metal3MachineStatus(in *Metal3MachineStatus, out *v1beta1.Metal3MachineStatus, s conversion.Scope) error { - out.LastUpdated = (*v1.Time)(unsafe.Pointer(in.LastUpdated)) - out.FailureReason = (*errors.MachineStatusError)(unsafe.Pointer(in.FailureReason)) - out.FailureMessage = (*string)(unsafe.Pointer(in.FailureMessage)) - out.Addresses = *(*apiv1beta1.MachineAddresses)(unsafe.Pointer(&in.Addresses)) - out.Phase = in.Phase - out.Ready = in.Ready - out.UserData = (*corev1.SecretReference)(unsafe.Pointer(in.UserData)) - out.RenderedData = (*corev1.ObjectReference)(unsafe.Pointer(in.RenderedData)) - out.MetaData = (*corev1.SecretReference)(unsafe.Pointer(in.MetaData)) - out.NetworkData = (*corev1.SecretReference)(unsafe.Pointer(in.NetworkData)) - return nil -} - -// Convert_v1alpha5_Metal3MachineStatus_To_v1beta1_Metal3MachineStatus is an autogenerated conversion function. -func Convert_v1alpha5_Metal3MachineStatus_To_v1beta1_Metal3MachineStatus(in *Metal3MachineStatus, out *v1beta1.Metal3MachineStatus, s conversion.Scope) error { - return autoConvert_v1alpha5_Metal3MachineStatus_To_v1beta1_Metal3MachineStatus(in, out, s) -} - -func autoConvert_v1beta1_Metal3MachineStatus_To_v1alpha5_Metal3MachineStatus(in *v1beta1.Metal3MachineStatus, out *Metal3MachineStatus, s conversion.Scope) error { - out.LastUpdated = (*v1.Time)(unsafe.Pointer(in.LastUpdated)) - out.FailureReason = (*errors.MachineStatusError)(unsafe.Pointer(in.FailureReason)) - out.FailureMessage = (*string)(unsafe.Pointer(in.FailureMessage)) - out.Addresses = *(*v1alpha4.MachineAddresses)(unsafe.Pointer(&in.Addresses)) - out.Phase = in.Phase - out.Ready = in.Ready - out.UserData = (*corev1.SecretReference)(unsafe.Pointer(in.UserData)) - out.RenderedData = (*corev1.ObjectReference)(unsafe.Pointer(in.RenderedData)) - out.MetaData = (*corev1.SecretReference)(unsafe.Pointer(in.MetaData)) - out.NetworkData = (*corev1.SecretReference)(unsafe.Pointer(in.NetworkData)) - // WARNING: in.Conditions requires manual conversion: does not exist in peer-type - return nil -} - -func autoConvert_v1alpha5_Metal3MachineTemplate_To_v1beta1_Metal3MachineTemplate(in *Metal3MachineTemplate, out *v1beta1.Metal3MachineTemplate, s conversion.Scope) error { - out.ObjectMeta = in.ObjectMeta - if err := Convert_v1alpha5_Metal3MachineTemplateSpec_To_v1beta1_Metal3MachineTemplateSpec(&in.Spec, &out.Spec, s); err != nil { - return err - } - return nil -} - -// Convert_v1alpha5_Metal3MachineTemplate_To_v1beta1_Metal3MachineTemplate is an autogenerated conversion function. -func Convert_v1alpha5_Metal3MachineTemplate_To_v1beta1_Metal3MachineTemplate(in *Metal3MachineTemplate, out *v1beta1.Metal3MachineTemplate, s conversion.Scope) error { - return autoConvert_v1alpha5_Metal3MachineTemplate_To_v1beta1_Metal3MachineTemplate(in, out, s) -} - -func autoConvert_v1beta1_Metal3MachineTemplate_To_v1alpha5_Metal3MachineTemplate(in *v1beta1.Metal3MachineTemplate, out *Metal3MachineTemplate, s conversion.Scope) error { - out.ObjectMeta = in.ObjectMeta - if err := Convert_v1beta1_Metal3MachineTemplateSpec_To_v1alpha5_Metal3MachineTemplateSpec(&in.Spec, &out.Spec, s); err != nil { - return err - } - return nil -} - -// Convert_v1beta1_Metal3MachineTemplate_To_v1alpha5_Metal3MachineTemplate is an autogenerated conversion function. -func Convert_v1beta1_Metal3MachineTemplate_To_v1alpha5_Metal3MachineTemplate(in *v1beta1.Metal3MachineTemplate, out *Metal3MachineTemplate, s conversion.Scope) error { - return autoConvert_v1beta1_Metal3MachineTemplate_To_v1alpha5_Metal3MachineTemplate(in, out, s) -} - -func autoConvert_v1alpha5_Metal3MachineTemplateList_To_v1beta1_Metal3MachineTemplateList(in *Metal3MachineTemplateList, out *v1beta1.Metal3MachineTemplateList, s conversion.Scope) error { - out.ListMeta = in.ListMeta - out.Items = *(*[]v1beta1.Metal3MachineTemplate)(unsafe.Pointer(&in.Items)) - return nil -} - -// Convert_v1alpha5_Metal3MachineTemplateList_To_v1beta1_Metal3MachineTemplateList is an autogenerated conversion function. -func Convert_v1alpha5_Metal3MachineTemplateList_To_v1beta1_Metal3MachineTemplateList(in *Metal3MachineTemplateList, out *v1beta1.Metal3MachineTemplateList, s conversion.Scope) error { - return autoConvert_v1alpha5_Metal3MachineTemplateList_To_v1beta1_Metal3MachineTemplateList(in, out, s) -} - -func autoConvert_v1beta1_Metal3MachineTemplateList_To_v1alpha5_Metal3MachineTemplateList(in *v1beta1.Metal3MachineTemplateList, out *Metal3MachineTemplateList, s conversion.Scope) error { - out.ListMeta = in.ListMeta - out.Items = *(*[]Metal3MachineTemplate)(unsafe.Pointer(&in.Items)) - return nil -} - -// Convert_v1beta1_Metal3MachineTemplateList_To_v1alpha5_Metal3MachineTemplateList is an autogenerated conversion function. -func Convert_v1beta1_Metal3MachineTemplateList_To_v1alpha5_Metal3MachineTemplateList(in *v1beta1.Metal3MachineTemplateList, out *Metal3MachineTemplateList, s conversion.Scope) error { - return autoConvert_v1beta1_Metal3MachineTemplateList_To_v1alpha5_Metal3MachineTemplateList(in, out, s) -} - -func autoConvert_v1alpha5_Metal3MachineTemplateResource_To_v1beta1_Metal3MachineTemplateResource(in *Metal3MachineTemplateResource, out *v1beta1.Metal3MachineTemplateResource, s conversion.Scope) error { - if err := Convert_v1alpha5_Metal3MachineSpec_To_v1beta1_Metal3MachineSpec(&in.Spec, &out.Spec, s); err != nil { - return err - } - return nil -} - -// Convert_v1alpha5_Metal3MachineTemplateResource_To_v1beta1_Metal3MachineTemplateResource is an autogenerated conversion function. -func Convert_v1alpha5_Metal3MachineTemplateResource_To_v1beta1_Metal3MachineTemplateResource(in *Metal3MachineTemplateResource, out *v1beta1.Metal3MachineTemplateResource, s conversion.Scope) error { - return autoConvert_v1alpha5_Metal3MachineTemplateResource_To_v1beta1_Metal3MachineTemplateResource(in, out, s) -} - -func autoConvert_v1beta1_Metal3MachineTemplateResource_To_v1alpha5_Metal3MachineTemplateResource(in *v1beta1.Metal3MachineTemplateResource, out *Metal3MachineTemplateResource, s conversion.Scope) error { - if err := Convert_v1beta1_Metal3MachineSpec_To_v1alpha5_Metal3MachineSpec(&in.Spec, &out.Spec, s); err != nil { - return err - } - return nil -} - -// Convert_v1beta1_Metal3MachineTemplateResource_To_v1alpha5_Metal3MachineTemplateResource is an autogenerated conversion function. -func Convert_v1beta1_Metal3MachineTemplateResource_To_v1alpha5_Metal3MachineTemplateResource(in *v1beta1.Metal3MachineTemplateResource, out *Metal3MachineTemplateResource, s conversion.Scope) error { - return autoConvert_v1beta1_Metal3MachineTemplateResource_To_v1alpha5_Metal3MachineTemplateResource(in, out, s) -} - -func autoConvert_v1alpha5_Metal3MachineTemplateSpec_To_v1beta1_Metal3MachineTemplateSpec(in *Metal3MachineTemplateSpec, out *v1beta1.Metal3MachineTemplateSpec, s conversion.Scope) error { - if err := Convert_v1alpha5_Metal3MachineTemplateResource_To_v1beta1_Metal3MachineTemplateResource(&in.Template, &out.Template, s); err != nil { - return err - } - out.NodeReuse = in.NodeReuse - return nil -} - -// Convert_v1alpha5_Metal3MachineTemplateSpec_To_v1beta1_Metal3MachineTemplateSpec is an autogenerated conversion function. -func Convert_v1alpha5_Metal3MachineTemplateSpec_To_v1beta1_Metal3MachineTemplateSpec(in *Metal3MachineTemplateSpec, out *v1beta1.Metal3MachineTemplateSpec, s conversion.Scope) error { - return autoConvert_v1alpha5_Metal3MachineTemplateSpec_To_v1beta1_Metal3MachineTemplateSpec(in, out, s) -} - -func autoConvert_v1beta1_Metal3MachineTemplateSpec_To_v1alpha5_Metal3MachineTemplateSpec(in *v1beta1.Metal3MachineTemplateSpec, out *Metal3MachineTemplateSpec, s conversion.Scope) error { - if err := Convert_v1beta1_Metal3MachineTemplateResource_To_v1alpha5_Metal3MachineTemplateResource(&in.Template, &out.Template, s); err != nil { - return err - } - out.NodeReuse = in.NodeReuse - return nil -} - -// Convert_v1beta1_Metal3MachineTemplateSpec_To_v1alpha5_Metal3MachineTemplateSpec is an autogenerated conversion function. -func Convert_v1beta1_Metal3MachineTemplateSpec_To_v1alpha5_Metal3MachineTemplateSpec(in *v1beta1.Metal3MachineTemplateSpec, out *Metal3MachineTemplateSpec, s conversion.Scope) error { - return autoConvert_v1beta1_Metal3MachineTemplateSpec_To_v1alpha5_Metal3MachineTemplateSpec(in, out, s) -} - -func autoConvert_v1alpha5_Metal3Remediation_To_v1beta1_Metal3Remediation(in *Metal3Remediation, out *v1beta1.Metal3Remediation, s conversion.Scope) error { - out.ObjectMeta = in.ObjectMeta - if err := Convert_v1alpha5_Metal3RemediationSpec_To_v1beta1_Metal3RemediationSpec(&in.Spec, &out.Spec, s); err != nil { - return err - } - if err := Convert_v1alpha5_Metal3RemediationStatus_To_v1beta1_Metal3RemediationStatus(&in.Status, &out.Status, s); err != nil { - return err - } - return nil -} - -// Convert_v1alpha5_Metal3Remediation_To_v1beta1_Metal3Remediation is an autogenerated conversion function. -func Convert_v1alpha5_Metal3Remediation_To_v1beta1_Metal3Remediation(in *Metal3Remediation, out *v1beta1.Metal3Remediation, s conversion.Scope) error { - return autoConvert_v1alpha5_Metal3Remediation_To_v1beta1_Metal3Remediation(in, out, s) -} - -func autoConvert_v1beta1_Metal3Remediation_To_v1alpha5_Metal3Remediation(in *v1beta1.Metal3Remediation, out *Metal3Remediation, s conversion.Scope) error { - out.ObjectMeta = in.ObjectMeta - if err := Convert_v1beta1_Metal3RemediationSpec_To_v1alpha5_Metal3RemediationSpec(&in.Spec, &out.Spec, s); err != nil { - return err - } - if err := Convert_v1beta1_Metal3RemediationStatus_To_v1alpha5_Metal3RemediationStatus(&in.Status, &out.Status, s); err != nil { - return err - } - return nil -} - -// Convert_v1beta1_Metal3Remediation_To_v1alpha5_Metal3Remediation is an autogenerated conversion function. -func Convert_v1beta1_Metal3Remediation_To_v1alpha5_Metal3Remediation(in *v1beta1.Metal3Remediation, out *Metal3Remediation, s conversion.Scope) error { - return autoConvert_v1beta1_Metal3Remediation_To_v1alpha5_Metal3Remediation(in, out, s) -} - -func autoConvert_v1alpha5_Metal3RemediationList_To_v1beta1_Metal3RemediationList(in *Metal3RemediationList, out *v1beta1.Metal3RemediationList, s conversion.Scope) error { - out.ListMeta = in.ListMeta - out.Items = *(*[]v1beta1.Metal3Remediation)(unsafe.Pointer(&in.Items)) - return nil -} - -// Convert_v1alpha5_Metal3RemediationList_To_v1beta1_Metal3RemediationList is an autogenerated conversion function. -func Convert_v1alpha5_Metal3RemediationList_To_v1beta1_Metal3RemediationList(in *Metal3RemediationList, out *v1beta1.Metal3RemediationList, s conversion.Scope) error { - return autoConvert_v1alpha5_Metal3RemediationList_To_v1beta1_Metal3RemediationList(in, out, s) -} - -func autoConvert_v1beta1_Metal3RemediationList_To_v1alpha5_Metal3RemediationList(in *v1beta1.Metal3RemediationList, out *Metal3RemediationList, s conversion.Scope) error { - out.ListMeta = in.ListMeta - out.Items = *(*[]Metal3Remediation)(unsafe.Pointer(&in.Items)) - return nil -} - -// Convert_v1beta1_Metal3RemediationList_To_v1alpha5_Metal3RemediationList is an autogenerated conversion function. -func Convert_v1beta1_Metal3RemediationList_To_v1alpha5_Metal3RemediationList(in *v1beta1.Metal3RemediationList, out *Metal3RemediationList, s conversion.Scope) error { - return autoConvert_v1beta1_Metal3RemediationList_To_v1alpha5_Metal3RemediationList(in, out, s) -} - -func autoConvert_v1alpha5_Metal3RemediationSpec_To_v1beta1_Metal3RemediationSpec(in *Metal3RemediationSpec, out *v1beta1.Metal3RemediationSpec, s conversion.Scope) error { - out.Strategy = (*v1beta1.RemediationStrategy)(unsafe.Pointer(in.Strategy)) - return nil -} - -// Convert_v1alpha5_Metal3RemediationSpec_To_v1beta1_Metal3RemediationSpec is an autogenerated conversion function. -func Convert_v1alpha5_Metal3RemediationSpec_To_v1beta1_Metal3RemediationSpec(in *Metal3RemediationSpec, out *v1beta1.Metal3RemediationSpec, s conversion.Scope) error { - return autoConvert_v1alpha5_Metal3RemediationSpec_To_v1beta1_Metal3RemediationSpec(in, out, s) -} - -func autoConvert_v1beta1_Metal3RemediationSpec_To_v1alpha5_Metal3RemediationSpec(in *v1beta1.Metal3RemediationSpec, out *Metal3RemediationSpec, s conversion.Scope) error { - out.Strategy = (*RemediationStrategy)(unsafe.Pointer(in.Strategy)) - return nil -} - -// Convert_v1beta1_Metal3RemediationSpec_To_v1alpha5_Metal3RemediationSpec is an autogenerated conversion function. -func Convert_v1beta1_Metal3RemediationSpec_To_v1alpha5_Metal3RemediationSpec(in *v1beta1.Metal3RemediationSpec, out *Metal3RemediationSpec, s conversion.Scope) error { - return autoConvert_v1beta1_Metal3RemediationSpec_To_v1alpha5_Metal3RemediationSpec(in, out, s) -} - -func autoConvert_v1alpha5_Metal3RemediationStatus_To_v1beta1_Metal3RemediationStatus(in *Metal3RemediationStatus, out *v1beta1.Metal3RemediationStatus, s conversion.Scope) error { - out.Phase = in.Phase - out.RetryCount = in.RetryCount - out.LastRemediated = (*v1.Time)(unsafe.Pointer(in.LastRemediated)) - return nil -} - -// Convert_v1alpha5_Metal3RemediationStatus_To_v1beta1_Metal3RemediationStatus is an autogenerated conversion function. -func Convert_v1alpha5_Metal3RemediationStatus_To_v1beta1_Metal3RemediationStatus(in *Metal3RemediationStatus, out *v1beta1.Metal3RemediationStatus, s conversion.Scope) error { - return autoConvert_v1alpha5_Metal3RemediationStatus_To_v1beta1_Metal3RemediationStatus(in, out, s) -} - -func autoConvert_v1beta1_Metal3RemediationStatus_To_v1alpha5_Metal3RemediationStatus(in *v1beta1.Metal3RemediationStatus, out *Metal3RemediationStatus, s conversion.Scope) error { - out.Phase = in.Phase - out.RetryCount = in.RetryCount - out.LastRemediated = (*v1.Time)(unsafe.Pointer(in.LastRemediated)) - return nil -} - -// Convert_v1beta1_Metal3RemediationStatus_To_v1alpha5_Metal3RemediationStatus is an autogenerated conversion function. -func Convert_v1beta1_Metal3RemediationStatus_To_v1alpha5_Metal3RemediationStatus(in *v1beta1.Metal3RemediationStatus, out *Metal3RemediationStatus, s conversion.Scope) error { - return autoConvert_v1beta1_Metal3RemediationStatus_To_v1alpha5_Metal3RemediationStatus(in, out, s) -} - -func autoConvert_v1alpha5_Metal3RemediationTemplate_To_v1beta1_Metal3RemediationTemplate(in *Metal3RemediationTemplate, out *v1beta1.Metal3RemediationTemplate, s conversion.Scope) error { - out.ObjectMeta = in.ObjectMeta - if err := Convert_v1alpha5_Metal3RemediationTemplateSpec_To_v1beta1_Metal3RemediationTemplateSpec(&in.Spec, &out.Spec, s); err != nil { - return err - } - if err := Convert_v1alpha5_Metal3RemediationTemplateStatus_To_v1beta1_Metal3RemediationTemplateStatus(&in.Status, &out.Status, s); err != nil { - return err - } - return nil -} - -// Convert_v1alpha5_Metal3RemediationTemplate_To_v1beta1_Metal3RemediationTemplate is an autogenerated conversion function. -func Convert_v1alpha5_Metal3RemediationTemplate_To_v1beta1_Metal3RemediationTemplate(in *Metal3RemediationTemplate, out *v1beta1.Metal3RemediationTemplate, s conversion.Scope) error { - return autoConvert_v1alpha5_Metal3RemediationTemplate_To_v1beta1_Metal3RemediationTemplate(in, out, s) -} - -func autoConvert_v1beta1_Metal3RemediationTemplate_To_v1alpha5_Metal3RemediationTemplate(in *v1beta1.Metal3RemediationTemplate, out *Metal3RemediationTemplate, s conversion.Scope) error { - out.ObjectMeta = in.ObjectMeta - if err := Convert_v1beta1_Metal3RemediationTemplateSpec_To_v1alpha5_Metal3RemediationTemplateSpec(&in.Spec, &out.Spec, s); err != nil { - return err - } - if err := Convert_v1beta1_Metal3RemediationTemplateStatus_To_v1alpha5_Metal3RemediationTemplateStatus(&in.Status, &out.Status, s); err != nil { - return err - } - return nil -} - -// Convert_v1beta1_Metal3RemediationTemplate_To_v1alpha5_Metal3RemediationTemplate is an autogenerated conversion function. -func Convert_v1beta1_Metal3RemediationTemplate_To_v1alpha5_Metal3RemediationTemplate(in *v1beta1.Metal3RemediationTemplate, out *Metal3RemediationTemplate, s conversion.Scope) error { - return autoConvert_v1beta1_Metal3RemediationTemplate_To_v1alpha5_Metal3RemediationTemplate(in, out, s) -} - -func autoConvert_v1alpha5_Metal3RemediationTemplateList_To_v1beta1_Metal3RemediationTemplateList(in *Metal3RemediationTemplateList, out *v1beta1.Metal3RemediationTemplateList, s conversion.Scope) error { - out.ListMeta = in.ListMeta - out.Items = *(*[]v1beta1.Metal3RemediationTemplate)(unsafe.Pointer(&in.Items)) - return nil -} - -// Convert_v1alpha5_Metal3RemediationTemplateList_To_v1beta1_Metal3RemediationTemplateList is an autogenerated conversion function. -func Convert_v1alpha5_Metal3RemediationTemplateList_To_v1beta1_Metal3RemediationTemplateList(in *Metal3RemediationTemplateList, out *v1beta1.Metal3RemediationTemplateList, s conversion.Scope) error { - return autoConvert_v1alpha5_Metal3RemediationTemplateList_To_v1beta1_Metal3RemediationTemplateList(in, out, s) -} - -func autoConvert_v1beta1_Metal3RemediationTemplateList_To_v1alpha5_Metal3RemediationTemplateList(in *v1beta1.Metal3RemediationTemplateList, out *Metal3RemediationTemplateList, s conversion.Scope) error { - out.ListMeta = in.ListMeta - out.Items = *(*[]Metal3RemediationTemplate)(unsafe.Pointer(&in.Items)) - return nil -} - -// Convert_v1beta1_Metal3RemediationTemplateList_To_v1alpha5_Metal3RemediationTemplateList is an autogenerated conversion function. -func Convert_v1beta1_Metal3RemediationTemplateList_To_v1alpha5_Metal3RemediationTemplateList(in *v1beta1.Metal3RemediationTemplateList, out *Metal3RemediationTemplateList, s conversion.Scope) error { - return autoConvert_v1beta1_Metal3RemediationTemplateList_To_v1alpha5_Metal3RemediationTemplateList(in, out, s) -} - -func autoConvert_v1alpha5_Metal3RemediationTemplateResource_To_v1beta1_Metal3RemediationTemplateResource(in *Metal3RemediationTemplateResource, out *v1beta1.Metal3RemediationTemplateResource, s conversion.Scope) error { - if err := Convert_v1alpha5_Metal3RemediationSpec_To_v1beta1_Metal3RemediationSpec(&in.Spec, &out.Spec, s); err != nil { - return err - } - return nil -} - -// Convert_v1alpha5_Metal3RemediationTemplateResource_To_v1beta1_Metal3RemediationTemplateResource is an autogenerated conversion function. -func Convert_v1alpha5_Metal3RemediationTemplateResource_To_v1beta1_Metal3RemediationTemplateResource(in *Metal3RemediationTemplateResource, out *v1beta1.Metal3RemediationTemplateResource, s conversion.Scope) error { - return autoConvert_v1alpha5_Metal3RemediationTemplateResource_To_v1beta1_Metal3RemediationTemplateResource(in, out, s) -} - -func autoConvert_v1beta1_Metal3RemediationTemplateResource_To_v1alpha5_Metal3RemediationTemplateResource(in *v1beta1.Metal3RemediationTemplateResource, out *Metal3RemediationTemplateResource, s conversion.Scope) error { - if err := Convert_v1beta1_Metal3RemediationSpec_To_v1alpha5_Metal3RemediationSpec(&in.Spec, &out.Spec, s); err != nil { - return err - } - return nil -} - -// Convert_v1beta1_Metal3RemediationTemplateResource_To_v1alpha5_Metal3RemediationTemplateResource is an autogenerated conversion function. -func Convert_v1beta1_Metal3RemediationTemplateResource_To_v1alpha5_Metal3RemediationTemplateResource(in *v1beta1.Metal3RemediationTemplateResource, out *Metal3RemediationTemplateResource, s conversion.Scope) error { - return autoConvert_v1beta1_Metal3RemediationTemplateResource_To_v1alpha5_Metal3RemediationTemplateResource(in, out, s) -} - -func autoConvert_v1alpha5_Metal3RemediationTemplateSpec_To_v1beta1_Metal3RemediationTemplateSpec(in *Metal3RemediationTemplateSpec, out *v1beta1.Metal3RemediationTemplateSpec, s conversion.Scope) error { - if err := Convert_v1alpha5_Metal3RemediationTemplateResource_To_v1beta1_Metal3RemediationTemplateResource(&in.Template, &out.Template, s); err != nil { - return err - } - return nil -} - -// Convert_v1alpha5_Metal3RemediationTemplateSpec_To_v1beta1_Metal3RemediationTemplateSpec is an autogenerated conversion function. -func Convert_v1alpha5_Metal3RemediationTemplateSpec_To_v1beta1_Metal3RemediationTemplateSpec(in *Metal3RemediationTemplateSpec, out *v1beta1.Metal3RemediationTemplateSpec, s conversion.Scope) error { - return autoConvert_v1alpha5_Metal3RemediationTemplateSpec_To_v1beta1_Metal3RemediationTemplateSpec(in, out, s) -} - -func autoConvert_v1beta1_Metal3RemediationTemplateSpec_To_v1alpha5_Metal3RemediationTemplateSpec(in *v1beta1.Metal3RemediationTemplateSpec, out *Metal3RemediationTemplateSpec, s conversion.Scope) error { - if err := Convert_v1beta1_Metal3RemediationTemplateResource_To_v1alpha5_Metal3RemediationTemplateResource(&in.Template, &out.Template, s); err != nil { - return err - } - return nil -} - -// Convert_v1beta1_Metal3RemediationTemplateSpec_To_v1alpha5_Metal3RemediationTemplateSpec is an autogenerated conversion function. -func Convert_v1beta1_Metal3RemediationTemplateSpec_To_v1alpha5_Metal3RemediationTemplateSpec(in *v1beta1.Metal3RemediationTemplateSpec, out *Metal3RemediationTemplateSpec, s conversion.Scope) error { - return autoConvert_v1beta1_Metal3RemediationTemplateSpec_To_v1alpha5_Metal3RemediationTemplateSpec(in, out, s) -} - -func autoConvert_v1alpha5_Metal3RemediationTemplateStatus_To_v1beta1_Metal3RemediationTemplateStatus(in *Metal3RemediationTemplateStatus, out *v1beta1.Metal3RemediationTemplateStatus, s conversion.Scope) error { - if err := Convert_v1alpha5_Metal3RemediationStatus_To_v1beta1_Metal3RemediationStatus(&in.Status, &out.Status, s); err != nil { - return err - } - return nil -} - -// Convert_v1alpha5_Metal3RemediationTemplateStatus_To_v1beta1_Metal3RemediationTemplateStatus is an autogenerated conversion function. -func Convert_v1alpha5_Metal3RemediationTemplateStatus_To_v1beta1_Metal3RemediationTemplateStatus(in *Metal3RemediationTemplateStatus, out *v1beta1.Metal3RemediationTemplateStatus, s conversion.Scope) error { - return autoConvert_v1alpha5_Metal3RemediationTemplateStatus_To_v1beta1_Metal3RemediationTemplateStatus(in, out, s) -} - -func autoConvert_v1beta1_Metal3RemediationTemplateStatus_To_v1alpha5_Metal3RemediationTemplateStatus(in *v1beta1.Metal3RemediationTemplateStatus, out *Metal3RemediationTemplateStatus, s conversion.Scope) error { - if err := Convert_v1beta1_Metal3RemediationStatus_To_v1alpha5_Metal3RemediationStatus(&in.Status, &out.Status, s); err != nil { - return err - } - return nil -} - -// Convert_v1beta1_Metal3RemediationTemplateStatus_To_v1alpha5_Metal3RemediationTemplateStatus is an autogenerated conversion function. -func Convert_v1beta1_Metal3RemediationTemplateStatus_To_v1alpha5_Metal3RemediationTemplateStatus(in *v1beta1.Metal3RemediationTemplateStatus, out *Metal3RemediationTemplateStatus, s conversion.Scope) error { - return autoConvert_v1beta1_Metal3RemediationTemplateStatus_To_v1alpha5_Metal3RemediationTemplateStatus(in, out, s) -} - -func autoConvert_v1alpha5_NetworkData_To_v1beta1_NetworkData(in *NetworkData, out *v1beta1.NetworkData, s conversion.Scope) error { - if err := Convert_v1alpha5_NetworkDataLink_To_v1beta1_NetworkDataLink(&in.Links, &out.Links, s); err != nil { - return err - } - if err := Convert_v1alpha5_NetworkDataNetwork_To_v1beta1_NetworkDataNetwork(&in.Networks, &out.Networks, s); err != nil { - return err - } - if err := Convert_v1alpha5_NetworkDataService_To_v1beta1_NetworkDataService(&in.Services, &out.Services, s); err != nil { - return err - } - return nil -} - -// Convert_v1alpha5_NetworkData_To_v1beta1_NetworkData is an autogenerated conversion function. -func Convert_v1alpha5_NetworkData_To_v1beta1_NetworkData(in *NetworkData, out *v1beta1.NetworkData, s conversion.Scope) error { - return autoConvert_v1alpha5_NetworkData_To_v1beta1_NetworkData(in, out, s) -} - -func autoConvert_v1beta1_NetworkData_To_v1alpha5_NetworkData(in *v1beta1.NetworkData, out *NetworkData, s conversion.Scope) error { - if err := Convert_v1beta1_NetworkDataLink_To_v1alpha5_NetworkDataLink(&in.Links, &out.Links, s); err != nil { - return err - } - if err := Convert_v1beta1_NetworkDataNetwork_To_v1alpha5_NetworkDataNetwork(&in.Networks, &out.Networks, s); err != nil { - return err - } - if err := Convert_v1beta1_NetworkDataService_To_v1alpha5_NetworkDataService(&in.Services, &out.Services, s); err != nil { - return err - } - return nil -} - -// Convert_v1beta1_NetworkData_To_v1alpha5_NetworkData is an autogenerated conversion function. -func Convert_v1beta1_NetworkData_To_v1alpha5_NetworkData(in *v1beta1.NetworkData, out *NetworkData, s conversion.Scope) error { - return autoConvert_v1beta1_NetworkData_To_v1alpha5_NetworkData(in, out, s) -} - -func autoConvert_v1alpha5_NetworkDataIPv4_To_v1beta1_NetworkDataIPv4(in *NetworkDataIPv4, out *v1beta1.NetworkDataIPv4, s conversion.Scope) error { - out.ID = in.ID - out.Link = in.Link - out.IPAddressFromIPPool = in.IPAddressFromIPPool - out.Routes = *(*[]v1beta1.NetworkDataRoutev4)(unsafe.Pointer(&in.Routes)) - return nil -} - -// Convert_v1alpha5_NetworkDataIPv4_To_v1beta1_NetworkDataIPv4 is an autogenerated conversion function. -func Convert_v1alpha5_NetworkDataIPv4_To_v1beta1_NetworkDataIPv4(in *NetworkDataIPv4, out *v1beta1.NetworkDataIPv4, s conversion.Scope) error { - return autoConvert_v1alpha5_NetworkDataIPv4_To_v1beta1_NetworkDataIPv4(in, out, s) -} - -func autoConvert_v1beta1_NetworkDataIPv4_To_v1alpha5_NetworkDataIPv4(in *v1beta1.NetworkDataIPv4, out *NetworkDataIPv4, s conversion.Scope) error { - out.ID = in.ID - out.Link = in.Link - out.IPAddressFromIPPool = in.IPAddressFromIPPool - // WARNING: in.FromPoolRef requires manual conversion: does not exist in peer-type - out.Routes = *(*[]NetworkDataRoutev4)(unsafe.Pointer(&in.Routes)) - return nil -} - -func autoConvert_v1alpha5_NetworkDataIPv4DHCP_To_v1beta1_NetworkDataIPv4DHCP(in *NetworkDataIPv4DHCP, out *v1beta1.NetworkDataIPv4DHCP, s conversion.Scope) error { - out.ID = in.ID - out.Link = in.Link - out.Routes = *(*[]v1beta1.NetworkDataRoutev4)(unsafe.Pointer(&in.Routes)) - return nil -} - -// Convert_v1alpha5_NetworkDataIPv4DHCP_To_v1beta1_NetworkDataIPv4DHCP is an autogenerated conversion function. -func Convert_v1alpha5_NetworkDataIPv4DHCP_To_v1beta1_NetworkDataIPv4DHCP(in *NetworkDataIPv4DHCP, out *v1beta1.NetworkDataIPv4DHCP, s conversion.Scope) error { - return autoConvert_v1alpha5_NetworkDataIPv4DHCP_To_v1beta1_NetworkDataIPv4DHCP(in, out, s) -} - -func autoConvert_v1beta1_NetworkDataIPv4DHCP_To_v1alpha5_NetworkDataIPv4DHCP(in *v1beta1.NetworkDataIPv4DHCP, out *NetworkDataIPv4DHCP, s conversion.Scope) error { - out.ID = in.ID - out.Link = in.Link - out.Routes = *(*[]NetworkDataRoutev4)(unsafe.Pointer(&in.Routes)) - return nil -} - -// Convert_v1beta1_NetworkDataIPv4DHCP_To_v1alpha5_NetworkDataIPv4DHCP is an autogenerated conversion function. -func Convert_v1beta1_NetworkDataIPv4DHCP_To_v1alpha5_NetworkDataIPv4DHCP(in *v1beta1.NetworkDataIPv4DHCP, out *NetworkDataIPv4DHCP, s conversion.Scope) error { - return autoConvert_v1beta1_NetworkDataIPv4DHCP_To_v1alpha5_NetworkDataIPv4DHCP(in, out, s) -} - -func autoConvert_v1alpha5_NetworkDataIPv6_To_v1beta1_NetworkDataIPv6(in *NetworkDataIPv6, out *v1beta1.NetworkDataIPv6, s conversion.Scope) error { - out.ID = in.ID - out.Link = in.Link - out.IPAddressFromIPPool = in.IPAddressFromIPPool - out.Routes = *(*[]v1beta1.NetworkDataRoutev6)(unsafe.Pointer(&in.Routes)) - return nil -} - -// Convert_v1alpha5_NetworkDataIPv6_To_v1beta1_NetworkDataIPv6 is an autogenerated conversion function. -func Convert_v1alpha5_NetworkDataIPv6_To_v1beta1_NetworkDataIPv6(in *NetworkDataIPv6, out *v1beta1.NetworkDataIPv6, s conversion.Scope) error { - return autoConvert_v1alpha5_NetworkDataIPv6_To_v1beta1_NetworkDataIPv6(in, out, s) -} - -func autoConvert_v1beta1_NetworkDataIPv6_To_v1alpha5_NetworkDataIPv6(in *v1beta1.NetworkDataIPv6, out *NetworkDataIPv6, s conversion.Scope) error { - out.ID = in.ID - out.Link = in.Link - out.IPAddressFromIPPool = in.IPAddressFromIPPool - // WARNING: in.FromPoolRef requires manual conversion: does not exist in peer-type - out.Routes = *(*[]NetworkDataRoutev6)(unsafe.Pointer(&in.Routes)) - return nil -} - -func autoConvert_v1alpha5_NetworkDataIPv6DHCP_To_v1beta1_NetworkDataIPv6DHCP(in *NetworkDataIPv6DHCP, out *v1beta1.NetworkDataIPv6DHCP, s conversion.Scope) error { - out.ID = in.ID - out.Link = in.Link - out.Routes = *(*[]v1beta1.NetworkDataRoutev6)(unsafe.Pointer(&in.Routes)) - return nil -} - -// Convert_v1alpha5_NetworkDataIPv6DHCP_To_v1beta1_NetworkDataIPv6DHCP is an autogenerated conversion function. -func Convert_v1alpha5_NetworkDataIPv6DHCP_To_v1beta1_NetworkDataIPv6DHCP(in *NetworkDataIPv6DHCP, out *v1beta1.NetworkDataIPv6DHCP, s conversion.Scope) error { - return autoConvert_v1alpha5_NetworkDataIPv6DHCP_To_v1beta1_NetworkDataIPv6DHCP(in, out, s) -} - -func autoConvert_v1beta1_NetworkDataIPv6DHCP_To_v1alpha5_NetworkDataIPv6DHCP(in *v1beta1.NetworkDataIPv6DHCP, out *NetworkDataIPv6DHCP, s conversion.Scope) error { - out.ID = in.ID - out.Link = in.Link - out.Routes = *(*[]NetworkDataRoutev6)(unsafe.Pointer(&in.Routes)) - return nil -} - -// Convert_v1beta1_NetworkDataIPv6DHCP_To_v1alpha5_NetworkDataIPv6DHCP is an autogenerated conversion function. -func Convert_v1beta1_NetworkDataIPv6DHCP_To_v1alpha5_NetworkDataIPv6DHCP(in *v1beta1.NetworkDataIPv6DHCP, out *NetworkDataIPv6DHCP, s conversion.Scope) error { - return autoConvert_v1beta1_NetworkDataIPv6DHCP_To_v1alpha5_NetworkDataIPv6DHCP(in, out, s) -} - -func autoConvert_v1alpha5_NetworkDataLink_To_v1beta1_NetworkDataLink(in *NetworkDataLink, out *v1beta1.NetworkDataLink, s conversion.Scope) error { - if in.Ethernets != nil { - in, out := &in.Ethernets, &out.Ethernets - *out = make([]v1beta1.NetworkDataLinkEthernet, len(*in)) - for i := range *in { - if err := Convert_v1alpha5_NetworkDataLinkEthernet_To_v1beta1_NetworkDataLinkEthernet(&(*in)[i], &(*out)[i], s); err != nil { - return err - } - } - } else { - out.Ethernets = nil - } - if in.Bonds != nil { - in, out := &in.Bonds, &out.Bonds - *out = make([]v1beta1.NetworkDataLinkBond, len(*in)) - for i := range *in { - if err := Convert_v1alpha5_NetworkDataLinkBond_To_v1beta1_NetworkDataLinkBond(&(*in)[i], &(*out)[i], s); err != nil { - return err - } - } - } else { - out.Bonds = nil - } - if in.Vlans != nil { - in, out := &in.Vlans, &out.Vlans - *out = make([]v1beta1.NetworkDataLinkVlan, len(*in)) - for i := range *in { - if err := Convert_v1alpha5_NetworkDataLinkVlan_To_v1beta1_NetworkDataLinkVlan(&(*in)[i], &(*out)[i], s); err != nil { - return err - } - } - } else { - out.Vlans = nil - } - return nil -} - -// Convert_v1alpha5_NetworkDataLink_To_v1beta1_NetworkDataLink is an autogenerated conversion function. -func Convert_v1alpha5_NetworkDataLink_To_v1beta1_NetworkDataLink(in *NetworkDataLink, out *v1beta1.NetworkDataLink, s conversion.Scope) error { - return autoConvert_v1alpha5_NetworkDataLink_To_v1beta1_NetworkDataLink(in, out, s) -} - -func autoConvert_v1beta1_NetworkDataLink_To_v1alpha5_NetworkDataLink(in *v1beta1.NetworkDataLink, out *NetworkDataLink, s conversion.Scope) error { - if in.Ethernets != nil { - in, out := &in.Ethernets, &out.Ethernets - *out = make([]NetworkDataLinkEthernet, len(*in)) - for i := range *in { - if err := Convert_v1beta1_NetworkDataLinkEthernet_To_v1alpha5_NetworkDataLinkEthernet(&(*in)[i], &(*out)[i], s); err != nil { - return err - } - } - } else { - out.Ethernets = nil - } - if in.Bonds != nil { - in, out := &in.Bonds, &out.Bonds - *out = make([]NetworkDataLinkBond, len(*in)) - for i := range *in { - if err := Convert_v1beta1_NetworkDataLinkBond_To_v1alpha5_NetworkDataLinkBond(&(*in)[i], &(*out)[i], s); err != nil { - return err - } - } - } else { - out.Bonds = nil - } - if in.Vlans != nil { - in, out := &in.Vlans, &out.Vlans - *out = make([]NetworkDataLinkVlan, len(*in)) - for i := range *in { - if err := Convert_v1beta1_NetworkDataLinkVlan_To_v1alpha5_NetworkDataLinkVlan(&(*in)[i], &(*out)[i], s); err != nil { - return err - } - } - } else { - out.Vlans = nil - } - return nil -} - -// Convert_v1beta1_NetworkDataLink_To_v1alpha5_NetworkDataLink is an autogenerated conversion function. -func Convert_v1beta1_NetworkDataLink_To_v1alpha5_NetworkDataLink(in *v1beta1.NetworkDataLink, out *NetworkDataLink, s conversion.Scope) error { - return autoConvert_v1beta1_NetworkDataLink_To_v1alpha5_NetworkDataLink(in, out, s) -} - -func autoConvert_v1alpha5_NetworkDataLinkBond_To_v1beta1_NetworkDataLinkBond(in *NetworkDataLinkBond, out *v1beta1.NetworkDataLinkBond, s conversion.Scope) error { - out.BondMode = in.BondMode - out.Id = in.Id - out.MTU = in.MTU - if in.MACAddress != nil { - in, out := &in.MACAddress, &out.MACAddress - *out = new(v1beta1.NetworkLinkEthernetMac) - if err := Convert_v1alpha5_NetworkLinkEthernetMac_To_v1beta1_NetworkLinkEthernetMac(*in, *out, s); err != nil { - return err - } - } else { - out.MACAddress = nil - } - out.BondLinks = *(*[]string)(unsafe.Pointer(&in.BondLinks)) - return nil -} - -// Convert_v1alpha5_NetworkDataLinkBond_To_v1beta1_NetworkDataLinkBond is an autogenerated conversion function. -func Convert_v1alpha5_NetworkDataLinkBond_To_v1beta1_NetworkDataLinkBond(in *NetworkDataLinkBond, out *v1beta1.NetworkDataLinkBond, s conversion.Scope) error { - return autoConvert_v1alpha5_NetworkDataLinkBond_To_v1beta1_NetworkDataLinkBond(in, out, s) -} - -func autoConvert_v1beta1_NetworkDataLinkBond_To_v1alpha5_NetworkDataLinkBond(in *v1beta1.NetworkDataLinkBond, out *NetworkDataLinkBond, s conversion.Scope) error { - out.BondMode = in.BondMode - // WARNING: in.BondXmitHashPolicy requires manual conversion: does not exist in peer-type - out.Id = in.Id - out.MTU = in.MTU - if in.MACAddress != nil { - in, out := &in.MACAddress, &out.MACAddress - *out = new(NetworkLinkEthernetMac) - if err := Convert_v1beta1_NetworkLinkEthernetMac_To_v1alpha5_NetworkLinkEthernetMac(*in, *out, s); err != nil { - return err - } - } else { - out.MACAddress = nil - } - out.BondLinks = *(*[]string)(unsafe.Pointer(&in.BondLinks)) - return nil -} - -func autoConvert_v1alpha5_NetworkDataLinkEthernet_To_v1beta1_NetworkDataLinkEthernet(in *NetworkDataLinkEthernet, out *v1beta1.NetworkDataLinkEthernet, s conversion.Scope) error { - out.Type = in.Type - out.Id = in.Id - out.MTU = in.MTU - if in.MACAddress != nil { - in, out := &in.MACAddress, &out.MACAddress - *out = new(v1beta1.NetworkLinkEthernetMac) - if err := Convert_v1alpha5_NetworkLinkEthernetMac_To_v1beta1_NetworkLinkEthernetMac(*in, *out, s); err != nil { - return err - } - } else { - out.MACAddress = nil - } - return nil -} - -// Convert_v1alpha5_NetworkDataLinkEthernet_To_v1beta1_NetworkDataLinkEthernet is an autogenerated conversion function. -func Convert_v1alpha5_NetworkDataLinkEthernet_To_v1beta1_NetworkDataLinkEthernet(in *NetworkDataLinkEthernet, out *v1beta1.NetworkDataLinkEthernet, s conversion.Scope) error { - return autoConvert_v1alpha5_NetworkDataLinkEthernet_To_v1beta1_NetworkDataLinkEthernet(in, out, s) -} - -func autoConvert_v1beta1_NetworkDataLinkEthernet_To_v1alpha5_NetworkDataLinkEthernet(in *v1beta1.NetworkDataLinkEthernet, out *NetworkDataLinkEthernet, s conversion.Scope) error { - out.Type = in.Type - out.Id = in.Id - out.MTU = in.MTU - if in.MACAddress != nil { - in, out := &in.MACAddress, &out.MACAddress - *out = new(NetworkLinkEthernetMac) - if err := Convert_v1beta1_NetworkLinkEthernetMac_To_v1alpha5_NetworkLinkEthernetMac(*in, *out, s); err != nil { - return err - } - } else { - out.MACAddress = nil - } - return nil -} - -// Convert_v1beta1_NetworkDataLinkEthernet_To_v1alpha5_NetworkDataLinkEthernet is an autogenerated conversion function. -func Convert_v1beta1_NetworkDataLinkEthernet_To_v1alpha5_NetworkDataLinkEthernet(in *v1beta1.NetworkDataLinkEthernet, out *NetworkDataLinkEthernet, s conversion.Scope) error { - return autoConvert_v1beta1_NetworkDataLinkEthernet_To_v1alpha5_NetworkDataLinkEthernet(in, out, s) -} - -func autoConvert_v1alpha5_NetworkDataLinkVlan_To_v1beta1_NetworkDataLinkVlan(in *NetworkDataLinkVlan, out *v1beta1.NetworkDataLinkVlan, s conversion.Scope) error { - out.VlanID = in.VlanID - out.Id = in.Id - out.MTU = in.MTU - if in.MACAddress != nil { - in, out := &in.MACAddress, &out.MACAddress - *out = new(v1beta1.NetworkLinkEthernetMac) - if err := Convert_v1alpha5_NetworkLinkEthernetMac_To_v1beta1_NetworkLinkEthernetMac(*in, *out, s); err != nil { - return err - } - } else { - out.MACAddress = nil - } - out.VlanLink = in.VlanLink - return nil -} - -// Convert_v1alpha5_NetworkDataLinkVlan_To_v1beta1_NetworkDataLinkVlan is an autogenerated conversion function. -func Convert_v1alpha5_NetworkDataLinkVlan_To_v1beta1_NetworkDataLinkVlan(in *NetworkDataLinkVlan, out *v1beta1.NetworkDataLinkVlan, s conversion.Scope) error { - return autoConvert_v1alpha5_NetworkDataLinkVlan_To_v1beta1_NetworkDataLinkVlan(in, out, s) -} - -func autoConvert_v1beta1_NetworkDataLinkVlan_To_v1alpha5_NetworkDataLinkVlan(in *v1beta1.NetworkDataLinkVlan, out *NetworkDataLinkVlan, s conversion.Scope) error { - out.VlanID = in.VlanID - out.Id = in.Id - out.MTU = in.MTU - if in.MACAddress != nil { - in, out := &in.MACAddress, &out.MACAddress - *out = new(NetworkLinkEthernetMac) - if err := Convert_v1beta1_NetworkLinkEthernetMac_To_v1alpha5_NetworkLinkEthernetMac(*in, *out, s); err != nil { - return err - } - } else { - out.MACAddress = nil - } - out.VlanLink = in.VlanLink - return nil -} - -// Convert_v1beta1_NetworkDataLinkVlan_To_v1alpha5_NetworkDataLinkVlan is an autogenerated conversion function. -func Convert_v1beta1_NetworkDataLinkVlan_To_v1alpha5_NetworkDataLinkVlan(in *v1beta1.NetworkDataLinkVlan, out *NetworkDataLinkVlan, s conversion.Scope) error { - return autoConvert_v1beta1_NetworkDataLinkVlan_To_v1alpha5_NetworkDataLinkVlan(in, out, s) -} - -func autoConvert_v1alpha5_NetworkDataNetwork_To_v1beta1_NetworkDataNetwork(in *NetworkDataNetwork, out *v1beta1.NetworkDataNetwork, s conversion.Scope) error { - if in.IPv4 != nil { - in, out := &in.IPv4, &out.IPv4 - *out = make([]v1beta1.NetworkDataIPv4, len(*in)) - for i := range *in { - if err := Convert_v1alpha5_NetworkDataIPv4_To_v1beta1_NetworkDataIPv4(&(*in)[i], &(*out)[i], s); err != nil { - return err - } - } - } else { - out.IPv4 = nil - } - if in.IPv6 != nil { - in, out := &in.IPv6, &out.IPv6 - *out = make([]v1beta1.NetworkDataIPv6, len(*in)) - for i := range *in { - if err := Convert_v1alpha5_NetworkDataIPv6_To_v1beta1_NetworkDataIPv6(&(*in)[i], &(*out)[i], s); err != nil { - return err - } - } - } else { - out.IPv6 = nil - } - out.IPv4DHCP = *(*[]v1beta1.NetworkDataIPv4DHCP)(unsafe.Pointer(&in.IPv4DHCP)) - out.IPv6DHCP = *(*[]v1beta1.NetworkDataIPv6DHCP)(unsafe.Pointer(&in.IPv6DHCP)) - out.IPv6SLAAC = *(*[]v1beta1.NetworkDataIPv6DHCP)(unsafe.Pointer(&in.IPv6SLAAC)) - return nil -} - -// Convert_v1alpha5_NetworkDataNetwork_To_v1beta1_NetworkDataNetwork is an autogenerated conversion function. -func Convert_v1alpha5_NetworkDataNetwork_To_v1beta1_NetworkDataNetwork(in *NetworkDataNetwork, out *v1beta1.NetworkDataNetwork, s conversion.Scope) error { - return autoConvert_v1alpha5_NetworkDataNetwork_To_v1beta1_NetworkDataNetwork(in, out, s) -} - -func autoConvert_v1beta1_NetworkDataNetwork_To_v1alpha5_NetworkDataNetwork(in *v1beta1.NetworkDataNetwork, out *NetworkDataNetwork, s conversion.Scope) error { - if in.IPv4 != nil { - in, out := &in.IPv4, &out.IPv4 - *out = make([]NetworkDataIPv4, len(*in)) - for i := range *in { - if err := Convert_v1beta1_NetworkDataIPv4_To_v1alpha5_NetworkDataIPv4(&(*in)[i], &(*out)[i], s); err != nil { - return err - } - } - } else { - out.IPv4 = nil - } - if in.IPv6 != nil { - in, out := &in.IPv6, &out.IPv6 - *out = make([]NetworkDataIPv6, len(*in)) - for i := range *in { - if err := Convert_v1beta1_NetworkDataIPv6_To_v1alpha5_NetworkDataIPv6(&(*in)[i], &(*out)[i], s); err != nil { - return err - } - } - } else { - out.IPv6 = nil - } - out.IPv4DHCP = *(*[]NetworkDataIPv4DHCP)(unsafe.Pointer(&in.IPv4DHCP)) - out.IPv6DHCP = *(*[]NetworkDataIPv6DHCP)(unsafe.Pointer(&in.IPv6DHCP)) - out.IPv6SLAAC = *(*[]NetworkDataIPv6DHCP)(unsafe.Pointer(&in.IPv6SLAAC)) - return nil -} - -// Convert_v1beta1_NetworkDataNetwork_To_v1alpha5_NetworkDataNetwork is an autogenerated conversion function. -func Convert_v1beta1_NetworkDataNetwork_To_v1alpha5_NetworkDataNetwork(in *v1beta1.NetworkDataNetwork, out *NetworkDataNetwork, s conversion.Scope) error { - return autoConvert_v1beta1_NetworkDataNetwork_To_v1alpha5_NetworkDataNetwork(in, out, s) -} - -func autoConvert_v1alpha5_NetworkDataRoutev4_To_v1beta1_NetworkDataRoutev4(in *NetworkDataRoutev4, out *v1beta1.NetworkDataRoutev4, s conversion.Scope) error { - out.Network = v1alpha1.IPAddressv4Str(in.Network) - out.Prefix = in.Prefix - if err := Convert_v1alpha5_NetworkGatewayv4_To_v1beta1_NetworkGatewayv4(&in.Gateway, &out.Gateway, s); err != nil { - return err - } - if err := Convert_v1alpha5_NetworkDataServicev4_To_v1beta1_NetworkDataServicev4(&in.Services, &out.Services, s); err != nil { - return err - } - return nil -} - -// Convert_v1alpha5_NetworkDataRoutev4_To_v1beta1_NetworkDataRoutev4 is an autogenerated conversion function. -func Convert_v1alpha5_NetworkDataRoutev4_To_v1beta1_NetworkDataRoutev4(in *NetworkDataRoutev4, out *v1beta1.NetworkDataRoutev4, s conversion.Scope) error { - return autoConvert_v1alpha5_NetworkDataRoutev4_To_v1beta1_NetworkDataRoutev4(in, out, s) -} - -func autoConvert_v1beta1_NetworkDataRoutev4_To_v1alpha5_NetworkDataRoutev4(in *v1beta1.NetworkDataRoutev4, out *NetworkDataRoutev4, s conversion.Scope) error { - out.Network = v1alpha1.IPAddressv4Str(in.Network) - out.Prefix = in.Prefix - if err := Convert_v1beta1_NetworkGatewayv4_To_v1alpha5_NetworkGatewayv4(&in.Gateway, &out.Gateway, s); err != nil { - return err - } - if err := Convert_v1beta1_NetworkDataServicev4_To_v1alpha5_NetworkDataServicev4(&in.Services, &out.Services, s); err != nil { - return err - } - return nil -} - -// Convert_v1beta1_NetworkDataRoutev4_To_v1alpha5_NetworkDataRoutev4 is an autogenerated conversion function. -func Convert_v1beta1_NetworkDataRoutev4_To_v1alpha5_NetworkDataRoutev4(in *v1beta1.NetworkDataRoutev4, out *NetworkDataRoutev4, s conversion.Scope) error { - return autoConvert_v1beta1_NetworkDataRoutev4_To_v1alpha5_NetworkDataRoutev4(in, out, s) -} - -func autoConvert_v1alpha5_NetworkDataRoutev6_To_v1beta1_NetworkDataRoutev6(in *NetworkDataRoutev6, out *v1beta1.NetworkDataRoutev6, s conversion.Scope) error { - out.Network = v1alpha1.IPAddressv6Str(in.Network) - out.Prefix = in.Prefix - if err := Convert_v1alpha5_NetworkGatewayv6_To_v1beta1_NetworkGatewayv6(&in.Gateway, &out.Gateway, s); err != nil { - return err - } - if err := Convert_v1alpha5_NetworkDataServicev6_To_v1beta1_NetworkDataServicev6(&in.Services, &out.Services, s); err != nil { - return err - } - return nil -} - -// Convert_v1alpha5_NetworkDataRoutev6_To_v1beta1_NetworkDataRoutev6 is an autogenerated conversion function. -func Convert_v1alpha5_NetworkDataRoutev6_To_v1beta1_NetworkDataRoutev6(in *NetworkDataRoutev6, out *v1beta1.NetworkDataRoutev6, s conversion.Scope) error { - return autoConvert_v1alpha5_NetworkDataRoutev6_To_v1beta1_NetworkDataRoutev6(in, out, s) -} - -func autoConvert_v1beta1_NetworkDataRoutev6_To_v1alpha5_NetworkDataRoutev6(in *v1beta1.NetworkDataRoutev6, out *NetworkDataRoutev6, s conversion.Scope) error { - out.Network = v1alpha1.IPAddressv6Str(in.Network) - out.Prefix = in.Prefix - if err := Convert_v1beta1_NetworkGatewayv6_To_v1alpha5_NetworkGatewayv6(&in.Gateway, &out.Gateway, s); err != nil { - return err - } - if err := Convert_v1beta1_NetworkDataServicev6_To_v1alpha5_NetworkDataServicev6(&in.Services, &out.Services, s); err != nil { - return err - } - return nil -} - -// Convert_v1beta1_NetworkDataRoutev6_To_v1alpha5_NetworkDataRoutev6 is an autogenerated conversion function. -func Convert_v1beta1_NetworkDataRoutev6_To_v1alpha5_NetworkDataRoutev6(in *v1beta1.NetworkDataRoutev6, out *NetworkDataRoutev6, s conversion.Scope) error { - return autoConvert_v1beta1_NetworkDataRoutev6_To_v1alpha5_NetworkDataRoutev6(in, out, s) -} - -func autoConvert_v1alpha5_NetworkDataService_To_v1beta1_NetworkDataService(in *NetworkDataService, out *v1beta1.NetworkDataService, s conversion.Scope) error { - out.DNS = *(*[]v1alpha1.IPAddressStr)(unsafe.Pointer(&in.DNS)) - out.DNSFromIPPool = (*string)(unsafe.Pointer(in.DNSFromIPPool)) - return nil -} - -// Convert_v1alpha5_NetworkDataService_To_v1beta1_NetworkDataService is an autogenerated conversion function. -func Convert_v1alpha5_NetworkDataService_To_v1beta1_NetworkDataService(in *NetworkDataService, out *v1beta1.NetworkDataService, s conversion.Scope) error { - return autoConvert_v1alpha5_NetworkDataService_To_v1beta1_NetworkDataService(in, out, s) -} - -func autoConvert_v1beta1_NetworkDataService_To_v1alpha5_NetworkDataService(in *v1beta1.NetworkDataService, out *NetworkDataService, s conversion.Scope) error { - out.DNS = *(*[]v1alpha1.IPAddressStr)(unsafe.Pointer(&in.DNS)) - out.DNSFromIPPool = (*string)(unsafe.Pointer(in.DNSFromIPPool)) - return nil -} - -// Convert_v1beta1_NetworkDataService_To_v1alpha5_NetworkDataService is an autogenerated conversion function. -func Convert_v1beta1_NetworkDataService_To_v1alpha5_NetworkDataService(in *v1beta1.NetworkDataService, out *NetworkDataService, s conversion.Scope) error { - return autoConvert_v1beta1_NetworkDataService_To_v1alpha5_NetworkDataService(in, out, s) -} - -func autoConvert_v1alpha5_NetworkDataServicev4_To_v1beta1_NetworkDataServicev4(in *NetworkDataServicev4, out *v1beta1.NetworkDataServicev4, s conversion.Scope) error { - out.DNS = *(*[]v1alpha1.IPAddressv4Str)(unsafe.Pointer(&in.DNS)) - out.DNSFromIPPool = (*string)(unsafe.Pointer(in.DNSFromIPPool)) - return nil -} - -// Convert_v1alpha5_NetworkDataServicev4_To_v1beta1_NetworkDataServicev4 is an autogenerated conversion function. -func Convert_v1alpha5_NetworkDataServicev4_To_v1beta1_NetworkDataServicev4(in *NetworkDataServicev4, out *v1beta1.NetworkDataServicev4, s conversion.Scope) error { - return autoConvert_v1alpha5_NetworkDataServicev4_To_v1beta1_NetworkDataServicev4(in, out, s) -} - -func autoConvert_v1beta1_NetworkDataServicev4_To_v1alpha5_NetworkDataServicev4(in *v1beta1.NetworkDataServicev4, out *NetworkDataServicev4, s conversion.Scope) error { - out.DNS = *(*[]v1alpha1.IPAddressv4Str)(unsafe.Pointer(&in.DNS)) - out.DNSFromIPPool = (*string)(unsafe.Pointer(in.DNSFromIPPool)) - return nil -} - -// Convert_v1beta1_NetworkDataServicev4_To_v1alpha5_NetworkDataServicev4 is an autogenerated conversion function. -func Convert_v1beta1_NetworkDataServicev4_To_v1alpha5_NetworkDataServicev4(in *v1beta1.NetworkDataServicev4, out *NetworkDataServicev4, s conversion.Scope) error { - return autoConvert_v1beta1_NetworkDataServicev4_To_v1alpha5_NetworkDataServicev4(in, out, s) -} - -func autoConvert_v1alpha5_NetworkDataServicev6_To_v1beta1_NetworkDataServicev6(in *NetworkDataServicev6, out *v1beta1.NetworkDataServicev6, s conversion.Scope) error { - out.DNS = *(*[]v1alpha1.IPAddressv6Str)(unsafe.Pointer(&in.DNS)) - out.DNSFromIPPool = (*string)(unsafe.Pointer(in.DNSFromIPPool)) - return nil -} - -// Convert_v1alpha5_NetworkDataServicev6_To_v1beta1_NetworkDataServicev6 is an autogenerated conversion function. -func Convert_v1alpha5_NetworkDataServicev6_To_v1beta1_NetworkDataServicev6(in *NetworkDataServicev6, out *v1beta1.NetworkDataServicev6, s conversion.Scope) error { - return autoConvert_v1alpha5_NetworkDataServicev6_To_v1beta1_NetworkDataServicev6(in, out, s) -} - -func autoConvert_v1beta1_NetworkDataServicev6_To_v1alpha5_NetworkDataServicev6(in *v1beta1.NetworkDataServicev6, out *NetworkDataServicev6, s conversion.Scope) error { - out.DNS = *(*[]v1alpha1.IPAddressv6Str)(unsafe.Pointer(&in.DNS)) - out.DNSFromIPPool = (*string)(unsafe.Pointer(in.DNSFromIPPool)) - return nil -} - -// Convert_v1beta1_NetworkDataServicev6_To_v1alpha5_NetworkDataServicev6 is an autogenerated conversion function. -func Convert_v1beta1_NetworkDataServicev6_To_v1alpha5_NetworkDataServicev6(in *v1beta1.NetworkDataServicev6, out *NetworkDataServicev6, s conversion.Scope) error { - return autoConvert_v1beta1_NetworkDataServicev6_To_v1alpha5_NetworkDataServicev6(in, out, s) -} - -func autoConvert_v1alpha5_NetworkGatewayv4_To_v1beta1_NetworkGatewayv4(in *NetworkGatewayv4, out *v1beta1.NetworkGatewayv4, s conversion.Scope) error { - out.String = (*v1alpha1.IPAddressv4Str)(unsafe.Pointer(in.String)) - out.FromIPPool = (*string)(unsafe.Pointer(in.FromIPPool)) - return nil -} - -// Convert_v1alpha5_NetworkGatewayv4_To_v1beta1_NetworkGatewayv4 is an autogenerated conversion function. -func Convert_v1alpha5_NetworkGatewayv4_To_v1beta1_NetworkGatewayv4(in *NetworkGatewayv4, out *v1beta1.NetworkGatewayv4, s conversion.Scope) error { - return autoConvert_v1alpha5_NetworkGatewayv4_To_v1beta1_NetworkGatewayv4(in, out, s) -} - -func autoConvert_v1beta1_NetworkGatewayv4_To_v1alpha5_NetworkGatewayv4(in *v1beta1.NetworkGatewayv4, out *NetworkGatewayv4, s conversion.Scope) error { - out.String = (*v1alpha1.IPAddressv4Str)(unsafe.Pointer(in.String)) - out.FromIPPool = (*string)(unsafe.Pointer(in.FromIPPool)) - return nil -} - -// Convert_v1beta1_NetworkGatewayv4_To_v1alpha5_NetworkGatewayv4 is an autogenerated conversion function. -func Convert_v1beta1_NetworkGatewayv4_To_v1alpha5_NetworkGatewayv4(in *v1beta1.NetworkGatewayv4, out *NetworkGatewayv4, s conversion.Scope) error { - return autoConvert_v1beta1_NetworkGatewayv4_To_v1alpha5_NetworkGatewayv4(in, out, s) -} - -func autoConvert_v1alpha5_NetworkGatewayv6_To_v1beta1_NetworkGatewayv6(in *NetworkGatewayv6, out *v1beta1.NetworkGatewayv6, s conversion.Scope) error { - out.String = (*v1alpha1.IPAddressv6Str)(unsafe.Pointer(in.String)) - out.FromIPPool = (*string)(unsafe.Pointer(in.FromIPPool)) - return nil -} - -// Convert_v1alpha5_NetworkGatewayv6_To_v1beta1_NetworkGatewayv6 is an autogenerated conversion function. -func Convert_v1alpha5_NetworkGatewayv6_To_v1beta1_NetworkGatewayv6(in *NetworkGatewayv6, out *v1beta1.NetworkGatewayv6, s conversion.Scope) error { - return autoConvert_v1alpha5_NetworkGatewayv6_To_v1beta1_NetworkGatewayv6(in, out, s) -} - -func autoConvert_v1beta1_NetworkGatewayv6_To_v1alpha5_NetworkGatewayv6(in *v1beta1.NetworkGatewayv6, out *NetworkGatewayv6, s conversion.Scope) error { - out.String = (*v1alpha1.IPAddressv6Str)(unsafe.Pointer(in.String)) - out.FromIPPool = (*string)(unsafe.Pointer(in.FromIPPool)) - return nil -} - -// Convert_v1beta1_NetworkGatewayv6_To_v1alpha5_NetworkGatewayv6 is an autogenerated conversion function. -func Convert_v1beta1_NetworkGatewayv6_To_v1alpha5_NetworkGatewayv6(in *v1beta1.NetworkGatewayv6, out *NetworkGatewayv6, s conversion.Scope) error { - return autoConvert_v1beta1_NetworkGatewayv6_To_v1alpha5_NetworkGatewayv6(in, out, s) -} - -func autoConvert_v1alpha5_NetworkLinkEthernetMac_To_v1beta1_NetworkLinkEthernetMac(in *NetworkLinkEthernetMac, out *v1beta1.NetworkLinkEthernetMac, s conversion.Scope) error { - out.String = (*string)(unsafe.Pointer(in.String)) - out.FromHostInterface = (*string)(unsafe.Pointer(in.FromHostInterface)) - return nil -} - -// Convert_v1alpha5_NetworkLinkEthernetMac_To_v1beta1_NetworkLinkEthernetMac is an autogenerated conversion function. -func Convert_v1alpha5_NetworkLinkEthernetMac_To_v1beta1_NetworkLinkEthernetMac(in *NetworkLinkEthernetMac, out *v1beta1.NetworkLinkEthernetMac, s conversion.Scope) error { - return autoConvert_v1alpha5_NetworkLinkEthernetMac_To_v1beta1_NetworkLinkEthernetMac(in, out, s) -} - -func autoConvert_v1beta1_NetworkLinkEthernetMac_To_v1alpha5_NetworkLinkEthernetMac(in *v1beta1.NetworkLinkEthernetMac, out *NetworkLinkEthernetMac, s conversion.Scope) error { - out.String = (*string)(unsafe.Pointer(in.String)) - out.FromHostInterface = (*string)(unsafe.Pointer(in.FromHostInterface)) - // WARNING: in.FromAnnotation requires manual conversion: does not exist in peer-type - return nil -} - -func autoConvert_v1alpha5_RemediationStrategy_To_v1beta1_RemediationStrategy(in *RemediationStrategy, out *v1beta1.RemediationStrategy, s conversion.Scope) error { - out.Type = v1beta1.RemediationType(in.Type) - out.RetryLimit = in.RetryLimit - out.Timeout = (*v1.Duration)(unsafe.Pointer(in.Timeout)) - return nil -} - -// Convert_v1alpha5_RemediationStrategy_To_v1beta1_RemediationStrategy is an autogenerated conversion function. -func Convert_v1alpha5_RemediationStrategy_To_v1beta1_RemediationStrategy(in *RemediationStrategy, out *v1beta1.RemediationStrategy, s conversion.Scope) error { - return autoConvert_v1alpha5_RemediationStrategy_To_v1beta1_RemediationStrategy(in, out, s) -} - -func autoConvert_v1beta1_RemediationStrategy_To_v1alpha5_RemediationStrategy(in *v1beta1.RemediationStrategy, out *RemediationStrategy, s conversion.Scope) error { - out.Type = RemediationType(in.Type) - out.RetryLimit = in.RetryLimit - out.Timeout = (*v1.Duration)(unsafe.Pointer(in.Timeout)) - return nil -} - -// Convert_v1beta1_RemediationStrategy_To_v1alpha5_RemediationStrategy is an autogenerated conversion function. -func Convert_v1beta1_RemediationStrategy_To_v1alpha5_RemediationStrategy(in *v1beta1.RemediationStrategy, out *RemediationStrategy, s conversion.Scope) error { - return autoConvert_v1beta1_RemediationStrategy_To_v1alpha5_RemediationStrategy(in, out, s) -} diff --git a/api/v1alpha5/zz_generated.deepcopy.go b/api/v1alpha5/zz_generated.deepcopy.go deleted file mode 100644 index 455ce4c242..0000000000 --- a/api/v1alpha5/zz_generated.deepcopy.go +++ /dev/null @@ -1,1675 +0,0 @@ -//go:build !ignore_autogenerated - -/* -Copyright The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by controller-gen. DO NOT EDIT. - -package v1alpha5 - -import ( - "github.com/metal3-io/ip-address-manager/api/v1alpha1" - "k8s.io/api/core/v1" - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" - runtime "k8s.io/apimachinery/pkg/runtime" - "sigs.k8s.io/cluster-api/api/v1alpha4" - "sigs.k8s.io/cluster-api/errors" -) - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *APIEndpoint) DeepCopyInto(out *APIEndpoint) { - *out = *in -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new APIEndpoint. -func (in *APIEndpoint) DeepCopy() *APIEndpoint { - if in == nil { - return nil - } - out := new(APIEndpoint) - in.DeepCopyInto(out) - return out -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *FromPool) DeepCopyInto(out *FromPool) { - *out = *in -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FromPool. -func (in *FromPool) DeepCopy() *FromPool { - if in == nil { - return nil - } - out := new(FromPool) - in.DeepCopyInto(out) - return out -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *HostSelector) DeepCopyInto(out *HostSelector) { - *out = *in - if in.MatchLabels != nil { - in, out := &in.MatchLabels, &out.MatchLabels - *out = make(map[string]string, len(*in)) - for key, val := range *in { - (*out)[key] = val - } - } - if in.MatchExpressions != nil { - in, out := &in.MatchExpressions, &out.MatchExpressions - *out = make([]HostSelectorRequirement, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } - } -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new HostSelector. -func (in *HostSelector) DeepCopy() *HostSelector { - if in == nil { - return nil - } - out := new(HostSelector) - in.DeepCopyInto(out) - return out -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *HostSelectorRequirement) DeepCopyInto(out *HostSelectorRequirement) { - *out = *in - if in.Values != nil { - in, out := &in.Values, &out.Values - *out = make([]string, len(*in)) - copy(*out, *in) - } -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new HostSelectorRequirement. -func (in *HostSelectorRequirement) DeepCopy() *HostSelectorRequirement { - if in == nil { - return nil - } - out := new(HostSelectorRequirement) - in.DeepCopyInto(out) - return out -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *Image) DeepCopyInto(out *Image) { - *out = *in - if in.ChecksumType != nil { - in, out := &in.ChecksumType, &out.ChecksumType - *out = new(string) - **out = **in - } - if in.DiskFormat != nil { - in, out := &in.DiskFormat, &out.DiskFormat - *out = new(string) - **out = **in - } -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Image. -func (in *Image) DeepCopy() *Image { - if in == nil { - return nil - } - out := new(Image) - in.DeepCopyInto(out) - return out -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *MetaData) DeepCopyInto(out *MetaData) { - *out = *in - if in.Strings != nil { - in, out := &in.Strings, &out.Strings - *out = make([]MetaDataString, len(*in)) - copy(*out, *in) - } - if in.ObjectNames != nil { - in, out := &in.ObjectNames, &out.ObjectNames - *out = make([]MetaDataObjectName, len(*in)) - copy(*out, *in) - } - if in.Indexes != nil { - in, out := &in.Indexes, &out.Indexes - *out = make([]MetaDataIndex, len(*in)) - copy(*out, *in) - } - if in.Namespaces != nil { - in, out := &in.Namespaces, &out.Namespaces - *out = make([]MetaDataNamespace, len(*in)) - copy(*out, *in) - } - if in.IPAddressesFromPool != nil { - in, out := &in.IPAddressesFromPool, &out.IPAddressesFromPool - *out = make([]FromPool, len(*in)) - copy(*out, *in) - } - if in.PrefixesFromPool != nil { - in, out := &in.PrefixesFromPool, &out.PrefixesFromPool - *out = make([]FromPool, len(*in)) - copy(*out, *in) - } - if in.GatewaysFromPool != nil { - in, out := &in.GatewaysFromPool, &out.GatewaysFromPool - *out = make([]FromPool, len(*in)) - copy(*out, *in) - } - if in.DNSServersFromPool != nil { - in, out := &in.DNSServersFromPool, &out.DNSServersFromPool - *out = make([]FromPool, len(*in)) - copy(*out, *in) - } - if in.FromHostInterfaces != nil { - in, out := &in.FromHostInterfaces, &out.FromHostInterfaces - *out = make([]MetaDataHostInterface, len(*in)) - copy(*out, *in) - } - if in.FromLabels != nil { - in, out := &in.FromLabels, &out.FromLabels - *out = make([]MetaDataFromLabel, len(*in)) - copy(*out, *in) - } - if in.FromAnnotations != nil { - in, out := &in.FromAnnotations, &out.FromAnnotations - *out = make([]MetaDataFromAnnotation, len(*in)) - copy(*out, *in) - } -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MetaData. -func (in *MetaData) DeepCopy() *MetaData { - if in == nil { - return nil - } - out := new(MetaData) - in.DeepCopyInto(out) - return out -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *MetaDataFromAnnotation) DeepCopyInto(out *MetaDataFromAnnotation) { - *out = *in -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MetaDataFromAnnotation. -func (in *MetaDataFromAnnotation) DeepCopy() *MetaDataFromAnnotation { - if in == nil { - return nil - } - out := new(MetaDataFromAnnotation) - in.DeepCopyInto(out) - return out -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *MetaDataFromLabel) DeepCopyInto(out *MetaDataFromLabel) { - *out = *in -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MetaDataFromLabel. -func (in *MetaDataFromLabel) DeepCopy() *MetaDataFromLabel { - if in == nil { - return nil - } - out := new(MetaDataFromLabel) - in.DeepCopyInto(out) - return out -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *MetaDataHostInterface) DeepCopyInto(out *MetaDataHostInterface) { - *out = *in -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MetaDataHostInterface. -func (in *MetaDataHostInterface) DeepCopy() *MetaDataHostInterface { - if in == nil { - return nil - } - out := new(MetaDataHostInterface) - in.DeepCopyInto(out) - return out -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *MetaDataIPAddress) DeepCopyInto(out *MetaDataIPAddress) { - *out = *in - if in.Start != nil { - in, out := &in.Start, &out.Start - *out = new(v1alpha1.IPAddressStr) - **out = **in - } - if in.End != nil { - in, out := &in.End, &out.End - *out = new(v1alpha1.IPAddressStr) - **out = **in - } - if in.Subnet != nil { - in, out := &in.Subnet, &out.Subnet - *out = new(v1alpha1.IPSubnetStr) - **out = **in - } -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MetaDataIPAddress. -func (in *MetaDataIPAddress) DeepCopy() *MetaDataIPAddress { - if in == nil { - return nil - } - out := new(MetaDataIPAddress) - in.DeepCopyInto(out) - return out -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *MetaDataIndex) DeepCopyInto(out *MetaDataIndex) { - *out = *in -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MetaDataIndex. -func (in *MetaDataIndex) DeepCopy() *MetaDataIndex { - if in == nil { - return nil - } - out := new(MetaDataIndex) - in.DeepCopyInto(out) - return out -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *MetaDataNamespace) DeepCopyInto(out *MetaDataNamespace) { - *out = *in -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MetaDataNamespace. -func (in *MetaDataNamespace) DeepCopy() *MetaDataNamespace { - if in == nil { - return nil - } - out := new(MetaDataNamespace) - in.DeepCopyInto(out) - return out -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *MetaDataObjectName) DeepCopyInto(out *MetaDataObjectName) { - *out = *in -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MetaDataObjectName. -func (in *MetaDataObjectName) DeepCopy() *MetaDataObjectName { - if in == nil { - return nil - } - out := new(MetaDataObjectName) - in.DeepCopyInto(out) - return out -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *MetaDataString) DeepCopyInto(out *MetaDataString) { - *out = *in -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MetaDataString. -func (in *MetaDataString) DeepCopy() *MetaDataString { - if in == nil { - return nil - } - out := new(MetaDataString) - in.DeepCopyInto(out) - return out -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *Metal3Cluster) DeepCopyInto(out *Metal3Cluster) { - *out = *in - out.TypeMeta = in.TypeMeta - in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) - out.Spec = in.Spec - in.Status.DeepCopyInto(&out.Status) -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Metal3Cluster. -func (in *Metal3Cluster) DeepCopy() *Metal3Cluster { - if in == nil { - return nil - } - out := new(Metal3Cluster) - in.DeepCopyInto(out) - return out -} - -// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. -func (in *Metal3Cluster) DeepCopyObject() runtime.Object { - if c := in.DeepCopy(); c != nil { - return c - } - return nil -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *Metal3ClusterList) DeepCopyInto(out *Metal3ClusterList) { - *out = *in - out.TypeMeta = in.TypeMeta - in.ListMeta.DeepCopyInto(&out.ListMeta) - if in.Items != nil { - in, out := &in.Items, &out.Items - *out = make([]Metal3Cluster, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } - } -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Metal3ClusterList. -func (in *Metal3ClusterList) DeepCopy() *Metal3ClusterList { - if in == nil { - return nil - } - out := new(Metal3ClusterList) - in.DeepCopyInto(out) - return out -} - -// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. -func (in *Metal3ClusterList) DeepCopyObject() runtime.Object { - if c := in.DeepCopy(); c != nil { - return c - } - return nil -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *Metal3ClusterSpec) DeepCopyInto(out *Metal3ClusterSpec) { - *out = *in - out.ControlPlaneEndpoint = in.ControlPlaneEndpoint -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Metal3ClusterSpec. -func (in *Metal3ClusterSpec) DeepCopy() *Metal3ClusterSpec { - if in == nil { - return nil - } - out := new(Metal3ClusterSpec) - in.DeepCopyInto(out) - return out -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *Metal3ClusterStatus) DeepCopyInto(out *Metal3ClusterStatus) { - *out = *in - if in.LastUpdated != nil { - in, out := &in.LastUpdated, &out.LastUpdated - *out = (*in).DeepCopy() - } - if in.FailureReason != nil { - in, out := &in.FailureReason, &out.FailureReason - *out = new(errors.ClusterStatusError) - **out = **in - } - if in.FailureMessage != nil { - in, out := &in.FailureMessage, &out.FailureMessage - *out = new(string) - **out = **in - } -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Metal3ClusterStatus. -func (in *Metal3ClusterStatus) DeepCopy() *Metal3ClusterStatus { - if in == nil { - return nil - } - out := new(Metal3ClusterStatus) - in.DeepCopyInto(out) - return out -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *Metal3Data) DeepCopyInto(out *Metal3Data) { - *out = *in - out.TypeMeta = in.TypeMeta - in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) - in.Spec.DeepCopyInto(&out.Spec) - in.Status.DeepCopyInto(&out.Status) -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Metal3Data. -func (in *Metal3Data) DeepCopy() *Metal3Data { - if in == nil { - return nil - } - out := new(Metal3Data) - in.DeepCopyInto(out) - return out -} - -// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. -func (in *Metal3Data) DeepCopyObject() runtime.Object { - if c := in.DeepCopy(); c != nil { - return c - } - return nil -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *Metal3DataClaim) DeepCopyInto(out *Metal3DataClaim) { - *out = *in - out.TypeMeta = in.TypeMeta - in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) - out.Spec = in.Spec - in.Status.DeepCopyInto(&out.Status) -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Metal3DataClaim. -func (in *Metal3DataClaim) DeepCopy() *Metal3DataClaim { - if in == nil { - return nil - } - out := new(Metal3DataClaim) - in.DeepCopyInto(out) - return out -} - -// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. -func (in *Metal3DataClaim) DeepCopyObject() runtime.Object { - if c := in.DeepCopy(); c != nil { - return c - } - return nil -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *Metal3DataClaimList) DeepCopyInto(out *Metal3DataClaimList) { - *out = *in - out.TypeMeta = in.TypeMeta - in.ListMeta.DeepCopyInto(&out.ListMeta) - if in.Items != nil { - in, out := &in.Items, &out.Items - *out = make([]Metal3DataClaim, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } - } -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Metal3DataClaimList. -func (in *Metal3DataClaimList) DeepCopy() *Metal3DataClaimList { - if in == nil { - return nil - } - out := new(Metal3DataClaimList) - in.DeepCopyInto(out) - return out -} - -// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. -func (in *Metal3DataClaimList) DeepCopyObject() runtime.Object { - if c := in.DeepCopy(); c != nil { - return c - } - return nil -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *Metal3DataClaimSpec) DeepCopyInto(out *Metal3DataClaimSpec) { - *out = *in - out.Template = in.Template -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Metal3DataClaimSpec. -func (in *Metal3DataClaimSpec) DeepCopy() *Metal3DataClaimSpec { - if in == nil { - return nil - } - out := new(Metal3DataClaimSpec) - in.DeepCopyInto(out) - return out -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *Metal3DataClaimStatus) DeepCopyInto(out *Metal3DataClaimStatus) { - *out = *in - if in.RenderedData != nil { - in, out := &in.RenderedData, &out.RenderedData - *out = new(v1.ObjectReference) - **out = **in - } - if in.ErrorMessage != nil { - in, out := &in.ErrorMessage, &out.ErrorMessage - *out = new(string) - **out = **in - } -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Metal3DataClaimStatus. -func (in *Metal3DataClaimStatus) DeepCopy() *Metal3DataClaimStatus { - if in == nil { - return nil - } - out := new(Metal3DataClaimStatus) - in.DeepCopyInto(out) - return out -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *Metal3DataList) DeepCopyInto(out *Metal3DataList) { - *out = *in - out.TypeMeta = in.TypeMeta - in.ListMeta.DeepCopyInto(&out.ListMeta) - if in.Items != nil { - in, out := &in.Items, &out.Items - *out = make([]Metal3Data, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } - } -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Metal3DataList. -func (in *Metal3DataList) DeepCopy() *Metal3DataList { - if in == nil { - return nil - } - out := new(Metal3DataList) - in.DeepCopyInto(out) - return out -} - -// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. -func (in *Metal3DataList) DeepCopyObject() runtime.Object { - if c := in.DeepCopy(); c != nil { - return c - } - return nil -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *Metal3DataSpec) DeepCopyInto(out *Metal3DataSpec) { - *out = *in - if in.MetaData != nil { - in, out := &in.MetaData, &out.MetaData - *out = new(v1.SecretReference) - **out = **in - } - if in.NetworkData != nil { - in, out := &in.NetworkData, &out.NetworkData - *out = new(v1.SecretReference) - **out = **in - } - out.Claim = in.Claim - out.Template = in.Template -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Metal3DataSpec. -func (in *Metal3DataSpec) DeepCopy() *Metal3DataSpec { - if in == nil { - return nil - } - out := new(Metal3DataSpec) - in.DeepCopyInto(out) - return out -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *Metal3DataStatus) DeepCopyInto(out *Metal3DataStatus) { - *out = *in - if in.ErrorMessage != nil { - in, out := &in.ErrorMessage, &out.ErrorMessage - *out = new(string) - **out = **in - } -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Metal3DataStatus. -func (in *Metal3DataStatus) DeepCopy() *Metal3DataStatus { - if in == nil { - return nil - } - out := new(Metal3DataStatus) - in.DeepCopyInto(out) - return out -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *Metal3DataTemplate) DeepCopyInto(out *Metal3DataTemplate) { - *out = *in - out.TypeMeta = in.TypeMeta - in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) - in.Spec.DeepCopyInto(&out.Spec) - in.Status.DeepCopyInto(&out.Status) -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Metal3DataTemplate. -func (in *Metal3DataTemplate) DeepCopy() *Metal3DataTemplate { - if in == nil { - return nil - } - out := new(Metal3DataTemplate) - in.DeepCopyInto(out) - return out -} - -// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. -func (in *Metal3DataTemplate) DeepCopyObject() runtime.Object { - if c := in.DeepCopy(); c != nil { - return c - } - return nil -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *Metal3DataTemplateList) DeepCopyInto(out *Metal3DataTemplateList) { - *out = *in - out.TypeMeta = in.TypeMeta - in.ListMeta.DeepCopyInto(&out.ListMeta) - if in.Items != nil { - in, out := &in.Items, &out.Items - *out = make([]Metal3DataTemplate, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } - } -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Metal3DataTemplateList. -func (in *Metal3DataTemplateList) DeepCopy() *Metal3DataTemplateList { - if in == nil { - return nil - } - out := new(Metal3DataTemplateList) - in.DeepCopyInto(out) - return out -} - -// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. -func (in *Metal3DataTemplateList) DeepCopyObject() runtime.Object { - if c := in.DeepCopy(); c != nil { - return c - } - return nil -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *Metal3DataTemplateSpec) DeepCopyInto(out *Metal3DataTemplateSpec) { - *out = *in - if in.MetaData != nil { - in, out := &in.MetaData, &out.MetaData - *out = new(MetaData) - (*in).DeepCopyInto(*out) - } - if in.NetworkData != nil { - in, out := &in.NetworkData, &out.NetworkData - *out = new(NetworkData) - (*in).DeepCopyInto(*out) - } -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Metal3DataTemplateSpec. -func (in *Metal3DataTemplateSpec) DeepCopy() *Metal3DataTemplateSpec { - if in == nil { - return nil - } - out := new(Metal3DataTemplateSpec) - in.DeepCopyInto(out) - return out -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *Metal3DataTemplateStatus) DeepCopyInto(out *Metal3DataTemplateStatus) { - *out = *in - if in.LastUpdated != nil { - in, out := &in.LastUpdated, &out.LastUpdated - *out = (*in).DeepCopy() - } - if in.Indexes != nil { - in, out := &in.Indexes, &out.Indexes - *out = make(map[string]int, len(*in)) - for key, val := range *in { - (*out)[key] = val - } - } -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Metal3DataTemplateStatus. -func (in *Metal3DataTemplateStatus) DeepCopy() *Metal3DataTemplateStatus { - if in == nil { - return nil - } - out := new(Metal3DataTemplateStatus) - in.DeepCopyInto(out) - return out -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *Metal3Machine) DeepCopyInto(out *Metal3Machine) { - *out = *in - out.TypeMeta = in.TypeMeta - in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) - in.Spec.DeepCopyInto(&out.Spec) - in.Status.DeepCopyInto(&out.Status) -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Metal3Machine. -func (in *Metal3Machine) DeepCopy() *Metal3Machine { - if in == nil { - return nil - } - out := new(Metal3Machine) - in.DeepCopyInto(out) - return out -} - -// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. -func (in *Metal3Machine) DeepCopyObject() runtime.Object { - if c := in.DeepCopy(); c != nil { - return c - } - return nil -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *Metal3MachineList) DeepCopyInto(out *Metal3MachineList) { - *out = *in - out.TypeMeta = in.TypeMeta - in.ListMeta.DeepCopyInto(&out.ListMeta) - if in.Items != nil { - in, out := &in.Items, &out.Items - *out = make([]Metal3Machine, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } - } -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Metal3MachineList. -func (in *Metal3MachineList) DeepCopy() *Metal3MachineList { - if in == nil { - return nil - } - out := new(Metal3MachineList) - in.DeepCopyInto(out) - return out -} - -// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. -func (in *Metal3MachineList) DeepCopyObject() runtime.Object { - if c := in.DeepCopy(); c != nil { - return c - } - return nil -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *Metal3MachineSpec) DeepCopyInto(out *Metal3MachineSpec) { - *out = *in - if in.ProviderID != nil { - in, out := &in.ProviderID, &out.ProviderID - *out = new(string) - **out = **in - } - in.Image.DeepCopyInto(&out.Image) - if in.UserData != nil { - in, out := &in.UserData, &out.UserData - *out = new(v1.SecretReference) - **out = **in - } - in.HostSelector.DeepCopyInto(&out.HostSelector) - if in.DataTemplate != nil { - in, out := &in.DataTemplate, &out.DataTemplate - *out = new(v1.ObjectReference) - **out = **in - } - if in.MetaData != nil { - in, out := &in.MetaData, &out.MetaData - *out = new(v1.SecretReference) - **out = **in - } - if in.NetworkData != nil { - in, out := &in.NetworkData, &out.NetworkData - *out = new(v1.SecretReference) - **out = **in - } - if in.AutomatedCleaningMode != nil { - in, out := &in.AutomatedCleaningMode, &out.AutomatedCleaningMode - *out = new(string) - **out = **in - } -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Metal3MachineSpec. -func (in *Metal3MachineSpec) DeepCopy() *Metal3MachineSpec { - if in == nil { - return nil - } - out := new(Metal3MachineSpec) - in.DeepCopyInto(out) - return out -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *Metal3MachineStatus) DeepCopyInto(out *Metal3MachineStatus) { - *out = *in - if in.LastUpdated != nil { - in, out := &in.LastUpdated, &out.LastUpdated - *out = (*in).DeepCopy() - } - if in.FailureReason != nil { - in, out := &in.FailureReason, &out.FailureReason - *out = new(errors.MachineStatusError) - **out = **in - } - if in.FailureMessage != nil { - in, out := &in.FailureMessage, &out.FailureMessage - *out = new(string) - **out = **in - } - if in.Addresses != nil { - in, out := &in.Addresses, &out.Addresses - *out = make(v1alpha4.MachineAddresses, len(*in)) - copy(*out, *in) - } - if in.UserData != nil { - in, out := &in.UserData, &out.UserData - *out = new(v1.SecretReference) - **out = **in - } - if in.RenderedData != nil { - in, out := &in.RenderedData, &out.RenderedData - *out = new(v1.ObjectReference) - **out = **in - } - if in.MetaData != nil { - in, out := &in.MetaData, &out.MetaData - *out = new(v1.SecretReference) - **out = **in - } - if in.NetworkData != nil { - in, out := &in.NetworkData, &out.NetworkData - *out = new(v1.SecretReference) - **out = **in - } -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Metal3MachineStatus. -func (in *Metal3MachineStatus) DeepCopy() *Metal3MachineStatus { - if in == nil { - return nil - } - out := new(Metal3MachineStatus) - in.DeepCopyInto(out) - return out -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *Metal3MachineTemplate) DeepCopyInto(out *Metal3MachineTemplate) { - *out = *in - out.TypeMeta = in.TypeMeta - in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) - in.Spec.DeepCopyInto(&out.Spec) -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Metal3MachineTemplate. -func (in *Metal3MachineTemplate) DeepCopy() *Metal3MachineTemplate { - if in == nil { - return nil - } - out := new(Metal3MachineTemplate) - in.DeepCopyInto(out) - return out -} - -// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. -func (in *Metal3MachineTemplate) DeepCopyObject() runtime.Object { - if c := in.DeepCopy(); c != nil { - return c - } - return nil -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *Metal3MachineTemplateList) DeepCopyInto(out *Metal3MachineTemplateList) { - *out = *in - out.TypeMeta = in.TypeMeta - in.ListMeta.DeepCopyInto(&out.ListMeta) - if in.Items != nil { - in, out := &in.Items, &out.Items - *out = make([]Metal3MachineTemplate, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } - } -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Metal3MachineTemplateList. -func (in *Metal3MachineTemplateList) DeepCopy() *Metal3MachineTemplateList { - if in == nil { - return nil - } - out := new(Metal3MachineTemplateList) - in.DeepCopyInto(out) - return out -} - -// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. -func (in *Metal3MachineTemplateList) DeepCopyObject() runtime.Object { - if c := in.DeepCopy(); c != nil { - return c - } - return nil -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *Metal3MachineTemplateResource) DeepCopyInto(out *Metal3MachineTemplateResource) { - *out = *in - in.Spec.DeepCopyInto(&out.Spec) -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Metal3MachineTemplateResource. -func (in *Metal3MachineTemplateResource) DeepCopy() *Metal3MachineTemplateResource { - if in == nil { - return nil - } - out := new(Metal3MachineTemplateResource) - in.DeepCopyInto(out) - return out -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *Metal3MachineTemplateSpec) DeepCopyInto(out *Metal3MachineTemplateSpec) { - *out = *in - in.Template.DeepCopyInto(&out.Template) -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Metal3MachineTemplateSpec. -func (in *Metal3MachineTemplateSpec) DeepCopy() *Metal3MachineTemplateSpec { - if in == nil { - return nil - } - out := new(Metal3MachineTemplateSpec) - in.DeepCopyInto(out) - return out -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *Metal3Remediation) DeepCopyInto(out *Metal3Remediation) { - *out = *in - out.TypeMeta = in.TypeMeta - in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) - in.Spec.DeepCopyInto(&out.Spec) - in.Status.DeepCopyInto(&out.Status) -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Metal3Remediation. -func (in *Metal3Remediation) DeepCopy() *Metal3Remediation { - if in == nil { - return nil - } - out := new(Metal3Remediation) - in.DeepCopyInto(out) - return out -} - -// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. -func (in *Metal3Remediation) DeepCopyObject() runtime.Object { - if c := in.DeepCopy(); c != nil { - return c - } - return nil -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *Metal3RemediationList) DeepCopyInto(out *Metal3RemediationList) { - *out = *in - out.TypeMeta = in.TypeMeta - in.ListMeta.DeepCopyInto(&out.ListMeta) - if in.Items != nil { - in, out := &in.Items, &out.Items - *out = make([]Metal3Remediation, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } - } -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Metal3RemediationList. -func (in *Metal3RemediationList) DeepCopy() *Metal3RemediationList { - if in == nil { - return nil - } - out := new(Metal3RemediationList) - in.DeepCopyInto(out) - return out -} - -// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. -func (in *Metal3RemediationList) DeepCopyObject() runtime.Object { - if c := in.DeepCopy(); c != nil { - return c - } - return nil -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *Metal3RemediationSpec) DeepCopyInto(out *Metal3RemediationSpec) { - *out = *in - if in.Strategy != nil { - in, out := &in.Strategy, &out.Strategy - *out = new(RemediationStrategy) - (*in).DeepCopyInto(*out) - } -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Metal3RemediationSpec. -func (in *Metal3RemediationSpec) DeepCopy() *Metal3RemediationSpec { - if in == nil { - return nil - } - out := new(Metal3RemediationSpec) - in.DeepCopyInto(out) - return out -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *Metal3RemediationStatus) DeepCopyInto(out *Metal3RemediationStatus) { - *out = *in - if in.LastRemediated != nil { - in, out := &in.LastRemediated, &out.LastRemediated - *out = (*in).DeepCopy() - } -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Metal3RemediationStatus. -func (in *Metal3RemediationStatus) DeepCopy() *Metal3RemediationStatus { - if in == nil { - return nil - } - out := new(Metal3RemediationStatus) - in.DeepCopyInto(out) - return out -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *Metal3RemediationTemplate) DeepCopyInto(out *Metal3RemediationTemplate) { - *out = *in - out.TypeMeta = in.TypeMeta - in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) - in.Spec.DeepCopyInto(&out.Spec) - in.Status.DeepCopyInto(&out.Status) -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Metal3RemediationTemplate. -func (in *Metal3RemediationTemplate) DeepCopy() *Metal3RemediationTemplate { - if in == nil { - return nil - } - out := new(Metal3RemediationTemplate) - in.DeepCopyInto(out) - return out -} - -// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. -func (in *Metal3RemediationTemplate) DeepCopyObject() runtime.Object { - if c := in.DeepCopy(); c != nil { - return c - } - return nil -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *Metal3RemediationTemplateList) DeepCopyInto(out *Metal3RemediationTemplateList) { - *out = *in - out.TypeMeta = in.TypeMeta - in.ListMeta.DeepCopyInto(&out.ListMeta) - if in.Items != nil { - in, out := &in.Items, &out.Items - *out = make([]Metal3RemediationTemplate, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } - } -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Metal3RemediationTemplateList. -func (in *Metal3RemediationTemplateList) DeepCopy() *Metal3RemediationTemplateList { - if in == nil { - return nil - } - out := new(Metal3RemediationTemplateList) - in.DeepCopyInto(out) - return out -} - -// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. -func (in *Metal3RemediationTemplateList) DeepCopyObject() runtime.Object { - if c := in.DeepCopy(); c != nil { - return c - } - return nil -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *Metal3RemediationTemplateResource) DeepCopyInto(out *Metal3RemediationTemplateResource) { - *out = *in - in.Spec.DeepCopyInto(&out.Spec) -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Metal3RemediationTemplateResource. -func (in *Metal3RemediationTemplateResource) DeepCopy() *Metal3RemediationTemplateResource { - if in == nil { - return nil - } - out := new(Metal3RemediationTemplateResource) - in.DeepCopyInto(out) - return out -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *Metal3RemediationTemplateSpec) DeepCopyInto(out *Metal3RemediationTemplateSpec) { - *out = *in - in.Template.DeepCopyInto(&out.Template) -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Metal3RemediationTemplateSpec. -func (in *Metal3RemediationTemplateSpec) DeepCopy() *Metal3RemediationTemplateSpec { - if in == nil { - return nil - } - out := new(Metal3RemediationTemplateSpec) - in.DeepCopyInto(out) - return out -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *Metal3RemediationTemplateStatus) DeepCopyInto(out *Metal3RemediationTemplateStatus) { - *out = *in - in.Status.DeepCopyInto(&out.Status) -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Metal3RemediationTemplateStatus. -func (in *Metal3RemediationTemplateStatus) DeepCopy() *Metal3RemediationTemplateStatus { - if in == nil { - return nil - } - out := new(Metal3RemediationTemplateStatus) - in.DeepCopyInto(out) - return out -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *NetworkData) DeepCopyInto(out *NetworkData) { - *out = *in - in.Links.DeepCopyInto(&out.Links) - in.Networks.DeepCopyInto(&out.Networks) - in.Services.DeepCopyInto(&out.Services) -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NetworkData. -func (in *NetworkData) DeepCopy() *NetworkData { - if in == nil { - return nil - } - out := new(NetworkData) - in.DeepCopyInto(out) - return out -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *NetworkDataIPv4) DeepCopyInto(out *NetworkDataIPv4) { - *out = *in - if in.Routes != nil { - in, out := &in.Routes, &out.Routes - *out = make([]NetworkDataRoutev4, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } - } -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NetworkDataIPv4. -func (in *NetworkDataIPv4) DeepCopy() *NetworkDataIPv4 { - if in == nil { - return nil - } - out := new(NetworkDataIPv4) - in.DeepCopyInto(out) - return out -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *NetworkDataIPv4DHCP) DeepCopyInto(out *NetworkDataIPv4DHCP) { - *out = *in - if in.Routes != nil { - in, out := &in.Routes, &out.Routes - *out = make([]NetworkDataRoutev4, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } - } -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NetworkDataIPv4DHCP. -func (in *NetworkDataIPv4DHCP) DeepCopy() *NetworkDataIPv4DHCP { - if in == nil { - return nil - } - out := new(NetworkDataIPv4DHCP) - in.DeepCopyInto(out) - return out -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *NetworkDataIPv6) DeepCopyInto(out *NetworkDataIPv6) { - *out = *in - if in.Routes != nil { - in, out := &in.Routes, &out.Routes - *out = make([]NetworkDataRoutev6, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } - } -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NetworkDataIPv6. -func (in *NetworkDataIPv6) DeepCopy() *NetworkDataIPv6 { - if in == nil { - return nil - } - out := new(NetworkDataIPv6) - in.DeepCopyInto(out) - return out -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *NetworkDataIPv6DHCP) DeepCopyInto(out *NetworkDataIPv6DHCP) { - *out = *in - if in.Routes != nil { - in, out := &in.Routes, &out.Routes - *out = make([]NetworkDataRoutev6, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } - } -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NetworkDataIPv6DHCP. -func (in *NetworkDataIPv6DHCP) DeepCopy() *NetworkDataIPv6DHCP { - if in == nil { - return nil - } - out := new(NetworkDataIPv6DHCP) - in.DeepCopyInto(out) - return out -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *NetworkDataLink) DeepCopyInto(out *NetworkDataLink) { - *out = *in - if in.Ethernets != nil { - in, out := &in.Ethernets, &out.Ethernets - *out = make([]NetworkDataLinkEthernet, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } - } - if in.Bonds != nil { - in, out := &in.Bonds, &out.Bonds - *out = make([]NetworkDataLinkBond, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } - } - if in.Vlans != nil { - in, out := &in.Vlans, &out.Vlans - *out = make([]NetworkDataLinkVlan, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } - } -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NetworkDataLink. -func (in *NetworkDataLink) DeepCopy() *NetworkDataLink { - if in == nil { - return nil - } - out := new(NetworkDataLink) - in.DeepCopyInto(out) - return out -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *NetworkDataLinkBond) DeepCopyInto(out *NetworkDataLinkBond) { - *out = *in - if in.MACAddress != nil { - in, out := &in.MACAddress, &out.MACAddress - *out = new(NetworkLinkEthernetMac) - (*in).DeepCopyInto(*out) - } - if in.BondLinks != nil { - in, out := &in.BondLinks, &out.BondLinks - *out = make([]string, len(*in)) - copy(*out, *in) - } -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NetworkDataLinkBond. -func (in *NetworkDataLinkBond) DeepCopy() *NetworkDataLinkBond { - if in == nil { - return nil - } - out := new(NetworkDataLinkBond) - in.DeepCopyInto(out) - return out -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *NetworkDataLinkEthernet) DeepCopyInto(out *NetworkDataLinkEthernet) { - *out = *in - if in.MACAddress != nil { - in, out := &in.MACAddress, &out.MACAddress - *out = new(NetworkLinkEthernetMac) - (*in).DeepCopyInto(*out) - } -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NetworkDataLinkEthernet. -func (in *NetworkDataLinkEthernet) DeepCopy() *NetworkDataLinkEthernet { - if in == nil { - return nil - } - out := new(NetworkDataLinkEthernet) - in.DeepCopyInto(out) - return out -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *NetworkDataLinkVlan) DeepCopyInto(out *NetworkDataLinkVlan) { - *out = *in - if in.MACAddress != nil { - in, out := &in.MACAddress, &out.MACAddress - *out = new(NetworkLinkEthernetMac) - (*in).DeepCopyInto(*out) - } -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NetworkDataLinkVlan. -func (in *NetworkDataLinkVlan) DeepCopy() *NetworkDataLinkVlan { - if in == nil { - return nil - } - out := new(NetworkDataLinkVlan) - in.DeepCopyInto(out) - return out -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *NetworkDataNetwork) DeepCopyInto(out *NetworkDataNetwork) { - *out = *in - if in.IPv4 != nil { - in, out := &in.IPv4, &out.IPv4 - *out = make([]NetworkDataIPv4, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } - } - if in.IPv6 != nil { - in, out := &in.IPv6, &out.IPv6 - *out = make([]NetworkDataIPv6, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } - } - if in.IPv4DHCP != nil { - in, out := &in.IPv4DHCP, &out.IPv4DHCP - *out = make([]NetworkDataIPv4DHCP, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } - } - if in.IPv6DHCP != nil { - in, out := &in.IPv6DHCP, &out.IPv6DHCP - *out = make([]NetworkDataIPv6DHCP, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } - } - if in.IPv6SLAAC != nil { - in, out := &in.IPv6SLAAC, &out.IPv6SLAAC - *out = make([]NetworkDataIPv6DHCP, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } - } -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NetworkDataNetwork. -func (in *NetworkDataNetwork) DeepCopy() *NetworkDataNetwork { - if in == nil { - return nil - } - out := new(NetworkDataNetwork) - in.DeepCopyInto(out) - return out -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *NetworkDataRoutev4) DeepCopyInto(out *NetworkDataRoutev4) { - *out = *in - in.Gateway.DeepCopyInto(&out.Gateway) - in.Services.DeepCopyInto(&out.Services) -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NetworkDataRoutev4. -func (in *NetworkDataRoutev4) DeepCopy() *NetworkDataRoutev4 { - if in == nil { - return nil - } - out := new(NetworkDataRoutev4) - in.DeepCopyInto(out) - return out -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *NetworkDataRoutev6) DeepCopyInto(out *NetworkDataRoutev6) { - *out = *in - in.Gateway.DeepCopyInto(&out.Gateway) - in.Services.DeepCopyInto(&out.Services) -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NetworkDataRoutev6. -func (in *NetworkDataRoutev6) DeepCopy() *NetworkDataRoutev6 { - if in == nil { - return nil - } - out := new(NetworkDataRoutev6) - in.DeepCopyInto(out) - return out -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *NetworkDataService) DeepCopyInto(out *NetworkDataService) { - *out = *in - if in.DNS != nil { - in, out := &in.DNS, &out.DNS - *out = make([]v1alpha1.IPAddressStr, len(*in)) - copy(*out, *in) - } - if in.DNSFromIPPool != nil { - in, out := &in.DNSFromIPPool, &out.DNSFromIPPool - *out = new(string) - **out = **in - } -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NetworkDataService. -func (in *NetworkDataService) DeepCopy() *NetworkDataService { - if in == nil { - return nil - } - out := new(NetworkDataService) - in.DeepCopyInto(out) - return out -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *NetworkDataServicev4) DeepCopyInto(out *NetworkDataServicev4) { - *out = *in - if in.DNS != nil { - in, out := &in.DNS, &out.DNS - *out = make([]v1alpha1.IPAddressv4Str, len(*in)) - copy(*out, *in) - } - if in.DNSFromIPPool != nil { - in, out := &in.DNSFromIPPool, &out.DNSFromIPPool - *out = new(string) - **out = **in - } -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NetworkDataServicev4. -func (in *NetworkDataServicev4) DeepCopy() *NetworkDataServicev4 { - if in == nil { - return nil - } - out := new(NetworkDataServicev4) - in.DeepCopyInto(out) - return out -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *NetworkDataServicev6) DeepCopyInto(out *NetworkDataServicev6) { - *out = *in - if in.DNS != nil { - in, out := &in.DNS, &out.DNS - *out = make([]v1alpha1.IPAddressv6Str, len(*in)) - copy(*out, *in) - } - if in.DNSFromIPPool != nil { - in, out := &in.DNSFromIPPool, &out.DNSFromIPPool - *out = new(string) - **out = **in - } -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NetworkDataServicev6. -func (in *NetworkDataServicev6) DeepCopy() *NetworkDataServicev6 { - if in == nil { - return nil - } - out := new(NetworkDataServicev6) - in.DeepCopyInto(out) - return out -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *NetworkGatewayv4) DeepCopyInto(out *NetworkGatewayv4) { - *out = *in - if in.String != nil { - in, out := &in.String, &out.String - *out = new(v1alpha1.IPAddressv4Str) - **out = **in - } - if in.FromIPPool != nil { - in, out := &in.FromIPPool, &out.FromIPPool - *out = new(string) - **out = **in - } -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NetworkGatewayv4. -func (in *NetworkGatewayv4) DeepCopy() *NetworkGatewayv4 { - if in == nil { - return nil - } - out := new(NetworkGatewayv4) - in.DeepCopyInto(out) - return out -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *NetworkGatewayv6) DeepCopyInto(out *NetworkGatewayv6) { - *out = *in - if in.String != nil { - in, out := &in.String, &out.String - *out = new(v1alpha1.IPAddressv6Str) - **out = **in - } - if in.FromIPPool != nil { - in, out := &in.FromIPPool, &out.FromIPPool - *out = new(string) - **out = **in - } -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NetworkGatewayv6. -func (in *NetworkGatewayv6) DeepCopy() *NetworkGatewayv6 { - if in == nil { - return nil - } - out := new(NetworkGatewayv6) - in.DeepCopyInto(out) - return out -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *NetworkLinkEthernetMac) DeepCopyInto(out *NetworkLinkEthernetMac) { - *out = *in - if in.String != nil { - in, out := &in.String, &out.String - *out = new(string) - **out = **in - } - if in.FromHostInterface != nil { - in, out := &in.FromHostInterface, &out.FromHostInterface - *out = new(string) - **out = **in - } -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NetworkLinkEthernetMac. -func (in *NetworkLinkEthernetMac) DeepCopy() *NetworkLinkEthernetMac { - if in == nil { - return nil - } - out := new(NetworkLinkEthernetMac) - in.DeepCopyInto(out) - return out -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *RemediationStrategy) DeepCopyInto(out *RemediationStrategy) { - *out = *in - if in.Timeout != nil { - in, out := &in.Timeout, &out.Timeout - *out = new(metav1.Duration) - **out = **in - } -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RemediationStrategy. -func (in *RemediationStrategy) DeepCopy() *RemediationStrategy { - if in == nil { - return nil - } - out := new(RemediationStrategy) - in.DeepCopyInto(out) - return out -} diff --git a/baremetal/metal3data_manager.go b/baremetal/metal3data_manager.go index bed0392001..0440538f07 100644 --- a/baremetal/metal3data_manager.go +++ b/baremetal/metal3data_manager.go @@ -146,7 +146,7 @@ func (m *DataManager) createSecrets(ctx context.Context) error { if m3dt == nil { return nil } - m.Log.Info("Fetched Metal3DataTemplate") + m.Log.V(4).Info("Fetched Metal3DataTemplate") // Fetch the Metal3Machine, to get the related info m3m, err := m.getM3Machine(ctx, m3dt) @@ -156,7 +156,7 @@ func (m *DataManager) createSecrets(ctx context.Context) error { if m3m == nil { return errors.New("Metal3Machine associated with Metal3DataTemplate is not found") } - m.Log.Info("Fetched Metal3Machine") + m.Log.V(4).Info("Fetched Metal3Machine") // If the MetaData is given as part of Metal3DataTemplate if m3dt.Spec.MetaData != nil { @@ -227,7 +227,7 @@ func (m *DataManager) createSecrets(ctx context.Context) error { m.Log.Info(errMessage) return WithTransientError(errors.New(errMessage), requeueAfter) } - m.Log.Info("Fetched Machine") + m.Log.V(4).Info("Fetched Machine") // Fetch the BMH associated with the M3M bmh, err := getHost(ctx, m3m, m.client, m.Log) @@ -239,7 +239,7 @@ func (m *DataManager) createSecrets(ctx context.Context) error { m.Log.Info(errMessage) return WithTransientError(errors.New(errMessage), requeueAfter) } - m.Log.Info("Fetched BMH") + m.Log.V(4).Info("Fetched BMH") // Fetch all the Metal3IPPools and create Metal3IPClaims as needed. Check if the // IP address has been allocated, if so, fetch the address, gateway and prefix. @@ -312,7 +312,7 @@ func (m *DataManager) ReleaseLeases(ctx context.Context) error { if m3dt == nil { return nil } - m.Log.Info("Fetched Metal3DataTemplate") + m.Log.V(4).Info("Fetched Metal3DataTemplate") return m.releaseAddressesFromPool(ctx, *m3dt) } @@ -654,7 +654,7 @@ func (m *DataManager) ensureM3IPClaim(ctx context.Context, poolRef corev1.TypedL if m3m == nil { return reconciledClaim{m3Claim: ipClaim}, nil } - m.Log.Info("Fetched Metal3Machine", "Metal3Machine", m3m.Name) + m.Log.V(4).Info("Fetched Metal3Machine", "Metal3Machine", m3m.Name) // Fetch the BMH associated with the M3M bmh, err := getHost(ctx, m3m, m.client, m.Log) @@ -664,7 +664,7 @@ func (m *DataManager) ensureM3IPClaim(ctx context.Context, poolRef corev1.TypedL if bmh == nil { return reconciledClaim{m3Claim: ipClaim}, WithTransientError(errors.New("no associated BMH yet"), requeueAfter) } - m.Log.Info("Fetched BMH", "BMH", bmh.Name) + m.Log.V(4).Info("Fetched BMH", "BMH", bmh.Name) ipClaim, err = fetchM3IPClaim(ctx, m.client, m.Log, bmh.Name+"-"+poolRef.Name, m.Data.Namespace) if err == nil { diff --git a/clusterctl-settings.json b/clusterctl-settings.json index 5faf62e123..1a3492a00b 100644 --- a/clusterctl-settings.json +++ b/clusterctl-settings.json @@ -2,6 +2,6 @@ "name": "infrastructure-metal3", "config": { "componentsFile": "infrastructure-components.yaml", - "nextVersion": "v1.6.99" + "nextVersion": "v1.7.99" } } \ No newline at end of file diff --git a/config/crd/bases/infrastructure.cluster.x-k8s.io_metal3clusters.yaml b/config/crd/bases/infrastructure.cluster.x-k8s.io_metal3clusters.yaml index a36a17c8a4..4cdd61df5c 100644 --- a/config/crd/bases/infrastructure.cluster.x-k8s.io_metal3clusters.yaml +++ b/config/crd/bases/infrastructure.cluster.x-k8s.io_metal3clusters.yaml @@ -22,102 +22,6 @@ spec: singular: metal3cluster scope: Namespaced versions: - - additionalPrinterColumns: - - description: Time duration since creation of Metal3Cluster - jsonPath: .metadata.creationTimestamp - name: Age - type: date - - description: metal3Cluster is Ready - jsonPath: .status.ready - name: Ready - type: string - - description: Most recent error - jsonPath: .status.failureReason - name: Error - type: string - - description: Cluster to which this BMCluster belongs - jsonPath: .metadata.labels.cluster\.x-k8s\.io/cluster-name - name: Cluster - type: string - - description: Control plane endpoint - jsonPath: .spec.controlPlaneEndpoint - name: Endpoint - type: string - deprecated: true - name: v1alpha5 - schema: - openAPIV3Schema: - description: Metal3Cluster is the Schema for the metal3clusters API. - properties: - apiVersion: - description: 'APIVersion defines the versioned schema of this representation - of an object. Servers should convert recognized schemas to the latest - internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' - type: string - kind: - description: 'Kind is a string value representing the REST resource this - object represents. Servers may infer this from the endpoint the client - submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' - type: string - metadata: - type: object - spec: - description: Metal3ClusterSpec defines the desired state of Metal3Cluster. - properties: - controlPlaneEndpoint: - description: ControlPlaneEndpoint represents the endpoint used to - communicate with the control plane. - properties: - host: - description: Host is the hostname on which the API server is serving. - type: string - port: - description: Port is the port on which the API server is serving. - type: integer - required: - - host - - port - type: object - noCloudProvider: - description: Determines if the cluster is not to be deployed with - an external cloud provider. If set to true, CAPM3 will use node - labels to set providerID on the kubernetes nodes. If set to false, - providerID is set on nodes by other entities and CAPM3 uses the - value of the providerID on the m3m resource. - type: boolean - required: - - controlPlaneEndpoint - type: object - status: - description: Metal3ClusterStatus defines the observed state of Metal3Cluster. - properties: - failureMessage: - description: FailureMessage indicates that there is a fatal problem - reconciling the state, and will be set to a descriptive error message. - type: string - failureReason: - description: FailureReason indicates that there is a fatal problem - reconciling the state, and will be set to a token value suitable - for programmatic interpretation. - type: string - lastUpdated: - description: LastUpdated identifies when this status was last observed. - format: date-time - type: string - ready: - description: Ready denotes that the Metal3 cluster (infrastructure) - is ready. In Baremetal case, it does not mean anything for now as - no infrastructure steps need to be performed. Required by Cluster - API. Set to True by the metal3Cluster controller after creation. - type: boolean - required: - - ready - type: object - type: object - served: false - storage: false - subresources: - status: {} - additionalPrinterColumns: - description: Time duration since creation of Metal3Cluster jsonPath: .metadata.creationTimestamp diff --git a/config/crd/bases/infrastructure.cluster.x-k8s.io_metal3dataclaims.yaml b/config/crd/bases/infrastructure.cluster.x-k8s.io_metal3dataclaims.yaml index 87cd8a05f1..3c2a16645a 100644 --- a/config/crd/bases/infrastructure.cluster.x-k8s.io_metal3dataclaims.yaml +++ b/config/crd/bases/infrastructure.cluster.x-k8s.io_metal3dataclaims.yaml @@ -22,122 +22,6 @@ spec: singular: metal3dataclaim scope: Namespaced versions: - - additionalPrinterColumns: - - description: Time duration since creation of Metal3DataClaim - jsonPath: .metadata.creationTimestamp - name: Age - type: date - deprecated: true - name: v1alpha5 - schema: - openAPIV3Schema: - description: Metal3DataClaim is the Schema for the metal3datas API. - properties: - apiVersion: - description: 'APIVersion defines the versioned schema of this representation - of an object. Servers should convert recognized schemas to the latest - internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' - type: string - kind: - description: 'Kind is a string value representing the REST resource this - object represents. Servers may infer this from the endpoint the client - submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' - type: string - metadata: - type: object - spec: - description: Metal3DataClaimSpec defines the desired state of Metal3DataClaim. - properties: - template: - description: Template is the Metal3DataTemplate this was generated - for. - properties: - apiVersion: - description: API version of the referent. - type: string - fieldPath: - description: 'If referring to a piece of an object instead of - an entire object, this string should contain a valid JSON/Go - field access statement, such as desiredState.manifest.containers[2]. - For example, if the object reference is to a container within - a pod, this would take on a value like: "spec.containers{name}" - (where "name" refers to the name of the container that triggered - the event) or if no container name is specified "spec.containers[2]" - (container with index 2 in this pod). This syntax is chosen - only to have some well-defined way of referencing a part of - an object. TODO: this design is not final and this field is - subject to change in the future.' - type: string - kind: - description: 'Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names' - type: string - namespace: - description: 'Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/' - type: string - resourceVersion: - description: 'Specific resourceVersion to which this reference - is made, if any. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency' - type: string - uid: - description: 'UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids' - type: string - type: object - x-kubernetes-map-type: atomic - required: - - template - type: object - status: - description: Metal3DataClaimStatus defines the observed state of Metal3DataClaim. - properties: - errorMessage: - description: ErrorMessage contains the error message - type: string - renderedData: - description: RenderedData references the Metal3Data when ready - properties: - apiVersion: - description: API version of the referent. - type: string - fieldPath: - description: 'If referring to a piece of an object instead of - an entire object, this string should contain a valid JSON/Go - field access statement, such as desiredState.manifest.containers[2]. - For example, if the object reference is to a container within - a pod, this would take on a value like: "spec.containers{name}" - (where "name" refers to the name of the container that triggered - the event) or if no container name is specified "spec.containers[2]" - (container with index 2 in this pod). This syntax is chosen - only to have some well-defined way of referencing a part of - an object. TODO: this design is not final and this field is - subject to change in the future.' - type: string - kind: - description: 'Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names' - type: string - namespace: - description: 'Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/' - type: string - resourceVersion: - description: 'Specific resourceVersion to which this reference - is made, if any. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency' - type: string - uid: - description: 'UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids' - type: string - type: object - x-kubernetes-map-type: atomic - type: object - type: object - served: false - storage: false - subresources: - status: {} - additionalPrinterColumns: - description: Time duration since creation of Metal3DataClaim jsonPath: .metadata.creationTimestamp diff --git a/config/crd/bases/infrastructure.cluster.x-k8s.io_metal3datas.yaml b/config/crd/bases/infrastructure.cluster.x-k8s.io_metal3datas.yaml index 1e566fa210..11de523582 100644 --- a/config/crd/bases/infrastructure.cluster.x-k8s.io_metal3datas.yaml +++ b/config/crd/bases/infrastructure.cluster.x-k8s.io_metal3datas.yaml @@ -22,163 +22,6 @@ spec: singular: metal3data scope: Namespaced versions: - - additionalPrinterColumns: - - description: Time duration since creation of Metal3Data - jsonPath: .metadata.creationTimestamp - name: Age - type: date - deprecated: true - name: v1alpha5 - schema: - openAPIV3Schema: - description: Metal3Data is the Schema for the metal3datas API. - properties: - apiVersion: - description: 'APIVersion defines the versioned schema of this representation - of an object. Servers should convert recognized schemas to the latest - internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' - type: string - kind: - description: 'Kind is a string value representing the REST resource this - object represents. Servers may infer this from the endpoint the client - submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' - type: string - metadata: - type: object - spec: - description: Metal3DataSpec defines the desired state of Metal3Data. - properties: - claim: - description: DataClaim points to the Metal3DataClaim the Metal3Data - was created for. - properties: - apiVersion: - description: API version of the referent. - type: string - fieldPath: - description: 'If referring to a piece of an object instead of - an entire object, this string should contain a valid JSON/Go - field access statement, such as desiredState.manifest.containers[2]. - For example, if the object reference is to a container within - a pod, this would take on a value like: "spec.containers{name}" - (where "name" refers to the name of the container that triggered - the event) or if no container name is specified "spec.containers[2]" - (container with index 2 in this pod). This syntax is chosen - only to have some well-defined way of referencing a part of - an object. TODO: this design is not final and this field is - subject to change in the future.' - type: string - kind: - description: 'Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names' - type: string - namespace: - description: 'Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/' - type: string - resourceVersion: - description: 'Specific resourceVersion to which this reference - is made, if any. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency' - type: string - uid: - description: 'UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids' - type: string - type: object - x-kubernetes-map-type: atomic - index: - description: Index stores the index value of this instance in the - Metal3DataTemplate. - type: integer - metaData: - description: MetaData points to the rendered MetaData secret. - properties: - name: - description: name is unique within a namespace to reference a - secret resource. - type: string - namespace: - description: namespace defines the space within which the secret - name must be unique. - type: string - type: object - x-kubernetes-map-type: atomic - networkData: - description: NetworkData points to the rendered NetworkData secret. - properties: - name: - description: name is unique within a namespace to reference a - secret resource. - type: string - namespace: - description: namespace defines the space within which the secret - name must be unique. - type: string - type: object - x-kubernetes-map-type: atomic - template: - description: DataTemplate is the Metal3DataTemplate this was generated - from. - properties: - apiVersion: - description: API version of the referent. - type: string - fieldPath: - description: 'If referring to a piece of an object instead of - an entire object, this string should contain a valid JSON/Go - field access statement, such as desiredState.manifest.containers[2]. - For example, if the object reference is to a container within - a pod, this would take on a value like: "spec.containers{name}" - (where "name" refers to the name of the container that triggered - the event) or if no container name is specified "spec.containers[2]" - (container with index 2 in this pod). This syntax is chosen - only to have some well-defined way of referencing a part of - an object. TODO: this design is not final and this field is - subject to change in the future.' - type: string - kind: - description: 'Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names' - type: string - namespace: - description: 'Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/' - type: string - resourceVersion: - description: 'Specific resourceVersion to which this reference - is made, if any. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency' - type: string - uid: - description: 'UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids' - type: string - type: object - x-kubernetes-map-type: atomic - templateReference: - description: TemplateReference refers to the Template the Metal3MachineTemplate - refers to. It can be matched against the key or it may also point - to the name of the template Metal3Data refers to - type: string - required: - - claim - - template - type: object - status: - description: Metal3DataStatus defines the observed state of Metal3Data. - properties: - errorMessage: - description: ErrorMessage contains the error message - type: string - ready: - description: Ready is a flag set to True if the secrets were rendered - properly - type: boolean - type: object - type: object - served: false - storage: false - subresources: - status: {} - additionalPrinterColumns: - description: Time duration since creation of Metal3Data jsonPath: .metadata.creationTimestamp diff --git a/config/crd/bases/infrastructure.cluster.x-k8s.io_metal3datatemplates.yaml b/config/crd/bases/infrastructure.cluster.x-k8s.io_metal3datatemplates.yaml index 6da396cda1..e61017d875 100644 --- a/config/crd/bases/infrastructure.cluster.x-k8s.io_metal3datatemplates.yaml +++ b/config/crd/bases/infrastructure.cluster.x-k8s.io_metal3datatemplates.yaml @@ -22,837 +22,6 @@ spec: singular: metal3datatemplate scope: Namespaced versions: - - additionalPrinterColumns: - - description: Cluster to which this template belongs - jsonPath: .metadata.labels.cluster\.x-k8s\.io/cluster-name - name: Cluster - type: string - - description: Time duration since creation of Metal3DataTemplate - jsonPath: .metadata.creationTimestamp - name: Age - type: date - deprecated: true - name: v1alpha5 - schema: - openAPIV3Schema: - description: Metal3DataTemplate is the Schema for the metal3datatemplates - API. - properties: - apiVersion: - description: 'APIVersion defines the versioned schema of this representation - of an object. Servers should convert recognized schemas to the latest - internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' - type: string - kind: - description: 'Kind is a string value representing the REST resource this - object represents. Servers may infer this from the endpoint the client - submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' - type: string - metadata: - type: object - spec: - description: Metal3DataTemplateSpec defines the desired state of Metal3DataTemplate. - properties: - clusterName: - description: ClusterName is the name of the Cluster this object belongs - to. - minLength: 1 - type: string - metaData: - description: MetaData contains the information needed to generate - the metadata secret - properties: - dnsServersFromIPPool: - description: DNSServersFromPool is the list of metadata items - to be rendered as dns servers. - items: - properties: - key: - description: Key will be used as the key to set in the metadata - map for cloud-init - type: string - name: - description: Name is the name of the IPPool used to fetch - the value to set in the metadata map for cloud-init - type: string - required: - - key - - name - type: object - type: array - fromAnnotations: - description: FromAnnotations is the list of metadata items to - be fetched from object Annotations - items: - description: MetaDataFromAnnotation contains the information - to fetch an annotation content, if the label does not exist, - it is rendered as empty string. - properties: - annotation: - description: Annotation is the key of the Annotation to - fetch - type: string - key: - description: Key will be used as the key to set in the metadata - map for cloud-init - type: string - object: - description: Object is the type of the object from which - we retrieve the name - enum: - - machine - - metal3machine - - baremetalhost - type: string - required: - - annotation - - key - - object - type: object - type: array - fromHostInterfaces: - description: FromHostInterfaces is the list of metadata items - to be rendered as MAC addresses of the host interfaces. - items: - description: MetaDataHostInterface contains the information - to render the object name. - properties: - interface: - description: Interface is the name of the interface in the - BareMetalHost Status Hardware Details list of interfaces - from which to fetch the MAC address. - type: string - key: - description: Key will be used as the key to set in the metadata - map for cloud-init - type: string - required: - - interface - - key - type: object - type: array - fromLabels: - description: FromLabels is the list of metadata items to be fetched - from object labels - items: - description: MetaDataFromLabel contains the information to fetch - a label content, if the label does not exist, it is rendered - as empty string. - properties: - key: - description: Key will be used as the key to set in the metadata - map for cloud-init - type: string - label: - description: Label is the key of the label to fetch - type: string - object: - description: Object is the type of the object from which - we retrieve the name - enum: - - machine - - metal3machine - - baremetalhost - type: string - required: - - key - - label - - object - type: object - type: array - gatewaysFromIPPool: - description: GatewaysFromPool is the list of metadata items to - be rendered as gateway addresses. - items: - properties: - key: - description: Key will be used as the key to set in the metadata - map for cloud-init - type: string - name: - description: Name is the name of the IPPool used to fetch - the value to set in the metadata map for cloud-init - type: string - required: - - key - - name - type: object - type: array - indexes: - description: Indexes is the list of metadata items to be rendered - from the index of the Metal3Data - items: - description: MetaDataIndex contains the information to render - the index. - properties: - key: - description: Key will be used as the key to set in the metadata - map for cloud-init - type: string - offset: - description: Offset is the offset to apply to the index - when rendering it - type: integer - prefix: - description: Prefix is the prefix string - type: string - step: - default: 1 - description: Step is the multiplier of the index - type: integer - suffix: - description: Suffix is the suffix string - type: string - required: - - key - type: object - type: array - ipAddressesFromIPPool: - description: IPAddressesFromPool is the list of metadata items - to be rendered as ip addresses. - items: - properties: - key: - description: Key will be used as the key to set in the metadata - map for cloud-init - type: string - name: - description: Name is the name of the IPPool used to fetch - the value to set in the metadata map for cloud-init - type: string - required: - - key - - name - type: object - type: array - namespaces: - description: Namespaces is the list of metadata items to be rendered - from the namespace - items: - description: MetaDataNamespace contains the information to render - the namespace. - properties: - key: - description: Key will be used as the key to set in the metadata - map for cloud-init - type: string - required: - - key - type: object - type: array - objectNames: - description: ObjectNames is the list of metadata items to be rendered - from the name of objects. - items: - description: MetaDataObjectName contains the information to - render the object name. - properties: - key: - description: Key will be used as the key to set in the metadata - map for cloud-init - type: string - object: - description: Object is the type of the object from which - we retrieve the name - enum: - - machine - - metal3machine - - baremetalhost - type: string - required: - - key - - object - type: object - type: array - prefixesFromIPPool: - description: PrefixesFromPool is the list of metadata items to - be rendered as network prefixes. - items: - properties: - key: - description: Key will be used as the key to set in the metadata - map for cloud-init - type: string - name: - description: Name is the name of the IPPool used to fetch - the value to set in the metadata map for cloud-init - type: string - required: - - key - - name - type: object - type: array - strings: - description: Strings is the list of metadata items to be rendered - from strings - items: - description: MetaDataString contains the information to render - the string. - properties: - key: - description: Key will be used as the key to set in the metadata - map for cloud-init - type: string - value: - description: Value is the string to render. - type: string - required: - - key - - value - type: object - type: array - type: object - networkData: - description: NetworkData contains the information needed to generate - the networkdata secret - properties: - links: - description: Links is a structure containing lists of different - types objects - properties: - bonds: - description: Bonds contains a list of Bond links - items: - description: NetworkDataLinkBond represents a bond link - object. - properties: - bondLinks: - description: BondLinks is the list of links that are - part of the bond. - items: - type: string - type: array - bondMode: - description: BondMode is the mode of bond used. It can - be one of balance-rr, active-backup, balance-xor, - broadcast, balance-tlb, balance-alb, 802.3ad - enum: - - balance-rr - - active-backup - - balance-xor - - broadcast - - balance-tlb - - balance-alb - - 802.3ad - type: string - id: - description: Id is the ID of the interface (used for - naming) - type: string - macAddress: - description: MACAddress is the MAC address of the interface, - containing the object used to render it. - properties: - fromHostInterface: - description: FromHostInterface contains the name - of the interface in the BareMetalHost Introspection - details from which to fetch the MAC address - type: string - string: - description: String contains the MAC address given - as a string - type: string - type: object - mtu: - default: 1500 - description: MTU is the MTU of the interface - maximum: 9000 - type: integer - required: - - bondLinks - - bondMode - - id - - macAddress - type: object - type: array - ethernets: - description: Ethernets contains a list of Ethernet links - items: - description: NetworkDataLinkEthernet represents an ethernet - link object. - properties: - id: - description: Id is the ID of the interface (used for - naming) - type: string - macAddress: - description: MACAddress is the MAC address of the interface, - containing the object used to render it. - properties: - fromHostInterface: - description: FromHostInterface contains the name - of the interface in the BareMetalHost Introspection - details from which to fetch the MAC address - type: string - string: - description: String contains the MAC address given - as a string - type: string - type: object - mtu: - default: 1500 - description: MTU is the MTU of the interface - maximum: 9000 - type: integer - type: - description: 'Type is the type of the ethernet link. - It can be one of: bridge, dvs, hw_veb, hyperv, ovs, - tap, vhostuser, vif, phy' - enum: - - bridge - - dvs - - hw_veb - - hyperv - - ovs - - tap - - vhostuser - - vif - - phy - type: string - required: - - id - - macAddress - - type - type: object - type: array - vlans: - description: Vlans contains a list of Vlan links - items: - description: NetworkDataLinkVlan represents a vlan link - object. - properties: - id: - description: Id is the ID of the interface (used for - naming) - type: string - macAddress: - description: MACAddress is the MAC address of the interface, - containing the object used to render it. - properties: - fromHostInterface: - description: FromHostInterface contains the name - of the interface in the BareMetalHost Introspection - details from which to fetch the MAC address - type: string - string: - description: String contains the MAC address given - as a string - type: string - type: object - mtu: - default: 1500 - description: MTU is the MTU of the interface - maximum: 9000 - type: integer - vlanID: - description: VlanID is the Vlan ID - maximum: 4096 - type: integer - vlanLink: - description: VlanLink is the name of the link on which - the vlan should be added - type: string - required: - - id - - macAddress - - vlanID - - vlanLink - type: object - type: array - type: object - networks: - description: Networks is a structure containing lists of different - types objects - properties: - ipv4: - description: IPv4 contains a list of IPv4 static allocations - items: - description: NetworkDataIPv4 represents an ipv4 static network - object. - properties: - id: - description: ID is the network ID (name) - type: string - ipAddressFromIPPool: - description: IPAddressFromIPPool contains the name of - the IPPool to use to get an ip address - type: string - link: - description: Link is the link on which the network applies - type: string - routes: - description: Routes contains a list of IPv4 routes - items: - description: NetworkDataRoutev4 represents an ipv4 - route object. - properties: - gateway: - description: Gateway is the IPv4 address of the - gateway - properties: - fromIPPool: - description: FromIPPool is the name of the - IPPool to fetch the gateway from - type: string - string: - description: String is the gateway given as - a string - pattern: ^((([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]))$ - type: string - type: object - network: - description: Network is the IPv4 network address - pattern: ^((([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]))$ - type: string - prefix: - description: Prefix is the mask of the network - as integer (max 32) - maximum: 32 - type: integer - services: - description: Services is a list of IPv4 services - properties: - dns: - description: DNS is a list of IPv4 DNS services - items: - description: IPAddressv4 is used for validation - of an IPv6 address. - pattern: ^((([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]))$ - type: string - type: array - dnsFromIPPool: - description: DNSFromIPPool is the name of - the IPPool from which to get the DNS servers - type: string - type: object - required: - - gateway - - network - type: object - type: array - required: - - id - - ipAddressFromIPPool - - link - type: object - type: array - ipv4DHCP: - description: IPv4 contains a list of IPv4 DHCP allocations - items: - description: NetworkDataIPv4DHCP represents an ipv4 DHCP - network object. - properties: - id: - description: ID is the network ID (name) - type: string - link: - description: Link is the link on which the network applies - type: string - routes: - description: Routes contains a list of IPv4 routes - items: - description: NetworkDataRoutev4 represents an ipv4 - route object. - properties: - gateway: - description: Gateway is the IPv4 address of the - gateway - properties: - fromIPPool: - description: FromIPPool is the name of the - IPPool to fetch the gateway from - type: string - string: - description: String is the gateway given as - a string - pattern: ^((([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]))$ - type: string - type: object - network: - description: Network is the IPv4 network address - pattern: ^((([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]))$ - type: string - prefix: - description: Prefix is the mask of the network - as integer (max 32) - maximum: 32 - type: integer - services: - description: Services is a list of IPv4 services - properties: - dns: - description: DNS is a list of IPv4 DNS services - items: - description: IPAddressv4 is used for validation - of an IPv6 address. - pattern: ^((([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]))$ - type: string - type: array - dnsFromIPPool: - description: DNSFromIPPool is the name of - the IPPool from which to get the DNS servers - type: string - type: object - required: - - gateway - - network - type: object - type: array - required: - - id - - link - type: object - type: array - ipv6: - description: IPv4 contains a list of IPv6 static allocations - items: - description: NetworkDataIPv6 represents an ipv6 static network - object. - properties: - id: - description: ID is the network ID (name) - type: string - ipAddressFromIPPool: - description: IPAddressFromIPPool contains the name of - the IPPool to use to get an ip address - type: string - link: - description: Link is the link on which the network applies - type: string - routes: - description: Routes contains a list of IPv6 routes - items: - description: NetworkDataRoutev6 represents an ipv6 - route object. - properties: - gateway: - description: Gateway is the IPv6 address of the - gateway - properties: - fromIPPool: - description: FromIPPool is the name of the - IPPool to fetch the gateway from - type: string - string: - description: String is the gateway given as - a string - pattern: ^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))$ - type: string - type: object - network: - description: Network is the IPv6 network address - pattern: ^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))$ - type: string - prefix: - description: Prefix is the mask of the network - as integer (max 128) - maximum: 128 - type: integer - services: - description: Services is a list of IPv6 services - properties: - dns: - description: DNS is a list of IPv6 DNS services - items: - description: IPAddressv6 is used for validation - of an IPv6 address. - pattern: ^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))$ - type: string - type: array - dnsFromIPPool: - description: DNSFromIPPool is the name of - the IPPool from which to get the DNS servers - type: string - type: object - required: - - gateway - - network - type: object - type: array - required: - - id - - ipAddressFromIPPool - - link - type: object - type: array - ipv6DHCP: - description: IPv4 contains a list of IPv6 DHCP allocations - items: - description: NetworkDataIPv6DHCP represents an ipv6 DHCP - network object. - properties: - id: - description: ID is the network ID (name) - type: string - link: - description: Link is the link on which the network applies - type: string - routes: - description: Routes contains a list of IPv6 routes - items: - description: NetworkDataRoutev6 represents an ipv6 - route object. - properties: - gateway: - description: Gateway is the IPv6 address of the - gateway - properties: - fromIPPool: - description: FromIPPool is the name of the - IPPool to fetch the gateway from - type: string - string: - description: String is the gateway given as - a string - pattern: ^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))$ - type: string - type: object - network: - description: Network is the IPv6 network address - pattern: ^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))$ - type: string - prefix: - description: Prefix is the mask of the network - as integer (max 128) - maximum: 128 - type: integer - services: - description: Services is a list of IPv6 services - properties: - dns: - description: DNS is a list of IPv6 DNS services - items: - description: IPAddressv6 is used for validation - of an IPv6 address. - pattern: ^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))$ - type: string - type: array - dnsFromIPPool: - description: DNSFromIPPool is the name of - the IPPool from which to get the DNS servers - type: string - type: object - required: - - gateway - - network - type: object - type: array - required: - - id - - link - type: object - type: array - ipv6SLAAC: - description: IPv4 contains a list of IPv6 SLAAC allocations - items: - description: NetworkDataIPv6DHCP represents an ipv6 DHCP - network object. - properties: - id: - description: ID is the network ID (name) - type: string - link: - description: Link is the link on which the network applies - type: string - routes: - description: Routes contains a list of IPv6 routes - items: - description: NetworkDataRoutev6 represents an ipv6 - route object. - properties: - gateway: - description: Gateway is the IPv6 address of the - gateway - properties: - fromIPPool: - description: FromIPPool is the name of the - IPPool to fetch the gateway from - type: string - string: - description: String is the gateway given as - a string - pattern: ^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))$ - type: string - type: object - network: - description: Network is the IPv6 network address - pattern: ^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))$ - type: string - prefix: - description: Prefix is the mask of the network - as integer (max 128) - maximum: 128 - type: integer - services: - description: Services is a list of IPv6 services - properties: - dns: - description: DNS is a list of IPv6 DNS services - items: - description: IPAddressv6 is used for validation - of an IPv6 address. - pattern: ^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))$ - type: string - type: array - dnsFromIPPool: - description: DNSFromIPPool is the name of - the IPPool from which to get the DNS servers - type: string - type: object - required: - - gateway - - network - type: object - type: array - required: - - id - - link - type: object - type: array - type: object - services: - description: Services is a structure containing lists of different - types objects - properties: - dns: - description: DNS is a list of DNS services - items: - description: IPAddress is used for validation of an IP address. - pattern: ((^((([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]))$)|(^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))$)) - type: string - type: array - dnsFromIPPool: - description: DNSFromIPPool is the name of the IPPool from - which to get the DNS servers - type: string - type: object - type: object - templateReference: - description: TemplateReference refers to the Template the Metal3MachineTemplate - refers to. It can be matched against the key or it may also point - to the name of the template Metal3Data refers to - type: string - required: - - clusterName - type: object - status: - description: Metal3DataTemplateStatus defines the observed state of Metal3DataTemplate. - properties: - indexes: - additionalProperties: - type: integer - description: Indexes contains the map of Metal3Machine and index used - type: object - lastUpdated: - description: LastUpdated identifies when this status was last observed. - format: date-time - type: string - type: object - type: object - served: false - storage: false - subresources: - status: {} - additionalPrinterColumns: - description: Cluster to which this template belongs jsonPath: .metadata.labels.cluster\.x-k8s\.io/cluster-name diff --git a/config/crd/bases/infrastructure.cluster.x-k8s.io_metal3machines.yaml b/config/crd/bases/infrastructure.cluster.x-k8s.io_metal3machines.yaml index d7a921e172..c9aa952430 100644 --- a/config/crd/bases/infrastructure.cluster.x-k8s.io_metal3machines.yaml +++ b/config/crd/bases/infrastructure.cluster.x-k8s.io_metal3machines.yaml @@ -22,365 +22,6 @@ spec: singular: metal3machine scope: Namespaced versions: - - additionalPrinterColumns: - - description: Time duration since creation of Metal3Machine - jsonPath: .metadata.creationTimestamp - name: Age - type: date - - description: Provider ID - jsonPath: .spec.providerID - name: ProviderID - type: string - - description: metal3machine is Ready - jsonPath: .status.ready - name: Ready - type: string - - description: Cluster to which this M3Machine belongs - jsonPath: .metadata.labels.cluster\.x-k8s\.io/cluster-name - name: Cluster - type: string - - description: metal3machine current phase - jsonPath: .status.phase - name: Phase - type: string - deprecated: true - name: v1alpha5 - schema: - openAPIV3Schema: - description: Metal3Machine is the Schema for the metal3machines API. - properties: - apiVersion: - description: 'APIVersion defines the versioned schema of this representation - of an object. Servers should convert recognized schemas to the latest - internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' - type: string - kind: - description: 'Kind is a string value representing the REST resource this - object represents. Servers may infer this from the endpoint the client - submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' - type: string - metadata: - type: object - spec: - description: Metal3MachineSpec defines the desired state of Metal3Machine. - properties: - automatedCleaningMode: - description: When set to disabled, automated cleaning of host disks - will be skipped during provisioning and deprovisioning. - enum: - - metadata - - disabled - type: string - dataTemplate: - description: MetadataTemplate is a reference to a Metal3DataTemplate - object containing a template of metadata to be rendered. Metadata - keys defined in the metadataTemplate take precedence over keys defined - in metadata field. - properties: - apiVersion: - description: API version of the referent. - type: string - fieldPath: - description: 'If referring to a piece of an object instead of - an entire object, this string should contain a valid JSON/Go - field access statement, such as desiredState.manifest.containers[2]. - For example, if the object reference is to a container within - a pod, this would take on a value like: "spec.containers{name}" - (where "name" refers to the name of the container that triggered - the event) or if no container name is specified "spec.containers[2]" - (container with index 2 in this pod). This syntax is chosen - only to have some well-defined way of referencing a part of - an object. TODO: this design is not final and this field is - subject to change in the future.' - type: string - kind: - description: 'Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names' - type: string - namespace: - description: 'Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/' - type: string - resourceVersion: - description: 'Specific resourceVersion to which this reference - is made, if any. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency' - type: string - uid: - description: 'UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids' - type: string - type: object - x-kubernetes-map-type: atomic - hostSelector: - description: HostSelector specifies matching criteria for labels on - BareMetalHosts. This is used to limit the set of BareMetalHost objects - considered for claiming for a metal3machine. - properties: - matchExpressions: - description: Label match expressions that must be true on a chosen - BareMetalHost - items: - properties: - key: - type: string - operator: - description: Operator represents a key/field's relationship - to value(s). See labels.Requirement and fields.Requirement - for more details. - type: string - values: - items: - type: string - type: array - required: - - key - - operator - - values - type: object - type: array - matchLabels: - additionalProperties: - type: string - description: Key/value pairs of labels that must exist on a chosen - BareMetalHost - type: object - type: object - image: - description: Image is the image to be provisioned. - properties: - checksum: - description: Checksum is a md5sum, sha256sum or sha512sum value - or a URL to retrieve one. - type: string - checksumType: - description: ChecksumType is the checksum algorithm for the image. - e.g md5, sha256, sha512 - enum: - - md5 - - sha256 - - sha512 - type: string - format: - description: DiskFormat contains the image disk format - enum: - - raw - - qcow2 - - vdi - - vmdk - - live-iso - type: string - url: - description: URL is a location of an image to deploy. - type: string - required: - - checksum - - url - type: object - metaData: - description: MetaData is an object storing the reference to the secret - containing the Metadata given by the user. - properties: - name: - description: name is unique within a namespace to reference a - secret resource. - type: string - namespace: - description: namespace defines the space within which the secret - name must be unique. - type: string - type: object - x-kubernetes-map-type: atomic - networkData: - description: NetworkData is an object storing the reference to the - secret containing the network data given by the user. - properties: - name: - description: name is unique within a namespace to reference a - secret resource. - type: string - namespace: - description: namespace defines the space within which the secret - name must be unique. - type: string - type: object - x-kubernetes-map-type: atomic - providerID: - description: ProviderID will be the Metal3 machine in ProviderID format - (metal3://) - type: string - userData: - description: UserData references the Secret that holds user data needed - by the bare metal operator. The Namespace is optional; it will default - to the metal3machine's namespace if not specified. - properties: - name: - description: name is unique within a namespace to reference a - secret resource. - type: string - namespace: - description: namespace defines the space within which the secret - name must be unique. - type: string - type: object - x-kubernetes-map-type: atomic - required: - - image - type: object - status: - description: Metal3MachineStatus defines the observed state of Metal3Machine. - properties: - addresses: - description: Addresses is a list of addresses assigned to the machine. - This field is copied from the infrastructure provider reference. - items: - description: MachineAddress contains information for the node's - address. - properties: - address: - description: The machine address. - type: string - type: - description: Machine address type, one of Hostname, ExternalIP - or InternalIP. - type: string - required: - - address - - type - type: object - type: array - failureMessage: - description: "FailureMessage will be set in the event that there is - a terminal problem reconciling the metal3machine and will contain - a more verbose string suitable for logging and human consumption. - \n This field should not be set for transitive errors that a controller - faces that are expected to be fixed automatically over time (like - service outages), but instead indicate that something is fundamentally - wrong with the metal3machine's spec or the configuration of the - controller, and that manual intervention is required. Examples of - terminal errors would be invalid combinations of settings in the - spec, values that are unsupported by the controller, or the responsible - controller itself being critically misconfigured. \n Any transient - errors that occur during the reconciliation of metal3machines can - be added as events to the metal3machine object and/or logged in - the controller's output." - type: string - failureReason: - description: "FailureReason will be set in the event that there is - a terminal problem reconciling the metal3machine and will contain - a succinct value suitable for machine interpretation. \n This field - should not be set for transitive errors that a controller faces - that are expected to be fixed automatically over time (like service - outages), but instead indicate that something is fundamentally wrong - with the metal3machine's spec or the configuration of the controller, - and that manual intervention is required. Examples of terminal errors - would be invalid combinations of settings in the spec, values that - are unsupported by the controller, or the responsible controller - itself being critically misconfigured. \n Any transient errors that - occur during the reconciliation of metal3machines can be added as - events to the metal3machine object and/or logged in the controller's - output." - type: string - lastUpdated: - description: LastUpdated identifies when this status was last observed. - format: date-time - type: string - metaData: - description: MetaData is an object storing the reference to the secret - containing the Metadata used to deploy the BareMetalHost. - properties: - name: - description: name is unique within a namespace to reference a - secret resource. - type: string - namespace: - description: namespace defines the space within which the secret - name must be unique. - type: string - type: object - x-kubernetes-map-type: atomic - networkData: - description: NetworkData is an object storing the reference to the - secret containing the network data used to deploy the BareMetalHost. - properties: - name: - description: name is unique within a namespace to reference a - secret resource. - type: string - namespace: - description: namespace defines the space within which the secret - name must be unique. - type: string - type: object - x-kubernetes-map-type: atomic - phase: - description: Phase represents the current phase of machine actuation. - E.g. Pending, Running, Terminating, Failed etc. - type: string - ready: - description: 'Ready is the state of the metal3. TODO : Document the - variable : mhrivnak: " it would be good to document what this means, - how to interpret it, under what circumstances the value changes, - etc."' - type: boolean - renderedData: - description: RenderedData is a reference to a rendered Metal3Data - object containing the references to metaData and networkData secrets. - properties: - apiVersion: - description: API version of the referent. - type: string - fieldPath: - description: 'If referring to a piece of an object instead of - an entire object, this string should contain a valid JSON/Go - field access statement, such as desiredState.manifest.containers[2]. - For example, if the object reference is to a container within - a pod, this would take on a value like: "spec.containers{name}" - (where "name" refers to the name of the container that triggered - the event) or if no container name is specified "spec.containers[2]" - (container with index 2 in this pod). This syntax is chosen - only to have some well-defined way of referencing a part of - an object. TODO: this design is not final and this field is - subject to change in the future.' - type: string - kind: - description: 'Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names' - type: string - namespace: - description: 'Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/' - type: string - resourceVersion: - description: 'Specific resourceVersion to which this reference - is made, if any. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency' - type: string - uid: - description: 'UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids' - type: string - type: object - x-kubernetes-map-type: atomic - userData: - description: UserData references the Secret that holds user data needed - by the bare metal operator. The Namespace is optional; it will default - to the metal3machine's namespace if not specified. - properties: - name: - description: name is unique within a namespace to reference a - secret resource. - type: string - namespace: - description: namespace defines the space within which the secret - name must be unique. - type: string - type: object - x-kubernetes-map-type: atomic - type: object - type: object - served: false - storage: false - subresources: - status: {} - additionalPrinterColumns: - description: Time duration since creation of Metal3Machine jsonPath: .metadata.creationTimestamp diff --git a/config/crd/bases/infrastructure.cluster.x-k8s.io_metal3machinetemplates.yaml b/config/crd/bases/infrastructure.cluster.x-k8s.io_metal3machinetemplates.yaml index 5ac045885c..5f3b32a770 100644 --- a/config/crd/bases/infrastructure.cluster.x-k8s.io_metal3machinetemplates.yaml +++ b/config/crd/bases/infrastructure.cluster.x-k8s.io_metal3machinetemplates.yaml @@ -22,220 +22,6 @@ spec: singular: metal3machinetemplate scope: Namespaced versions: - - additionalPrinterColumns: - - description: Time duration since creation of Metal3MachineTemplate - jsonPath: .metadata.creationTimestamp - name: Age - type: date - deprecated: true - name: v1alpha5 - schema: - openAPIV3Schema: - description: Metal3MachineTemplate is the Schema for the metal3machinetemplates - API. - properties: - apiVersion: - description: 'APIVersion defines the versioned schema of this representation - of an object. Servers should convert recognized schemas to the latest - internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' - type: string - kind: - description: 'Kind is a string value representing the REST resource this - object represents. Servers may infer this from the endpoint the client - submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' - type: string - metadata: - type: object - spec: - description: Metal3MachineTemplateSpec defines the desired state of Metal3MachineTemplate. - properties: - nodeReuse: - default: false - description: When set to True, CAPM3 Machine controller will pick - the same pool of BMHs' that were released during the upgrade operation. - type: boolean - template: - description: Metal3MachineTemplateResource describes the data needed - to create a Metal3Machine from a template. - properties: - spec: - description: Spec is the specification of the desired behavior - of the machine. - properties: - automatedCleaningMode: - description: When set to disabled, automated cleaning of host - disks will be skipped during provisioning and deprovisioning. - enum: - - metadata - - disabled - type: string - dataTemplate: - description: MetadataTemplate is a reference to a Metal3DataTemplate - object containing a template of metadata to be rendered. - Metadata keys defined in the metadataTemplate take precedence - over keys defined in metadata field. - properties: - apiVersion: - description: API version of the referent. - type: string - fieldPath: - description: 'If referring to a piece of an object instead - of an entire object, this string should contain a valid - JSON/Go field access statement, such as desiredState.manifest.containers[2]. - For example, if the object reference is to a container - within a pod, this would take on a value like: "spec.containers{name}" - (where "name" refers to the name of the container that - triggered the event) or if no container name is specified - "spec.containers[2]" (container with index 2 in this - pod). This syntax is chosen only to have some well-defined - way of referencing a part of an object. TODO: this design - is not final and this field is subject to change in - the future.' - type: string - kind: - description: 'Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names' - type: string - namespace: - description: 'Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/' - type: string - resourceVersion: - description: 'Specific resourceVersion to which this reference - is made, if any. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency' - type: string - uid: - description: 'UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids' - type: string - type: object - x-kubernetes-map-type: atomic - hostSelector: - description: HostSelector specifies matching criteria for - labels on BareMetalHosts. This is used to limit the set - of BareMetalHost objects considered for claiming for a metal3machine. - properties: - matchExpressions: - description: Label match expressions that must be true - on a chosen BareMetalHost - items: - properties: - key: - type: string - operator: - description: Operator represents a key/field's relationship - to value(s). See labels.Requirement and fields.Requirement - for more details. - type: string - values: - items: - type: string - type: array - required: - - key - - operator - - values - type: object - type: array - matchLabels: - additionalProperties: - type: string - description: Key/value pairs of labels that must exist - on a chosen BareMetalHost - type: object - type: object - image: - description: Image is the image to be provisioned. - properties: - checksum: - description: Checksum is a md5sum, sha256sum or sha512sum - value or a URL to retrieve one. - type: string - checksumType: - description: ChecksumType is the checksum algorithm for - the image. e.g md5, sha256, sha512 - enum: - - md5 - - sha256 - - sha512 - type: string - format: - description: DiskFormat contains the image disk format - enum: - - raw - - qcow2 - - vdi - - vmdk - - live-iso - type: string - url: - description: URL is a location of an image to deploy. - type: string - required: - - checksum - - url - type: object - metaData: - description: MetaData is an object storing the reference to - the secret containing the Metadata given by the user. - properties: - name: - description: name is unique within a namespace to reference - a secret resource. - type: string - namespace: - description: namespace defines the space within which - the secret name must be unique. - type: string - type: object - x-kubernetes-map-type: atomic - networkData: - description: NetworkData is an object storing the reference - to the secret containing the network data given by the user. - properties: - name: - description: name is unique within a namespace to reference - a secret resource. - type: string - namespace: - description: namespace defines the space within which - the secret name must be unique. - type: string - type: object - x-kubernetes-map-type: atomic - providerID: - description: ProviderID will be the Metal3 machine in ProviderID - format (metal3://) - type: string - userData: - description: UserData references the Secret that holds user - data needed by the bare metal operator. The Namespace is - optional; it will default to the metal3machine's namespace - if not specified. - properties: - name: - description: name is unique within a namespace to reference - a secret resource. - type: string - namespace: - description: namespace defines the space within which - the secret name must be unique. - type: string - type: object - x-kubernetes-map-type: atomic - required: - - image - type: object - required: - - spec - type: object - required: - - template - type: object - type: object - served: false - storage: false - subresources: {} - additionalPrinterColumns: - description: Time duration since creation of Metal3MachineTemplate jsonPath: .metadata.creationTimestamp diff --git a/config/crd/bases/infrastructure.cluster.x-k8s.io_metal3remediations.yaml b/config/crd/bases/infrastructure.cluster.x-k8s.io_metal3remediations.yaml index 04f28d78c1..ca41ecd20f 100644 --- a/config/crd/bases/infrastructure.cluster.x-k8s.io_metal3remediations.yaml +++ b/config/crd/bases/infrastructure.cluster.x-k8s.io_metal3remediations.yaml @@ -19,85 +19,6 @@ spec: singular: metal3remediation scope: Namespaced versions: - - additionalPrinterColumns: - - description: How many times remediation controller should attempt to remediate - the host - jsonPath: .spec.strategy.retryLimit - name: Retry limit - type: string - - description: How many times remediation controller has tried to remediate the - node - jsonPath: .status.retryCount - name: Retry count - type: string - - description: Timestamp of the last remediation attempt - jsonPath: .status.lastRemediated - name: Last Remediated - type: string - - description: Type of the remediation strategy - jsonPath: .spec.strategy.type - name: Strategy - type: string - - description: Phase of the remediation - jsonPath: .status.phase - name: Phase - type: string - deprecated: true - name: v1alpha5 - schema: - openAPIV3Schema: - description: Metal3Remediation is the Schema for the metal3remediations API. - properties: - apiVersion: - description: 'APIVersion defines the versioned schema of this representation - of an object. Servers should convert recognized schemas to the latest - internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' - type: string - kind: - description: 'Kind is a string value representing the REST resource this - object represents. Servers may infer this from the endpoint the client - submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' - type: string - metadata: - type: object - spec: - description: Metal3RemediationSpec defines the desired state of Metal3Remediation. - properties: - strategy: - description: Strategy field defines remediation strategy. - properties: - retryLimit: - description: Sets maximum number of remediation retries. - type: integer - timeout: - description: Sets the timeout between remediation retries. - type: string - type: - description: Type of remediation. - type: string - type: object - type: object - status: - description: Metal3RemediationStatus defines the observed state of Metal3Remediation. - properties: - lastRemediated: - description: LastRemediated identifies when the host was last remediated - format: date-time - type: string - phase: - description: Phase represents the current phase of machine remediation. - E.g. Pending, Running, Done etc. - type: string - retryCount: - description: RetryCount can be used as a counter during the remediation. - Field can hold number of reboots etc. - type: integer - type: object - type: object - served: false - storage: false - subresources: - status: {} - additionalPrinterColumns: - description: How many times remediation controller should attempt to remediate the host diff --git a/config/crd/bases/infrastructure.cluster.x-k8s.io_metal3remediationtemplates.yaml b/config/crd/bases/infrastructure.cluster.x-k8s.io_metal3remediationtemplates.yaml index 81eb82bd2d..e8103dba61 100644 --- a/config/crd/bases/infrastructure.cluster.x-k8s.io_metal3remediationtemplates.yaml +++ b/config/crd/bases/infrastructure.cluster.x-k8s.io_metal3remediationtemplates.yaml @@ -22,87 +22,6 @@ spec: singular: metal3remediationtemplate scope: Namespaced versions: - - deprecated: true - name: v1alpha5 - schema: - openAPIV3Schema: - description: Metal3RemediationTemplate is the Schema for the metal3remediationtemplates - API. - properties: - apiVersion: - description: 'APIVersion defines the versioned schema of this representation - of an object. Servers should convert recognized schemas to the latest - internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' - type: string - kind: - description: 'Kind is a string value representing the REST resource this - object represents. Servers may infer this from the endpoint the client - submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' - type: string - metadata: - type: object - spec: - description: Metal3RemediationTemplateSpec defines the desired state of - Metal3RemediationTemplate. - properties: - template: - description: Metal3RemediationTemplateResource describes the data - needed to create a Metal3Remediation from a template. - properties: - spec: - description: Spec is the specification of the desired behavior - of the Metal3Remediation. - properties: - strategy: - description: Strategy field defines remediation strategy. - properties: - retryLimit: - description: Sets maximum number of remediation retries. - type: integer - timeout: - description: Sets the timeout between remediation retries. - type: string - type: - description: Type of remediation. - type: string - type: object - type: object - required: - - spec - type: object - required: - - template - type: object - status: - description: Metal3RemediationTemplateStatus defines the observed state - of Metal3RemediationTemplate. - properties: - status: - description: Metal3RemediationStatus defines the observed state of - Metal3Remediation - properties: - lastRemediated: - description: LastRemediated identifies when the host was last - remediated - format: date-time - type: string - phase: - description: Phase represents the current phase of machine remediation. - E.g. Pending, Running, Done etc. - type: string - retryCount: - description: RetryCount can be used as a counter during the remediation. - Field can hold number of reboots etc. - type: integer - type: object - required: - - status - type: object - type: object - served: false - storage: false - subresources: - status: {} - name: v1beta1 schema: openAPIV3Schema: diff --git a/config/crd/kustomization.yaml b/config/crd/kustomization.yaml index eaa30a0595..07d6ba8c6c 100644 --- a/config/crd/kustomization.yaml +++ b/config/crd/kustomization.yaml @@ -5,7 +5,6 @@ kind: Kustomization # It should be run by config/default commonLabels: - cluster.x-k8s.io/v1alpha4: v1alpha5 cluster.x-k8s.io/v1beta1: v1beta1 resources: diff --git a/config/ipam/image_patch.yaml b/config/ipam/image_patch.yaml index 396e505309..fba60a0c4b 100644 --- a/config/ipam/image_patch.yaml +++ b/config/ipam/image_patch.yaml @@ -8,5 +8,5 @@ spec: spec: containers: # Change the value of image field below to your controller image URL - - image: quay.io/metal3-io/ip-address-manager:v1.6.0 - name: manager \ No newline at end of file + - image: quay.io/metal3-io/ip-address-manager:v1.7.0-beta.0 + name: manager diff --git a/config/ipam/kustomization.yaml b/config/ipam/kustomization.yaml index 2b67365e74..1905eff8e6 100644 --- a/config/ipam/kustomization.yaml +++ b/config/ipam/kustomization.yaml @@ -3,7 +3,7 @@ kind: Kustomization # When updating the release, update also the image tag in image_patch.yaml resources: -- https://github.com/metal3-io/ip-address-manager/releases/download/v1.6.0/ipam-components.yaml +- https://github.com/metal3-io/ip-address-manager/releases/download/v1.7.0-beta.0/ipam-components.yaml patchesStrategicMerge: - image_patch.yaml diff --git a/go.mod b/go.mod index a04a32b38e..88821e4a2a 100644 --- a/go.mod +++ b/go.mod @@ -5,22 +5,22 @@ go 1.21 require ( github.com/go-logr/logr v1.4.1 github.com/golang/mock v1.6.0 - github.com/metal3-io/baremetal-operator/apis v0.5.0 + github.com/metal3-io/baremetal-operator/apis v0.5.1 github.com/metal3-io/cluster-api-provider-metal3/api v0.0.0 - github.com/metal3-io/ip-address-manager/api v1.6.0 - github.com/onsi/ginkgo/v2 v2.16.0 - github.com/onsi/gomega v1.31.1 + github.com/metal3-io/ip-address-manager/api v1.7.0-beta.0 + github.com/onsi/ginkgo/v2 v2.17.0 + github.com/onsi/gomega v1.32.0 github.com/pkg/errors v0.9.1 github.com/spf13/pflag v1.0.5 gopkg.in/yaml.v2 v2.4.0 - k8s.io/api v0.29.2 - k8s.io/apiextensions-apiserver v0.29.2 - k8s.io/apimachinery v0.29.2 - k8s.io/client-go v0.29.2 - k8s.io/component-base v0.29.2 + k8s.io/api v0.29.3 + k8s.io/apiextensions-apiserver v0.29.3 + k8s.io/apimachinery v0.29.3 + k8s.io/client-go v0.29.3 + k8s.io/component-base v0.29.3 k8s.io/klog/v2 v2.110.1 k8s.io/utils v0.0.0-20231127182322-b307cd553661 - sigs.k8s.io/cluster-api v1.6.2 + sigs.k8s.io/cluster-api v1.7.0-beta.0 sigs.k8s.io/controller-runtime v0.17.2 sigs.k8s.io/yaml v1.4.0 ) @@ -36,8 +36,8 @@ require ( github.com/cespare/xxhash/v2 v2.2.0 // indirect github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect github.com/emicklei/go-restful/v3 v3.11.0 // indirect - github.com/evanphx/json-patch v5.6.0+incompatible // indirect - github.com/evanphx/json-patch/v5 v5.8.0 // indirect + github.com/evanphx/json-patch v5.7.0+incompatible // indirect + github.com/evanphx/json-patch/v5 v5.9.0 // indirect github.com/felixge/httpsnoop v1.0.4 // indirect github.com/fsnotify/fsnotify v1.7.0 // indirect github.com/go-logr/stdr v1.2.2 // indirect @@ -49,7 +49,7 @@ require ( github.com/gobuffalo/flect v1.0.2 // indirect github.com/gogo/protobuf v1.3.2 // indirect github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect - github.com/golang/protobuf v1.5.3 // indirect + github.com/golang/protobuf v1.5.4 // indirect github.com/google/cel-go v0.17.7 // indirect github.com/google/gnostic-models v0.6.8 // indirect github.com/google/go-cmp v0.6.0 // indirect @@ -84,24 +84,24 @@ require ( go.uber.org/multierr v1.11.0 // indirect go.uber.org/zap v1.26.0 // indirect golang.org/x/exp v0.0.0-20230905200255-921286631fa9 // indirect - golang.org/x/net v0.21.0 // indirect - golang.org/x/oauth2 v0.14.0 // indirect + golang.org/x/net v0.22.0 // indirect + golang.org/x/oauth2 v0.18.0 // indirect golang.org/x/sync v0.6.0 // indirect - golang.org/x/sys v0.17.0 // indirect - golang.org/x/term v0.17.0 // indirect + golang.org/x/sys v0.18.0 // indirect + golang.org/x/term v0.18.0 // indirect golang.org/x/text v0.14.0 // indirect - golang.org/x/time v0.3.0 // indirect + golang.org/x/time v0.5.0 // indirect golang.org/x/tools v0.17.0 // indirect gomodules.xyz/jsonpatch/v2 v2.4.0 // indirect google.golang.org/appengine v1.6.7 // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20230913181813-007df8e322eb // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20230920204549-e6e6cdab5c13 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20231106174013-bbf56f31fb17 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20231120223509-83a465c0220f // indirect google.golang.org/grpc v1.59.0 // indirect - google.golang.org/protobuf v1.31.0 // indirect + google.golang.org/protobuf v1.33.0 // indirect gopkg.in/inf.v0 v0.9.1 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect - k8s.io/apiserver v0.29.2 // indirect - k8s.io/cluster-bootstrap v0.28.4 // indirect + k8s.io/apiserver v0.29.3 // indirect + k8s.io/cluster-bootstrap v0.29.3 // indirect k8s.io/kube-openapi v0.0.0-20231010175941-2dd684a91f00 // indirect sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.28.0 // indirect sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd // indirect diff --git a/go.sum b/go.sum index 16bdcaa739..a35acd290c 100644 --- a/go.sum +++ b/go.sum @@ -44,10 +44,10 @@ github.com/dustin/go-humanize v1.0.1 h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkp github.com/dustin/go-humanize v1.0.1/go.mod h1:Mu1zIs6XwVuF/gI1OepvI0qD18qycQx+mFykh5fBlto= github.com/emicklei/go-restful/v3 v3.11.0 h1:rAQeMHw1c7zTmncogyy8VvRZwtkmkZ4FxERmMY4rD+g= github.com/emicklei/go-restful/v3 v3.11.0/go.mod h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc= -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 v5.8.0 h1:lRj6N9Nci7MvzrXuX6HFzU8XjmhPiXPlsKEy1u0KQro= -github.com/evanphx/json-patch/v5 v5.8.0/go.mod h1:VNkHZ/282BpEyt/tObQO8s5CMPmYYq14uClGH4abBuQ= +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/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg= github.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= github.com/fsnotify/fsnotify v1.7.0 h1:8JEhPFa5W2WU7YfeZzPNqzMP6Lwt7L2715Ggo0nosvA= @@ -81,16 +81,14 @@ github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4er github.com/golang/mock v1.6.0 h1:ErTB+efbowRARo13NNdxyJji2egdxLGQhRaY+DUumQc= github.com/golang/mock v1.6.0/go.mod h1:p6yTPP+5HYm5mzsMV8JkE6ZKdX+/wYM6Hr+LicevLPs= github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= -github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= -github.com/golang/protobuf v1.5.3 h1:KhyjKVUg7Usr/dYsdSqoFveMYd5ko72D+zANwlG1mmg= -github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= +github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= +github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= github.com/google/btree v1.0.1 h1:gK4Kx5IaGY9CD5sPJ36FHiBJ6ZXl0kilRiiCj+jdYp4= github.com/google/btree v1.0.1/go.mod h1:xXMiIv4Fb/0kKde4SpL7qlzvu5cMJDRkFDxJfI9uaxA= github.com/google/cel-go v0.17.7 h1:6ebJFzu1xO2n7TLtN+UBqShGBhlD85bhvglh5DpcfqQ= github.com/google/cel-go v0.17.7/go.mod h1:HXZKzB0LXqer5lHHgfWAnlYwJaQBDKMjxjulNQzhwhY= github.com/google/gnostic-models v0.6.8 h1:yo/ABAfM5IMRsS1VnXjTBvUb61tFIHozhlYvRgGre9I= github.com/google/gnostic-models v0.6.8/go.mod h1:5n7qKqH0f5wFt+aWF8CW6pZLLNOfYuF5OpfBSENuI8U= -github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= @@ -137,12 +135,12 @@ github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0 github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc= github.com/matttproud/golang_protobuf_extensions/v2 v2.0.0 h1:jWpvCLoY8Z/e3VKvlsiIGKtc+UG6U5vzxaoagmhXfyg= github.com/matttproud/golang_protobuf_extensions/v2 v2.0.0/go.mod h1:QUyp042oQthUoa9bqDv0ER0wrtXnBruoNd7aNjkbP+k= -github.com/metal3-io/baremetal-operator/apis v0.5.0 h1:IRaKMxRCkYfFAjvZdDyGC6bIaGQsV6MMNmGV8gqyYCc= -github.com/metal3-io/baremetal-operator/apis v0.5.0/go.mod h1:rjpH/E7MB7JWt/LPi6hDd5LpaBIiqaBnm3KtFjKxnUM= +github.com/metal3-io/baremetal-operator/apis v0.5.1 h1:l6VCuM2nSYMsdir3mocXvF80F7HnTXVZ7NNIoMEYbio= +github.com/metal3-io/baremetal-operator/apis v0.5.1/go.mod h1:Q3MHes59mRabjHM6ARoHfgd2uXUjJIytl3/uflzhyew= github.com/metal3-io/baremetal-operator/pkg/hardwareutils v0.5.0 h1:oRkQOlTxcRJsHFM2jkXzOPAkg/REnLEd15GxJTN27Nk= github.com/metal3-io/baremetal-operator/pkg/hardwareutils v0.5.0/go.mod h1:399nvdaqoU9rTI25UdFw2EWcVjmJPpeZPIhfDAIx/XU= -github.com/metal3-io/ip-address-manager/api v1.6.0 h1:9AZhHHnFv/P0iC2UHvjzRwc34yPjRUmZkdWhF65sjZE= -github.com/metal3-io/ip-address-manager/api v1.6.0/go.mod h1:qDeEwi/ebU/SS5r2Ek0vmC7tdIPgDsO3eFIpylZAM04= +github.com/metal3-io/ip-address-manager/api v1.7.0-beta.0 h1:/SDjqdGlRswFRC/QnREW4AGIB1EmGPBUplP9SyXYpKc= +github.com/metal3-io/ip-address-manager/api v1.7.0-beta.0/go.mod h1:2b/grCN91QU0vhsxfafTpKLjBo8EapjkVc5IXINYwAY= github.com/mitchellh/copystructure v1.2.0 h1:vpKXTN4ewci03Vljg/q9QvCGUDttBOGBIa15WveJJGw= github.com/mitchellh/copystructure v1.2.0/go.mod h1:qLl+cE2AmVv+CoeAwDPye/v+N2HKCj9FbZEVFJRxO9s= github.com/mitchellh/reflectwalk v1.0.2 h1:G2LzWKi524PWgd3mLHV8Y5k7s6XUvT0Gef6zxSIeXaQ= @@ -154,10 +152,10 @@ github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9G github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= -github.com/onsi/ginkgo/v2 v2.16.0 h1:7q1w9frJDzninhXxjZd+Y/x54XNjG/UlRLIYPZafsPM= -github.com/onsi/ginkgo/v2 v2.16.0/go.mod h1:llBI3WDLL9Z6taip6f33H76YcWtJv+7R3HigUjbIBOs= -github.com/onsi/gomega v1.31.1 h1:KYppCUK+bUgAZwHOu7EXVBKyQA6ILvOESHkn/tgoqvo= -github.com/onsi/gomega v1.31.1/go.mod h1:y40C95dwAD1Nz36SsEnxvfFe8FFfNxzI5eJ0EYGyAy0= +github.com/onsi/ginkgo/v2 v2.17.0 h1:kdnunFXpBjbzN56hcJHrXZ8M+LOkenKA7NnBzTNigTI= +github.com/onsi/ginkgo/v2 v2.17.0/go.mod h1:llBI3WDLL9Z6taip6f33H76YcWtJv+7R3HigUjbIBOs= +github.com/onsi/gomega v1.32.0 h1:JRYU78fJ1LPxlckP6Txi/EYqJvjtMrDC04/MM5XRHPk= +github.com/onsi/gomega v1.32.0/go.mod h1:a4x4gW6Pz2yK1MAmvluYme5lvYTn61afQ2ETw/8n4Lg= github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U= github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= @@ -181,8 +179,8 @@ github.com/sirupsen/logrus v1.9.0 h1:trlNQbNUG3OdDrDil03MCb1H2o9nJ1x4/5LYw7byDE0 github.com/sirupsen/logrus v1.9.0/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= github.com/soheilhy/cmux v0.1.5 h1:jjzc5WVemNEDTLwv9tlmemhC73tI08BNOIGwBOo10Js= github.com/soheilhy/cmux v0.1.5/go.mod h1:T7TcVDs9LWfQgPlPsdngu6I6QIoyIFZDDC6sNE1GqG0= -github.com/spf13/cast v1.5.1 h1:R+kOtfhWQE6TVQzY+4D7wJLBgkdVasCEFxSUBYBYIlA= -github.com/spf13/cast v1.5.1/go.mod h1:b9PdjNptOpzXr7Rq1q9gJML/2cdGQAo69NKzQ10KN48= +github.com/spf13/cast v1.6.0 h1:GEiTHELF+vaR5dhz3VqZfFSzZjYbgeKDpBxQVS4GYJ0= +github.com/spf13/cast v1.6.0/go.mod h1:ancEpBxwJDODSW/UG4rDrAqiKolqNNh2DX3mk86cAdo= github.com/spf13/cobra v1.8.0 h1:7aJaZx1B85qltLMc546zn58BxxfZdR/W22ej9CFoEf0= github.com/spf13/cobra v1.8.0/go.mod h1:WXLWApfZ71AjXPya3WOlMsY9yMs7YeiHhFVlvLyhcho= github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= @@ -209,14 +207,14 @@ github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9dec github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= go.etcd.io/bbolt v1.3.8 h1:xs88BrvEv273UsB79e0hcVrlUWmS0a8upikMFhSyAtA= go.etcd.io/bbolt v1.3.8/go.mod h1:N9Mkw9X8x5fupy0IKsmuqVtoGDyxsaDlbk4Rd05IAQw= -go.etcd.io/etcd/api/v3 v3.5.10 h1:szRajuUUbLyppkhs9K6BRtjY37l66XQQmw7oZRANE4k= -go.etcd.io/etcd/api/v3 v3.5.10/go.mod h1:TidfmT4Uycad3NM/o25fG3J07odo4GBB9hoxaodFCtI= -go.etcd.io/etcd/client/pkg/v3 v3.5.10 h1:kfYIdQftBnbAq8pUWFXfpuuxFSKzlmM5cSn76JByiT0= -go.etcd.io/etcd/client/pkg/v3 v3.5.10/go.mod h1:DYivfIviIuQ8+/lCq4vcxuseg2P2XbHygkKwFo9fc8U= +go.etcd.io/etcd/api/v3 v3.5.12 h1:W4sw5ZoU2Juc9gBWuLk5U6fHfNVyY1WC5g9uiXZio/c= +go.etcd.io/etcd/api/v3 v3.5.12/go.mod h1:Ot+o0SWSyT6uHhA56al1oCED0JImsRiU9Dc26+C2a+4= +go.etcd.io/etcd/client/pkg/v3 v3.5.12 h1:EYDL6pWwyOsylrQyLp2w+HkQ46ATiOvoEdMarindU2A= +go.etcd.io/etcd/client/pkg/v3 v3.5.12/go.mod h1:seTzl2d9APP8R5Y2hFL3NVlD6qC/dOT+3kvrqPyTas4= go.etcd.io/etcd/client/v2 v2.305.10 h1:MrmRktzv/XF8CvtQt+P6wLUlURaNpSDJHFZhe//2QE4= go.etcd.io/etcd/client/v2 v2.305.10/go.mod h1:m3CKZi69HzilhVqtPDcjhSGp+kA1OmbNn0qamH80xjA= -go.etcd.io/etcd/client/v3 v3.5.10 h1:W9TXNZ+oB3MCd/8UjxHTWK5J9Nquw9fQBLJd5ne5/Ao= -go.etcd.io/etcd/client/v3 v3.5.10/go.mod h1:RVeBnDz2PUEZqTpgqwAtUd8nAPf5kjyFyND7P1VkOKc= +go.etcd.io/etcd/client/v3 v3.5.12 h1:v5lCPXn1pf1Uu3M4laUE2hp/geOTc5uPcYYsNe1lDxg= +go.etcd.io/etcd/client/v3 v3.5.12/go.mod h1:tSbBCakoWmmddL+BKVAJHa9km+O/E+bumDe9mSbPiqw= go.etcd.io/etcd/pkg/v3 v3.5.10 h1:WPR8K0e9kWl1gAhB5A7gEa5ZBTNkT9NdNWrR8Qpo1CM= go.etcd.io/etcd/pkg/v3 v3.5.10/go.mod h1:TKTuCKKcF1zxmfKWDkfz5qqYaE3JncKKZPFf8c1nFUs= go.etcd.io/etcd/raft/v3 v3.5.10 h1:cgNAYe7xrsrn/5kXMSaH8kM/Ky8mAdMqGOxyYwpP0LA= @@ -250,8 +248,8 @@ go.uber.org/zap v1.26.0/go.mod h1:dtElttAiwGvoJ/vj4IwHBS/gXsEu/pZ50mUIRWuG0so= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.19.0 h1:ENy+Az/9Y1vSrlrvBSyna3PITt4tiZLf7sgCjZBX7Wo= -golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU= +golang.org/x/crypto v0.21.0 h1:X31++rzVUdKhX5sWmSOFZxx8UW/ldWx55cbf08iNAMA= +golang.org/x/crypto v0.21.0/go.mod h1:0BP7YvVV9gBbVKyeTG0Gyn+gZm94bibOW5BjDEYAOMs= golang.org/x/exp v0.0.0-20230905200255-921286631fa9 h1:GoHiUyI/Tp2nVkLI2mCxVkOjsbSXD66ic0XW0js0R9g= golang.org/x/exp v0.0.0-20230905200255-921286631fa9/go.mod h1:S2oDrQGGwySpoQPVqRShND87VCbxmc6bL1Yd2oYrm6k= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= @@ -263,10 +261,10 @@ golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLL golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= -golang.org/x/net v0.21.0 h1:AQyQV4dYCvJ7vGmJyKki9+PBdyvhkSd8EIx/qb0AYv4= -golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44= -golang.org/x/oauth2 v0.14.0 h1:P0Vrf/2538nmC0H+pEQ3MNFRRnVR7RlqyVw+bvm26z0= -golang.org/x/oauth2 v0.14.0/go.mod h1:lAtNWgaWfL4cm7j2OV8TxGi9Qb7ECORx8DktCY74OwM= +golang.org/x/net v0.22.0 h1:9sGLhx7iRIHEiX0oAJ3MRZMUCElJgy7Br1nO+AMN3Tc= +golang.org/x/net v0.22.0/go.mod h1:JKghWKKOSdJwpW2GEx0Ja7fmaKnMsbu+MWVZTokSYmg= +golang.org/x/oauth2 v0.18.0 h1:09qnuIAgzdx1XplqJvW6CQqMCtGZykZWcXzPMPUusvI= +golang.org/x/oauth2 v0.18.0/go.mod h1:Wf7knwG0MPoWIMMBgFlEaSUDaKskp0dCfrlJRJXbBi8= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -280,18 +278,18 @@ golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.17.0 h1:25cE3gD+tdBA7lp7QfhuV+rJiE9YXTcS3VG1SqssI/Y= -golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.18.0 h1:DBdB3niSjOA/O0blCZBqDefyWNYveAYMNF1Wum0DYQ4= +golang.org/x/sys v0.18.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= -golang.org/x/term v0.17.0 h1:mkTF7LCd6WGJNL3K1Ad7kwxNfYAW6a8a8QqtMblp/4U= -golang.org/x/term v0.17.0/go.mod h1:lLRBjIVuehSbZlaOtGMbcMncT+aqLLLmKrsjNrUguwk= +golang.org/x/term v0.18.0 h1:FcHjZXDMxI8mM3nwhX9HlKop4C0YQvCVCdwYl2wOtE8= +golang.org/x/term v0.18.0/go.mod h1:ILwASektA3OnRv7amZ1xhE/KTR+u50pbXfZ03+6Nx58= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ= golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= -golang.org/x/time v0.3.0 h1:rg5rLMjNzMS1RkNLzCG38eapWhnYLFYXDXj2gOlr8j4= -golang.org/x/time v0.3.0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.5.0 h1:o7cqy6amK/52YcAKIPlM3a+Fpj35zvRj2TP+e1xFSfk= +golang.org/x/time v0.5.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= @@ -307,18 +305,16 @@ gomodules.xyz/jsonpatch/v2 v2.4.0 h1:Ci3iUJyx9UeRx7CeFN8ARgGbkESwJK+KB9lLcWxY/Zw gomodules.xyz/jsonpatch/v2 v2.4.0/go.mod h1:AH3dM2RI6uoBZxn3LVrfvJ3E0/9dG4cSrbuBJT4moAY= google.golang.org/appengine v1.6.7 h1:FZR1q0exgwxzPzp/aF+VccGrSfxfPpkBqjIIEq3ru6c= google.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= -google.golang.org/genproto v0.0.0-20230913181813-007df8e322eb h1:XFBgcDwm7irdHTbz4Zk2h7Mh+eis4nfJEFQFYzJzuIA= -google.golang.org/genproto v0.0.0-20230913181813-007df8e322eb/go.mod h1:yZTlhN0tQnXo3h00fuXNCxJdLdIdnVFVBaRJ5LWBbw4= -google.golang.org/genproto/googleapis/api v0.0.0-20230913181813-007df8e322eb h1:lK0oleSc7IQsUxO3U5TjL9DWlsxpEBemh+zpB7IqhWI= -google.golang.org/genproto/googleapis/api v0.0.0-20230913181813-007df8e322eb/go.mod h1:KjSP20unUpOx5kyQUFa7k4OJg0qeJ7DEZflGDu2p6Bk= -google.golang.org/genproto/googleapis/rpc v0.0.0-20230920204549-e6e6cdab5c13 h1:N3bU/SQDCDyD6R528GJ/PwW9KjYcJA3dgyH+MovAkIM= -google.golang.org/genproto/googleapis/rpc v0.0.0-20230920204549-e6e6cdab5c13/go.mod h1:KSqppvjFjtoCI+KGd4PELB0qLNxdJHRGqRI09mB6pQA= +google.golang.org/genproto v0.0.0-20231106174013-bbf56f31fb17 h1:wpZ8pe2x1Q3f2KyT5f8oP/fa9rHAKgFPr/HZdNuS+PQ= +google.golang.org/genproto v0.0.0-20231106174013-bbf56f31fb17/go.mod h1:J7XzRzVy1+IPwWHZUzoD0IccYZIrXILAQpc+Qy9CMhY= +google.golang.org/genproto/googleapis/api v0.0.0-20231106174013-bbf56f31fb17 h1:JpwMPBpFN3uKhdaekDpiNlImDdkUAyiJ6ez/uxGaUSo= +google.golang.org/genproto/googleapis/api v0.0.0-20231106174013-bbf56f31fb17/go.mod h1:0xJLfVdJqpAPl8tDg1ujOCGzx6LFLttXT5NhllGOXY4= +google.golang.org/genproto/googleapis/rpc v0.0.0-20231120223509-83a465c0220f h1:ultW7fxlIvee4HYrtnaRPon9HpEgFk5zYpmfMgtKB5I= +google.golang.org/genproto/googleapis/rpc v0.0.0-20231120223509-83a465c0220f/go.mod h1:L9KNLi232K1/xB6f7AlSX692koaRnKaWSR0stBki0Yc= google.golang.org/grpc v1.59.0 h1:Z5Iec2pjwb+LEOqzpB2MR12/eKFhDPhuqW91O+4bwUk= google.golang.org/grpc v1.59.0/go.mod h1:aUPDwccQo6OTjy7Hct4AfBPD1GptF4fyUjIkQ9YtF98= -google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= -google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= -google.golang.org/protobuf v1.31.0 h1:g0LDEJHgrBl9N9r17Ru3sqWhkIx2NB67okBHPwC7hs8= -google.golang.org/protobuf v1.31.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= +google.golang.org/protobuf v1.33.0 h1:uNO2rsAINq/JlFpSdYEKIZ0uKD/R9cpdv0T+yoGwGmI= +google.golang.org/protobuf v1.33.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= @@ -334,20 +330,20 @@ gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C gopkg.in/yaml.v3 v3.0.0/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -k8s.io/api v0.29.2 h1:hBC7B9+MU+ptchxEqTNW2DkUosJpp1P+Wn6YncZ474A= -k8s.io/api v0.29.2/go.mod h1:sdIaaKuU7P44aoyyLlikSLayT6Vb7bvJNCX105xZXY0= -k8s.io/apiextensions-apiserver v0.29.2 h1:UK3xB5lOWSnhaCk0RFZ0LUacPZz9RY4wi/yt2Iu+btg= -k8s.io/apiextensions-apiserver v0.29.2/go.mod h1:aLfYjpA5p3OwtqNXQFkhJ56TB+spV8Gc4wfMhUA3/b8= -k8s.io/apimachinery v0.29.2 h1:EWGpfJ856oj11C52NRCHuU7rFDwxev48z+6DSlGNsV8= -k8s.io/apimachinery v0.29.2/go.mod h1:6HVkd1FwxIagpYrHSwJlQqZI3G9LfYWRPAkUvLnXTKU= -k8s.io/apiserver v0.29.2 h1:+Z9S0dSNr+CjnVXQePG8TcBWHr3Q7BmAr7NraHvsMiQ= -k8s.io/apiserver v0.29.2/go.mod h1:B0LieKVoyU7ykQvPFm7XSdIHaCHSzCzQWPFa5bqbeMQ= -k8s.io/client-go v0.29.2 h1:FEg85el1TeZp+/vYJM7hkDlSTFZ+c5nnK44DJ4FyoRg= -k8s.io/client-go v0.29.2/go.mod h1:knlvFZE58VpqbQpJNbCbctTVXcd35mMyAAwBdpt4jrA= -k8s.io/cluster-bootstrap v0.28.4 h1:4MKNy1Qd9QY7pl47rSMGIORF+tm3CUaqC1M8U9bjn4Q= -k8s.io/cluster-bootstrap v0.28.4/go.mod h1:/c4ro/R4yf4EtJgFgFtvnHkbDOHwubeKJXh5R1c89Bc= -k8s.io/component-base v0.29.2 h1:lpiLyuvPA9yV1aQwGLENYyK7n/8t6l3nn3zAtFTJYe8= -k8s.io/component-base v0.29.2/go.mod h1:BfB3SLrefbZXiBfbM+2H1dlat21Uewg/5qtKOl8degM= +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.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/client-go v0.29.3 h1:R/zaZbEAxqComZ9FHeQwOh3Y1ZUs7FaHKZdQtIc2WZg= +k8s.io/client-go v0.29.3/go.mod h1:tkDisCvgPfiRpxGnOORfkljmS+UrW+WtXAy2fTvXJB0= +k8s.io/cluster-bootstrap v0.29.3 h1:DIMDZSN8gbFMy9CS2mAS2Iqq/fIUG783WN/1lqi5TF8= +k8s.io/cluster-bootstrap v0.29.3/go.mod h1:aPAg1VtXx3uRrx5qU2jTzR7p1rf18zLXWS+pGhiqPto= +k8s.io/component-base v0.29.3 h1:Oq9/nddUxlnrCuuR2K/jp6aflVvc0uDvxMzAWxnGzAo= +k8s.io/component-base v0.29.3/go.mod h1:Yuj33XXjuOk2BAaHsIGHhCKZQAgYKhqIxIjIr2UXYio= 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-openapi v0.0.0-20231010175941-2dd684a91f00 h1:aVUu9fTY98ivBPKR9Y5w/AuzbMm96cd3YHRTU83I780= @@ -356,8 +352,8 @@ k8s.io/utils v0.0.0-20231127182322-b307cd553661 h1:FepOBzJ0GXm8t0su67ln2wAZjbQ6R k8s.io/utils v0.0.0-20231127182322-b307cd553661/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.28.0 h1:TgtAeesdhpm2SGwkQasmbeqDo8th5wOBA5h/AjTKA4I= sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.28.0/go.mod h1:VHVDI/KrK4fjnV61bE2g3sA7tiETLn8sooImelsCx3Y= -sigs.k8s.io/cluster-api v1.6.2 h1:ruUi4q/9jXFuI+hmnDjo9izHgrBk4bjfQXLKx678PQE= -sigs.k8s.io/cluster-api v1.6.2/go.mod h1:Anm4cA6R/AIP6KdIuVje8CdFc/TdGl+382bi5oPawRc= +sigs.k8s.io/cluster-api v1.7.0-beta.0 h1:IjYfeXLwAcY6QRG/47numLQoHY8V6Zb8cHVkgF7Jz80= +sigs.k8s.io/cluster-api v1.7.0-beta.0/go.mod h1:2mRD4V2SSC8oj5/kzBPH3dBqdP3tkZKv+ENHLBy5A/s= sigs.k8s.io/controller-runtime v0.17.2 h1:FwHwD1CTUemg0pW2otk7/U5/i5m2ymzvOXdbeGOUvw0= sigs.k8s.io/controller-runtime v0.17.2/go.mod h1:+MngTvIQQQhfXtwfdGw/UOQ/aIaqsYywfCINOtwMO/s= sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd h1:EDPBXCAspyGV4jQlpZSudPeMmr1bNJefnuqLsRAsHZo= diff --git a/hack/codegen.sh b/hack/codegen.sh index 23c0e1d871..6d900baa78 100755 --- a/hack/codegen.sh +++ b/hack/codegen.sh @@ -21,7 +21,6 @@ if [ "${IS_CONTAINER}" != "false" ]; then config/manager/*.yaml config/rbac/*.yaml config/webhook/*.yaml - api/v1alpha5/zz_generated.*.go api/v1beta1/zz_generated.*.go baremetal/mocks/zz_generated.*.go" diff --git a/hack/gofmt.sh b/hack/gofmt.sh deleted file mode 100755 index cb5739cb55..0000000000 --- a/hack/gofmt.sh +++ /dev/null @@ -1,34 +0,0 @@ -#!/bin/sh - -set -eux - -IS_CONTAINER="${IS_CONTAINER:-false}" -CONTAINER_RUNTIME="${CONTAINER_RUNTIME:-podman}" - -if [ "${IS_CONTAINER}" != "false" ]; then - export XDG_CACHE_HOME=/tmp/.cache - mkdir /tmp/unit - cp -r . /tmp/unit - cd /tmp/unit - make fmt > /tmp/fmt-output.log - FILE_LENGTH="$(wc -l /tmp/fmt-output.log | awk '{ print $1 }')" - - # File length to be checked should be 3 since the following headers should be present - # go fmt ./controllers/... ./baremetal/... . - # cd api; go fmt ./... - # cd test; go fmt ./... - if [ "${FILE_LENGTH}" != "3" ]; then - echo "Formatting error! Please run 'make fmt' to correct the problem." - echo "The problematic files are listed below, after the command that should be run" - cat /tmp/fmt-output.log - exit 1 - fi -else - "${CONTAINER_RUNTIME}" run --rm \ - --env IS_CONTAINER=TRUE \ - --volume "${PWD}:/workdir:ro,z" \ - --entrypoint sh \ - --workdir /workdir \ - docker.io/golang:1.21 \ - /workdir/hack/gofmt.sh -fi diff --git a/hack/govet.sh b/hack/govet.sh deleted file mode 100755 index b12b674a1a..0000000000 --- a/hack/govet.sh +++ /dev/null @@ -1,22 +0,0 @@ -#!/bin/sh - -set -eux - -IS_CONTAINER="${IS_CONTAINER:-false}" -CONTAINER_RUNTIME="${CONTAINER_RUNTIME:-podman}" - -if [ "${IS_CONTAINER}" != "false" ]; then - export XDG_CACHE_HOME=/tmp/.cache - mkdir /tmp/unit - cp -r . /tmp/unit - cd /tmp/unit - make vet -else - "${CONTAINER_RUNTIME}" run --rm \ - --env IS_CONTAINER=TRUE \ - --volume "${PWD}:/workdir:ro,z" \ - --entrypoint sh \ - --workdir /workdir \ - docker.io/golang:1.21 \ - /workdir/hack/govet.sh -fi diff --git a/hack/shellcheck.sh b/hack/shellcheck.sh index 9c83430fc9..70c27cbb7a 100755 --- a/hack/shellcheck.sh +++ b/hack/shellcheck.sh @@ -14,6 +14,6 @@ else --volume "${PWD}:/workdir:ro,z" \ --entrypoint sh \ --workdir /workdir \ - docker.io/koalaman/shellcheck-alpine:v0.9.0@sha256:e19ed93c22423970d56568e171b4512c9244fc75dd9114045016b4a0073ac4b7 \ + docker.io/koalaman/shellcheck-alpine:v0.10.0@sha256:5921d946dac740cbeec2fb1c898747b6105e585130cc7f0602eec9a10f7ddb63 \ /workdir/hack/shellcheck.sh "$@" fi diff --git a/hack/tools/go.mod b/hack/tools/go.mod index 38e5bc3bae..8e71c3ae07 100644 --- a/hack/tools/go.mod +++ b/hack/tools/go.mod @@ -6,7 +6,7 @@ require ( github.com/drone/envsubst v1.0.3 github.com/golang/mock v1.6.0 github.com/jteeuwen/go-bindata v3.0.7+incompatible - k8s.io/code-generator v0.29.2 + k8s.io/code-generator v0.29.3 sigs.k8s.io/controller-runtime/tools/setup-envtest v0.0.0-20230510161459-7571f4b9a942 sigs.k8s.io/controller-tools v0.13.0 sigs.k8s.io/kustomize/kustomize/v5 v5.3.0 @@ -24,7 +24,7 @@ require ( github.com/go-openapi/swag v0.22.3 // indirect github.com/gobuffalo/flect v1.0.2 // indirect github.com/gogo/protobuf v1.3.2 // indirect - github.com/golang/protobuf v1.5.3 // indirect + github.com/golang/protobuf v1.5.4 // indirect github.com/google/gnostic-models v0.6.8 // indirect github.com/google/go-cmp v0.6.0 // indirect github.com/google/gofuzz v1.2.0 // indirect @@ -56,18 +56,18 @@ require ( golang.org/x/sys v0.15.0 // indirect golang.org/x/text v0.14.0 // indirect golang.org/x/tools v0.16.1 // indirect - google.golang.org/protobuf v1.31.0 // indirect + google.golang.org/protobuf v1.33.0 // indirect gopkg.in/evanphx/json-patch.v5 v5.6.0 // indirect gopkg.in/inf.v0 v0.9.1 // indirect gopkg.in/yaml.v2 v2.4.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect - k8s.io/api v0.28.6 // indirect - k8s.io/apiextensions-apiserver v0.28.6 // indirect - k8s.io/apimachinery v0.28.6 // indirect + k8s.io/api v0.29.3 // indirect + k8s.io/apiextensions-apiserver v0.29.3 // indirect + k8s.io/apimachinery v0.29.3 // indirect k8s.io/gengo v0.0.0-20230829151522-9cce18d56c01 // indirect k8s.io/klog/v2 v2.110.1 // indirect k8s.io/kube-openapi v0.0.0-20231010175941-2dd684a91f00 // indirect - k8s.io/utils v0.0.0-20230505201702-9f6742963106 // indirect + k8s.io/utils v0.0.0-20230726121419-3b25d923346b // indirect sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd // indirect sigs.k8s.io/kustomize/api v0.16.0 // indirect sigs.k8s.io/kustomize/cmd/config v0.13.0 // indirect diff --git a/hack/tools/go.sum b/hack/tools/go.sum index b30e41d363..f840b67696 100644 --- a/hack/tools/go.sum +++ b/hack/tools/go.sum @@ -63,8 +63,8 @@ github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.m github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= github.com/fatih/color v1.15.0 h1:kOqh6YHBtK8aywxGerMG2Eq3H6Qgoqeo13Bk2Mv/nBs= github.com/fatih/color v1.15.0/go.mod h1:0h5ZqXfHYED7Bhv2ZJamyIOUej9KtShiJESRwBDUSsw= -github.com/fsnotify/fsnotify v1.6.0 h1:n+5WquG0fcWoWp6xPWfHdbskMCQaFnG6PfBrh1Ky4HY= -github.com/fsnotify/fsnotify v1.6.0/go.mod h1:sl3t1tCWJFWoRz9R8WJCbQihKKwmorjAbSClcnxKAGw= +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/go-errors/errors v1.4.2 h1:J6MZopCL4uSllY1OfXM374weqZFFItUbrImctkmUxIA= github.com/go-errors/errors v1.4.2/go.mod h1:sIVyrIiJhuEF+Pj9Ebtd6P/rEYROXFi3BopGUQ5a5Og= github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= @@ -116,9 +116,8 @@ github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvq github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8= github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= -github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= -github.com/golang/protobuf v1.5.3 h1:KhyjKVUg7Usr/dYsdSqoFveMYd5ko72D+zANwlG1mmg= -github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= +github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= +github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/gnostic-models v0.6.8 h1:yo/ABAfM5IMRsS1VnXjTBvUb61tFIHozhlYvRgGre9I= @@ -132,7 +131,6 @@ github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/ github.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= @@ -575,10 +573,8 @@ google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2 google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGjtUeSXeh4= google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= -google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= -google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= -google.golang.org/protobuf v1.31.0 h1:g0LDEJHgrBl9N9r17Ru3sqWhkIx2NB67okBHPwC7hs8= -google.golang.org/protobuf v1.31.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= +google.golang.org/protobuf v1.33.0 h1:uNO2rsAINq/JlFpSdYEKIZ0uKD/R9cpdv0T+yoGwGmI= +google.golang.org/protobuf v1.33.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= 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= @@ -608,14 +604,14 @@ honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWh honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= 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= -k8s.io/api v0.28.6 h1:yy6u9CuIhmg55YvF/BavPBBXB+5QicB64njJXxVnzLo= -k8s.io/api v0.28.6/go.mod h1:AM6Ys6g9MY3dl/XNaNfg/GePI0FT7WBGu8efU/lirAo= -k8s.io/apiextensions-apiserver v0.28.6 h1:myB3iG/3v3jqCg28JDbOefu4sH2/erNEXgytRzJKBOo= -k8s.io/apiextensions-apiserver v0.28.6/go.mod h1:qlp6xRKBgyRhe5AYc81TQpLx4kLNK8/sGQUOwMkVjRk= -k8s.io/apimachinery v0.28.6 h1:RsTeR4z6S07srPg6XYrwXpTJVMXsjPXn0ODakMytSW0= -k8s.io/apimachinery v0.28.6/go.mod h1:QFNX/kCl/EMT2WTSz8k4WLCv2XnkOLMaL8GAVRMdpsA= -k8s.io/code-generator v0.29.2 h1:c9/iw2KnNpw2IRV+wwuG/Wns2TjPSgjWzbbjTevyiHI= -k8s.io/code-generator v0.29.2/go.mod h1:FwFi3C9jCrmbPjekhaCYcYG1n07CYiW1+PAPCockaos= +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.29.3 h1:2tbx+5L7RNvqJjn7RIuIKu9XTsIZ9Z5wX2G22XAa5EU= +k8s.io/apimachinery v0.29.3/go.mod h1:hx/S4V2PNW4OMg3WizRrHutyB5la0iCUbZym+W0EQIU= +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/gengo v0.0.0-20230829151522-9cce18d56c01 h1:pWEwq4Asjm4vjW7vcsmijwBhOr1/shsbSYiWXmNGlks= k8s.io/gengo v0.0.0-20230829151522-9cce18d56c01/go.mod h1:FiNAH4ZV3gBg2Kwh89tzAEV2be7d5xI0vBa/VySYy3E= k8s.io/klog/v2 v2.2.0/go.mod h1:Od+F08eJP+W3HUb4pSrPpgp9DGU4GzlpG/TmITuYh/Y= @@ -623,8 +619,8 @@ 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-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/utils v0.0.0-20230505201702-9f6742963106 h1:EObNQ3TW2D+WptiYXlApGNLVy0zm/JIBVY9i+M4wpAU= -k8s.io/utils v0.0.0-20230505201702-9f6742963106/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= +k8s.io/utils v0.0.0-20230726121419-3b25d923346b h1:sgn3ZU783SCgtaSJjpcVVlRqd6GSnlTLKgpAAttJvpI= +k8s.io/utils v0.0.0-20230726121419-3b25d923346b/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0= rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA= diff --git a/hack/verify-release.sh b/hack/verify-release.sh index dc75a87d5d..bf39d2be05 100755 --- a/hack/verify-release.sh +++ b/hack/verify-release.sh @@ -414,6 +414,37 @@ verify_container_images() echo -e "Done\n" } +verify_container_base_image() +{ + # check if the golang used for container image build is latest of its minor + local image tag + + echo "Verifying container base images ..." + + image_and_tag="$(grep "^ARG BUILD_IMAGE=" Dockerfile | cut -f2 -d=)" + image="${image_and_tag/:*}" + image_and_tag_without_sha="${image_and_tag/@sha256:*}" + tag="${image_and_tag_without_sha/*:}" + tag_minor="${tag%.*}" + + # quay paginates 50 items at a time, so it is simpler to use gcrane + # to list all the tags, than DIY parse the pagination logic + if ! "${GCRANE_CMD[@]}" ls --platform "linux/amd64" "${image}" 2>/dev/null > "${TAG_LOG}"; then + echo "ERROR: cannot list container tags for ${image}" + return 1 + fi + latest_minor="$(sort -rV < "${TAG_LOG}" | cut -f2 -d: | grep -E "^v?${tag_minor/./\\.}\.[[:digit:]]+$" | head -1)" + + if [[ -z "${latest_minor}" ]]; then + echo "WARNING: could not find any minor releases of ${image_and_tag_without_sha}" + elif [[ "${latest_minor}" != "${tag}" ]]; then + echo "WARNING: container base image ${image_and_tag_without_sha} is not the latest minor" + echo "WARNING: latest minor ${latest_minor} != ${tag}, needs a bump" + fi + + echo -e "Done\n" +} + # # helper functions for module related checks @@ -621,6 +652,7 @@ if [[ -n "${TAG_EXISTS}" ]]; then fi # always verified +verify_container_base_image verify_module_versions verify_module_group_versions verify_module_releases diff --git a/main.go b/main.go index 52c6392a90..2428d20f93 100644 --- a/main.go +++ b/main.go @@ -27,7 +27,6 @@ import ( "time" bmov1alpha1 "github.com/metal3-io/baremetal-operator/apis/metal3.io/v1alpha1" - infrav1alpha5 "github.com/metal3-io/cluster-api-provider-metal3/api/v1alpha5" infrav1 "github.com/metal3-io/cluster-api-provider-metal3/api/v1beta1" "github.com/metal3-io/cluster-api-provider-metal3/baremetal" infraremote "github.com/metal3-io/cluster-api-provider-metal3/baremetal/remote" @@ -106,7 +105,6 @@ func init() { _ = ipamv1.AddToScheme(myscheme) _ = caipamv1.AddToScheme(myscheme) _ = infrav1.AddToScheme(myscheme) - _ = infrav1alpha5.AddToScheme(myscheme) _ = clusterv1.AddToScheme(myscheme) _ = bmov1alpha1.AddToScheme(myscheme) } diff --git a/metadata.yaml b/metadata.yaml index f4e16d856c..1464921eaf 100644 --- a/metadata.yaml +++ b/metadata.yaml @@ -1,6 +1,9 @@ apiVersion: clusterctl.cluster.x-k8s.io/v1alpha3 kind: Metadata releaseSeries: +- major: 1 + minor: 7 + contract: v1beta1 - major: 1 minor: 6 contract: v1beta1 @@ -19,6 +22,3 @@ releaseSeries: - major: 1 minor: 1 contract: v1beta1 -- major: 0 - minor: 5 - contract: v1alpha4 diff --git a/scripts/ci-e2e.sh b/scripts/ci-e2e.sh index 0088400d28..9d7fb544e2 100755 --- a/scripts/ci-e2e.sh +++ b/scripts/ci-e2e.sh @@ -77,28 +77,18 @@ source "${M3_DEV_ENV_PATH}/lib/ironic_basic_auth.sh" source "${M3_DEV_ENV_PATH}/lib/ironic_tls_setup.sh" # Parameterize e2e_config -# By default UPGRADE_FROM_RELEASE is v0.5. if not explicitly exported -export UPGRADE_FROM_RELEASE="${UPGRADE_FROM_RELEASE:-v0.5.}" +# By default UPGRADE_FROM_RELEASE is v1.2. if not explicitly exported +export UPGRADE_FROM_RELEASE="${UPGRADE_FROM_RELEASE:-v1.2.}" # Get latest capm3 patch for a minor version $UPGRADE_FROM_RELEASE export CAPM3_FROM_RELEASE="${CAPM3_FROM_RELEASE:-$(get_latest_release "${CAPM3RELEASEPATH}" "${UPGRADE_FROM_RELEASE}")}" # Get latest capi patch for the compatible version with capm3 $UPGRADE_FROM_RELEASE -# for example the compatible version with capm3 0.5.x is capi 0.4.y -# If we are not upgrading from v0.5 then the capi compatible has same minor version tag as capm3 e.g v1.1.x -if [[ "${UPGRADE_FROM_RELEASE:-v0.5.}" == "v0.5." ]]; then - CAPI_UPGRADE_FROM_RELEASE="v0.4." -else - # If we are not upgrading from v0.5 then the capi compatible has same minor version tag e.g v1.1.x - CAPI_UPGRADE_FROM_RELEASE=${UPGRADE_FROM_RELEASE} -fi +CAPI_UPGRADE_FROM_RELEASE=${UPGRADE_FROM_RELEASE} + export CAPI_FROM_RELEASE="${CAPI_FROM_RELEASE:-$(get_latest_release "${CAPIRELEASEPATH}" "${CAPI_UPGRADE_FROM_RELEASE}")}" # The e2e config file parameter for the capi release compatible with main (capm3 next version) export CAPI_TO_RELEASE="${CAPIRELEASE}" # K8s support based on https://cluster-api.sigs.k8s.io/reference/versions.html#core-provider-cluster-api-controller case ${CAPI_FROM_RELEASE} in -v0.4*) - export CONTRACT_FROM="v1alpha4" - export INIT_WITH_KUBERNETES_VERSION="v1.23.17" - ;; v1.2*) export CONTRACT_FROM="v1beta1" export INIT_WITH_KUBERNETES_VERSION="v1.27.4" @@ -130,4 +120,10 @@ export CONTRACT_TO="v1beta1" export LIVE_ISO_IMAGE="https://artifactory.nordix.org/artifactory/metal3/images/iso/minimal_linux_live-v2.iso" # run e2e tests -make e2e-tests +if [ -n "${CLUSTER_TOPOLOGY:-}" ]; then + export CLUSTER_TOPOLOGY=true + make e2e-clusterclass-tests +else + make e2e-tests +fi + diff --git a/scripts/environment.sh b/scripts/environment.sh index 651bf4ae1b..42ab1d1483 100644 --- a/scripts/environment.sh +++ b/scripts/environment.sh @@ -64,7 +64,7 @@ export PATH=$PATH:$HOME/.krew/bin # Upgrade test environment vars and config if [[ ${GINKGO_FOCUS:-} == "clusterctl-upgrade" ]]; then - export NUM_NODES=${NUM_NODES:-"5"} + export NUM_NODES="5" fi # Integration test environment vars and config @@ -98,11 +98,7 @@ export IRONIC_TLS_SETUP="true" export IRONIC_BASIC_AUTH="true" # supported providerID formats -if [[ $CAPM3_VERSION == "v1alpha5" ]]; then - export PROVIDER_ID_FORMAT="metal3://{{ ds.meta_data.uuid }}" -else - export PROVIDER_ID_FORMAT="metal3://{{ ds.meta_data.providerid }}" -fi +export PROVIDER_ID_FORMAT="metal3://{{ ds.meta_data.providerid }}" # Enable the ClusterResourceSet feature flag export EXP_CLUSTER_RESOURCE_SET="true" diff --git a/test/e2e/common.go b/test/e2e/common.go index 1aa7fd28c7..dbc9db8c6a 100644 --- a/test/e2e/common.go +++ b/test/e2e/common.go @@ -469,10 +469,10 @@ func GetMetal3Machines(ctx context.Context, c client.Client, _, namespace string Expect(c.List(ctx, allMachines, client.InNamespace(namespace))).To(Succeed()) for _, machine := range allMachines.Items { - if strings.Contains(machine.ObjectMeta.Name, "workers") { - workers = append(workers, machine) - } else { + if _, ok := machine.GetLabels()[clusterv1.MachineControlPlaneLabel]; ok { controlplane = append(controlplane, machine) + } else { + workers = append(workers, machine) } } @@ -589,7 +589,7 @@ func MachineToVMName(ctx context.Context, cli client.Client, m *clusterv1.Machin } // MachineTiIPAddress gets IPAddress based on machine, from machine -> m3machine -> m3data -> IPAddress. -func MachineToIPAddress(ctx context.Context, cli client.Client, m *clusterv1.Machine) (string, error) { +func MachineToIPAddress(ctx context.Context, cli client.Client, m *clusterv1.Machine, ippool ipamv1.IPPool) (string, error) { m3Machine := &infrav1.Metal3Machine{} err := cli.Get(ctx, types.NamespacedName{ Namespace: m.Spec.InfrastructureRef.Namespace, @@ -624,7 +624,7 @@ func MachineToIPAddress(ctx context.Context, cli client.Client, m *clusterv1.Mac } for i, ip := range IPAddresses.Items { for _, owner := range ip.OwnerReferences { - if owner.Name == m3Data.Name { + if owner.Name == m3Data.Name && ip.Spec.Pool.Name == ippool.Name { IPAddress = &IPAddresses.Items[i] } } @@ -728,7 +728,11 @@ func (Metal3LogCollector) CollectMachineLog(ctx context.Context, cli client.Clie } creds := kubeadmCP.Spec.KubeadmConfigSpec.Users[0] - ip, err := MachineToIPAddress(ctx, cli, m) + // get baremetal ip pool for retreiving ip addresses of controlpane and worker nodes + baremetalv4Pool, _ := GetIPPools(ctx, cli, m.Spec.ClusterName, m.Namespace) + Expect(baremetalv4Pool).ToNot(BeEmpty()) + + ip, err := MachineToIPAddress(ctx, cli, m, baremetalv4Pool[0]) if err != nil { return fmt.Errorf("couldn't get IP address of machine: %w", err) } diff --git a/test/e2e/config/e2e_conf.yaml b/test/e2e/config/e2e_conf.yaml index b0ab7732ff..3d3c94b811 100644 --- a/test/e2e/config/e2e_conf.yaml +++ b/test/e2e/config/e2e_conf.yaml @@ -17,84 +17,104 @@ providers: - name: cluster-api type: CoreProvider versions: - - name: ${CAPI_FROM_RELEASE} - value: "https://github.com/kubernetes-sigs/cluster-api/releases/download/${CAPI_FROM_RELEASE}/core-components.yaml" + - name: v1.6.3 + value: "https://github.com/kubernetes-sigs/cluster-api/releases/download/v1.6.3/core-components.yaml" type: "url" - contract: ${CONTRACT_FROM} + contract: v1beta1 replacements: - old: --metrics-addr=127.0.0.1:8080 new: --metrics-addr=:8080 files: - - sourcePath: "../data/shared/${CAPI_FROM_RELEASE:0:4}/metadata.yaml" - - name: ${CAPI_TO_RELEASE} - # Use manifest from source files - value: "https://github.com/kubernetes-sigs/cluster-api/releases/download/${CAPI_TO_RELEASE}/core-components.yaml" + - sourcePath: "../data/shared/v1.6/metadata.yaml" + - name: v1.5.7 + value: "https://github.com/kubernetes-sigs/cluster-api/releases/download/v1.5.7/core-components.yaml" type: "url" - contract: ${CONTRACT_TO} - files: - - sourcePath: "../data/shared/${CAPI_TO_RELEASE:0:4}/metadata.yaml" + contract: v1beta1 replacements: - - old: "--leader-elect" - new: "--leader-elect=false" + - old: --metrics-addr=127.0.0.1:8080 + new: --metrics-addr=:8080 + files: + - sourcePath: "../data/shared/v1.5/metadata.yaml" - name: kubeadm type: BootstrapProvider versions: - - name: ${CAPI_FROM_RELEASE} # latest published release in the v1alpha4 series; this is used for v1alpha4 --> v1beta1 clusterctl upgrades test only. - value: "https://github.com/kubernetes-sigs/cluster-api/releases/download/${CAPI_FROM_RELEASE}/bootstrap-components.yaml" + - name: v1.6.3 + value: "https://github.com/kubernetes-sigs/cluster-api/releases/download/v1.6.3/bootstrap-components.yaml" type: "url" - contract: ${CONTRACT_FROM} + contract: v1beta1 replacements: - old: --metrics-addr=127.0.0.1:8080 new: --metrics-addr=:8080 files: - - sourcePath: "../data/shared/${CAPI_FROM_RELEASE:0:4}/metadata.yaml" - - name: ${CAPI_TO_RELEASE} - # Use manifest from source files - value: "https://github.com/kubernetes-sigs/cluster-api/releases/download/${CAPI_TO_RELEASE}/bootstrap-components.yaml" + - sourcePath: "../data/shared/v1.6/metadata.yaml" + - name: v1.5.7 + value: "https://github.com/kubernetes-sigs/cluster-api/releases/download/v1.5.7/bootstrap-components.yaml" type: "url" - contract: ${CONTRACT_TO} - files: - - sourcePath: "../data/shared/${CAPI_TO_RELEASE:0:4}/metadata.yaml" + contract: v1beta1 replacements: - - old: "--leader-elect" - new: "--leader-elect=false" + - old: --metrics-addr=127.0.0.1:8080 + new: --metrics-addr=:8080 + files: + - sourcePath: "../data/shared/v1.5/metadata.yaml" - name: kubeadm type: ControlPlaneProvider versions: - - name: ${CAPI_FROM_RELEASE} # latest published release in the v1alpha4 series; this is used for v1alpha4 --> v1beta1 clusterctl upgrades test only. - value: "https://github.com/kubernetes-sigs/cluster-api/releases/download/${CAPI_FROM_RELEASE}/control-plane-components.yaml" + - name: v1.6.3 + value: "https://github.com/kubernetes-sigs/cluster-api/releases/download/v1.6.3/control-plane-components.yaml" type: "url" - contract: ${CONTRACT_FROM} + contract: v1beta1 replacements: - old: --metrics-addr=127.0.0.1:8080 new: --metrics-addr=:8080 files: - - sourcePath: "../data/shared/${CAPI_FROM_RELEASE:0:4}/metadata.yaml" - - name: ${CAPI_TO_RELEASE} - # Use manifest from source files - value: "https://github.com/kubernetes-sigs/cluster-api/releases/download/${CAPI_TO_RELEASE}/control-plane-components.yaml" + - sourcePath: "../data/shared/v1.6/metadata.yaml" + - name: v1.5.7 + value: "https://github.com/kubernetes-sigs/cluster-api/releases/download/v1.5.7/control-plane-components.yaml" type: "url" - contract: ${CONTRACT_TO} - files: - - sourcePath: "../data/shared/${CAPI_TO_RELEASE:0:4}/metadata.yaml" + contract: v1beta1 replacements: - - old: "--leader-elect" - new: "--leader-elect=false" + - old: --metrics-addr=127.0.0.1:8080 + new: --metrics-addr=:8080 + files: + - sourcePath: "../data/shared/v1.5/metadata.yaml" - name: metal3 type: InfrastructureProvider versions: - - name: ${CAPM3_FROM_RELEASE} - value: "https://github.com/metal3-io/cluster-api-provider-metal3/releases/download/${CAPM3_FROM_RELEASE}/infrastructure-components.yaml" + - name: v1.6.1 + value: "https://github.com/metal3-io/cluster-api-provider-metal3/releases/download/v1.6.1/infrastructure-components.yaml" type: "url" - contract: ${CONTRACT_FROM} + contract: v1beta1 files: - - sourcePath: "../data/infrastructure-metal3/${CAPM3_FROM_RELEASE:0:4}/metadata.yaml" + - sourcePath: "../data/infrastructure-metal3/v1.6/metadata.yaml" + targetName: "metadata.yaml" + - sourcePath: "../_out/cluster-template-ubuntu.yaml" + targetName: "cluster-template-ubuntu.yaml" + - sourcePath: "../_out/cluster-template-upgrade-workload.yaml" + targetName: "cluster-template-upgrade-workload.yaml" + - name: v1.5.3 + value: "https://github.com/metal3-io/cluster-api-provider-metal3/releases/download/v1.5.3/infrastructure-components.yaml" + type: "url" + contract: v1beta1 + files: + - sourcePath: "../data/infrastructure-metal3/v1.5/metadata.yaml" targetName: "metadata.yaml" - sourcePath: "../_out/cluster-template-ubuntu.yaml" targetName: "cluster-template-ubuntu.yaml" - sourcePath: "../_out/cluster-template-upgrade-workload.yaml" targetName: "cluster-template-upgrade-workload.yaml" - name: v1.6.99 + value: "${PWD}/config/default" + replacements: + - old: "--leader-elect" + new: "--leader-elect\n - --logging-format=json" + files: + - sourcePath: "../data/infrastructure-metal3/v1.6/metadata.yaml" + targetName: "metadata.yaml" + - sourcePath: "../_out/cluster-template-ubuntu.yaml" + targetName: "cluster-template-ubuntu.yaml" + - sourcePath: "../_out/cluster-template-centos.yaml" + targetName: "cluster-template-centos.yaml" + - name: v1.7.99 value: "${PWD}/config/default" files: - sourcePath: "../data/infrastructure-metal3/main/metadata.yaml" @@ -103,6 +123,8 @@ providers: targetName: "cluster-template-ubuntu.yaml" - sourcePath: "../_out/cluster-template-centos.yaml" targetName: "cluster-template-centos.yaml" + - sourcePath: "../_out/clusterclass.yaml" + targetName: "clusterclass-test-clusterclass.yaml" variables: CNI: "/tmp/calico.yaml" diff --git a/test/e2e/data/infrastructure-metal3/bases/clusterclass-centos-kubeadm-config/clusterclass-centos-kubeadm-config.yaml b/test/e2e/data/infrastructure-metal3/bases/clusterclass-centos-kubeadm-config/clusterclass-centos-kubeadm-config.yaml new file mode 100644 index 0000000000..712c4124b6 --- /dev/null +++ b/test/e2e/data/infrastructure-metal3/bases/clusterclass-centos-kubeadm-config/clusterclass-centos-kubeadm-config.yaml @@ -0,0 +1,244 @@ +--- +apiVersion: controlplane.cluster.x-k8s.io/${CAPI_VERSION} +kind: KubeadmControlPlaneTemplate +metadata: + name: ${CLUSTER_NAME} + namespace: ${NAMESPACE} +spec: +template: + spec: + kubeadmConfigSpec: + clusterConfiguration: {} + users: + - name: ${IMAGE_USERNAME} + sshAuthorizedKeys: + - ${SSH_PUB_KEY_CONTENT} + sudo: ALL=(ALL) NOPASSWD:ALL + files: + - content: | + #!/bin/bash + set -e + url="$1" + dst="$2" + filename="$(basename $url)" + tmpfile="/tmp/$filename" + curl -sSL -w "%{http_code}" "$url" | sed "s:/usr/bin:/usr/local/bin:g" > /tmp/"$filename" + http_status=$(cat "$tmpfile" | tail -n 1) + if [ "$http_status" != "200" ]; then + echo "Error: unable to retrieve $filename file"; + exit 1; + else + cat "$tmpfile"| sed '$d' > "$dst"; + fi + owner: root:root + path: /usr/local/bin/retrieve.configuration.files.sh + permissions: "0755" + - path: /etc/keepalived/keepalived.conf + content: | + ! Configuration File for keepalived + global_defs { + notification_email { + sysadmin@example.com + support@example.com + } + notification_email_from lb@example.com + smtp_server localhost + smtp_connect_timeout 30 + } + + vrrp_script k8s_api_check { + script "curl -sk https://127.0.0.1:6443/healthz" + interval 5 + timeout 5 + rise 3 + fall 3 + } + + vrrp_instance VI_1 { + state MASTER + interface eth1 + virtual_router_id 1 + priority 101 + advert_int 1 + virtual_ipaddress { + ${CLUSTER_APIENDPOINT_HOST} + } + track_script { + k8s_api_check + } + } + - path: /etc/NetworkManager/system-connections/eth0.nmconnection + owner: root:root + permissions: '0600' + content: | + [connection] + id=eth0 + type=ethernet + interface-name=eth0 + master=ironicendpoint + slave-type=bridge + - content: | + [connection] + id=ironicendpoint + type=bridge + interface-name=ironicendpoint + autoconnect=yes + autoconnect-priority=1 + + [bridge] + stp=false + interface-name=ironicendpoint + + [ipv4] + address1={{ ds.meta_data.provisioningIP }}/{{ ds.meta_data.provisioningCIDR }} + method=manual + + [ipv6] + addr-gen-mode=eui64 + method=ignore + path: /etc/NetworkManager/system-connections/ironicendpoint.nmconnection + owner: root:root + permissions: '0600' + - content: | + [kubernetes] + name=Kubernetes + baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64 + enabled=1 + gpgcheck=1 + repo_gpgcheck=0 + gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg + owner: root:root + path: /etc/yum.repos.d/kubernetes.repo + permissions: '0644' + - content: | + [registries.search] + registries = ['docker.io'] + + [registries.insecure] + registries = ['${REGISTRY}'] + path: /etc/containers/registries.conf + initConfiguration: + nodeRegistration: + kubeletExtraArgs: + cgroup-driver: systemd + container-runtime-endpoint: unix:///var/run/crio/crio.sock + feature-gates: AllAlpha=false + node-labels: metal3.io/uuid={{ ds.meta_data.uuid }} + provider-id: ${PROVIDER_ID_FORMAT} + runtime-request-timeout: 5m + name: '{{ ds.meta_data.name }}' + joinConfiguration: + controlPlane: {} + nodeRegistration: + kubeletExtraArgs: + cgroup-driver: systemd + container-runtime-endpoint: unix:///var/run/crio/crio.sock + feature-gates: AllAlpha=false + node-labels: metal3.io/uuid={{ ds.meta_data.uuid }} + provider-id: ${PROVIDER_ID_FORMAT} + runtime-request-timeout: 5m + name: '{{ ds.meta_data.name }}' + preKubeadmCommands: + - rm /etc/cni/net.d/* + - systemctl restart NetworkManager.service + - nmcli connection load /etc/NetworkManager/system-connections/ironicendpoint.nmconnection + - nmcli connection up ironicendpoint + - nmcli connection load /etc/NetworkManager/system-connections/eth0.nmconnection + - nmcli connection up eth0 + - systemctl enable --now keepalived + - sleep 60 + - systemctl enable --now crio kubelet + postKubeadmCommands: + - mkdir -p /home/${IMAGE_USERNAME}/.kube + - chown ${IMAGE_USERNAME}:${IMAGE_USERNAME} /home/${IMAGE_USERNAME}/.kube + - cp /etc/kubernetes/admin.conf /home/${IMAGE_USERNAME}/.kube/config + - chown ${IMAGE_USERNAME}:${IMAGE_USERNAME} /home/${IMAGE_USERNAME}/.kube/config + +--- +apiVersion: bootstrap.cluster.x-k8s.io/${CAPI_VERSION} +kind: KubeadmConfigTemplate +metadata: + name: ${CLUSTER_NAME}-workers + namespace: ${NAMESPACE} +spec: + template: + spec: + files: + - content: | + #!/bin/bash + set -e + url="$1" + dst="$2" + filename="$(basename $url)" + tmpfile="/tmp/$filename" + curl -sSL -w "%{http_code}" "$url" | sed "s:/usr/bin:/usr/local/bin:g" > /tmp/"$filename" + http_status=$(cat "$tmpfile" | tail -n 1) + if [ "$http_status" != "200" ]; then + echo "Error: unable to retrieve $filename file"; + exit 1; + else + cat "$tmpfile"| sed '$d' > "$dst"; + fi + owner: root:root + path: /usr/local/bin/retrieve.configuration.files.sh + permissions: "0755" + - content: | + [connection] + id=eth0 + type=ethernet + interface-name=eth0 + master=ironicendpoint + slave-type=bridge + autoconnect=yes + autoconnect-priority=999 + path: /etc/NetworkManager/system-connections/eth0.nmconnection + owner: root:root + permissions: '0600' + - path: /etc/NetworkManager/system-connections/ironicendpoint.nmconnection + owner: root:root + permissions: '0600' + content: | + [connection] + id=ironicendpoint + type=bridge + interface-name=ironicendpoint + + [bridge] + stp=false + + [ipv4] + address1={{ ds.meta_data.provisioningIP }}/{{ ds.meta_data.provisioningCIDR }} + method=manual + + [ipv6] + addr-gen-mode=eui64 + method=ignore + - path: /etc/yum.repos.d/kubernetes.repo + owner: root:root + permissions: '0644' + content: | + [kubernetes] + name=Kubernetes + baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64 + enabled=1 + gpgcheck=1 + repo_gpgcheck=0 + gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg + - path : /etc/containers/registries.conf + owner: root:root + permissions: '0644' + content: | + [registries.search] + registries = ['docker.io'] + + [registries.insecure] + registries = ['${REGISTRY}'] + preKubeadmCommands: + - rm /etc/cni/net.d/* + - systemctl restart NetworkManager.service + - nmcli connection load /etc/NetworkManager/system-connections/ironicendpoint.nmconnection + - nmcli connection up ironicendpoint + - nmcli connection load /etc/NetworkManager/system-connections/eth0.nmconnection + - nmcli connection up eth0 + - systemctl enable --now crio kubelet + - sleep 120 diff --git a/test/e2e/data/infrastructure-metal3/bases/clusterclass-centos-kubeadm-config/kustomization.yaml b/test/e2e/data/infrastructure-metal3/bases/clusterclass-centos-kubeadm-config/kustomization.yaml new file mode 100644 index 0000000000..9afce72768 --- /dev/null +++ b/test/e2e/data/infrastructure-metal3/bases/clusterclass-centos-kubeadm-config/kustomization.yaml @@ -0,0 +1,4 @@ +resources: +- ../clusterclass-cluster +patchesStrategicMerge: + - clusterclass-centos-kubeadm-config.yaml \ No newline at end of file diff --git a/test/e2e/data/infrastructure-metal3/bases/clusterclass-cluster/cluster-with-kcp.yaml b/test/e2e/data/infrastructure-metal3/bases/clusterclass-cluster/cluster-with-kcp.yaml new file mode 100644 index 0000000000..620ffef6a3 --- /dev/null +++ b/test/e2e/data/infrastructure-metal3/bases/clusterclass-cluster/cluster-with-kcp.yaml @@ -0,0 +1,119 @@ +apiVersion: controlplane.cluster.x-k8s.io/${CAPI_VERSION} +kind: KubeadmControlPlaneTemplate +metadata: + name: ${CLUSTER_NAME} + namespace: ${NAMESPACE} +--- +apiVersion: infrastructure.cluster.x-k8s.io/${CAPM3_VERSION} +kind: Metal3ClusterTemplate +metadata: + name: ${CLUSTER_NAME} + namespace: ${NAMESPACE} +spec: + template: + spec: + controlPlaneEndpoint: + host: ${CLUSTER_APIENDPOINT_HOST} + port: ${CLUSTER_APIENDPOINT_PORT} + noCloudProvider: true +--- +apiVersion: infrastructure.cluster.x-k8s.io/${CAPM3_VERSION} +kind: Metal3MachineTemplate +metadata: + name: ${CLUSTER_NAME}-controlplane + namespace: ${NAMESPACE} +spec: + template: + spec: + dataTemplate: + name: ${CLUSTER_NAME}-controlplane-template + image: + checksum: ${IMAGE_RAW_CHECKSUM} + checksumType: ${IMAGE_CHECKSUM_TYPE} + format: raw + url: ${IMAGE_RAW_URL} +--- +apiVersion: infrastructure.cluster.x-k8s.io/${CAPM3_VERSION} +kind: Metal3DataTemplate +metadata: + name: ${CLUSTER_NAME}-controlplane-template + namespace: ${NAMESPACE} +spec: + clusterName: ${CLUSTER_NAME} + metaData: + ipAddressesFromIPPool: + - key: provisioningIP + name: provisioning-pool + objectNames: + - key: name + object: machine + - key: local-hostname + object: machine + - key: local_hostname + object: machine + prefixesFromIPPool: + - key: provisioningCIDR + name: provisioning-pool + networkData: + links: + ethernets: + - id: enp1s0 + macAddress: + fromHostInterface: enp1s0 + type: phy + - id: enp2s0 + macAddress: + fromHostInterface: enp2s0 + type: phy + networks: + ipv4: + - id: baremetalv4 + ipAddressFromIPPool: baremetalv4-pool + link: enp2s0 + routes: + - gateway: + fromIPPool: baremetalv4-pool + network: 0.0.0.0 + prefix: 0 + services: + dns: + - 8.8.8.8 +--- +apiVersion: cluster.x-k8s.io/v1beta1 +kind: Cluster +metadata: + labels: + cni: ${CLUSTER_NAME}-crs-0 + name: ${CLUSTER_NAME} + namespace: ${NAMESPACE} +spec: + clusterNetwork: + pods: + cidrBlocks: ["${POD_CIDR}"] + services: + cidrBlocks: ["${SERVICE_CIDR}"] + topology: + class: test-clusterclass + version: ${KUBERNETES_VERSION} + controlPlane: + replicas: ${CONTROL_PLANE_MACHINE_COUNT} + workers: + machineDeployments: + - class: worker + name: ${CLUSTER_NAME}-machine + replicas: ${WORKER_MACHINE_COUNT} + variables: + - name: image + value: + checksum: ${IMAGE_RAW_CHECKSUM} + checksumType: ${IMAGE_CHECKSUM_TYPE} + format: raw + url: ${IMAGE_RAW_URL} + - name: controlPlaneEndpoint + value: + host: ${CLUSTER_APIENDPOINT_HOST} + port: ${CLUSTER_APIENDPOINT_PORT} + - name: workerDataTemplate + value: ${CLUSTER_NAME}-workers-template + - name: controlPlaneDataTemplate + value: ${CLUSTER_NAME}-controlplane-template diff --git a/test/e2e/data/infrastructure-metal3/bases/clusterclass-cluster/crs.yaml b/test/e2e/data/infrastructure-metal3/bases/clusterclass-cluster/crs.yaml new file mode 100644 index 0000000000..559a5cefee --- /dev/null +++ b/test/e2e/data/infrastructure-metal3/bases/clusterclass-cluster/crs.yaml @@ -0,0 +1,24 @@ +--- +# ConfigMap object referenced by the ClusterResourceSet object and with +# the CNI resource defined in the test config file +apiVersion: v1 +kind: ConfigMap +metadata: + name: "cni-${CLUSTER_NAME}-crs-0" +data: ${CNI_RESOURCES} +binaryData: +--- +# ClusterResourceSet object with +# a selector that targets all the Cluster with label cni=${CLUSTER_NAME}-crs-0 +apiVersion: addons.cluster.x-k8s.io/${CAPI_VERSION} +kind: ClusterResourceSet +metadata: + name: "${CLUSTER_NAME}-crs-0" +spec: + strategy: ApplyOnce + clusterSelector: + matchLabels: + cni: "${CLUSTER_NAME}-crs-0" + resources: + - name: "cni-${CLUSTER_NAME}-crs-0" + kind: ConfigMap diff --git a/test/e2e/data/infrastructure-metal3/bases/clusterclass-cluster/kustomization.yaml b/test/e2e/data/infrastructure-metal3/bases/clusterclass-cluster/kustomization.yaml new file mode 100644 index 0000000000..52b746df63 --- /dev/null +++ b/test/e2e/data/infrastructure-metal3/bases/clusterclass-cluster/kustomization.yaml @@ -0,0 +1,4 @@ +resources: +- cluster-with-kcp.yaml +- md.yaml +- crs.yaml diff --git a/test/e2e/data/infrastructure-metal3/bases/clusterclass-cluster/md.yaml b/test/e2e/data/infrastructure-metal3/bases/clusterclass-cluster/md.yaml new file mode 100644 index 0000000000..be01049aba --- /dev/null +++ b/test/e2e/data/infrastructure-metal3/bases/clusterclass-cluster/md.yaml @@ -0,0 +1,85 @@ +apiVersion: infrastructure.cluster.x-k8s.io/${CAPM3_VERSION} +kind: Metal3MachineTemplate +metadata: + name: ${CLUSTER_NAME}-workers + namespace: ${NAMESPACE} +spec: + template: + spec: + dataTemplate: + name: ${CLUSTER_NAME}-workers-template + image: + checksum: ${IMAGE_RAW_CHECKSUM} + checksumType: ${IMAGE_CHECKSUM_TYPE} + format: raw + url: ${IMAGE_RAW_URL} +--- +apiVersion: infrastructure.cluster.x-k8s.io/${CAPM3_VERSION} +kind: Metal3DataTemplate +metadata: + name: ${CLUSTER_NAME}-workers-template + namespace: ${NAMESPACE} +spec: + clusterName: ${CLUSTER_NAME} + metaData: + ipAddressesFromIPPool: + - key: provisioningIP + name: provisioning-pool + objectNames: + - key: name + object: machine + - key: local-hostname + object: machine + - key: local_hostname + object: machine + prefixesFromIPPool: + - key: provisioningCIDR + name: provisioning-pool + networkData: + links: + ethernets: + - id: enp1s0 + macAddress: + fromHostInterface: enp1s0 + type: phy + - id: enp2s0 + macAddress: + fromHostInterface: enp2s0 + type: phy + networks: + ipv4: + - id: baremetalv4 + ipAddressFromIPPool: baremetalv4-pool + link: enp2s0 + routes: + - gateway: + fromIPPool: baremetalv4-pool + network: 0.0.0.0 + prefix: 0 + services: + dns: + - 8.8.8.8 +--- +apiVersion: bootstrap.cluster.x-k8s.io/${CAPI_VERSION} +kind: KubeadmConfigTemplate +metadata: + name: ${CLUSTER_NAME}-workers + namespace: ${NAMESPACE} +spec: + template: + spec: + joinConfiguration: + nodeRegistration: + kubeletExtraArgs: + cgroup-driver: systemd + container-runtime-endpoint: unix:///var/run/crio/crio.sock + feature-gates: AllAlpha=false + node-labels: metal3.io/uuid={{ ds.meta_data.uuid }} + provider-id: ${PROVIDER_ID_FORMAT} + runtime-request-timeout: 5m + name: '{{ ds.meta_data.name }}' + users: + - name: metal3 + sshAuthorizedKeys: + - ${SSH_PUB_KEY_CONTENT} + sudo: ALL=(ALL) NOPASSWD:ALL diff --git a/test/e2e/data/infrastructure-metal3/bases/clusterclass-ubuntu-kubeadm-config/clusterclass-ubuntu-kubeadm-config.yaml b/test/e2e/data/infrastructure-metal3/bases/clusterclass-ubuntu-kubeadm-config/clusterclass-ubuntu-kubeadm-config.yaml new file mode 100644 index 0000000000..dfadf31855 --- /dev/null +++ b/test/e2e/data/infrastructure-metal3/bases/clusterclass-ubuntu-kubeadm-config/clusterclass-ubuntu-kubeadm-config.yaml @@ -0,0 +1,158 @@ +--- +apiVersion: controlplane.cluster.x-k8s.io/${CAPI_VERSION} +kind: KubeadmControlPlaneTemplate +metadata: + name: ${CLUSTER_NAME} + namespace: ${NAMESPACE} +spec: + template: + spec: + kubeadmConfigSpec: + clusterConfiguration: {} + users: + - name: ${IMAGE_USERNAME} + sshAuthorizedKeys: + - ${SSH_PUB_KEY_CONTENT} + sudo: ALL=(ALL) NOPASSWD:ALL + files: + - content: | + #!/bin/bash + while :; do + curl -sk https://127.0.0.1:6443/healthz 1>&2 > /dev/null + isOk=$? + isActive=$(systemctl show -p ActiveState keepalived.service | cut -d'=' -f2) + if [ $isOk == "0" ] && [ $isActive != "active" ]; then + logger 'API server is healthy, however keepalived is not running, starting keepalived' + echo 'API server is healthy, however keepalived is not running, starting keepalived' + sudo systemctl start keepalived.service + elif [ $isOk != "0" ] && [ $isActive == "active" ]; then + logger 'API server is not healthy, however keepalived running, stopping keepalived' + echo 'API server is not healthy, however keepalived running, stopping keepalived' + sudo systemctl stop keepalived.service + fi + sleep 5 + done + owner: root:root + path: /usr/local/bin/monitor.keepalived.sh + permissions: "0755" + - content: | + [Unit] + Description=Monitors keepalived adjusts status with that of API server + After=syslog.target network-online.target + + [Service] + Type=simple + Restart=always + ExecStart=/usr/local/bin/monitor.keepalived.sh + + [Install] + WantedBy=multi-user.target + owner: root:root + path: /lib/systemd/system/monitor.keepalived.service + - content: | + ! Configuration File for keepalived + global_defs { + notification_email { + sysadmin@example.com + support@example.com + } + notification_email_from lb@example.com + smtp_server localhost + smtp_connect_timeout 30 + } + vrrp_instance VI_2 { + state MASTER + interface enp2s0 + virtual_router_id 2 + priority 101 + advert_int 1 + virtual_ipaddress { + ${CLUSTER_APIENDPOINT_HOST} + } + } + path: /etc/keepalived/keepalived.conf + - content: | + network: + version: 2 + renderer: networkd + bridges: + ${CLUSTER_PROVISIONING_INTERFACE}: + interfaces: [enp1s0] + addresses: + - {{ ds.meta_data.provisioningIP }}/{{ ds.meta_data.provisioningCIDR }} + owner: root:root + path: /etc/netplan/52-ironicendpoint.yaml + permissions: "0644" + - content: | + [registries.search] + registries = ['docker.io'] + + [registries.insecure] + registries = ['${REGISTRY}'] + path: /etc/containers/registries.conf + joinConfiguration: + controlPlane: {} + nodeRegistration: + kubeletExtraArgs: + cgroup-driver: systemd + container-runtime-endpoint: unix:///var/run/crio/crio.sock + feature-gates: AllAlpha=false + node-labels: metal3.io/uuid={{ ds.meta_data.uuid }} + provider-id: ${PROVIDER_ID_FORMAT} + runtime-request-timeout: 5m + name: '{{ ds.meta_data.name }}' + initConfiguration: + nodeRegistration: + kubeletExtraArgs: + cgroup-driver: systemd + container-runtime-endpoint: unix:///var/run/crio/crio.sock + feature-gates: AllAlpha=false + node-labels: metal3.io/uuid={{ ds.meta_data.uuid }} + provider-id: ${PROVIDER_ID_FORMAT} + runtime-request-timeout: 5m + name: '{{ ds.meta_data.name }}' + postKubeadmCommands: + - mkdir -p /home/${IMAGE_USERNAME}/.kube + - chown ${IMAGE_USERNAME}:${IMAGE_USERNAME} /home/${IMAGE_USERNAME}/.kube + - cp /etc/kubernetes/admin.conf /home/${IMAGE_USERNAME}/.kube/config + - systemctl enable --now keepalived + - chown ${IMAGE_USERNAME}:${IMAGE_USERNAME} /home/${IMAGE_USERNAME}/.kube/config + preKubeadmCommands: + - sed -i "s/MACAddressPolicy=persistent/MACAddressPolicy=none/g" /usr/lib/systemd/network/99-default.link + - netplan apply + - systemctl enable --now crio kubelet + - if (curl -sk --max-time 10 https://${CLUSTER_APIENDPOINT_HOST}:${CLUSTER_APIENDPOINT_PORT}/healthz); then echo "keepalived already running";else systemctl start keepalived; fi + - systemctl enable --now /lib/systemd/system/monitor.keepalived.service +--- +apiVersion: bootstrap.cluster.x-k8s.io/${CAPI_VERSION} +kind: KubeadmConfigTemplate +metadata: + name: ${CLUSTER_NAME}-workers + namespace: ${NAMESPACE} +spec: + template: + spec: + files: + - content: | + network: + version: 2 + renderer: networkd + bridges: + ${CLUSTER_PROVISIONING_INTERFACE}: + interfaces: [enp1s0] + addresses: + - {{ ds.meta_data.provisioningIP }}/{{ ds.meta_data.provisioningCIDR }} + owner: root:root + path: /etc/netplan/52-ironicendpoint.yaml + permissions: "0644" + - content: | + [registries.search] + registries = ['docker.io'] + + [registries.insecure] + registries = ['${REGISTRY}'] + path: /etc/containers/registries.conf + preKubeadmCommands: + - sed -i "s/MACAddressPolicy=persistent/MACAddressPolicy=none/g" /usr/lib/systemd/network/99-default.link + - netplan apply + - systemctl enable --now crio kubelet diff --git a/test/e2e/data/infrastructure-metal3/bases/clusterclass-ubuntu-kubeadm-config/kustomization.yaml b/test/e2e/data/infrastructure-metal3/bases/clusterclass-ubuntu-kubeadm-config/kustomization.yaml new file mode 100644 index 0000000000..d46c116191 --- /dev/null +++ b/test/e2e/data/infrastructure-metal3/bases/clusterclass-ubuntu-kubeadm-config/kustomization.yaml @@ -0,0 +1,5 @@ + +resources: +- ../clusterclass-cluster +patchesStrategicMerge: + - clusterclass-ubuntu-kubeadm-config.yaml \ No newline at end of file diff --git a/test/e2e/data/infrastructure-metal3/bases/clusterclass/clusterclass.yaml b/test/e2e/data/infrastructure-metal3/bases/clusterclass/clusterclass.yaml new file mode 100644 index 0000000000..3bf1d2da43 --- /dev/null +++ b/test/e2e/data/infrastructure-metal3/bases/clusterclass/clusterclass.yaml @@ -0,0 +1,165 @@ +--- +apiVersion: cluster.x-k8s.io/v1beta1 +kind: ClusterClass +metadata: + name: test-clusterclass +spec: + variables: + - name: controlPlaneEndpoint + required: true + schema: + openAPIV3Schema: + type: object + properties: + host: + type: string + port: + type: integer + - name: image + schema: + openAPIV3Schema: + type: object + properties: + checksum: + type: string + checksumType: + type: string + format: + type: string + url: + type: string + - name: workerDataTemplate + schema: + openAPIV3Schema: + type: string + - name: controlPlaneDataTemplate + schema: + openAPIV3Schema: + type: string + patches: + - name: controlPlaneEndpointSub + description: Overrides controlPlaneEndpoint data of Metal3ClusterTemplate used by the cluster + definitions: + - selector: + apiVersion: infrastructure.cluster.x-k8s.io/v1beta1 + kind: Metal3ClusterTemplate + matchResources: + infrastructureCluster: true + jsonPatches: + - op: replace + path: /spec/template/spec/controlPlaneEndpoint + valueFrom: + variable: controlPlaneEndpoint + - name: imageSub + description: Overrides image data for worker nodes of example-worker class + definitions: + - selector: + apiVersion: infrastructure.cluster.x-k8s.io/v1beta1 + kind: Metal3MachineTemplate + matchResources: + machineDeploymentClass: + names: + - worker + jsonPatches: + - op: replace + path: /spec/template/spec/image/checksum + valueFrom: + variable: image.checksum + - op: replace + path: /spec/template/spec/image/checksumType + valueFrom: + variable: image.checksumType + - op: replace + path: /spec/template/spec/image/format + valueFrom: + variable: image.format + - op: replace + path: /spec/template/spec/image/url + valueFrom: + variable: image.url + - name: workerDataTemplateSub + description: Overrides data-template for worker nodes + definitions: + - selector: + apiVersion: infrastructure.cluster.x-k8s.io/v1beta1 + kind: Metal3MachineTemplate + matchResources: + machineDeploymentClass: + names: + - worker + jsonPatches: + - op: replace + path: /spec/template/spec/dataTemplate/name + valueFrom: + variable: workerDataTemplate + - name: controlPlaneImageSub + description: Overrides image data for worker nodes of control plane node + definitions: + - selector: + apiVersion: infrastructure.cluster.x-k8s.io/v1beta1 + kind: Metal3MachineTemplate + matchResources: + controlPlane: true + jsonPatches: + - op: replace + path: /spec/template/spec/image/checksum + valueFrom: + variable: image.checksum + - op: replace + path: /spec/template/spec/image/checksumType + valueFrom: + variable: image.checksumType + - op: replace + path: /spec/template/spec/image/format + valueFrom: + variable: image.format + - op: replace + path: /spec/template/spec/image/url + valueFrom: + variable: image.url + - name: controlPlaneDataTemplateSub + description: Overrides data-template for control plane nodes + definitions: + - selector: + apiVersion: infrastructure.cluster.x-k8s.io/v1beta1 + kind: Metal3MachineTemplate + matchResources: + controlPlane: true + jsonPatches: + - op: replace + path: /spec/template/spec/dataTemplate/name + valueFrom: + variable: controlPlaneDataTemplate + controlPlane: + ref: + apiVersion: controlplane.cluster.x-k8s.io/v1beta1 + kind: KubeadmControlPlaneTemplate + name: ${CLUSTER_NAME} + machineInfrastructure: + ref: + apiVersion: infrastructure.cluster.x-k8s.io/v1beta1 + kind: Metal3MachineTemplate + name: ${CLUSTER_NAME}-controlplane + workers: + machineDeployments: + - class: worker + template: + metadata: + labels: + cluster.x-k8s.io/cluster-name: ${CLUSTER_NAME} + nodepool: nodepool-0 + bootstrap: + ref: + apiVersion: bootstrap.cluster.x-k8s.io/${CAPI_VERSION} + kind: KubeadmConfigTemplate + name: ${CLUSTER_NAME}-workers + infrastructure: + ref: + apiVersion: infrastructure.cluster.x-k8s.io/${CAPM3_VERSION} + kind: Metal3MachineTemplate + name: ${CLUSTER_NAME}-workers + infrastructure: + ref: + apiVersion: infrastructure.cluster.x-k8s.io/v1beta1 + kind: Metal3ClusterTemplate + name: ${CLUSTER_NAME} \ No newline at end of file diff --git a/test/e2e/data/infrastructure-metal3/bases/clusterclass/kustomization.yaml b/test/e2e/data/infrastructure-metal3/bases/clusterclass/kustomization.yaml new file mode 100644 index 0000000000..6fe2104ddf --- /dev/null +++ b/test/e2e/data/infrastructure-metal3/bases/clusterclass/kustomization.yaml @@ -0,0 +1,2 @@ +resources: +- clusterclass.yaml diff --git a/test/e2e/data/infrastructure-metal3/clusterclass-template-centos/kustomization.yaml b/test/e2e/data/infrastructure-metal3/clusterclass-template-centos/kustomization.yaml new file mode 100644 index 0000000000..0d7e2f7b2b --- /dev/null +++ b/test/e2e/data/infrastructure-metal3/clusterclass-template-centos/kustomization.yaml @@ -0,0 +1,3 @@ +resources: +- ../bases/ippool +- ../bases/clusterclass-centos-kubeadm-config diff --git a/test/e2e/data/infrastructure-metal3/clusterclass-template-ubuntu/kustomization.yaml b/test/e2e/data/infrastructure-metal3/clusterclass-template-ubuntu/kustomization.yaml new file mode 100644 index 0000000000..74b543141f --- /dev/null +++ b/test/e2e/data/infrastructure-metal3/clusterclass-template-ubuntu/kustomization.yaml @@ -0,0 +1,3 @@ +resources: +- ../bases/ippool +- ../bases/clusterclass-ubuntu-kubeadm-config \ No newline at end of file diff --git a/test/e2e/data/infrastructure-metal3/clusterclass-template-upgrade-workload/kustomization.yaml b/test/e2e/data/infrastructure-metal3/clusterclass-template-upgrade-workload/kustomization.yaml new file mode 100644 index 0000000000..81cd049af0 --- /dev/null +++ b/test/e2e/data/infrastructure-metal3/clusterclass-template-upgrade-workload/kustomization.yaml @@ -0,0 +1,2 @@ +resources: +- ../bases/clusterclass-ubuntu-kubeadm-config diff --git a/test/e2e/data/infrastructure-metal3/clusterclass/kustomization.yaml b/test/e2e/data/infrastructure-metal3/clusterclass/kustomization.yaml new file mode 100644 index 0000000000..19d54e0d1d --- /dev/null +++ b/test/e2e/data/infrastructure-metal3/clusterclass/kustomization.yaml @@ -0,0 +1,2 @@ +resources: +- ../bases/clusterclass diff --git a/test/e2e/data/infrastructure-metal3/main/metadata.yaml b/test/e2e/data/infrastructure-metal3/main/metadata.yaml index 843af5f2d2..4e1e8508f8 100644 --- a/test/e2e/data/infrastructure-metal3/main/metadata.yaml +++ b/test/e2e/data/infrastructure-metal3/main/metadata.yaml @@ -1,6 +1,9 @@ apiVersion: clusterctl.cluster.x-k8s.io/v1alpha3 kind: Metadata releaseSeries: +- major: 1 + minor: 7 + contract: v1beta1 - major: 1 minor: 6 contract: v1beta1 @@ -22,6 +25,3 @@ releaseSeries: - major: 1 minor: 0 contract: v1beta1 -- major: 0 - minor: 5 - contract: v1alpha4 \ No newline at end of file diff --git a/test/e2e/data/infrastructure-metal3/v0.5/metadata.yaml b/test/e2e/data/infrastructure-metal3/v0.5/metadata.yaml deleted file mode 100644 index cff6cc0072..0000000000 --- a/test/e2e/data/infrastructure-metal3/v0.5/metadata.yaml +++ /dev/null @@ -1,6 +0,0 @@ -apiVersion: clusterctl.cluster.x-k8s.io/v1alpha3 -kind: Metadata -releaseSeries: -- major: 0 - minor: 5 - contract: v1alpha4 \ No newline at end of file diff --git a/test/e2e/data/infrastructure-metal3/v1.2/metadata.yaml b/test/e2e/data/infrastructure-metal3/v1.2/metadata.yaml index ab28e67d38..e2d25223f1 100644 --- a/test/e2e/data/infrastructure-metal3/v1.2/metadata.yaml +++ b/test/e2e/data/infrastructure-metal3/v1.2/metadata.yaml @@ -7,6 +7,3 @@ releaseSeries: - major: 1 minor: 1 contract: v1beta1 -- major: 0 - minor: 5 - contract: v1alpha4 \ No newline at end of file diff --git a/test/e2e/data/infrastructure-metal3/v1.3/metadata.yaml b/test/e2e/data/infrastructure-metal3/v1.3/metadata.yaml index 7da2e59401..8d4aaec6d2 100644 --- a/test/e2e/data/infrastructure-metal3/v1.3/metadata.yaml +++ b/test/e2e/data/infrastructure-metal3/v1.3/metadata.yaml @@ -10,6 +10,3 @@ releaseSeries: - major: 1 minor: 1 contract: v1beta1 -- major: 0 - minor: 5 - contract: v1alpha4 \ No newline at end of file diff --git a/test/e2e/data/infrastructure-metal3/v1.4/metadata.yaml b/test/e2e/data/infrastructure-metal3/v1.4/metadata.yaml index 7841ea4142..4ca6e5faed 100644 --- a/test/e2e/data/infrastructure-metal3/v1.4/metadata.yaml +++ b/test/e2e/data/infrastructure-metal3/v1.4/metadata.yaml @@ -13,6 +13,3 @@ releaseSeries: - major: 1 minor: 1 contract: v1beta1 -- major: 0 - minor: 5 - contract: v1alpha4 \ No newline at end of file diff --git a/test/e2e/data/infrastructure-metal3/v1.5/metadata.yaml b/test/e2e/data/infrastructure-metal3/v1.5/metadata.yaml index 74e8dd7cf1..544b6434f7 100644 --- a/test/e2e/data/infrastructure-metal3/v1.5/metadata.yaml +++ b/test/e2e/data/infrastructure-metal3/v1.5/metadata.yaml @@ -16,6 +16,3 @@ releaseSeries: - major: 1 minor: 1 contract: v1beta1 -- major: 0 - minor: 5 - contract: v1alpha4 \ No newline at end of file diff --git a/test/e2e/data/infrastructure-metal3/v1.6/metadata.yaml b/test/e2e/data/infrastructure-metal3/v1.6/metadata.yaml index a239e9d4c2..57c774cf32 100644 --- a/test/e2e/data/infrastructure-metal3/v1.6/metadata.yaml +++ b/test/e2e/data/infrastructure-metal3/v1.6/metadata.yaml @@ -19,6 +19,3 @@ releaseSeries: - major: 1 minor: 1 contract: v1beta1 -- major: 0 - minor: 5 - contract: v1alpha4 \ No newline at end of file diff --git a/test/e2e/data/infrastructure-metal3/v1.7/metadata.yaml b/test/e2e/data/infrastructure-metal3/v1.7/metadata.yaml new file mode 100644 index 0000000000..4e1e8508f8 --- /dev/null +++ b/test/e2e/data/infrastructure-metal3/v1.7/metadata.yaml @@ -0,0 +1,27 @@ +apiVersion: clusterctl.cluster.x-k8s.io/v1alpha3 +kind: Metadata +releaseSeries: +- major: 1 + minor: 7 + contract: v1beta1 +- major: 1 + minor: 6 + contract: v1beta1 +- major: 1 + minor: 5 + contract: v1beta1 +- major: 1 + minor: 4 + contract: v1beta1 +- major: 1 + minor: 3 + contract: v1beta1 +- major: 1 + minor: 2 + contract: v1beta1 +- major: 1 + minor: 1 + contract: v1beta1 +- major: 1 + minor: 0 + contract: v1beta1 diff --git a/test/e2e/data/shared/main/metadata.yaml b/test/e2e/data/shared/main/metadata.yaml index 797379ae03..4e1e8508f8 100644 --- a/test/e2e/data/shared/main/metadata.yaml +++ b/test/e2e/data/shared/main/metadata.yaml @@ -1,6 +1,9 @@ apiVersion: clusterctl.cluster.x-k8s.io/v1alpha3 kind: Metadata releaseSeries: +- major: 1 + minor: 7 + contract: v1beta1 - major: 1 minor: 6 contract: v1beta1 @@ -22,9 +25,3 @@ releaseSeries: - major: 1 minor: 0 contract: v1beta1 -- major: 0 - minor: 4 - contract: v1alpha4 -- major: 0 - minor: 3 - contract: v1alpha3 diff --git a/test/e2e/data/shared/v0.4/metadata.yaml b/test/e2e/data/shared/v0.4/metadata.yaml deleted file mode 100644 index ded853e158..0000000000 --- a/test/e2e/data/shared/v0.4/metadata.yaml +++ /dev/null @@ -1,9 +0,0 @@ -apiVersion: clusterctl.cluster.x-k8s.io/v1alpha3 -kind: Metadata -releaseSeries: -- major: 0 - minor: 4 - contract: v1alpha4 -- major: 0 - minor: 3 - contract: v1alpha3 diff --git a/test/e2e/data/shared/v1.2/metadata.yaml b/test/e2e/data/shared/v1.2/metadata.yaml index 10415b53a7..b1309dc630 100644 --- a/test/e2e/data/shared/v1.2/metadata.yaml +++ b/test/e2e/data/shared/v1.2/metadata.yaml @@ -10,9 +10,3 @@ releaseSeries: - major: 1 minor: 0 contract: v1beta1 -- major: 0 - minor: 4 - contract: v1alpha4 -- major: 0 - minor: 3 - contract: v1alpha3 diff --git a/test/e2e/data/shared/v1.3/metadata.yaml b/test/e2e/data/shared/v1.3/metadata.yaml index 0783f83501..3168026718 100644 --- a/test/e2e/data/shared/v1.3/metadata.yaml +++ b/test/e2e/data/shared/v1.3/metadata.yaml @@ -13,9 +13,3 @@ releaseSeries: - major: 1 minor: 0 contract: v1beta1 -- major: 0 - minor: 4 - contract: v1alpha4 -- major: 0 - minor: 3 - contract: v1alpha3 diff --git a/test/e2e/data/shared/v1.4/metadata.yaml b/test/e2e/data/shared/v1.4/metadata.yaml index 39882f37a6..b49576bd73 100644 --- a/test/e2e/data/shared/v1.4/metadata.yaml +++ b/test/e2e/data/shared/v1.4/metadata.yaml @@ -16,9 +16,3 @@ releaseSeries: - major: 1 minor: 0 contract: v1beta1 -- major: 0 - minor: 4 - contract: v1alpha4 -- major: 0 - minor: 3 - contract: v1alpha3 diff --git a/test/e2e/data/shared/v1.5/metadata.yaml b/test/e2e/data/shared/v1.5/metadata.yaml index 2c13f78c86..eb9125b357 100644 --- a/test/e2e/data/shared/v1.5/metadata.yaml +++ b/test/e2e/data/shared/v1.5/metadata.yaml @@ -19,9 +19,3 @@ releaseSeries: - major: 1 minor: 0 contract: v1beta1 -- major: 0 - minor: 4 - contract: v1alpha4 -- major: 0 - minor: 3 - contract: v1alpha3 diff --git a/test/e2e/data/shared/v1.6/metadata.yaml b/test/e2e/data/shared/v1.6/metadata.yaml index 797379ae03..47c4ba4c60 100644 --- a/test/e2e/data/shared/v1.6/metadata.yaml +++ b/test/e2e/data/shared/v1.6/metadata.yaml @@ -22,9 +22,3 @@ releaseSeries: - major: 1 minor: 0 contract: v1beta1 -- major: 0 - minor: 4 - contract: v1alpha4 -- major: 0 - minor: 3 - contract: v1alpha3 diff --git a/test/e2e/data/shared/v1.7/metadata.yaml b/test/e2e/data/shared/v1.7/metadata.yaml new file mode 100644 index 0000000000..4e1e8508f8 --- /dev/null +++ b/test/e2e/data/shared/v1.7/metadata.yaml @@ -0,0 +1,27 @@ +apiVersion: clusterctl.cluster.x-k8s.io/v1alpha3 +kind: Metadata +releaseSeries: +- major: 1 + minor: 7 + contract: v1beta1 +- major: 1 + minor: 6 + contract: v1beta1 +- major: 1 + minor: 5 + contract: v1beta1 +- major: 1 + minor: 4 + contract: v1beta1 +- major: 1 + minor: 3 + contract: v1beta1 +- major: 1 + minor: 2 + contract: v1beta1 +- major: 1 + minor: 1 + contract: v1beta1 +- major: 1 + minor: 0 + contract: v1beta1 diff --git a/test/e2e/e2e_suite_test.go b/test/e2e/e2e_suite_test.go index babb8e0f00..bf91338a2d 100644 --- a/test/e2e/e2e_suite_test.go +++ b/test/e2e/e2e_suite_test.go @@ -18,7 +18,6 @@ import ( . "github.com/onsi/gomega" "gopkg.in/yaml.v3" "k8s.io/apimachinery/pkg/runtime" - clusterv1alpha4 "sigs.k8s.io/cluster-api/api/v1alpha4" capi_e2e "sigs.k8s.io/cluster-api/test/e2e" "sigs.k8s.io/cluster-api/test/framework" "sigs.k8s.io/cluster-api/test/framework/bootstrap" @@ -164,7 +163,6 @@ var _ = SynchronizedAfterSuite(func() { func initScheme() *runtime.Scheme { sc := runtime.NewScheme() framework.TryAddDefaultSchemes(sc) - Expect(clusterv1alpha4.AddToScheme(sc)).To(Succeed()) Expect(bmov1alpha1.AddToScheme(sc)).To(Succeed()) Expect(infrav1.AddToScheme(sc)).To(Succeed()) Expect(ipamv1.AddToScheme(sc)).To(Succeed()) diff --git a/test/e2e/healthchek.go b/test/e2e/healthchek.go index 77d330e6a7..78b7d598fd 100644 --- a/test/e2e/healthchek.go +++ b/test/e2e/healthchek.go @@ -35,6 +35,10 @@ func healthcheck(ctx context.Context, inputGetter func() HealthCheckInput) { clusterName := input.ClusterName controlplaneM3Machines, workerM3Machines := GetMetal3Machines(ctx, cli, clusterName, namespace) + // get baremetal ip pool for retreiving ip addresses of controlpane and worker nodes + baremetalv4Pool, _ := GetIPPools(ctx, cli, input.ClusterName, input.Namespace) + Expect(baremetalv4Pool).ToNot(BeEmpty()) + // Worker By("Healthchecking the workers") workerHealthcheck, err := DeployWorkerHealthCheck(ctx, cli, namespace, clusterName) @@ -42,7 +46,7 @@ func healthcheck(ctx context.Context, inputGetter func() HealthCheckInput) { workerMachineName, err := Metal3MachineToMachineName(workerM3Machines[0]) Expect(err).ToNot(HaveOccurred()) workerMachine := GetMachine(ctx, cli, client.ObjectKey{Name: workerMachineName, Namespace: namespace}) - workerIP, err := MachineToIPAddress(ctx, cli, &workerMachine) + workerIP, err := MachineToIPAddress(ctx, cli, &workerMachine, baremetalv4Pool[0]) Expect(err).ToNot(HaveOccurred()) Expect(runCommand("", "", workerIP, "metal3", "systemctl stop kubelet")).To(Succeed()) // Wait until node is marked unhealthy and then check that it becomes healthy again @@ -62,7 +66,7 @@ func healthcheck(ctx context.Context, inputGetter func() HealthCheckInput) { controlplaneMachineName, err := Metal3MachineToMachineName(controlplaneM3Machines[0]) Expect(err).ToNot(HaveOccurred()) controlplaneMachine := GetMachine(ctx, cli, client.ObjectKey{Name: controlplaneMachineName, Namespace: namespace}) - controlplaneIP, err := MachineToIPAddress(ctx, cli, &controlplaneMachine) + controlplaneIP, err := MachineToIPAddress(ctx, cli, &controlplaneMachine, baremetalv4Pool[0]) Expect(err).ToNot(HaveOccurred()) Expect(runCommand("", "", controlplaneIP, "metal3", "systemctl stop kubelet")).To(Succeed()) // Wait until node is marked unhealthy and then check that it becomes healthy again diff --git a/test/e2e/pivoting.go b/test/e2e/pivoting.go index e0e513d67c..8ed078d4c7 100644 --- a/test/e2e/pivoting.go +++ b/test/e2e/pivoting.go @@ -10,8 +10,7 @@ import ( "path/filepath" "strconv" - dockerTypes "github.com/docker/docker/api/types" - containertypes "github.com/docker/docker/api/types/container" + containerTypes "github.com/docker/docker/api/types/container" docker "github.com/docker/docker/client" bmov1alpha1 "github.com/metal3-io/baremetal-operator/apis/metal3.io/v1alpha1" . "github.com/onsi/ginkgo/v2" @@ -362,10 +361,10 @@ func removeIronic(ctx context.Context, inputGetter func() RemoveIronicInput) { } dockerClient, err := docker.NewClientWithOpts() Expect(err).ToNot(HaveOccurred(), "Unable to get docker client") - removeOptions := dockerTypes.ContainerRemoveOptions{} + removeOptions := containerTypes.RemoveOptions{} stopTimeout := 60 for _, container := range ironicContainerList { - err = dockerClient.ContainerStop(ctx, container, containertypes.StopOptions{Timeout: &stopTimeout}) + err = dockerClient.ContainerStop(ctx, container, containerTypes.StopOptions{Timeout: &stopTimeout}) Expect(err).ToNot(HaveOccurred(), "Unable to stop the container %s: %v", container, err) err = dockerClient.ContainerRemove(ctx, container, removeOptions) Expect(err).ToNot(HaveOccurred(), "Unable to delete the container %s: %v", container, err) diff --git a/test/e2e/upgrade_clusterctl_test.go b/test/e2e/upgrade_clusterctl_test.go index b9edbc4bed..788f06b56f 100644 --- a/test/e2e/upgrade_clusterctl_test.go +++ b/test/e2e/upgrade_clusterctl_test.go @@ -11,6 +11,8 @@ import ( bmov1alpha1 "github.com/metal3-io/baremetal-operator/apis/metal3.io/v1alpha1" . "github.com/onsi/ginkgo/v2" . "github.com/onsi/gomega" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "sigs.k8s.io/cluster-api/cmd/clusterctl/client/config" capi_e2e "sigs.k8s.io/cluster-api/test/e2e" framework "sigs.k8s.io/cluster-api/test/framework" "sigs.k8s.io/controller-runtime/pkg/client" @@ -18,116 +20,125 @@ import ( const workDir = "/opt/metal3-dev-env/" -var _ = Describe(fmt.Sprintf("When testing cluster upgrade from releases %s > current [clusterctl-upgrade]", os.Getenv("CAPM3_FROM_RELEASE")), - Label("clusterctl-upgrade"), func() { - BeforeEach(func() { - osType := strings.ToLower(os.Getenv("OS")) - Expect(osType).ToNot(Equal("")) - validateGlobals(specName) - imageURL, imageChecksum := EnsureImage(e2eConfig.GetVariable("INIT_WITH_KUBERNETES_VERSION")) - os.Setenv("IMAGE_RAW_CHECKSUM", imageChecksum) - os.Setenv("IMAGE_RAW_URL", imageURL) - // We need to override clusterctl apply log folder to avoid getting our credentials exposed. - clusterctlLogFolder = filepath.Join(os.TempDir(), "clusters", bootstrapClusterProxy.GetName()) +var _ = Describe("When testing cluster upgrade from releases (v1.6=>current) [clusterctl-upgrade]", func() { + BeforeEach(func() { + osType := strings.ToLower(os.Getenv("OS")) + Expect(osType).ToNot(Equal("")) + validateGlobals(specName) + imageURL, imageChecksum := EnsureImage("v1.29.0") + os.Setenv("IMAGE_RAW_CHECKSUM", imageChecksum) + os.Setenv("IMAGE_RAW_URL", imageURL) + // We need to override clusterctl apply log folder to avoid getting our credentials exposed. + clusterctlLogFolder = filepath.Join(os.TempDir(), "clusters", bootstrapClusterProxy.GetName()) + }) + capi_e2e.ClusterctlUpgradeSpec(ctx, func() capi_e2e.ClusterctlUpgradeSpecInput { + return capi_e2e.ClusterctlUpgradeSpecInput{ + E2EConfig: e2eConfig, + ClusterctlConfigPath: clusterctlConfigPath, + BootstrapClusterProxy: bootstrapClusterProxy, + ArtifactFolder: artifactFolder, + SkipCleanup: skipCleanup, + InitWithCoreProvider: "cluster-api:v1.6.3", + InitWithBootstrapProviders: []string{"kubeadm:v1.6.3"}, + InitWithControlPlaneProviders: []string{"kubeadm:v1.6.3"}, + InitWithInfrastructureProviders: []string{"metal3:v1.6.1"}, + InitWithKubernetesVersion: "v1.29.0", + WorkloadKubernetesVersion: "v1.29.0", + InitWithBinary: "https://github.com/kubernetes-sigs/cluster-api/releases/download/v1.6.3/clusterctl-{OS}-{ARCH}", + PreInit: func(clusterProxy framework.ClusterProxy) { + preInitFunc(clusterProxy) + // Override capi/capm3 versions exported in preInit + os.Setenv("CAPI_VERSION", "v1beta1") + os.Setenv("CAPM3_VERSION", "v1beta1") + os.Setenv("KUBECONFIG_BOOTSTRAP", bootstrapClusterProxy.GetKubeconfigPath()) + }, + PreWaitForCluster: preWaitForCluster, + PreUpgrade: preUpgrade, + PreCleanupManagementCluster: preCleanupManagementCluster, + MgmtFlavor: osType, + WorkloadFlavor: osType, + } + }) + AfterEach(func() { + // Recreate bmh that was used in capi namespace in metal3 + //#nosec G204 -- We need to pass in the file name here. + cmd := exec.Command("bash", "-c", "kubectl apply -f bmhosts_crs.yaml -n metal3") + cmd.Dir = workDir + output, err := cmd.CombinedOutput() + Logf("Applying bmh to metal3 namespace : \n %v", string(output)) + Expect(err).ToNot(HaveOccurred()) + // wait for all bmh to become available + bootstrapClient := bootstrapClusterProxy.GetClient() + ListBareMetalHosts(ctx, bootstrapClient, client.InNamespace(namespace)) + WaitForNumBmhInState(ctx, bmov1alpha1.StateAvailable, WaitForNumInput{ + Client: bootstrapClient, + Options: []client.ListOption{client.InNamespace(namespace)}, + Replicas: 5, + Intervals: e2eConfig.GetIntervals(specName, "wait-bmh-available"), }) - Releasev1 := strings.Contains(os.Getenv("CAPM3_FROM_RELEASE"), "v1") - if Releasev1 { - capi_e2e.ClusterctlUpgradeSpec(ctx, func() capi_e2e.ClusterctlUpgradeSpecInput { - return capi_e2e.ClusterctlUpgradeSpecInput{ - E2EConfig: e2eConfig, - ClusterctlConfigPath: clusterctlConfigPath, - BootstrapClusterProxy: bootstrapClusterProxy, - ArtifactFolder: artifactFolder, - SkipCleanup: skipCleanup, - InitWithCoreProvider: fmt.Sprintf("cluster-api:%s", os.Getenv("CAPI_FROM_RELEASE")), - InitWithBootstrapProviders: []string{fmt.Sprintf("kubeadm:%s", os.Getenv("CAPI_FROM_RELEASE"))}, - InitWithControlPlaneProviders: []string{fmt.Sprintf("kubeadm:%s", os.Getenv("CAPI_FROM_RELEASE"))}, - InitWithInfrastructureProviders: []string{fmt.Sprintf("metal3:%s", os.Getenv("CAPM3_FROM_RELEASE"))}, - InitWithKubernetesVersion: e2eConfig.GetVariable("INIT_WITH_KUBERNETES_VERSION"), - WorkloadKubernetesVersion: e2eConfig.GetVariable("INIT_WITH_KUBERNETES_VERSION"), - InitWithBinary: e2eConfig.GetVariable("INIT_WITH_BINARY"), - PreInit: func(clusterProxy framework.ClusterProxy) { - preInitFunc(clusterProxy) - // Override capi/capm3 versions exported in preInit - os.Setenv("CAPI_VERSION", "v1beta1") - os.Setenv("CAPM3_VERSION", "v1beta1") - os.Setenv("KUBECONFIG_BOOTSTRAP", bootstrapClusterProxy.GetKubeconfigPath()) - }, - PreWaitForCluster: preWaitForCluster, - PreUpgrade: preUpgrade, - PreCleanupManagementCluster: preCleanupManagementCluster, - MgmtFlavor: osType, - WorkloadFlavor: osType, - } - }) - } else { - - isPreRelease := strings.Contains(os.Getenv("CAPI_TO_RELEASE"), "-") + ListBareMetalHosts(ctx, bootstrapClient, client.InNamespace(namespace)) + }) +}) - if isPreRelease { - capi_e2e.ClusterctlUpgradeSpec(ctx, func() capi_e2e.ClusterctlUpgradeSpecInput { - return capi_e2e.ClusterctlUpgradeSpecInput{ - E2EConfig: e2eConfig, - ClusterctlConfigPath: clusterctlConfigPath, - BootstrapClusterProxy: bootstrapClusterProxy, - ArtifactFolder: artifactFolder, - SkipCleanup: skipCleanup, - InitWithProvidersContract: "v1alpha4", - InitWithCoreProvider: fmt.Sprintf("capi-system/cluster-api:%s", os.Getenv("CAPI_TO_RELEASE")), - InitWithBootstrapProviders: []string{fmt.Sprintf("capi-kubeadm-bootstrap-system/kubeadm:%s", os.Getenv("CAPI_TO_RELEASE"))}, - InitWithControlPlaneProviders: []string{fmt.Sprintf("capi-kubeadm-control-plane-system/kubeadm:%s", os.Getenv("CAPI_TO_RELEASE"))}, - InitWithInfrastructureProviders: []string{fmt.Sprintf("capm3-system/metal3:%s", os.Getenv("CAPM3_TO_RELEASE"))}, - InitWithBinary: e2eConfig.GetVariable("INIT_WITH_BINARY"), - InitWithKubernetesVersion: e2eConfig.GetVariable("INIT_WITH_KUBERNETES_VERSION"), - WorkloadKubernetesVersion: e2eConfig.GetVariable("INIT_WITH_KUBERNETES_VERSION"), - PreInit: preInitFunc, - PreWaitForCluster: preWaitForCluster, - PreUpgrade: preUpgrade, - PreCleanupManagementCluster: preCleanupManagementCluster, - MgmtFlavor: osType, - WorkloadFlavor: osType, - } - }) - } else { - capi_e2e.ClusterctlUpgradeSpec(ctx, func() capi_e2e.ClusterctlUpgradeSpecInput { - return capi_e2e.ClusterctlUpgradeSpecInput{ - E2EConfig: e2eConfig, - ClusterctlConfigPath: clusterctlConfigPath, - BootstrapClusterProxy: bootstrapClusterProxy, - ArtifactFolder: artifactFolder, - SkipCleanup: skipCleanup, - InitWithProvidersContract: "v1alpha4", - InitWithBinary: e2eConfig.GetVariable("INIT_WITH_BINARY"), - PreInit: preInitFunc, - PreWaitForCluster: preWaitForCluster, - PreUpgrade: preUpgrade, - PreCleanupManagementCluster: preCleanupManagementCluster, - MgmtFlavor: osType, - WorkloadFlavor: osType, - } - }) - } +var _ = Describe("When testing cluster upgrade from releases (v1.5=>current) [clusterctl-upgrade]", func() { + BeforeEach(func() { + osType := strings.ToLower(os.Getenv("OS")) + Expect(osType).ToNot(Equal("")) + validateGlobals(specName) + imageURL, imageChecksum := EnsureImage("v1.28.1") + os.Setenv("IMAGE_RAW_CHECKSUM", imageChecksum) + os.Setenv("IMAGE_RAW_URL", imageURL) + // We need to override clusterctl apply log folder to avoid getting our credentials exposed. + clusterctlLogFolder = filepath.Join(os.TempDir(), "clusters", bootstrapClusterProxy.GetName()) + }) + capi_e2e.ClusterctlUpgradeSpec(ctx, func() capi_e2e.ClusterctlUpgradeSpecInput { + return capi_e2e.ClusterctlUpgradeSpecInput{ + E2EConfig: e2eConfig, + ClusterctlConfigPath: clusterctlConfigPath, + BootstrapClusterProxy: bootstrapClusterProxy, + ArtifactFolder: artifactFolder, + SkipCleanup: skipCleanup, + InitWithCoreProvider: "cluster-api:v1.5.7", + InitWithBootstrapProviders: []string{"kubeadm:v1.5.7"}, + InitWithControlPlaneProviders: []string{"kubeadm:v1.5.7"}, + InitWithInfrastructureProviders: []string{"metal3:v1.5.3"}, + InitWithKubernetesVersion: "v1.28.1", + WorkloadKubernetesVersion: "v1.28.1", + InitWithBinary: "https://github.com/kubernetes-sigs/cluster-api/releases/download/v1.5.7/clusterctl-{OS}-{ARCH}", + PreInit: func(clusterProxy framework.ClusterProxy) { + preInitFunc(clusterProxy) + // Override capi/capm3 versions exported in preInit + os.Setenv("CAPI_VERSION", "v1beta1") + os.Setenv("CAPM3_VERSION", "v1beta1") + os.Setenv("KUBECONFIG_BOOTSTRAP", bootstrapClusterProxy.GetKubeconfigPath()) + }, + PreWaitForCluster: preWaitForCluster, + PreUpgrade: preUpgrade, + PreCleanupManagementCluster: preCleanupManagementCluster, + MgmtFlavor: osType, + WorkloadFlavor: osType, } - AfterEach(func() { - // Recreate bmh that was used in capi namespace in metal3 - //#nosec G204 -- We need to pass in the file name here. - cmd := exec.Command("bash", "-c", "kubectl apply -f bmhosts_crs.yaml -n metal3") - cmd.Dir = workDir - output, err := cmd.CombinedOutput() - Logf("Applying bmh to metal3 namespace : \n %v", string(output)) - Expect(err).ToNot(HaveOccurred()) - // wait for all bmh to become available - bootstrapClient := bootstrapClusterProxy.GetClient() - ListBareMetalHosts(ctx, bootstrapClient, client.InNamespace(namespace)) - WaitForNumBmhInState(ctx, bmov1alpha1.StateAvailable, WaitForNumInput{ - Client: bootstrapClient, - Options: []client.ListOption{client.InNamespace(namespace)}, - Replicas: 5, - Intervals: e2eConfig.GetIntervals(specName, "wait-bmh-available"), - }) - ListBareMetalHosts(ctx, bootstrapClient, client.InNamespace(namespace)) + }) + AfterEach(func() { + // Recreate bmh that was used in capi namespace in metal3 + //#nosec G204 -- We need to pass in the file name here. + cmd := exec.Command("bash", "-c", "kubectl apply -f bmhosts_crs.yaml -n metal3") + cmd.Dir = workDir + output, err := cmd.CombinedOutput() + Logf("Applying bmh to metal3 namespace : \n %v", string(output)) + Expect(err).ToNot(HaveOccurred()) + // wait for all bmh to become available + bootstrapClient := bootstrapClusterProxy.GetClient() + ListBareMetalHosts(ctx, bootstrapClient, client.InNamespace(namespace)) + WaitForNumBmhInState(ctx, bmov1alpha1.StateAvailable, WaitForNumInput{ + Client: bootstrapClient, + Options: []client.ListOption{client.InNamespace(namespace)}, + Replicas: 5, + Intervals: e2eConfig.GetIntervals(specName, "wait-bmh-available"), }) + ListBareMetalHosts(ctx, bootstrapClient, client.InNamespace(namespace)) }) +}) // preWaitForCluster is a hook function that should be called from ClusterctlUpgradeSpec before waiting for the cluster to spin up // it creates the needed bmhs in namespace hosting the cluster and export the providerID format for v1alpha5. @@ -192,12 +203,25 @@ func preWaitForCluster(clusterProxy framework.ClusterProxy, clusterNamespace str // it installs certManager, BMO and Ironic and overrides the default IPs for the workload cluster. func preInitFunc(clusterProxy framework.ClusterProxy) { installCertManager := func(clusterProxy framework.ClusterProxy) { - certManagerLink := fmt.Sprintf("https://github.com/cert-manager/cert-manager/releases/download/%s/cert-manager.yaml", e2eConfig.GetVariable("CERT_MANAGER_RELEASE")) + certManagerLink := fmt.Sprintf("https://github.com/cert-manager/cert-manager/releases/download/%s/cert-manager.yaml", config.CertManagerDefaultVersion) err := DownloadFile("/tmp/certManager.yaml", certManagerLink) Expect(err).ToNot(HaveOccurred(), "Unable to download certmanager manifest") certManagerYaml, err := os.ReadFile("/tmp/certManager.yaml") Expect(err).ShouldNot(HaveOccurred()) Expect(clusterProxy.Apply(ctx, certManagerYaml)).ShouldNot(HaveOccurred()) + + By("Wait for cert-manager pods to be available") + deploymentNameList := []string{} + deploymentNameList = append(deploymentNameList, "cert-manager", "cert-manager-cainjector", "cert-manager-webhook") + clientSet := clusterProxy.GetClientSet() + for _, name := range deploymentNameList { + deployment, err := clientSet.AppsV1().Deployments("cert-manager").Get(ctx, name, metav1.GetOptions{}) + Expect(err).ToNot(HaveOccurred(), "Unable to get the deployment %s in namespace %s \n error message: %s", name, "cert-manager", err) + framework.WaitForDeploymentsAvailable(ctx, framework.WaitForDeploymentsAvailableInput{ + Getter: clusterProxy.GetClient(), + Deployment: deployment, + }, e2eConfig.GetIntervals(specName, "wait-deployment")...) + } } By("Fetch manifest for bootstrap cluster") @@ -274,8 +298,8 @@ func preInitFunc(clusterProxy framework.ClusterProxy) { }) // Export capi/capm3 versions - os.Setenv("CAPI_VERSION", "v1alpha4") - os.Setenv("CAPM3_VERSION", "v1alpha5") + os.Setenv("CAPI_VERSION", "v1beta1") + os.Setenv("CAPM3_VERSION", "v1beta1") // These exports bellow we need them after applying the management cluster template and before // applying the workload. if exported before it will break creating the management because it uses v1beta1 templates and default IPs. diff --git a/test/go.mod b/test/go.mod index 055999527d..0af690b0b6 100644 --- a/test/go.mod +++ b/test/go.mod @@ -3,23 +3,23 @@ module github.com/metal3-io/cluster-api-provider-metal3/test go 1.21 require ( - github.com/docker/docker v24.0.7+incompatible + github.com/docker/docker v26.0.0+incompatible github.com/jinzhu/copier v0.4.0 - github.com/metal3-io/baremetal-operator/apis v0.5.0 + github.com/metal3-io/baremetal-operator/apis v0.5.1 github.com/metal3-io/cluster-api-provider-metal3/api v0.0.0 - github.com/metal3-io/ip-address-manager/api v1.6.0 - github.com/onsi/ginkgo/v2 v2.16.0 - github.com/onsi/gomega v1.31.1 + github.com/metal3-io/ip-address-manager/api v1.7.0-beta.0 + github.com/onsi/ginkgo/v2 v2.17.0 + github.com/onsi/gomega v1.32.0 github.com/pkg/errors v0.9.1 golang.org/x/crypto v0.21.0 gopkg.in/yaml.v3 v3.0.1 - k8s.io/api v0.29.2 - k8s.io/apiextensions-apiserver v0.29.2 - k8s.io/apimachinery v0.29.2 - k8s.io/client-go v0.29.2 + k8s.io/api v0.29.3 + k8s.io/apiextensions-apiserver v0.29.3 + k8s.io/apimachinery v0.29.3 + k8s.io/client-go v0.29.3 k8s.io/utils v0.0.0-20231127182322-b307cd553661 - sigs.k8s.io/cluster-api v1.6.2 - sigs.k8s.io/cluster-api/test v1.6.2 + sigs.k8s.io/cluster-api v1.7.0-beta.0 + sigs.k8s.io/cluster-api/test v1.7.0-beta.0 sigs.k8s.io/controller-runtime v0.17.2 ) @@ -44,15 +44,16 @@ require ( github.com/coredns/caddy v1.1.1 // indirect github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect github.com/distribution/reference v0.5.0 // indirect - github.com/docker/distribution v2.8.3+incompatible // indirect - github.com/docker/go-connections v0.4.0 // indirect + github.com/docker/go-connections v0.5.0 // indirect github.com/docker/go-units v0.5.0 // indirect github.com/drone/envsubst/v2 v2.0.0-20210730161058-179042472c46 // indirect - github.com/emicklei/go-restful/v3 v3.11.0 // indirect - github.com/evanphx/json-patch v5.6.0+incompatible // indirect - github.com/evanphx/json-patch/v5 v5.8.0 // indirect + github.com/emicklei/go-restful/v3 v3.11.3 // indirect + github.com/evanphx/json-patch v5.7.0+incompatible // indirect + github.com/evanphx/json-patch/v5 v5.9.0 // indirect + github.com/felixge/httpsnoop v1.0.4 // indirect github.com/fsnotify/fsnotify v1.7.0 // indirect github.com/go-logr/logr v1.4.1 // indirect + github.com/go-logr/stdr v1.2.2 // indirect github.com/go-openapi/jsonpointer v0.19.6 // indirect github.com/go-openapi/jsonreference v0.20.2 // indirect github.com/go-openapi/swag v0.22.3 // indirect @@ -60,7 +61,7 @@ require ( github.com/gobuffalo/flect v1.0.2 // indirect github.com/gogo/protobuf v1.3.2 // indirect github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect - github.com/golang/protobuf v1.5.3 // indirect + github.com/golang/protobuf v1.5.4 // indirect github.com/google/cel-go v0.17.7 // indirect github.com/google/gnostic-models v0.6.8 // indirect github.com/google/go-cmp v0.6.0 // indirect @@ -84,6 +85,7 @@ require ( github.com/mitchellh/copystructure v1.2.0 // indirect github.com/mitchellh/mapstructure v1.5.0 // indirect github.com/mitchellh/reflectwalk v1.0.2 // indirect + github.com/moby/docker-image-spec v1.3.1 // indirect github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect github.com/modern-go/reflect2 v1.0.2 // indirect github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect @@ -95,45 +97,49 @@ require ( github.com/prometheus/client_model v0.5.0 // indirect github.com/prometheus/common v0.45.0 // indirect github.com/prometheus/procfs v0.12.0 // indirect - github.com/sagikazarmark/locafero v0.3.0 // indirect + github.com/sagikazarmark/locafero v0.4.0 // indirect github.com/sagikazarmark/slog-shim v0.1.0 // indirect github.com/shopspring/decimal v1.3.1 // indirect github.com/sourcegraph/conc v0.3.0 // indirect - github.com/spf13/afero v1.10.0 // indirect - github.com/spf13/cast v1.5.1 // indirect + github.com/spf13/afero v1.11.0 // indirect + github.com/spf13/cast v1.6.0 // indirect github.com/spf13/cobra v1.8.0 // indirect github.com/spf13/pflag v1.0.5 // indirect - github.com/spf13/viper v1.17.0 // indirect + github.com/spf13/viper v1.18.2 // indirect github.com/stoewer/go-strcase v1.2.0 // indirect github.com/subosito/gotenv v1.6.0 // indirect github.com/valyala/fastjson v1.6.4 // indirect + go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.46.0 // indirect + go.opentelemetry.io/otel v1.22.0 // indirect + go.opentelemetry.io/otel/metric v1.22.0 // indirect + go.opentelemetry.io/otel/trace v1.22.0 // indirect go.uber.org/multierr v1.11.0 // indirect golang.org/x/exp v0.0.0-20230905200255-921286631fa9 // indirect golang.org/x/mod v0.14.0 // indirect - golang.org/x/net v0.21.0 // indirect - golang.org/x/oauth2 v0.14.0 // indirect + golang.org/x/net v0.22.0 // indirect + golang.org/x/oauth2 v0.18.0 // indirect golang.org/x/sync v0.6.0 // indirect golang.org/x/sys v0.18.0 // indirect golang.org/x/term v0.18.0 // indirect golang.org/x/text v0.14.0 // indirect - golang.org/x/time v0.3.0 // indirect + golang.org/x/time v0.5.0 // indirect golang.org/x/tools v0.17.0 // indirect gomodules.xyz/jsonpatch/v2 v2.4.0 // indirect - google.golang.org/appengine v1.6.7 // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20230913181813-007df8e322eb // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20230920204549-e6e6cdab5c13 // indirect - google.golang.org/protobuf v1.31.0 // indirect + google.golang.org/appengine v1.6.8 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20231106174013-bbf56f31fb17 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20231120223509-83a465c0220f // indirect + google.golang.org/protobuf v1.33.0 // indirect gopkg.in/inf.v0 v0.9.1 // indirect gopkg.in/ini.v1 v1.67.0 // indirect gopkg.in/yaml.v2 v2.4.0 // indirect gotest.tools/v3 v3.5.0 // indirect - k8s.io/apiserver v0.29.2 // indirect - k8s.io/cluster-bootstrap v0.28.4 // indirect - k8s.io/component-base v0.29.2 // indirect + k8s.io/apiserver v0.29.3 // indirect + k8s.io/cluster-bootstrap v0.29.2 // indirect + k8s.io/component-base v0.29.3 // indirect k8s.io/klog/v2 v2.110.1 // indirect k8s.io/kube-openapi v0.0.0-20231010175941-2dd684a91f00 // indirect sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd // indirect - sigs.k8s.io/kind v0.20.0 // indirect + sigs.k8s.io/kind v0.22.0 // indirect sigs.k8s.io/structured-merge-diff/v4 v4.4.1 // indirect sigs.k8s.io/yaml v1.4.0 // indirect ) diff --git a/test/go.sum b/test/go.sum index e9051ae01d..3ee670c8ae 100644 --- a/test/go.sum +++ b/test/go.sum @@ -1,47 +1,7 @@ -cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= -cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= -cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU= -cloud.google.com/go v0.44.1/go.mod h1:iSa0KzasP4Uvy3f1mN/7PiObzGgflwredwwASm/v6AU= -cloud.google.com/go v0.44.2/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY= -cloud.google.com/go v0.44.3/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY= -cloud.google.com/go v0.45.1/go.mod h1:RpBamKRgapWJb87xiFSdk4g1CME7QZg3uwTez+TSTjc= -cloud.google.com/go v0.46.3/go.mod h1:a6bKKbmY7er1mI7TEI4lsAkts/mkhTSZK8w33B4RAg0= -cloud.google.com/go v0.50.0/go.mod h1:r9sluTvynVuxRIOHXQEHMFffphuXHOMZMycpNR5e6To= -cloud.google.com/go v0.52.0/go.mod h1:pXajvRH/6o3+F9jDHZWQ5PbGhn+o8w9qiu/CffaVdO4= -cloud.google.com/go v0.53.0/go.mod h1:fp/UouUEsRkN6ryDKNW/Upv/JBKnv6WDthjR6+vze6M= -cloud.google.com/go v0.54.0/go.mod h1:1rq2OEkV3YMf6n/9ZvGWI3GWw0VoqH/1x2nd8Is/bPc= -cloud.google.com/go v0.56.0/go.mod h1:jr7tqZxxKOVYizybht9+26Z/gUq7tiRzu+ACVAMbKVk= -cloud.google.com/go v0.57.0/go.mod h1:oXiQ6Rzq3RAkkY7N6t3TcE6jE+CIBBbA36lwQ1JyzZs= -cloud.google.com/go v0.62.0/go.mod h1:jmCYTdRCQuc1PHIIJ/maLInMho30T/Y0M4hTdTShOYc= -cloud.google.com/go v0.65.0/go.mod h1:O5N8zS7uWy9vkA9vayVHs65eM1ubvY4h553ofrNHObY= -cloud.google.com/go v0.72.0/go.mod h1:M+5Vjvlc2wnp6tjzE102Dw08nGShTscUx2nZMufOKPI= -cloud.google.com/go v0.74.0/go.mod h1:VV1xSbzvo+9QJOxLDaJfTjx5e+MePCpCWwvftOeQmWk= -cloud.google.com/go v0.75.0/go.mod h1:VGuuCn7PG0dwsd5XPVm2Mm3wlh3EL55/79EKB6hlPTY= -cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= -cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE= -cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc= -cloud.google.com/go/bigquery v1.5.0/go.mod h1:snEHRnqQbz117VIFhE8bmtwIDY80NLUZUMb4Nv6dBIg= -cloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4gLoIoXIAPc= -cloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ= -cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= -cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk= -cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I= -cloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw= -cloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIAii9o8iA= -cloud.google.com/go/pubsub v1.3.1/go.mod h1:i+ucay31+CNRpDW4Lu78I4xXG+O1r/MAHgjpRVR+TSU= -cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw= -cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0ZeosJ0Rtdos= -cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohlUTyfDhBk= -cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs= -cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0= -cloud.google.com/go/storage v1.14.0/go.mod h1:GrKmX003DSIwi9o29oFT7YDnHYwZoctc3fOKtUw0Xmo= -dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1 h1:UQHMgLO+TxOElx5B5HZ4hJQsoJ/PvUvKRhJHDQXO8P8= github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1/go.mod h1:xomTg63KZ2rFqZQzSB4Vz2SUXa1BpHTVz9L5PTmPC4E= -github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/BurntSushi/toml v1.0.0 h1:dtDWrepsVPfW9H/4y7dDgFc2MBUSeJhlaDtK13CxFlU= github.com/BurntSushi/toml v1.0.0/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ= -github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= github.com/MakeNowJust/heredoc v1.0.0 h1:cXCdzVdstXyiTqTvfqk9SDHpKNjxuom+DOlyEeQ4pzQ= github.com/MakeNowJust/heredoc v1.0.0/go.mod h1:mG5amYoWBHf8vpLOuehzbGGw0EHxpZZ6lCpQ4fNJ8LE= github.com/Masterminds/goutils v1.1.1 h1:5nUrii3FMTL5diU80unEVvNevw1nH4+ZV4DSLVJLSYI= @@ -69,19 +29,16 @@ github.com/blang/semver/v4 v4.0.0/go.mod h1:IbckMUScFkM3pff0VJDNKRiT6TG/YpiHIM2y github.com/bwesterb/go-ristretto v1.2.0/go.mod h1:fUIoIZaG73pV5biE2Blr2xEzDoMj7NFEuV9ekS419A0= github.com/cenkalti/backoff/v4 v4.2.1 h1:y4OZtCnogmCPw98Zjyt5a6+QwPLGkiQsYW5oUqylYbM= github.com/cenkalti/backoff/v4 v4.2.1/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE= -github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/cespare/xxhash/v2 v2.2.0 h1:DC2CZ1Ep5Y4k3ZQ899DldepgrayRUGE6BBZ/cd9Cj44= github.com/cespare/xxhash/v2 v2.2.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= -github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= github.com/cloudflare/circl v1.1.0/go.mod h1:prBCrKB9DV4poKZY1l9zBXg2QJY7mvgRvtMxxK7fi4I= github.com/cloudflare/circl v1.3.7 h1:qlCDlTPz2n9fu58M0Nh1J/JzcFpfgkFHHX3O35r5vcU= github.com/cloudflare/circl v1.3.7/go.mod h1:sRTcRWXGLrKw6yIGJ+l7amYJFfAXbZG0kBSc8r4zxgA= -github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= -github.com/cncf/udpa/go v0.0.0-20200629203442-efcf912fb354/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= -github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= +github.com/containerd/log v0.1.0 h1:TCJt7ioM2cr/tfR8GPbGf9/VRAX8D2B4PjzCpfX540I= +github.com/containerd/log v0.1.0/go.mod h1:VRRf09a7mHDIRezVKTRCrOq78v577GXq3bSa3EhrzVo= github.com/coredns/caddy v1.1.1 h1:2eYKZT7i6yxIfGP3qLJoJ7HAsDJqYB+X68g4NYjSrE0= github.com/coredns/caddy v1.1.1/go.mod h1:A6ntJQlAWuQfFlsd9hvigKbo2WS0VUs2l1e2F+BawD4= github.com/coredns/corefile-migration v1.0.21 h1:W/DCETrHDiFo0Wj03EyMkaQ9fwsmSgqTCQDHpceaSsE= @@ -100,39 +57,29 @@ github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1 github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/distribution/reference v0.5.0 h1:/FUIFXtfc/x2gpa5/VGfiGLuOIdYa1t65IKK2OFGvA0= github.com/distribution/reference v0.5.0/go.mod h1:BbU0aIcezP1/5jX/8MP0YiH4SdvB5Y4f/wlDRiLyi3E= -github.com/docker/distribution v2.8.3+incompatible h1:AtKxIZ36LoNK51+Z6RpzLpddBirtxJnzDrHLEKxTAYk= -github.com/docker/distribution v2.8.3+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w= -github.com/docker/docker v24.0.7+incompatible h1:Wo6l37AuwP3JaMnZa226lzVXGA3F9Ig1seQen0cKYlM= -github.com/docker/docker v24.0.7+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= -github.com/docker/go-connections v0.4.0 h1:El9xVISelRB7BuFusrZozjnkIM5YnzCViNKohAFqRJQ= -github.com/docker/go-connections v0.4.0/go.mod h1:Gbd7IOopHjR8Iph03tsViu4nIes5XhDvyHbTtUxmeec= +github.com/docker/docker v26.0.0+incompatible h1:Ng2qi+gdKADUa/VM+6b6YaY2nlZhk/lVJiKR/2bMudU= +github.com/docker/docker v26.0.0+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= +github.com/docker/go-connections v0.5.0 h1:USnMq7hx7gwdVZq1L49hLXaFtUdTADjXGp+uj1Br63c= +github.com/docker/go-connections v0.5.0/go.mod h1:ov60Kzw0kKElRwhNs9UlUHAE/F9Fe6GLaXnqyDdmEXc= github.com/docker/go-units v0.5.0 h1:69rxXcBk27SvSaaxTtLh/8llcHD8vYHT7WSdRZ/jvr4= github.com/docker/go-units v0.5.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= github.com/drone/envsubst/v2 v2.0.0-20210730161058-179042472c46 h1:7QPwrLT79GlD5sizHf27aoY2RTvw62mO6x7mxkScNk0= github.com/drone/envsubst/v2 v2.0.0-20210730161058-179042472c46/go.mod h1:esf2rsHFNlZlxsqsZDojNBcnNs5REqIvRrWRHqX0vEU= -github.com/emicklei/go-restful/v3 v3.11.0 h1:rAQeMHw1c7zTmncogyy8VvRZwtkmkZ4FxERmMY4rD+g= -github.com/emicklei/go-restful/v3 v3.11.0/go.mod h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc= -github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= -github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= -github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= -github.com/envoyproxy/go-control-plane v0.9.7/go.mod h1:cwu0lG7PUMfa9snN8LXBig5ynNVH9qI8YYLbd1fK2po= -github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= -github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= -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/emicklei/go-restful/v3 v3.11.3 h1:yagOQz/38xJmcNeZJtrUcKjkHRltIaIFXKWeG1SkWGE= +github.com/emicklei/go-restful/v3 v3.11.3/go.mod h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc= +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.6.0/go.mod h1:G79N1coSVB93tBe7j6PhzjmR3/2VvlbKOFpnXhI9Bw4= -github.com/evanphx/json-patch/v5 v5.8.0 h1:lRj6N9Nci7MvzrXuX6HFzU8XjmhPiXPlsKEy1u0KQro= -github.com/evanphx/json-patch/v5 v5.8.0/go.mod h1:VNkHZ/282BpEyt/tObQO8s5CMPmYYq14uClGH4abBuQ= +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/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg= github.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= github.com/flynn/go-shlex v0.0.0-20150515145356-3f9db97f8568/go.mod h1:xEzjJPgXI435gkrCt3MPfRiAkVrwSbHsst4LCFVfpJc= -github.com/frankban/quicktest v1.14.4 h1:g2rn0vABPOOXmZUj+vbmUp0lPoXEMuhTpIluN0XL9UY= -github.com/frankban/quicktest v1.14.4/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0= +github.com/frankban/quicktest v1.14.6 h1:7Xjx+VpznH+oBnejlPUj8oUpdxnVs4f8XU8WnHkI4W8= +github.com/frankban/quicktest v1.14.6/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0= github.com/fsnotify/fsnotify v1.7.0 h1:8JEhPFa5W2WU7YfeZzPNqzMP6Lwt7L2715Ggo0nosvA= github.com/fsnotify/fsnotify v1.7.0/go.mod h1:40Bi/Hjc2AVfZrqy+aj+yEI+/bRxZnMJyTJwOpGvigM= -github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= -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-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= github.com/go-logr/logr v1.3.0/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= github.com/go-logr/logr v1.4.1 h1:pKouT5E8xu9zeFC39JXRDukb6JFQPXM5p5I91188VAQ= github.com/go-logr/logr v1.4.1/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= @@ -152,51 +99,18 @@ github.com/gobuffalo/flect v1.0.2 h1:eqjPGSo2WmjgY2XlpGwo2NXgL3RucAKo4k4qQMNA5sA github.com/gobuffalo/flect v1.0.2/go.mod h1:A5msMlrHtLqh9umBSnvabjsMrCcCpAyzglnDvkbYKHs= github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= -github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= -github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da h1:oI5xCqsCo564l8iNU+DwB5epxmsaqB+rhGL0m5jtYqE= github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= -github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= -github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y= -github.com/golang/mock v1.4.0/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= -github.com/golang/mock v1.4.1/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= -github.com/golang/mock v1.4.3/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= -github.com/golang/mock v1.4.4/go.mod h1:l3mdAwkq5BuhzHwde/uurv3sEJeZMXNpwsxVWU71h+4= -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= -github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= -github.com/golang/protobuf v1.3.4/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= -github.com/golang/protobuf v1.3.5/go.mod h1:6O5/vntMXwX2lRkT1hjjk0nAC1IDOTvTlVgjlRvqsdk= -github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8= -github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA= -github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs= -github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w= -github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0= -github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8= -github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= -github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= -github.com/golang/protobuf v1.5.3 h1:KhyjKVUg7Usr/dYsdSqoFveMYd5ko72D+zANwlG1mmg= -github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= -github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= -github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= +github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= +github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= +github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= github.com/google/cel-go v0.17.7 h1:6ebJFzu1xO2n7TLtN+UBqShGBhlD85bhvglh5DpcfqQ= github.com/google/cel-go v0.17.7/go.mod h1:HXZKzB0LXqer5lHHgfWAnlYwJaQBDKMjxjulNQzhwhY= github.com/google/gnostic-models v0.6.8 h1:yo/ABAfM5IMRsS1VnXjTBvUb61tFIHozhlYvRgGre9I= github.com/google/gnostic-models v0.6.8/go.mod h1:5n7qKqH0f5wFt+aWF8CW6pZLLNOfYuF5OpfBSENuI8U= github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= -github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= -github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= -github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.4.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= @@ -208,44 +122,23 @@ github.com/google/go-querystring v1.1.0/go.mod h1:Kcdr2DB4koayq7X8pmAG4sNG59So17 github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0= github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= -github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= -github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= -github.com/google/martian/v3 v3.1.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= -github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= -github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= -github.com/google/pprof v0.0.0-20191218002539-d4f498aebedc/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20200212024743-f11f1df84d12/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20200229191704-1ebb73c60ed3/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20200430221834-fc25d7d30c6d/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20200708004538-1a94d8640e99/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20201023163331-3e6fc7fc9c4c/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20201203190320-1bf35d6f28c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20201218002935-b9804c9f04c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1 h1:K6RDEckDVWvDI9JAJYCmNdQXq6neHJOYx3V6jnqNEec= github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= github.com/google/safetext v0.0.0-20220905092116-b49f7bc46da2 h1:SJ+NtwL6QaZ21U+IrK7d0gGgpjGGvd2kz+FzTHVzdqI= github.com/google/safetext v0.0.0-20220905092116-b49f7bc46da2/go.mod h1:Tv1PlzqC9t8wNnpPdctvtSUOPUUg4SHeE6vR1Ir2hmg= github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.5.0 h1:1p67kYwdtXjb0gL0BPiP1Av9wiZPo5A8z2cWkTZ+eyU= github.com/google/uuid v1.5.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= -github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= -github.com/googleapis/google-cloud-go-testing v0.0.0-20200911160855-bcd43fbb19e8/go.mod h1:dvDLG8qkwmyD9a/MJJN3XJcT3xFxOKAvTZGvuZmac9g= github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0 h1:Ovs26xHkKqVztRpIrF/92BcuyuQ/YW4NSIpoGtfXNho= github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= github.com/grpc-ecosystem/grpc-gateway v1.16.0 h1:gmcG1KaJ57LophUzW0Hy8NmPhnMZb4M0+kPpLofRdBo= github.com/grpc-ecosystem/grpc-gateway/v2 v2.16.0 h1:YBftPWNWd4WwGqtY2yeZL2ef8rHAxPBD8KFhJpmcqms= github.com/grpc-ecosystem/grpc-gateway/v2 v2.16.0/go.mod h1:YN5jB8ie0yfIUg6VvR9Kz84aCaG7AsGZnLjhHbUqwPg= -github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= -github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= github.com/huandu/xstrings v1.3.3/go.mod h1:y5/lhBue+AyNmUVz9RLU9xbLR0o4KIIExikq4ovT0aE= github.com/huandu/xstrings v1.4.0 h1:D17IlohoQq4UcpqD7fDk80P7l+lwAmlFaBHgOipl2FU= github.com/huandu/xstrings v1.4.0/go.mod h1:y5/lhBue+AyNmUVz9RLU9xbLR0o4KIIExikq4ovT0aE= -github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/imdario/mergo v0.3.11/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA= github.com/imdario/mergo v0.3.13 h1:lFzP57bqS/wsqKssCGmtLAb8A0wKjLGrve2q3PPVcBk= @@ -260,12 +153,8 @@ github.com/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8Hm github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y= 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/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= -github.com/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg= -github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= @@ -282,12 +171,12 @@ github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWE github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= github.com/matttproud/golang_protobuf_extensions/v2 v2.0.0 h1:jWpvCLoY8Z/e3VKvlsiIGKtc+UG6U5vzxaoagmhXfyg= github.com/matttproud/golang_protobuf_extensions/v2 v2.0.0/go.mod h1:QUyp042oQthUoa9bqDv0ER0wrtXnBruoNd7aNjkbP+k= -github.com/metal3-io/baremetal-operator/apis v0.5.0 h1:IRaKMxRCkYfFAjvZdDyGC6bIaGQsV6MMNmGV8gqyYCc= -github.com/metal3-io/baremetal-operator/apis v0.5.0/go.mod h1:rjpH/E7MB7JWt/LPi6hDd5LpaBIiqaBnm3KtFjKxnUM= +github.com/metal3-io/baremetal-operator/apis v0.5.1 h1:l6VCuM2nSYMsdir3mocXvF80F7HnTXVZ7NNIoMEYbio= +github.com/metal3-io/baremetal-operator/apis v0.5.1/go.mod h1:Q3MHes59mRabjHM6ARoHfgd2uXUjJIytl3/uflzhyew= github.com/metal3-io/baremetal-operator/pkg/hardwareutils v0.5.0 h1:oRkQOlTxcRJsHFM2jkXzOPAkg/REnLEd15GxJTN27Nk= github.com/metal3-io/baremetal-operator/pkg/hardwareutils v0.5.0/go.mod h1:399nvdaqoU9rTI25UdFw2EWcVjmJPpeZPIhfDAIx/XU= -github.com/metal3-io/ip-address-manager/api v1.6.0 h1:9AZhHHnFv/P0iC2UHvjzRwc34yPjRUmZkdWhF65sjZE= -github.com/metal3-io/ip-address-manager/api v1.6.0/go.mod h1:qDeEwi/ebU/SS5r2Ek0vmC7tdIPgDsO3eFIpylZAM04= +github.com/metal3-io/ip-address-manager/api v1.7.0-beta.0 h1:/SDjqdGlRswFRC/QnREW4AGIB1EmGPBUplP9SyXYpKc= +github.com/metal3-io/ip-address-manager/api v1.7.0-beta.0/go.mod h1:2b/grCN91QU0vhsxfafTpKLjBo8EapjkVc5IXINYwAY= github.com/mitchellh/copystructure v1.0.0/go.mod h1:SNtv71yrdKgLRyLFxmLdkAbkKEFWgYaq1OVrnRcwhnw= github.com/mitchellh/copystructure v1.2.0 h1:vpKXTN4ewci03Vljg/q9QvCGUDttBOGBIa15WveJJGw= github.com/mitchellh/copystructure v1.2.0/go.mod h1:qLl+cE2AmVv+CoeAwDPye/v+N2HKCj9FbZEVFJRxO9s= @@ -296,6 +185,8 @@ github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RR github.com/mitchellh/reflectwalk v1.0.0/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw= github.com/mitchellh/reflectwalk v1.0.2 h1:G2LzWKi524PWgd3mLHV8Y5k7s6XUvT0Gef6zxSIeXaQ= github.com/mitchellh/reflectwalk v1.0.2/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw= +github.com/moby/docker-image-spec v1.3.1 h1:jMKff3w6PgbfSa69GfNg+zN/XLhfXJGnEx3Nl2EsFP0= +github.com/moby/docker-image-spec v1.3.1/go.mod h1:eKmb5VW8vQEh/BAr2yvVNvuiJuY6UIocYsFu/DxxRpo= github.com/moby/term v0.0.0-20221205130635-1aeaba878587 h1:HfkjXDfhgVaN5rmueG8cL8KKeFNecRCXFhaJ2qZ5SKA= github.com/moby/term v0.0.0-20221205130635-1aeaba878587/go.mod h1:8FzsFHVUBGZdbDsJw/ot+X+d5HLUbvklYLJ9uGfcI3Y= github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= @@ -308,10 +199,10 @@ github.com/morikuni/aec v1.0.0/go.mod h1:BbKIizmSmc5MMPqRYbxO4ZU0S0+P200+tUnFx7P 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/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= -github.com/onsi/ginkgo/v2 v2.16.0 h1:7q1w9frJDzninhXxjZd+Y/x54XNjG/UlRLIYPZafsPM= -github.com/onsi/ginkgo/v2 v2.16.0/go.mod h1:llBI3WDLL9Z6taip6f33H76YcWtJv+7R3HigUjbIBOs= -github.com/onsi/gomega v1.31.1 h1:KYppCUK+bUgAZwHOu7EXVBKyQA6ILvOESHkn/tgoqvo= -github.com/onsi/gomega v1.31.1/go.mod h1:y40C95dwAD1Nz36SsEnxvfFe8FFfNxzI5eJ0EYGyAy0= +github.com/onsi/ginkgo/v2 v2.17.0 h1:kdnunFXpBjbzN56hcJHrXZ8M+LOkenKA7NnBzTNigTI= +github.com/onsi/ginkgo/v2 v2.17.0/go.mod h1:llBI3WDLL9Z6taip6f33H76YcWtJv+7R3HigUjbIBOs= +github.com/onsi/gomega v1.32.0 h1:JRYU78fJ1LPxlckP6Txi/EYqJvjtMrDC04/MM5XRHPk= +github.com/onsi/gomega v1.32.0/go.mod h1:a4x4gW6Pz2yK1MAmvluYme5lvYTn61afQ2ETw/8n4Lg= github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U= github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM= github.com/opencontainers/image-spec v1.0.2 h1:9yCKha/T5XdGtO0q9Q9a6T5NUCsTn/DrBg0D7ufOcFM= @@ -324,44 +215,43 @@ github.com/pelletier/go-toml/v2 v2.1.0/go.mod h1:tJU2Z3ZkXwnxa4DPO899bsyIoywizdU 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= -github.com/pkg/sftp v1.13.1/go.mod h1:3HaPG6Dq1ILlpPZRO0HVMrsydcdLt6HRDccSgb87qRg= 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/client_golang v1.18.0 h1:HzFfmkOzH5Q8L8G+kSJKUx5dtG87sewO+FoDDqP5Tbk= github.com/prometheus/client_golang v1.18.0/go.mod h1:T+GXkCk5wSJyOqMIzVgvvjFDlkOQntgjkJWKrN5txjA= -github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.5.0 h1:VQw1hfvPvk3Uv6Qf29VrPF32JB6rtbgI6cYPYQjL0Qw= github.com/prometheus/client_model v0.5.0/go.mod h1:dTiFglRmd66nLR9Pv9f0mZi7B7fk5Pm3gvsjB5tr+kI= github.com/prometheus/common v0.45.0 h1:2BGz0eBc2hdMDLnO/8n0jeB3oPrt2D08CekT0lneoxM= github.com/prometheus/common v0.45.0/go.mod h1:YJmSTw9BoKxJplESWWxlbyttQR4uaEcGyv9MZjVOJsY= github.com/prometheus/procfs v0.12.0 h1:jluTpSng7V9hY0O2R9DzzJHYb2xULk9VTR1V1R/k6Bo= github.com/prometheus/procfs v0.12.0/go.mod h1:pcuDEFsWDnvcgNzo4EEweacyhjeA9Zk3cnaOZAZEfOo= -github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/rogpeppe/go-internal v1.10.0 h1:TMyTOH3F/DB16zRVcYyreMH6GnZZrwQVAoYjRBZyWFQ= github.com/rogpeppe/go-internal v1.10.0/go.mod h1:UQnix2H7Ngw/k4C5ijL5+65zddjncjaFoBhdsK/akog= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= -github.com/sagikazarmark/locafero v0.3.0 h1:zT7VEGWC2DTflmccN/5T1etyKvxSxpHsjb9cJvm4SvQ= -github.com/sagikazarmark/locafero v0.3.0/go.mod h1:w+v7UsPNFwzF1cHuOajOOzoq4U7v/ig1mpRjqV+Bu1U= +github.com/sagikazarmark/locafero v0.4.0 h1:HApY1R9zGo4DBgr7dqsTH/JJxLTTsOt7u6keLGt6kNQ= +github.com/sagikazarmark/locafero v0.4.0/go.mod h1:Pe1W6UlPYUk/+wc/6KFhbORCfqzgYEpgQ3O5fPuL3H4= github.com/sagikazarmark/slog-shim v0.1.0 h1:diDBnUNK9N/354PgrxMywXnAwEr1QZcOr6gto+ugjYE= github.com/sagikazarmark/slog-shim v0.1.0/go.mod h1:SrcSrq8aKtyuqEI1uvTDTK1arOWRIczQRv+GVI1AkeQ= 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/sirupsen/logrus v1.9.0 h1:trlNQbNUG3OdDrDil03MCb1H2o9nJ1x4/5LYw7byDE0= +github.com/sirupsen/logrus v1.9.0/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= github.com/sourcegraph/conc v0.3.0 h1:OQTbbt6P72L20UqAkXXuLOj79LfEanQ+YQFNpLA9ySo= github.com/sourcegraph/conc v0.3.0/go.mod h1:Sdozi7LEKbFPqYX2/J+iBAM6HpqSLTASQIKqDmF7Mt0= -github.com/spf13/afero v1.10.0 h1:EaGW2JJh15aKOejeuJ+wpFSHnbd7GE6Wvp3TsNhb6LY= -github.com/spf13/afero v1.10.0/go.mod h1:UBogFpq8E9Hx+xc5CNTTEpTnuHVmXDwZcZcE1eb/UhQ= +github.com/spf13/afero v1.11.0 h1:WJQKhtpdm3v2IzqG8VMqrr6Rf3UYpEF239Jy9wNepM8= +github.com/spf13/afero v1.11.0/go.mod h1:GH9Y3pIexgf1MTIWtNGyogA5MwRIDXGUr+hbWNoBjkY= github.com/spf13/cast v1.3.1/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= -github.com/spf13/cast v1.5.1 h1:R+kOtfhWQE6TVQzY+4D7wJLBgkdVasCEFxSUBYBYIlA= -github.com/spf13/cast v1.5.1/go.mod h1:b9PdjNptOpzXr7Rq1q9gJML/2cdGQAo69NKzQ10KN48= +github.com/spf13/cast v1.6.0 h1:GEiTHELF+vaR5dhz3VqZfFSzZjYbgeKDpBxQVS4GYJ0= +github.com/spf13/cast v1.6.0/go.mod h1:ancEpBxwJDODSW/UG4rDrAqiKolqNNh2DX3mk86cAdo= github.com/spf13/cobra v1.4.0/go.mod h1:Wo4iy3BUC+X2Fybo0PDqwJIv3dNRiZLHQymsfxlB84g= github.com/spf13/cobra v1.8.0 h1:7aJaZx1B85qltLMc546zn58BxxfZdR/W22ej9CFoEf0= github.com/spf13/cobra v1.8.0/go.mod h1:WXLWApfZ71AjXPya3WOlMsY9yMs7YeiHhFVlvLyhcho= 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/spf13/viper v1.17.0 h1:I5txKw7MJasPL/BrfkbA0Jyo/oELqVmux4pR/UxOMfI= -github.com/spf13/viper v1.17.0/go.mod h1:BmMMMLQXSbcHK6KAOiFLz0l5JHrU89OdIRHvsk0+yVI= +github.com/spf13/viper v1.18.2 h1:LUXCnvUvSM6FXAsj6nnfc8Q2tp1dIgUfY9Kc8GsSOiQ= +github.com/spf13/viper v1.18.2/go.mod h1:EKmWIqdnk5lOcmR72yw6hS+8OPYcwD0jteitLMVB+yk= github.com/stoewer/go-strcase v1.2.0 h1:Z2iHWqGXH00XYgqDmNgQbIBxf3wrNq0F3feEy0ainaU= github.com/stoewer/go-strcase v1.2.0/go.mod h1:IBiWB2sKIp3wVVQ3Y035++gc+knqhUQag1KpM8ahLw8= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= @@ -369,7 +259,6 @@ github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSS github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= -github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= @@ -382,39 +271,33 @@ github.com/subosito/gotenv v1.6.0 h1:9NlTDc1FTs4qu0DDq7AEtTPNw6SVm7uBMsUCUjABIf8 github.com/subosito/gotenv v1.6.0/go.mod h1:Dk4QP5c2W3ibzajGcXpNraDfq2IrhjMIvMSWPKKo0FU= github.com/valyala/fastjson v1.6.4 h1:uAUNq9Z6ymTgGhcm0UynUAB6tlbakBrz6CQFax3BXVQ= github.com/valyala/fastjson v1.6.4/go.mod h1:CLCAqky6SMuOcxStkYQvblddUtoRxhYMGLrsQns1aXY= -github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= -go.etcd.io/etcd/api/v3 v3.5.10 h1:szRajuUUbLyppkhs9K6BRtjY37l66XQQmw7oZRANE4k= -go.etcd.io/etcd/api/v3 v3.5.10/go.mod h1:TidfmT4Uycad3NM/o25fG3J07odo4GBB9hoxaodFCtI= -go.etcd.io/etcd/client/pkg/v3 v3.5.10 h1:kfYIdQftBnbAq8pUWFXfpuuxFSKzlmM5cSn76JByiT0= -go.etcd.io/etcd/client/pkg/v3 v3.5.10/go.mod h1:DYivfIviIuQ8+/lCq4vcxuseg2P2XbHygkKwFo9fc8U= -go.etcd.io/etcd/client/v3 v3.5.10 h1:W9TXNZ+oB3MCd/8UjxHTWK5J9Nquw9fQBLJd5ne5/Ao= -go.etcd.io/etcd/client/v3 v3.5.10/go.mod h1:RVeBnDz2PUEZqTpgqwAtUd8nAPf5kjyFyND7P1VkOKc= -go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= -go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= -go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= -go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= -go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= -go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk= +go.etcd.io/etcd/api/v3 v3.5.12 h1:W4sw5ZoU2Juc9gBWuLk5U6fHfNVyY1WC5g9uiXZio/c= +go.etcd.io/etcd/api/v3 v3.5.12/go.mod h1:Ot+o0SWSyT6uHhA56al1oCED0JImsRiU9Dc26+C2a+4= +go.etcd.io/etcd/client/pkg/v3 v3.5.12 h1:EYDL6pWwyOsylrQyLp2w+HkQ46ATiOvoEdMarindU2A= +go.etcd.io/etcd/client/pkg/v3 v3.5.12/go.mod h1:seTzl2d9APP8R5Y2hFL3NVlD6qC/dOT+3kvrqPyTas4= +go.etcd.io/etcd/client/v3 v3.5.12 h1:v5lCPXn1pf1Uu3M4laUE2hp/geOTc5uPcYYsNe1lDxg= +go.etcd.io/etcd/client/v3 v3.5.12/go.mod h1:tSbBCakoWmmddL+BKVAJHa9km+O/E+bumDe9mSbPiqw= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.46.0 h1:PzIubN4/sjByhDRHLviCjJuweBXWFZWhghjg7cS28+M= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.46.0/go.mod h1:Ct6zzQEuGK3WpJs2n4dn+wfJYzd/+hNnxMRTWjGn30M= go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.46.0 h1:1eHu3/pUSWaOgltNK3WJFaywKsTIr/PwvHyDmi0lQA0= go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.46.0/go.mod h1:HyABWq60Uy1kjJSa2BVOxUVao8Cdick5AWSKPutqy6U= -go.opentelemetry.io/otel v1.20.0 h1:vsb/ggIY+hUjD/zCAQHpzTmndPqv/ml2ArbsbfBYTAc= -go.opentelemetry.io/otel v1.20.0/go.mod h1:oUIGj3D77RwJdM6PPZImDpSZGDvkD9fhesHny69JFrs= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.20.0 h1:DeFD0VgTZ+Cj6hxravYYZE2W4GlneVH81iAOPjZkzk8= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.20.0/go.mod h1:GijYcYmNpX1KazD5JmWGsi4P7dDTTTnfv1UbGn84MnU= +go.opentelemetry.io/otel v1.22.0 h1:xS7Ku+7yTFvDfDraDIJVpw7XPyuHlB9MCiqqX5mcJ6Y= +go.opentelemetry.io/otel v1.22.0/go.mod h1:eoV4iAi3Ea8LkAEI9+GFT44O6T/D0GWAVFyZVCC6pMI= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.22.0 h1:9M3+rhx7kZCIQQhQRYaZCdNu1V73tm4TvXs2ntl98C4= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.22.0/go.mod h1:noq80iT8rrHP1SfybmPiRGc9dc5M8RPmGvtwo7Oo7tc= go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.20.0 h1:gvmNvqrPYovvyRmCSygkUDyL8lC5Tl845MLEwqpxhEU= go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.20.0/go.mod h1:vNUq47TGFioo+ffTSnKNdob241vePmtNZnAODKapKd0= -go.opentelemetry.io/otel/metric v1.20.0 h1:ZlrO8Hu9+GAhnepmRGhSU7/VkpjrNowxRN9GyKR4wzA= -go.opentelemetry.io/otel/metric v1.20.0/go.mod h1:90DRw3nfK4D7Sm/75yQ00gTJxtkBxX+wu6YaNymbpVM= -go.opentelemetry.io/otel/sdk v1.20.0 h1:5Jf6imeFZlZtKv9Qbo6qt2ZkmWtdWx/wzcCbNUlAWGM= -go.opentelemetry.io/otel/sdk v1.20.0/go.mod h1:rmkSx1cZCm/tn16iWDn1GQbLtsW/LvsdEEFzCSRM6V0= -go.opentelemetry.io/otel/trace v1.20.0 h1:+yxVAPZPbQhbC3OfAkeIVTky6iTFpcr4SiY9om7mXSQ= -go.opentelemetry.io/otel/trace v1.20.0/go.mod h1:HJSK7F/hA5RlzpZ0zKDCHCDHm556LCDtKaAo6JmBFUU= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.22.0 h1:FyjCyI9jVEfqhUh2MoSkmolPjfh5fp2hnV0b0irxH4Q= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.22.0/go.mod h1:hYwym2nDEeZfG/motx0p7L7J1N1vyzIThemQsb4g2qY= +go.opentelemetry.io/otel/metric v1.22.0 h1:lypMQnGyJYeuYPhOM/bgjbFM6WE44W1/T45er4d8Hhg= +go.opentelemetry.io/otel/metric v1.22.0/go.mod h1:evJGjVpZv0mQ5QBRJoBF64yMuOf4xCWdXjK8pzFvliY= +go.opentelemetry.io/otel/sdk v1.22.0 h1:6coWHw9xw7EfClIC/+O31R8IY3/+EiRFHevmHafB2Gw= +go.opentelemetry.io/otel/sdk v1.22.0/go.mod h1:iu7luyVGYovrRpe2fmj3CVKouQNdTOkxtLzPvPz1DOc= +go.opentelemetry.io/otel/trace v1.22.0 h1:Hg6pPujv0XG9QaVbGOBVHunyuLcCC3jN7WEhPx83XD0= +go.opentelemetry.io/otel/trace v1.22.0/go.mod h1:RbbHXVqKES9QhzZq/fE5UnOSILqRt40a21sPw2He1xo= go.opentelemetry.io/proto/otlp v1.0.0 h1:T0TX0tmXU8a3CbNXzEKGeU5mIVOdf0oykP+u2lIVU/I= go.opentelemetry.io/proto/otlp v1.0.0/go.mod h1:Sy6pihPLfYHkr3NkUbEhGHFhINUSI/v80hjKIs5JXpM= go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= @@ -424,148 +307,41 @@ go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN8 go.uber.org/zap v1.26.0 h1:sI7k6L95XOKS281NhVKOFCUNIvv9e0w4BF8N3u+tCRo= go.uber.org/zap v1.26.0/go.mod h1:dtElttAiwGvoJ/vj4IwHBS/gXsEu/pZ50mUIRWuG0so= 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-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= 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= -golang.org/x/crypto v0.0.0-20220722155217-630584e8d5aa/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.3.0/go.mod h1:hebNnKkNXi2UzZN1eVRvBB7co0a+JxK6XbPiWVs/3J4= golang.org/x/crypto v0.21.0 h1:X31++rzVUdKhX5sWmSOFZxx8UW/ldWx55cbf08iNAMA= golang.org/x/crypto v0.21.0/go.mod h1:0BP7YvVV9gBbVKyeTG0Gyn+gZm94bibOW5BjDEYAOMs= -golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= -golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= -golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= -golang.org/x/exp v0.0.0-20190829153037-c13cbed26979/go.mod h1:86+5VVa7VpoJ4kLfm080zCjGlMRFzhUhsZKEZO7MGek= -golang.org/x/exp v0.0.0-20191030013958-a1ab85dbe136/go.mod h1:JXzH8nQsPlswgeRAPE3MuO9GYsAcnJvJ4vnMwN/5qkY= -golang.org/x/exp v0.0.0-20191129062945-2f5052295587/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= -golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= -golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= -golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM= -golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= golang.org/x/exp v0.0.0-20230905200255-921286631fa9 h1:GoHiUyI/Tp2nVkLI2mCxVkOjsbSXD66ic0XW0js0R9g= golang.org/x/exp v0.0.0-20230905200255-921286631fa9/go.mod h1:S2oDrQGGwySpoQPVqRShND87VCbxmc6bL1Yd2oYrm6k= -golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= -golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= -golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= -golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= -golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= -golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/lint v0.0.0-20190409202823-959b441ac422/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/lint v0.0.0-20190909230951-414d861bb4ac/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f/go.mod h1:5qLYkcX4OjUUV8bRuDixDT3tpyyb+LUpUlRWLxfhWrs= -golang.org/x/lint v0.0.0-20200130185559-910be7a94367/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= -golang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= -golang.org/x/lint v0.0.0-20201208152925-83fdc39ff7b5/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= -golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE= -golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o= -golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc= -golang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY= -golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= -golang.org/x/mod v0.1.1-0.20191107180719-034126e5016b/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= golang.org/x/mod v0.14.0 h1:dGoOF9QVLYng8IHTm7BAyWqCqSheQ5pYWGhzW00YJr0= golang.org/x/mod v0.14.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= -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-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= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190501004415-9ce7a6920f09/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -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-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= -golang.org/x/net v0.0.0-20200222125558-5a598a2470a0/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200301022130-244492dfa37a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200501053045-e0ff5e5a1de5/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200506145744-7e3656a0809f/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200513185701-a91f0712d120/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200520182314-0ba52f642ac2/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= -golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= -golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.0.0-20201031054903-ff519b6c9102/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.0.0-20201209123823-ac852fbbde11/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= -golang.org/x/net v0.0.0-20201224014010-6772e930b67b/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= -golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= golang.org/x/net v0.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY= -golang.org/x/net v0.21.0 h1:AQyQV4dYCvJ7vGmJyKki9+PBdyvhkSd8EIx/qb0AYv4= -golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44= -golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= -golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= -golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= -golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= -golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= -golang.org/x/oauth2 v0.0.0-20200902213428-5d25da1a8d43/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20201109201403-9fd604954f58/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20201208152858-08078c50e5b5/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210218202405-ba52d332ba99/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.14.0 h1:P0Vrf/2538nmC0H+pEQ3MNFRRnVR7RlqyVw+bvm26z0= -golang.org/x/oauth2 v0.14.0/go.mod h1:lAtNWgaWfL4cm7j2OV8TxGi9Qb7ECORx8DktCY74OwM= -golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/net v0.22.0 h1:9sGLhx7iRIHEiX0oAJ3MRZMUCElJgy7Br1nO+AMN3Tc= +golang.org/x/net v0.22.0/go.mod h1:JKghWKKOSdJwpW2GEx0Ja7fmaKnMsbu+MWVZTokSYmg= +golang.org/x/oauth2 v0.18.0 h1:09qnuIAgzdx1XplqJvW6CQqMCtGZykZWcXzPMPUusvI= +golang.org/x/oauth2 v0.18.0/go.mod h1:Wf7knwG0MPoWIMMBgFlEaSUDaKskp0dCfrlJRJXbBi8= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.6.0 h1:5BMeUDZ7vkXGfEr1x9B4bRcTH4lpkTkpdh0T/J+qjbQ= golang.org/x/sync v0.6.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= -golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/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= -golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/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= -golang.org/x/sys v0.0.0-20200113162924-86b910548bc1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200202164722-d101bd2416d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200212091648-12a6c2dcc1e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200331124033-c3d80250170d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200501052902-10377860bb8e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200511232937-7e40ca221e25/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200515095857-1151b9dac4a9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200905004654-be1d3432aa8f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20201201145000-ef89a241ccb3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210104204734-6f8348627aad/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210225134936-a50acf3fe073/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210423185535-09eb48e85fd7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211007075335-d3039528d8ac/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= @@ -581,71 +357,19 @@ golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuX golang.org/x/term v0.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc= golang.org/x/term v0.18.0 h1:FcHjZXDMxI8mM3nwhX9HlKop4C0YQvCVCdwYl2wOtE8= golang.org/x/term v0.18.0/go.mod h1:ILwASektA3OnRv7amZ1xhE/KTR+u50pbXfZ03+6Nx58= -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= -golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= +golang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ= golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ= golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= -golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.3.0 h1:rg5rLMjNzMS1RkNLzCG38eapWhnYLFYXDXj2gOlr8j4= -golang.org/x/time v0.3.0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.5.0 h1:o7cqy6amK/52YcAKIPlM3a+Fpj35zvRj2TP+e1xFSfk= +golang.org/x/time v0.5.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= -golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= -golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= -golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= -golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= -golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= -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-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191113191852-77e3bb0ad9e7/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191115202509-3a792d9c32b2/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191125144606-a911d9008d1f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191130070609-6e064ea0cf2d/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191216173652-a0e659d51361/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20191227053925-7b8e75db28f4/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200117161641-43d50277825c/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200122220014-bf1340f18c4a/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200204074204-1cc6d1ef6c74/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200207183749-b753a1ba74fa/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200212150539-ea181f53ac56/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200224181240-023911ca70b2/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200227222343-706bc42d1f0d/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200304193943-95d2e580d8eb/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= -golang.org/x/tools v0.0.0-20200312045724-11d5b4c81c7d/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= -golang.org/x/tools v0.0.0-20200331025713-a30bf2db82d4/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= -golang.org/x/tools v0.0.0-20200501065659-ab2804fb9c9d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200512131952-2bc93b1c0c88/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200515010526-7d3b6ebf133d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200618134242-20370b0cb4b2/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200729194436-6467de6f59a7/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= -golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= -golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= -golang.org/x/tools v0.0.0-20200904185747-39188db58858/go.mod h1:Cj7w3i3Rnn0Xh82ur9kSqwfTHTeVxaDqrfMjpcNT6bE= -golang.org/x/tools v0.0.0-20201110124207-079ba7bd75cd/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20201201161351-ac6f37ff4c2a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20201208233053-a543418bbed2/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20210105154028-b0ab187a4818/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20210108195828-e2f9c7f1fc8e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= golang.org/x/tools v0.17.0 h1:FvmRgNOcs3kOa+T20R1uhfP9F6HgG2mfxDv1vrx1Htc= golang.org/x/tools v0.17.0/go.mod h1:xsh6VxdV005rRVaS6SSAf9oiAqljS7UZUacMZ8Bnsps= @@ -655,113 +379,24 @@ golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8T golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= gomodules.xyz/jsonpatch/v2 v2.4.0 h1:Ci3iUJyx9UeRx7CeFN8ARgGbkESwJK+KB9lLcWxY/Zw= gomodules.xyz/jsonpatch/v2 v2.4.0/go.mod h1:AH3dM2RI6uoBZxn3LVrfvJ3E0/9dG4cSrbuBJT4moAY= -google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE= -google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M= -google.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= -google.golang.org/api v0.9.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= -google.golang.org/api v0.13.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= -google.golang.org/api v0.14.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= -google.golang.org/api v0.15.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= -google.golang.org/api v0.17.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.18.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.19.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.20.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.22.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.24.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= -google.golang.org/api v0.28.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= -google.golang.org/api v0.29.0/go.mod h1:Lcubydp8VUV7KeIHD9z2Bys/sm/vGKnG1UHuDBSrHWM= -google.golang.org/api v0.30.0/go.mod h1:QGmEvQ87FHZNiUVJkT14jQNYJ4ZJjdRF23ZXz5138Fc= -google.golang.org/api v0.35.0/go.mod h1:/XrVsuzM0rZmrsbjJutiuftIzeuTQcEeaYcSk/mQ1dg= -google.golang.org/api v0.36.0/go.mod h1:+z5ficQTmoYpPn8LCUNVpK5I7hwkpjbcgqA7I34qYtE= -google.golang.org/api v0.40.0/go.mod h1:fYKFpnQN0DsDSKRVRcQSDQNtqWPfM9i+zNPxepjRCQ8= -google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= -google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= -google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= -google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0= -google.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= -google.golang.org/appengine v1.6.6/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= -google.golang.org/appengine v1.6.7 h1:FZR1q0exgwxzPzp/aF+VccGrSfxfPpkBqjIIEq3ru6c= -google.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= -google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= -google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= -google.golang.org/genproto v0.0.0-20190418145605-e7d98fc518a7/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= -google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= -google.golang.org/genproto v0.0.0-20190502173448-54afdca5d873/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= -google.golang.org/genproto v0.0.0-20190801165951-fa694d86fc64/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= -google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= -google.golang.org/genproto v0.0.0-20190911173649-1774047e7e51/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8= -google.golang.org/genproto v0.0.0-20191108220845-16a3f7862a1a/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20191115194625-c23dd37a84c9/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20191216164720-4f79533eabd1/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20191230161307-f3c370f40bfb/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20200115191322-ca5a22157cba/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20200122232147-0452cf42e150/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20200204135345-fa8e72b47b90/go.mod h1:GmwEX6Z4W5gMy59cAlVYjN9JhxgbQH6Gn+gFDQe2lzA= -google.golang.org/genproto v0.0.0-20200212174721-66ed5ce911ce/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200224152610-e50cd9704f63/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200228133532-8c2c7df3a383/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200305110556-506484158171/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200312145019-da6875a35672/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200331122359-1ee6d9798940/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200430143042-b979b6f78d84/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200511104702-f5ebc3bea380/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200515170657-fc4c6c6a6587/go.mod h1:YsZOwe1myG/8QRHRsmBRE1LrgQY60beZKjly0O1fX9U= -google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= -google.golang.org/genproto v0.0.0-20200618031413-b414f8b61790/go.mod h1:jDfRM7FcilCzHH/e9qn6dsT145K34l5v+OpcnNgKAAA= -google.golang.org/genproto v0.0.0-20200729003335-053ba62fc06f/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20200904004341-0bd0a958aa1d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20201109203340-2640f1f9cdfb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20201201144952-b05cb90ed32e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20201210142538-e3217bee35cc/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20201214200347-8c77b98c765d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210108203827-ffc7fda8c3d7/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210226172003-ab064af71705/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20230913181813-007df8e322eb h1:XFBgcDwm7irdHTbz4Zk2h7Mh+eis4nfJEFQFYzJzuIA= -google.golang.org/genproto v0.0.0-20230913181813-007df8e322eb/go.mod h1:yZTlhN0tQnXo3h00fuXNCxJdLdIdnVFVBaRJ5LWBbw4= -google.golang.org/genproto/googleapis/api v0.0.0-20230913181813-007df8e322eb h1:lK0oleSc7IQsUxO3U5TjL9DWlsxpEBemh+zpB7IqhWI= -google.golang.org/genproto/googleapis/api v0.0.0-20230913181813-007df8e322eb/go.mod h1:KjSP20unUpOx5kyQUFa7k4OJg0qeJ7DEZflGDu2p6Bk= -google.golang.org/genproto/googleapis/rpc v0.0.0-20230920204549-e6e6cdab5c13 h1:N3bU/SQDCDyD6R528GJ/PwW9KjYcJA3dgyH+MovAkIM= -google.golang.org/genproto/googleapis/rpc v0.0.0-20230920204549-e6e6cdab5c13/go.mod h1:KSqppvjFjtoCI+KGd4PELB0qLNxdJHRGqRI09mB6pQA= -google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= -google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= -google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= -google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= -google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= -google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= -google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= -google.golang.org/grpc v1.27.1/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= -google.golang.org/grpc v1.28.0/go.mod h1:rpkK4SK4GF4Ach/+MFLZUBavHOvF2JJB5uozKKal+60= -google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk= -google.golang.org/grpc v1.30.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= -google.golang.org/grpc v1.31.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= -google.golang.org/grpc v1.31.1/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= -google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= -google.golang.org/grpc v1.34.0/go.mod h1:WotjhfgOW/POjDeRt8vscBtXq+2VjORFy659qA51WJ8= -google.golang.org/grpc v1.35.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= -google.golang.org/grpc v1.59.0 h1:Z5Iec2pjwb+LEOqzpB2MR12/eKFhDPhuqW91O+4bwUk= -google.golang.org/grpc v1.59.0/go.mod h1:aUPDwccQo6OTjy7Hct4AfBPD1GptF4fyUjIkQ9YtF98= -google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= -google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= -google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= -google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE= -google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo= -google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= -google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= -google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= -google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGjtUeSXeh4= -google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= +google.golang.org/appengine v1.6.8 h1:IhEN5q69dyKagZPYMSdIjS2HqprW324FRQZJcGqPAsM= +google.golang.org/appengine v1.6.8/go.mod h1:1jJ3jBArFh5pcgW8gCtRJnepW8FzD1V44FJffLiz/Ds= +google.golang.org/genproto v0.0.0-20231106174013-bbf56f31fb17 h1:wpZ8pe2x1Q3f2KyT5f8oP/fa9rHAKgFPr/HZdNuS+PQ= +google.golang.org/genproto v0.0.0-20231106174013-bbf56f31fb17/go.mod h1:J7XzRzVy1+IPwWHZUzoD0IccYZIrXILAQpc+Qy9CMhY= +google.golang.org/genproto/googleapis/api v0.0.0-20231106174013-bbf56f31fb17 h1:JpwMPBpFN3uKhdaekDpiNlImDdkUAyiJ6ez/uxGaUSo= +google.golang.org/genproto/googleapis/api v0.0.0-20231106174013-bbf56f31fb17/go.mod h1:0xJLfVdJqpAPl8tDg1ujOCGzx6LFLttXT5NhllGOXY4= +google.golang.org/genproto/googleapis/rpc v0.0.0-20231120223509-83a465c0220f h1:ultW7fxlIvee4HYrtnaRPon9HpEgFk5zYpmfMgtKB5I= +google.golang.org/genproto/googleapis/rpc v0.0.0-20231120223509-83a465c0220f/go.mod h1:L9KNLi232K1/xB6f7AlSX692koaRnKaWSR0stBki0Yc= +google.golang.org/grpc v1.60.1 h1:26+wFr+cNqSGFcOXcabYC0lUVJVRa2Sb2ortSK7VrEU= +google.golang.org/grpc v1.60.1/go.mod h1:OlCHIeLYqSSsLi6i49B5QGdzaMZK9+M7LXN2FKz4eGM= google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= -google.golang.org/protobuf v1.31.0 h1:g0LDEJHgrBl9N9r17Ru3sqWhkIx2NB67okBHPwC7hs8= -google.golang.org/protobuf v1.31.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= +google.golang.org/protobuf v1.33.0 h1:uNO2rsAINq/JlFpSdYEKIZ0uKD/R9cpdv0T+yoGwGmI= +google.golang.org/protobuf v1.33.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= 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-20200902074654-038fdea0a05b/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= -gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc= gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= gopkg.in/ini.v1 v1.67.0 h1:Dgnx+6+nfE+IfzjUEISNeydPJh9AXNNsWbGP9KzCsOA= @@ -777,48 +412,38 @@ gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gotest.tools/v3 v3.5.0 h1:Ljk6PdHdOhAb5aDMWXjDLMMhph+BpztA4v1QdqEW2eY= gotest.tools/v3 v3.5.0/go.mod h1:isy3WKz7GK6uNw/sbHzfKBLvlvXwUyV06n6brMxxopU= -honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= -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= -k8s.io/api v0.29.2 h1:hBC7B9+MU+ptchxEqTNW2DkUosJpp1P+Wn6YncZ474A= -k8s.io/api v0.29.2/go.mod h1:sdIaaKuU7P44aoyyLlikSLayT6Vb7bvJNCX105xZXY0= -k8s.io/apiextensions-apiserver v0.29.2 h1:UK3xB5lOWSnhaCk0RFZ0LUacPZz9RY4wi/yt2Iu+btg= -k8s.io/apiextensions-apiserver v0.29.2/go.mod h1:aLfYjpA5p3OwtqNXQFkhJ56TB+spV8Gc4wfMhUA3/b8= -k8s.io/apimachinery v0.29.2 h1:EWGpfJ856oj11C52NRCHuU7rFDwxev48z+6DSlGNsV8= -k8s.io/apimachinery v0.29.2/go.mod h1:6HVkd1FwxIagpYrHSwJlQqZI3G9LfYWRPAkUvLnXTKU= -k8s.io/apiserver v0.29.2 h1:+Z9S0dSNr+CjnVXQePG8TcBWHr3Q7BmAr7NraHvsMiQ= -k8s.io/apiserver v0.29.2/go.mod h1:B0LieKVoyU7ykQvPFm7XSdIHaCHSzCzQWPFa5bqbeMQ= -k8s.io/client-go v0.29.2 h1:FEg85el1TeZp+/vYJM7hkDlSTFZ+c5nnK44DJ4FyoRg= -k8s.io/client-go v0.29.2/go.mod h1:knlvFZE58VpqbQpJNbCbctTVXcd35mMyAAwBdpt4jrA= -k8s.io/cluster-bootstrap v0.28.4 h1:4MKNy1Qd9QY7pl47rSMGIORF+tm3CUaqC1M8U9bjn4Q= -k8s.io/cluster-bootstrap v0.28.4/go.mod h1:/c4ro/R4yf4EtJgFgFtvnHkbDOHwubeKJXh5R1c89Bc= -k8s.io/component-base v0.29.2 h1:lpiLyuvPA9yV1aQwGLENYyK7n/8t6l3nn3zAtFTJYe8= -k8s.io/component-base v0.29.2/go.mod h1:BfB3SLrefbZXiBfbM+2H1dlat21Uewg/5qtKOl8degM= +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.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/client-go v0.29.3 h1:R/zaZbEAxqComZ9FHeQwOh3Y1ZUs7FaHKZdQtIc2WZg= +k8s.io/client-go v0.29.3/go.mod h1:tkDisCvgPfiRpxGnOORfkljmS+UrW+WtXAy2fTvXJB0= +k8s.io/cluster-bootstrap v0.29.2 h1:CJ8kNpm6vqPX6laBEPGoEFpVQ0XmzgXMdQosvd5m2OA= +k8s.io/cluster-bootstrap v0.29.2/go.mod h1:75qXUXImrhRHglBCQsBvZrS4uJFyaDinOWLWbbaRRH0= +k8s.io/component-base v0.29.3 h1:Oq9/nddUxlnrCuuR2K/jp6aflVvc0uDvxMzAWxnGzAo= +k8s.io/component-base v0.29.3/go.mod h1:Yuj33XXjuOk2BAaHsIGHhCKZQAgYKhqIxIjIr2UXYio= 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-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/utils v0.0.0-20231127182322-b307cd553661 h1:FepOBzJ0GXm8t0su67ln2wAZjbQ6RxQGZDnzuLcrUTI= k8s.io/utils v0.0.0-20231127182322-b307cd553661/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= -rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= -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/apiserver-network-proxy/konnectivity-client v0.28.0 h1:TgtAeesdhpm2SGwkQasmbeqDo8th5wOBA5h/AjTKA4I= sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.28.0/go.mod h1:VHVDI/KrK4fjnV61bE2g3sA7tiETLn8sooImelsCx3Y= -sigs.k8s.io/cluster-api v1.6.2 h1:ruUi4q/9jXFuI+hmnDjo9izHgrBk4bjfQXLKx678PQE= -sigs.k8s.io/cluster-api v1.6.2/go.mod h1:Anm4cA6R/AIP6KdIuVje8CdFc/TdGl+382bi5oPawRc= -sigs.k8s.io/cluster-api/test v1.6.2 h1:RjrYL8Ag9vBxfv++RWEKy/vgTukQYeYVJBMkWvylASc= -sigs.k8s.io/cluster-api/test v1.6.2/go.mod h1:qfkWBqONPAyOwsPFlS8tsrAq7pjKH55pCpKtjhEbUrk= +sigs.k8s.io/cluster-api v1.7.0-beta.0 h1:IjYfeXLwAcY6QRG/47numLQoHY8V6Zb8cHVkgF7Jz80= +sigs.k8s.io/cluster-api v1.7.0-beta.0/go.mod h1:2mRD4V2SSC8oj5/kzBPH3dBqdP3tkZKv+ENHLBy5A/s= +sigs.k8s.io/cluster-api/test v1.7.0-beta.0 h1:/qQFJWc2SMWTZTA9fwS6APvtlbsYsY+zfPraG/P5l7A= +sigs.k8s.io/cluster-api/test v1.7.0-beta.0/go.mod h1:LNG/sITORs4WXQi8OLrEGxm+MPvuE5nYGadCG+saJnc= sigs.k8s.io/controller-runtime v0.17.2 h1:FwHwD1CTUemg0pW2otk7/U5/i5m2ymzvOXdbeGOUvw0= sigs.k8s.io/controller-runtime v0.17.2/go.mod h1:+MngTvIQQQhfXtwfdGw/UOQ/aIaqsYywfCINOtwMO/s= 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/kind v0.20.0 h1:f0sc3v9mQbGnjBUaqSFST1dwIuiikKVGgoTwpoP33a8= -sigs.k8s.io/kind v0.20.0/go.mod h1:aBlbxg08cauDgZ612shr017/rZwqd7AS563FvpWKPVs= +sigs.k8s.io/kind v0.22.0 h1:z/+yr/azoOfzsfooqRsPw1wjJlqT/ukXP0ShkHwNlsI= +sigs.k8s.io/kind v0.22.0/go.mod h1:aBlbxg08cauDgZ612shr017/rZwqd7AS563FvpWKPVs= sigs.k8s.io/structured-merge-diff/v4 v4.4.1 h1:150L+0vs/8DA78h1u02ooW1/fFq/Lwr+sGiqlzvrtq4= sigs.k8s.io/structured-merge-diff/v4 v4.4.1/go.mod h1:N8hJocpFajUSSeSJ9bOZ77VzejKZaXsTtZo4/u7Io08= sigs.k8s.io/yaml v1.3.0/go.mod h1:GeOyir5tyXNByN85N/dRIT9es5UQNerPYEKK56eTBm8=