From baf37fe2556046e1ccbf04f8aca97a8f6aecb7be Mon Sep 17 00:00:00 2001 From: Carlos Tadeu Panato Junior Date: Fri, 26 Apr 2024 22:26:38 +0200 Subject: [PATCH] upgrade to capi 1.6.x (#587) * upgrade to capi 1.6.x Signed-off-by: cpanato * update machine images Signed-off-by: cpanato --------- Signed-off-by: cpanato --- .github/dependabot.yml | 24 +- .github/workflows/lint.yml | 4 +- .golangci.yml | 16 +- Dockerfile | 2 +- Makefile | 23 +- PROJECT | 10 - Tiltfile | 4 +- api/v1alpha3/doc.go | 20 - api/v1alpha3/docluster_conversion.go | 67 -- api/v1alpha3/docluster_types.go | 103 --- api/v1alpha3/domachine_conversion.go | 67 -- api/v1alpha3/domachine_types.go | 136 --- api/v1alpha3/domachinetemplate_conversion.go | 67 -- api/v1alpha3/domachinetemplate_types.go | 50 -- api/v1alpha3/groupversion_info.go | 40 - api/v1alpha3/tags.go | 84 -- api/v1alpha3/tags_test.go | 58 -- api/v1alpha3/types.go | 198 ----- api/v1alpha3/zz_generated.conversion.go | 833 ------------------ api/v1alpha3/zz_generated.deepcopy.go | 529 ----------- api/v1alpha4/zz_generated.conversion.go | 2 +- api/v1alpha4/zz_generated.deepcopy.go | 1 - api/v1beta1/gcpclustertemplate_webhook_test | 86 -- api/v1beta1/zz_generated.deepcopy.go | 1 - cloud/scope/machine.go | 6 +- cloud/services/computes/droplets_test.go | 62 +- .../services/networking/loadbalancers_test.go | 2 +- clusterctl-settings.json | 2 +- ...structure.cluster.x-k8s.io_doclusters.yaml | 190 +--- ...e.cluster.x-k8s.io_doclustertemplates.yaml | 9 +- ...structure.cluster.x-k8s.io_domachines.yaml | 192 +--- ...e.cluster.x-k8s.io_domachinetemplates.yaml | 114 +-- config/manager/manager.yaml | 40 +- config/rbac/role.yaml | 13 +- config/webhook/manifests.yaml | 2 - controllers/domachine_controller_unit_test.go | 2 +- controllers/suite_test.go | 3 +- go.mod | 126 ++- go.sum | 461 +++++----- main.go | 45 +- metadata.yaml | 3 + test/e2e/capdo_test.go | 14 +- test/e2e/capi_test.go | 6 +- test/e2e/config/digitalocean-ci.yaml | 36 +- test/e2e/config/digitalocean-dev.yaml | 16 +- test/e2e/conformance_test.go | 7 +- .../metadata.yaml | 9 + .../data/metadata/cluster-api/metadata.yaml | 3 + 48 files changed, 496 insertions(+), 3292 deletions(-) delete mode 100644 api/v1alpha3/doc.go delete mode 100644 api/v1alpha3/docluster_conversion.go delete mode 100644 api/v1alpha3/docluster_types.go delete mode 100644 api/v1alpha3/domachine_conversion.go delete mode 100644 api/v1alpha3/domachine_types.go delete mode 100644 api/v1alpha3/domachinetemplate_conversion.go delete mode 100644 api/v1alpha3/domachinetemplate_types.go delete mode 100644 api/v1alpha3/groupversion_info.go delete mode 100644 api/v1alpha3/tags.go delete mode 100644 api/v1alpha3/tags_test.go delete mode 100644 api/v1alpha3/types.go delete mode 100644 api/v1alpha3/zz_generated.conversion.go delete mode 100644 api/v1alpha3/zz_generated.deepcopy.go delete mode 100644 api/v1beta1/gcpclustertemplate_webhook_test diff --git a/.github/dependabot.yml b/.github/dependabot.yml index c2e69d40a..fd55d1444 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -1,3 +1,4 @@ +--- version: 2 updates: - package-ecosystem: gomod @@ -9,13 +10,17 @@ updates: - "release-note-none" - "ok-to-test" ignore: - # Ignore controller-runtime as its upgraded manually. - - dependency-name: "sigs.k8s.io/controller-runtime" - # Ignore sigs.k8s.io/cluster-api as its upgraded manually. - - dependency-name: "sigs.k8s.io/cluster-api/*" - # Ignore k8s and its transitives modules as they are upgraded manually - # together with controller-runtime. - - dependency-name: "k8s.io/*" + # Ignore controller-runtime as its upgraded manually. + - dependency-name: "sigs.k8s.io/controller-runtime" + # Ignore sigs.k8s.io/cluster-api as its upgraded manually. + - dependency-name: "sigs.k8s.io/cluster-api/*" + # Ignore k8s and its transitives modules as they are upgraded manually + # together with controller-runtime. + - dependency-name: "k8s.io/*" + groups: + gomod: + update-types: + - "patch" - package-ecosystem: "docker" directory: "/" @@ -34,3 +39,8 @@ updates: - "area/dependency" - "release-note-none" - "ok-to-test" + groups: + actions: + update-types: + - "patch" + - "minor" diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index 9795c21d2..fbd9e22c4 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -19,11 +19,11 @@ jobs: - uses: actions/setup-go@0c52d547c9bc32b1aa3301fd7a9cb496313a4491 # v5.0.0 with: - go-version: "1.20" + go-version: "1.21" check-latest: true cache: false - name: golangci-lint uses: golangci/golangci-lint-action@82d40c283aeb1f2b6595839195e95c2d6a49081b # v5.0.0 with: - version: "v1.54" + version: "v1.57" diff --git a/.golangci.yml b/.golangci.yml index 80d96791c..f344f3f1d 100644 --- a/.golangci.yml +++ b/.golangci.yml @@ -24,8 +24,6 @@ linters: - nolintlint - prealloc - revive - - staticcheck - - stylecheck - typecheck - unconvert - unparam @@ -53,12 +51,13 @@ linters-settings: # Controller Runtime - pkg: sigs.k8s.io/controller-runtime alias: ctrl - staticcheck: - go: "1.20" - stylecheck: - go: "1.20" issues: + exclude-files: + - "zz_generated.*\\.go$" + - ".*conversion.*\\.go$" + exclude-dirs: + - mock* max-same-issues: 0 max-issues-per-linter: 0 # We are disabling default golangci exclusions because we want to help reviewers to focus on reviewing the most relevant @@ -121,9 +120,4 @@ issues: run: timeout: 10m - skip-files: - - "zz_generated.*\\.go$" - - ".*conversion.*\\.go$" - skip-dirs: - - mock* allow-parallel-runners: true diff --git a/Dockerfile b/Dockerfile index 9c4f5a23d..73ede8147 100644 --- a/Dockerfile +++ b/Dockerfile @@ -13,7 +13,7 @@ # limitations under the License. # Build the manager binary -FROM golang:1.20.10@sha256:ed6c4a5918b0a1ffb97970f6493d742dc5c7ebf3ccbd417c215d52830b57b994 as builder +FROM golang:1.21.9@sha256:81811f8a883e238666dbadee6928ae2902243a3cd3f3e860f21c102543c6b5a7 as builder WORKDIR /workspace # Run this with docker build --build_arg $(go env GOPROXY) to override the goproxy diff --git a/Makefile b/Makefile index b0a6b6644..0a5b08868 100644 --- a/Makefile +++ b/Makefile @@ -118,11 +118,11 @@ help: ## Display this help ## -------------------------------------- # Binaries. -CONTROLLER_GEN_VER := v0.8.0 +CONTROLLER_GEN_VER := v0.13.0 CONTROLLER_GEN_BIN := controller-gen CONTROLLER_GEN := $(TOOLS_BIN_DIR)/$(CONTROLLER_GEN_BIN)-$(CONTROLLER_GEN_VER) -CONVERSION_GEN_VER := v0.22.2 +CONVERSION_GEN_VER := v0.28.6 CONVERSION_GEN_BIN := conversion-gen CONVERSION_GEN := $(TOOLS_BIN_DIR)/$(CONVERSION_GEN_BIN)-$(CONVERSION_GEN_VER) @@ -130,11 +130,11 @@ ENVSUBST_VER := v1.2.0 ENVSUBST_BIN := envsubst ENVSUBST := $(TOOLS_BIN_DIR)/$(ENVSUBST_BIN) -GOLANGCI_LINT_VER := v1.52.2 +GOLANGCI_LINT_VER := v1.57.2 GOLANGCI_LINT_BIN := golangci-lint GOLANGCI_LINT := $(TOOLS_BIN_DIR)/$(GOLANGCI_LINT_BIN)-$(GOLANGCI_LINT_VER) -KUSTOMIZE_VER := v4.5.2 +KUSTOMIZE_VER := v4.5.7 KUSTOMIZE_BIN := kustomize KUSTOMIZE := $(TOOLS_BIN_DIR)/$(KUSTOMIZE_BIN)-$(KUSTOMIZE_VER) @@ -151,7 +151,7 @@ GINKGO_BIN := ginkgo GINKGO := $(TOOLS_BIN_DIR)/$(GINKGO_BIN)-$(GINKGO_VER) GINKGO_PKG := github.com/onsi/ginkgo/v2/ginkgo -KUBECTL_VER := v1.25.5 +KUBECTL_VER := v1.28.9 KUBECTL_BIN := $(TOOLS_BIN_DIR)/kubectl KUBECTL := $(KUBECTL_BIN)-$(KUBECTL_VER) @@ -266,14 +266,9 @@ generate: ## Generate code .PHONY: generate-go generate-go: $(CONTROLLER_GEN) $(CONVERSION_GEN) $(MOCKGEN) ## Runs Go related generate targets $(CONTROLLER_GEN) \ - paths=./api/... \ + paths=./ \ + paths=./... \ object:headerFile=./hack/boilerplate/boilerplate.generatego.txt - $(CONVERSION_GEN) \ - --input-dirs=./api/v1alpha3 \ - --build-tag=ignore_autogenerated_core_v1alpha3 \ - --extra-peer-dirs=sigs.k8s.io/cluster-api/api/v1alpha3 \ - --output-file-base=zz_generated.conversion \ - --go-header-file=./hack/boilerplate/boilerplate.generatego.txt $(OUTPUT_BASE) $(CONVERSION_GEN) \ --input-dirs=./api/v1alpha4 \ --build-tag=ignore_autogenerated_core_v1alpha4 \ @@ -285,6 +280,7 @@ generate-go: $(CONTROLLER_GEN) $(CONVERSION_GEN) $(MOCKGEN) ## Runs Go related g .PHONY: generate-manifests generate-manifests: $(CONTROLLER_GEN) ## Generate manifests e.g. CRD, RBAC etc. $(CONTROLLER_GEN) \ + paths=./ \ paths=./api/... \ crd:crdVersions=v1 \ rbac:roleName=manager-role \ @@ -292,6 +288,7 @@ generate-manifests: $(CONTROLLER_GEN) ## Generate manifests e.g. CRD, RBAC etc. output:webhook:dir=$(WEBHOOK_ROOT) \ webhook $(CONTROLLER_GEN) \ + paths=./ \ paths=./controllers/... \ output:rbac:dir=$(RBAC_ROOT) \ rbac:roleName=manager-role @@ -303,7 +300,7 @@ generate-manifests: $(CONTROLLER_GEN) ## Generate manifests e.g. CRD, RBAC etc. .PHONY: docker-pull-prerequisites docker-pull-prerequisites: docker pull docker/dockerfile:1.1-experimental - docker pull docker.io/library/golang:1.20.8 + docker pull docker.io/library/golang:1.21.9 docker pull gcr.io/distroless/static:latest .PHONY: docker-build diff --git a/PROJECT b/PROJECT index eb22eb444..bbcece7d3 100644 --- a/PROJECT +++ b/PROJECT @@ -2,16 +2,6 @@ version: "3" domain: cluster.x-k8s.io repo: sigs.k8s.io/cluster-api-provider-digitalocean resources: -# v1alpha3 types -- group: infrastructure - kind: DOCluster - version: v1alpha3 -- group: infrastructure - kind: DOMachine - version: v1alpha3 -- group: infrastructure - kind: DOMachineTemplate - version: v1alpha3 # v1alpha4 types - group: infrastructure kind: DOCluster diff --git a/Tiltfile b/Tiltfile index 7d95473a4..5e6889744 100644 --- a/Tiltfile +++ b/Tiltfile @@ -16,9 +16,9 @@ settings = { "deploy_cert_manager": True, "preload_images_for_kind": True, "kind_cluster_name": "capdo", - "capi_version": "v1.5.2", + "capi_version": "v1.6.4", "cert_manager_version": "v1.10.1", - "kubernetes_version": "v1.25.5", + "kubernetes_version": "v1.29.4", } keys = ["DO_B64ENCODED_CREDENTIALS"] diff --git a/api/v1alpha3/doc.go b/api/v1alpha3/doc.go deleted file mode 100644 index 3c036c18d..000000000 --- a/api/v1alpha3/doc.go +++ /dev/null @@ -1,20 +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 v1alpha3 contains API Schema definitions for the infrastructure v1alpha3 API group -package v1alpha3 - -// +k8s:conversion-gen=sigs.k8s.io/cluster-api-provider-digitalocean/api/v1beta1 diff --git a/api/v1alpha3/docluster_conversion.go b/api/v1alpha3/docluster_conversion.go deleted file mode 100644 index 2eb075314..000000000 --- a/api/v1alpha3/docluster_conversion.go +++ /dev/null @@ -1,67 +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 v1alpha3 - -import ( - utilconversion "sigs.k8s.io/cluster-api/util/conversion" - "sigs.k8s.io/controller-runtime/pkg/conversion" - - infrav1 "sigs.k8s.io/cluster-api-provider-digitalocean/api/v1beta1" -) - -// ConvertTo converts this DOCluster to the Hub version (v1beta1). -func (src *DOCluster) ConvertTo(dstRaw conversion.Hub) error { // nolint - dst := dstRaw.(*infrav1.DOCluster) - if err := Convert_v1alpha3_DOCluster_To_v1beta1_DOCluster(src, dst, nil); err != nil { - return err - } - - // Manually restore data from annotations - restored := &infrav1.DOCluster{} - if ok, err := utilconversion.UnmarshalData(src, restored); err != nil || !ok { - return err - } - - return nil -} - -// ConvertFrom converts from the Hub version (v1beta1) to this version. -func (dst *DOCluster) ConvertFrom(srcRaw conversion.Hub) error { // nolint - src := srcRaw.(*infrav1.DOCluster) - if err := Convert_v1beta1_DOCluster_To_v1alpha3_DOCluster(src, dst, nil); err != nil { - return err - } - - // Preserve Hub data on down-conversion. - if err := utilconversion.MarshalData(src, dst); err != nil { - return err - } - - return nil -} - -// ConvertTo converts this DOClusterList to the Hub version (v1beta1). -func (src *DOClusterList) ConvertTo(dstRaw conversion.Hub) error { // nolint - dst := dstRaw.(*infrav1.DOClusterList) - return Convert_v1alpha3_DOClusterList_To_v1beta1_DOClusterList(src, dst, nil) -} - -// ConvertFrom converts from the Hub version (v1beta1) to this version. -func (dst *DOClusterList) ConvertFrom(srcRaw conversion.Hub) error { // nolint - src := srcRaw.(*infrav1.DOClusterList) - return Convert_v1beta1_DOClusterList_To_v1alpha3_DOClusterList(src, dst, nil) -} diff --git a/api/v1alpha3/docluster_types.go b/api/v1alpha3/docluster_types.go deleted file mode 100644 index 45f1da457..000000000 --- a/api/v1alpha3/docluster_types.go +++ /dev/null @@ -1,103 +0,0 @@ -/* -Copyright 2020 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 v1alpha3 - -import ( - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" - clusterv1 "sigs.k8s.io/cluster-api/api/v1beta1" -) - -const ( - // ClusterFinalizer allows ReconcileDOCluster to clean up DigitalOcean resources associated with DOCluster before - // removing it from the apiserver. - ClusterFinalizer = "docluster.infrastructure.cluster.x-k8s.io" -) - -// DOClusterSpec defines the desired state of DOCluster. -type DOClusterSpec struct { - // The DigitalOcean Region the cluster lives in. It must be one of available - // region on DigitalOcean. See - // https://developers.digitalocean.com/documentation/v2/#list-all-regions - Region string `json:"region"` - // Network configurations - // +optional - Network DONetwork `json:"network,omitempty"` - // ControlPlaneEndpoint represents the endpoint used to communicate with the - // control plane. If ControlPlaneDNS is unset, the DO load-balancer IP - // of the Kubernetes API Server is used. - // +optional - ControlPlaneEndpoint clusterv1.APIEndpoint `json:"controlPlaneEndpoint"` - // ControlPlaneDNS is a managed DNS name that points to the load-balancer - // IP used for the ControlPlaneEndpoint. - // +optional - ControlPlaneDNS *DOControlPlaneDNS `json:"controlPlaneDNS,omitempty"` -} - -// DOClusterStatus defines the observed state of DOCluster. -type DOClusterStatus struct { - // Ready denotes that the cluster (infrastructure) is ready. - // +optional - Ready bool `json:"ready"` - // ControlPlaneDNSRecordReady denotes that the DNS record is ready and - // propagated to the DO DNS servers. - // +optional - ControlPlaneDNSRecordReady bool `json:"controlPlaneDNSRecordReady,omitempty"` - // Network encapsulates all things related to DigitalOcean network. - // +optional - Network DONetworkResource `json:"network,omitempty"` -} - -// DOControlPlaneDNS ... -type DOControlPlaneDNS struct { - // Domain is the DO domain that this record should live in. It must be pre-existing in your DO account. - // The format must be a string that conforms to the definition of a subdomain in DNS (RFC 1123) - // +kubebuilder:validation:Pattern:=^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$ - Domain string `json:"domain"` - // Name is the DNS short name of the record (non-FQDN) - // The format must consist of alphanumeric characters, '-' or '.', and must start and end with an alphanumeric character - // +kubebuilder:validation:Pattern:=^[a-z0-9]([-a-z0-9.]*[a-z0-9])?$ - Name string `json:"name"` -} - -// +kubebuilder:object:root=true -// +kubebuilder:resource:path=doclusters,scope=Namespaced,categories=cluster-api -// +kubebuilder:subresource:status -// +kubebuilder:printcolumn:name="Cluster",type="string",JSONPath=".metadata.labels.cluster\\.x-k8s\\.io/cluster-name",description="Cluster to which this DOCluster belongs" -// +kubebuilder:printcolumn:name="Ready",type="string",JSONPath=".status.ready",description="Cluster infrastructure is ready for DigitalOcean droplet instances" -// +kubebuilder:printcolumn:name="Endpoint",type="string",JSONPath=".spec.ControlPlaneEndpoint",description="API Endpoint",priority=1 - -// DOCluster is the Schema for the DOClusters API. -type DOCluster struct { - metav1.TypeMeta `json:",inline"` - metav1.ObjectMeta `json:"metadata,omitempty"` - - Spec DOClusterSpec `json:"spec,omitempty"` - Status DOClusterStatus `json:"status,omitempty"` -} - -// +kubebuilder:object:root=true - -// DOClusterList contains a list of DOCluster. -type DOClusterList struct { - metav1.TypeMeta `json:",inline"` - metav1.ListMeta `json:"metadata,omitempty"` - Items []DOCluster `json:"items"` -} - -func init() { - SchemeBuilder.Register(&DOCluster{}, &DOClusterList{}) -} diff --git a/api/v1alpha3/domachine_conversion.go b/api/v1alpha3/domachine_conversion.go deleted file mode 100644 index b57e01a9c..000000000 --- a/api/v1alpha3/domachine_conversion.go +++ /dev/null @@ -1,67 +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 v1alpha3 - -import ( - utilconversion "sigs.k8s.io/cluster-api/util/conversion" - "sigs.k8s.io/controller-runtime/pkg/conversion" - - infrav1 "sigs.k8s.io/cluster-api-provider-digitalocean/api/v1beta1" -) - -// ConvertTo converts this DOMachine to the Hub version (v1beta1). -func (src *DOMachine) ConvertTo(dstRaw conversion.Hub) error { // nolint - dst := dstRaw.(*infrav1.DOMachine) - if err := Convert_v1alpha3_DOMachine_To_v1beta1_DOMachine(src, dst, nil); err != nil { - return err - } - - // Manually restore data from annotations - restored := &infrav1.DOMachine{} - if ok, err := utilconversion.UnmarshalData(src, restored); err != nil || !ok { - return err - } - - return nil -} - -// ConvertFrom converts from the Hub version (v1beta1) to this version. -func (dst *DOMachine) ConvertFrom(srcRaw conversion.Hub) error { // nolint - src := srcRaw.(*infrav1.DOMachine) - if err := Convert_v1beta1_DOMachine_To_v1alpha3_DOMachine(src, dst, nil); err != nil { - return err - } - - // Preserve Hub data on down-conversion. - if err := utilconversion.MarshalData(src, dst); err != nil { - return err - } - - return nil -} - -// ConvertTo converts this DOMachineList to the Hub version (v1beta1). -func (src *DOMachineList) ConvertTo(dstRaw conversion.Hub) error { // nolint - dst := dstRaw.(*infrav1.DOMachineList) - return Convert_v1alpha3_DOMachineList_To_v1beta1_DOMachineList(src, dst, nil) -} - -// ConvertFrom converts from the Hub version (v1beta1) to this version. -func (dst *DOMachineList) ConvertFrom(srcRaw conversion.Hub) error { // nolint - src := srcRaw.(*infrav1.DOMachineList) - return Convert_v1beta1_DOMachineList_To_v1alpha3_DOMachineList(src, dst, nil) -} diff --git a/api/v1alpha3/domachine_types.go b/api/v1alpha3/domachine_types.go deleted file mode 100644 index 7de3a1705..000000000 --- a/api/v1alpha3/domachine_types.go +++ /dev/null @@ -1,136 +0,0 @@ -/* -Copyright 2020 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 v1alpha3 - -import ( - corev1 "k8s.io/api/core/v1" - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" - "k8s.io/apimachinery/pkg/util/intstr" - "sigs.k8s.io/cluster-api/errors" -) - -const ( - // MachineFinalizer allows ReconcileDOMachine to clean up DigitalOcean resources associated with DOMachine before - // removing it from the apiserver. - MachineFinalizer = "domachine.infrastructure.cluster.x-k8s.io" -) - -// DOMachineSpec defines the desired state of DOMachine. -type DOMachineSpec struct { - // ProviderID is the unique identifier as specified by the cloud provider. - // +optional - ProviderID *string `json:"providerID,omitempty"` - // Droplet size. It must be known DigitalOcean droplet size. See https://developers.digitalocean.com/documentation/v2/#list-all-sizes - Size string `json:"size"` - // Droplet image can be image id or slug. See https://developers.digitalocean.com/documentation/v2/#list-all-images - Image intstr.IntOrString `json:"image"` - // DataDisks specifies the parameters that are used to add one or more data disks to the machine - DataDisks []DataDisk `json:"dataDisks,omitempty"` - // SSHKeys is the ssh key id or fingerprint to attach in DigitalOcean droplet. - // It must be available on DigitalOcean account. See https://developers.digitalocean.com/documentation/v2/#list-all-keys - SSHKeys []intstr.IntOrString `json:"sshKeys"` - // AdditionalTags is an optional set of tags to add to DigitalOcean resources managed by the DigitalOcean provider. - // +optional - AdditionalTags Tags `json:"additionalTags,omitempty"` -} - -// DOMachineStatus defines the observed state of DOMachine. -type DOMachineStatus struct { - // Ready is true when the provider resource is ready. - // +optional - Ready bool `json:"ready"` - - // Addresses contains the DigitalOcean droplet associated addresses. - Addresses []corev1.NodeAddress `json:"addresses,omitempty"` - - // Volumes contains the DigitalOcean droplet associated block storage - // volumes. - Volumes []DOVolume `json:"volumes,omitempty"` - - // InstanceStatus is the status of the DigitalOcean droplet instance for this machine. - // +optional - InstanceStatus *DOResourceStatus `json:"instanceStatus,omitempty"` - - // FailureReason will be set in the event that there is a terminal problem - // reconciling the Machine 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 Machine'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 Machines - // can be added as events to the Machine object and/or logged in the - // controller's output. - // +optional - FailureReason *errors.MachineStatusError `json:"failureReason,omitempty"` - - // FailureMessage will be set in the event that there is a terminal problem - // reconciling the Machine 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 Machine'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 Machines - // can be added as events to the Machine object and/or logged in the - // controller's output. - // +optional - FailureMessage *string `json:"failureMessage,omitempty"` -} - -// +kubebuilder:object:root=true -// +kubebuilder:resource:path=domachines,scope=Namespaced,categories=cluster-api -// +kubebuilder:subresource:status -// +kubebuilder:printcolumn:name="Cluster",type="string",JSONPath=".metadata.labels.cluster\\.x-k8s\\.io/cluster-name",description="Cluster to which this DOMachine belongs" -// +kubebuilder:printcolumn:name="State",type="string",JSONPath=".status.instanceStatus",description="DigitalOcean droplet instance state" -// +kubebuilder:printcolumn:name="Ready",type="string",JSONPath=".status.ready",description="Machine ready status" -// +kubebuilder:printcolumn:name="InstanceID",type="string",JSONPath=".spec.providerID",description="DigitalOcean droplet instance ID" -// +kubebuilder:printcolumn:name="Machine",type="string",JSONPath=".metadata.ownerReferences[?(@.kind==\"Machine\")].name",description="Machine object which owns with this DOMachine" - -// DOMachine is the Schema for the domachines API. -type DOMachine struct { - metav1.TypeMeta `json:",inline"` - metav1.ObjectMeta `json:"metadata,omitempty"` - - Spec DOMachineSpec `json:"spec,omitempty"` - Status DOMachineStatus `json:"status,omitempty"` -} - -// +kubebuilder:object:root=true - -// DOMachineList contains a list of DOMachine. -type DOMachineList struct { - metav1.TypeMeta `json:",inline"` - metav1.ListMeta `json:"metadata,omitempty"` - Items []DOMachine `json:"items"` -} - -func init() { - SchemeBuilder.Register(&DOMachine{}, &DOMachineList{}) -} diff --git a/api/v1alpha3/domachinetemplate_conversion.go b/api/v1alpha3/domachinetemplate_conversion.go deleted file mode 100644 index 72bbfcc60..000000000 --- a/api/v1alpha3/domachinetemplate_conversion.go +++ /dev/null @@ -1,67 +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 v1alpha3 - -import ( - utilconversion "sigs.k8s.io/cluster-api/util/conversion" - "sigs.k8s.io/controller-runtime/pkg/conversion" - - infrav1 "sigs.k8s.io/cluster-api-provider-digitalocean/api/v1beta1" -) - -// ConvertTo converts this DOMachineTemplate to the Hub version (v1beta1). -func (src *DOMachineTemplate) ConvertTo(dstRaw conversion.Hub) error { // nolint - dst := dstRaw.(*infrav1.DOMachineTemplate) - if err := Convert_v1alpha3_DOMachineTemplate_To_v1beta1_DOMachineTemplate(src, dst, nil); err != nil { - return err - } - - // Manually restore data from annotations - restored := &infrav1.DOMachineTemplate{} - if ok, err := utilconversion.UnmarshalData(src, restored); err != nil || !ok { - return err - } - - return nil -} - -// ConvertFrom converts from the Hub version (v1beta1) to this version. -func (dst *DOMachineTemplate) ConvertFrom(srcRaw conversion.Hub) error { // nolint - src := srcRaw.(*infrav1.DOMachineTemplate) - if err := Convert_v1beta1_DOMachineTemplate_To_v1alpha3_DOMachineTemplate(src, dst, nil); err != nil { - return err - } - - // Preserve Hub data on down-conversion. - if err := utilconversion.MarshalData(src, dst); err != nil { - return err - } - - return nil -} - -// ConvertTo converts this DOMachineTemplateList to the Hub version (v1beta1). -func (src *DOMachineTemplateList) ConvertTo(dstRaw conversion.Hub) error { // nolint - dst := dstRaw.(*infrav1.DOMachineTemplateList) - return Convert_v1alpha3_DOMachineTemplateList_To_v1beta1_DOMachineTemplateList(src, dst, nil) -} - -// ConvertFrom converts from the Hub version (v1beta1) to this version. -func (dst *DOMachineTemplateList) ConvertFrom(srcRaw conversion.Hub) error { // nolint - src := srcRaw.(*infrav1.DOMachineTemplateList) - return Convert_v1beta1_DOMachineTemplateList_To_v1alpha3_DOMachineTemplateList(src, dst, nil) -} diff --git a/api/v1alpha3/domachinetemplate_types.go b/api/v1alpha3/domachinetemplate_types.go deleted file mode 100644 index c57203285..000000000 --- a/api/v1alpha3/domachinetemplate_types.go +++ /dev/null @@ -1,50 +0,0 @@ -/* -Copyright 2020 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 v1alpha3 - -import ( - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" -) - -// DOMachineTemplateSpec defines the desired state of DOMachineTemplate. -type DOMachineTemplateSpec struct { - Template DOMachineTemplateResource `json:"template"` -} - -// +kubebuilder:object:root=true -// +kubebuilder:resource:path=domachinetemplates,scope=Namespaced,categories=cluster-api - -// DOMachineTemplate is the Schema for the domachinetemplates API. -type DOMachineTemplate struct { - metav1.TypeMeta `json:",inline"` - metav1.ObjectMeta `json:"metadata,omitempty"` - - Spec DOMachineTemplateSpec `json:"spec,omitempty"` -} - -// +kubebuilder:object:root=true - -// DOMachineTemplateList contains a list of DOMachineTemplate. -type DOMachineTemplateList struct { - metav1.TypeMeta `json:",inline"` - metav1.ListMeta `json:"metadata,omitempty"` - Items []DOMachineTemplate `json:"items"` -} - -func init() { - SchemeBuilder.Register(&DOMachineTemplate{}, &DOMachineTemplateList{}) -} diff --git a/api/v1alpha3/groupversion_info.go b/api/v1alpha3/groupversion_info.go deleted file mode 100644 index 8f9a24eaf..000000000 --- a/api/v1alpha3/groupversion_info.go +++ /dev/null @@ -1,40 +0,0 @@ -/* -Copyright 2020 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 v1alpha3 - -// +kubebuilder:object:generate=true -// +groupName=infrastructure.cluster.x-k8s.io - -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: "v1alpha3"} - - // 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 used for type conversions. - localSchemeBuilder = SchemeBuilder.SchemeBuilder -) diff --git a/api/v1alpha3/tags.go b/api/v1alpha3/tags.go deleted file mode 100644 index 983b69b13..000000000 --- a/api/v1alpha3/tags.go +++ /dev/null @@ -1,84 +0,0 @@ -/* -Copyright 2020 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 v1alpha3 - -import ( - "fmt" -) - -// Tags defines a slice of tags. -type Tags []string - -const ( - // NameDigitalOceanProviderPrefix is the tag prefix for - // cluster-api-provider-digitalocean owned components. - NameDigitalOceanProviderPrefix = "sigs-k8s-io:capdo" - // APIServerRoleTagValue describes the value for the apiserver role. - APIServerRoleTagValue = "apiserver" - // NodeRoleTagValue describes the value for the node role. - NodeRoleTagValue = "node" -) - -// ClusterNameTag generates the tag with prefix `NameDigitalOceanProviderPrefix` -// for resources associated with a cluster. It will generated tag like `sigs-k8s-io:capdo:{clusterName}`. -func ClusterNameTag(clusterName string) string { - return fmt.Sprintf("%s:%s", NameDigitalOceanProviderPrefix, clusterName) -} - -// ClusterNameRoleTag generates the tag with prefix `NameDigitalOceanProviderPrefix` and `RoleValue` as suffix -// It will generated tag like `sigs-k8s-io:capdo:{clusterName}:{role}`. -func ClusterNameRoleTag(clusterName, role string) string { - return fmt.Sprintf("%s:%s:%s", NameDigitalOceanProviderPrefix, clusterName, role) -} - -// ClusterNameUIDRoleTag generates the tag with prefix `NameDigitalOceanProviderPrefix` and `RoleValue` as suffix -// It will generated tag like `sigs-k8s-io:capdo:{clusterName}:{UID}:{role}`. -func ClusterNameUIDRoleTag(clusterName, clusterUID, role string) string { - return fmt.Sprintf("%s:%s:%s:%s", NameDigitalOceanProviderPrefix, clusterName, clusterUID, role) -} - -// NameTagFromName returns DigitalOcean safe name tag from name. -func NameTagFromName(name string) string { - return fmt.Sprintf("name:%s", DOSafeName(name)) -} - -// BuildTagParams is used to build tags around an DigitalOcean resource. -type BuildTagParams struct { - // ClusterName is the cluster associated with the resource. - ClusterName string - // ClusterUID is the cluster uid from clusters.cluster.x-k8s.io uid - ClusterUID string - // Name is the name of the resource, it's applied as the tag "name" on DigitalOcean. - Name string - // Role is the role associated to the resource. - Role string - // Any additional tags to be added to the resource. - // +optional - Additional Tags -} - -// BuildTags builds tags including the cluster tag and returns them in map form. -func BuildTags(params BuildTagParams) Tags { - var tags Tags - tags = append(tags, ClusterNameTag(params.ClusterName)) - tags = append(tags, ClusterNameRoleTag(params.ClusterName, params.Role)) - tags = append(tags, ClusterNameUIDRoleTag(params.ClusterName, params.ClusterUID, params.Role)) - tags = append(tags, NameTagFromName(params.Name)) - - tags = append(tags, params.Additional...) - return tags -} diff --git a/api/v1alpha3/tags_test.go b/api/v1alpha3/tags_test.go deleted file mode 100644 index 123819116..000000000 --- a/api/v1alpha3/tags_test.go +++ /dev/null @@ -1,58 +0,0 @@ -/* -Copyright 2020 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 v1alpha3 - -import ( - "reflect" - "testing" -) - -func TestBuildTags(t *testing.T) { - type args struct { - params BuildTagParams - } - tests := []struct { - name string - args args - want Tags - }{ - { - name: "test tags", - args: args{ - params: BuildTagParams{ - ClusterName: "foo", - ClusterUID: "155bd6ca-c6a9-45a8-8c9c-05e09b36bc42", - Name: "bar", - Role: APIServerRoleTagValue, - }, - }, - want: Tags{ - ClusterNameTag("foo"), - ClusterNameRoleTag("foo", APIServerRoleTagValue), - ClusterNameUIDRoleTag("foo", "155bd6ca-c6a9-45a8-8c9c-05e09b36bc42", APIServerRoleTagValue), - NameTagFromName("bar"), - }, - }, - } - for _, tt := range tests { - t.Run(tt.name, func(t *testing.T) { - if got := BuildTags(tt.args.params); !reflect.DeepEqual(got, tt.want) { - t.Errorf("BuildTags() = %v, want %v", got, tt.want) - } - }) - } -} diff --git a/api/v1alpha3/types.go b/api/v1alpha3/types.go deleted file mode 100644 index 070cd3a63..000000000 --- a/api/v1alpha3/types.go +++ /dev/null @@ -1,198 +0,0 @@ -/* -Copyright 2020 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 v1alpha3 - -import ( - "fmt" - "strings" -) - -// DOSafeName returns DigitalOcean safe name with replacing '.' and '/' to '-' -// since DigitalOcean doesn't support naming with those character. -func DOSafeName(name string) string { - r := strings.NewReplacer(".", "-", "/", "-") - return r.Replace(name) -} - -// DOResourceStatus describes the status of a DigitalOcean resource. -type DOResourceStatus string - -var ( - // DOResourceStatusNew is the string representing a DigitalOcean resource just created and in a provisioning state. - DOResourceStatusNew = DOResourceStatus("new") - // DOResourceStatusRunning is the string representing a DigitalOcean resource already provisioned and in a active state. - DOResourceStatusRunning = DOResourceStatus("active") - // DOResourceStatusErrored is the string representing a DigitalOcean resource in a errored state. - DOResourceStatusErrored = DOResourceStatus("errored") - // DOResourceStatusOff is the string representing a DigitalOcean resource in off state. - DOResourceStatusOff = DOResourceStatus("off") - // DOResourceStatusArchive is the string representing a DigitalOcean resource in archive state. - DOResourceStatusArchive = DOResourceStatus("archive") -) - -// DOResourceReference is a reference to a DigitalOcean resource. -type DOResourceReference struct { - // ID of DigitalOcean resource - // +optional - ResourceID string `json:"resourceId,omitempty"` - // Status of DigitalOcean resource - // +optional - ResourceStatus DOResourceStatus `json:"resourceStatus,omitempty"` -} - -// DONetworkResource encapsulates DigitalOcean networking resources. -type DONetworkResource struct { - // APIServerLoadbalancersRef is the id of apiserver loadbalancers. - // +optional - APIServerLoadbalancersRef DOResourceReference `json:"apiServerLoadbalancersRef,omitempty"` -} - -// DOMachineTemplateResource describes the data needed to create am DOMachine from a template. -type DOMachineTemplateResource struct { - // Spec is the specification of the desired behavior of the machine. - Spec DOMachineSpec `json:"spec"` -} - -// DataDiskName is the volume name used for a data disk of a droplet. -// It's in the form of -. -func DataDiskName(m *DOMachine, suffix string) string { - return DOSafeName(fmt.Sprintf("%s-%s", m.Name, suffix)) -} - -// DataDisk specifies the parameters that are used to add a data disk to the machine. -type DataDisk struct { - // NameSuffix is the suffix to be appended to the machine name to generate the disk name. - // Each disk name will be in format -. - NameSuffix string `json:"nameSuffix"` - // DiskSizeGB is the size in GB to assign to the data disk. - DiskSizeGB int64 `json:"diskSizeGB"` - // FilesystemType to be used on the volume. When provided the volume will - // be automatically formatted. - FilesystemType string `json:"filesystemType,omitempty"` - // FilesystemLabel is the label that is applied to the created filesystem. - // Character limits apply: 16 for ext4; 12 for xfs. - // May only be used in conjunction with filesystemType. - FilesystemLabel string `json:"filesystemLabel,omitempty"` -} - -// DONetwork encapsulates DigitalOcean networking configuration. -type DONetwork struct { - // Configures an API Server loadbalancers - // +optional - APIServerLoadbalancers DOLoadBalancer `json:"apiServerLoadbalancers,omitempty"` - // VPC defines the VPC configuration. - // +optional - VPC DOVPC `json:"vpc,omitempty"` -} - -// DOLoadBalancer define the DigitalOcean loadbalancers configurations. -type DOLoadBalancer struct { - // API Server port. It must be valid ports range (1-65535). If omitted, default value is 6443. - // +optional - // +kubebuilder:validation:Minimum=1 - // +kubebuilder:validation:Maximum=65535 - Port int `json:"port,omitempty"` - // The API Server load balancing algorithm used to determine which backend Droplet will be selected by a client. - // It must be either "round_robin" or "least_connections". The default value is "round_robin". - // +optional - // +kubebuilder:validation:Enum=round_robin;least_connections - Algorithm string `json:"algorithm,omitempty"` - // An object specifying health check settings for the Load Balancer. If omitted, default values will be provided. - // +optional - HealthCheck DOLoadBalancerHealthCheck `json:"healthCheck,omitempty"` - // The DO load balancer UUID. If omitted, a new load balancer will be created. - // +optional - ResourceID string `json:"resourceId,omitempty"` -} - -// DOVPC define the DigitalOcean VPC configuration. -type DOVPC struct { - // VPCUUID defines the VPC UUID to use. An empty value implies using the - // default VPC. - // +optional - VPCUUID string `json:"vpc_uuid,omitempty"` -} - -// DOVolume defines a DO Block Storage Volume. -type DOVolume struct { - ID string `json:"id"` -} - -var ( - // DefaultLBPort default LoadBalancer port. - DefaultLBPort = 6443 - // DefaultLBAlgorithm default LoadBalancer algorithm. - DefaultLBAlgorithm = "round_robin" - // DefaultLBHealthCheckInterval default LoadBalancer health check interval. - DefaultLBHealthCheckInterval = 10 - // DefaultLBHealthCheckTimeout default LoadBalancer health check timeout. - DefaultLBHealthCheckTimeout = 5 - // DefaultLBHealthCheckUnhealthyThreshold default LoadBalancer unhealthy threshold. - DefaultLBHealthCheckUnhealthyThreshold = 3 - // DefaultLBHealthCheckHealthyThreshold default LoadBalancer healthy threshold. - DefaultLBHealthCheckHealthyThreshold = 5 -) - -// ApplyDefault give APIServerLoadbalancers default values. -func (in *DOLoadBalancer) ApplyDefault() { - if in.Port == 0 { - in.Port = DefaultLBPort - } - if in.Algorithm == "" { - in.Algorithm = DefaultLBAlgorithm - } - if in.HealthCheck.Interval == 0 { - in.HealthCheck.Interval = DefaultLBHealthCheckInterval - } - if in.HealthCheck.Timeout == 0 { - in.HealthCheck.Timeout = DefaultLBHealthCheckTimeout - } - if in.HealthCheck.UnhealthyThreshold == 0 { - in.HealthCheck.UnhealthyThreshold = DefaultLBHealthCheckUnhealthyThreshold - } - if in.HealthCheck.HealthyThreshold == 0 { - in.HealthCheck.HealthyThreshold = DefaultLBHealthCheckHealthyThreshold - } -} - -// DOLoadBalancerHealthCheck define the DigitalOcean loadbalancers health check configurations. -type DOLoadBalancerHealthCheck struct { - // The number of seconds between between two consecutive health checks. The value must be between 3 and 300. - // If not specified, the default value is 10. - // +optional - // +kubebuilder:validation:Minimum=3 - // +kubebuilder:validation:Maximum=300 - Interval int `json:"interval,omitempty"` - // The number of seconds the Load Balancer instance will wait for a response until marking a health check as failed. - // The value must be between 3 and 300. If not specified, the default value is 5. - // +optional - // +kubebuilder:validation:Minimum=3 - // +kubebuilder:validation:Maximum=300 - Timeout int `json:"timeout,omitempty"` - // The number of times a health check must fail for a backend Droplet to be marked "unhealthy" and be removed from the pool. - // The vaule must be between 2 and 10. If not specified, the default value is 3. - // +optional - // +kubebuilder:validation:Minimum=2 - // +kubebuilder:validation:Maximum=10 - UnhealthyThreshold int `json:"unhealthyThreshold,omitempty"` - // The number of times a health check must pass for a backend Droplet to be marked "healthy" and be re-added to the pool. - // The vaule must be between 2 and 10. If not specified, the default value is 5. - // +optional - // +kubebuilder:validation:Minimum=2 - // +kubebuilder:validation:Maximum=10 - HealthyThreshold int `json:"healthyThreshold,omitempty"` -} diff --git a/api/v1alpha3/zz_generated.conversion.go b/api/v1alpha3/zz_generated.conversion.go deleted file mode 100644 index ca522f5e7..000000000 --- a/api/v1alpha3/zz_generated.conversion.go +++ /dev/null @@ -1,833 +0,0 @@ -//go:build !ignore_autogenerated_core_v1alpha3 -// +build !ignore_autogenerated_core_v1alpha3 - -/* -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-v0.22.2. DO NOT EDIT. - -package v1alpha3 - -import ( - unsafe "unsafe" - - v1 "k8s.io/api/core/v1" - conversion "k8s.io/apimachinery/pkg/conversion" - runtime "k8s.io/apimachinery/pkg/runtime" - intstr "k8s.io/apimachinery/pkg/util/intstr" - v1beta1 "sigs.k8s.io/cluster-api-provider-digitalocean/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((*BuildTagParams)(nil), (*v1beta1.BuildTagParams)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1alpha3_BuildTagParams_To_v1beta1_BuildTagParams(a.(*BuildTagParams), b.(*v1beta1.BuildTagParams), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*v1beta1.BuildTagParams)(nil), (*BuildTagParams)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1beta1_BuildTagParams_To_v1alpha3_BuildTagParams(a.(*v1beta1.BuildTagParams), b.(*BuildTagParams), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*DOCluster)(nil), (*v1beta1.DOCluster)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1alpha3_DOCluster_To_v1beta1_DOCluster(a.(*DOCluster), b.(*v1beta1.DOCluster), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*v1beta1.DOCluster)(nil), (*DOCluster)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1beta1_DOCluster_To_v1alpha3_DOCluster(a.(*v1beta1.DOCluster), b.(*DOCluster), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*DOClusterList)(nil), (*v1beta1.DOClusterList)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1alpha3_DOClusterList_To_v1beta1_DOClusterList(a.(*DOClusterList), b.(*v1beta1.DOClusterList), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*v1beta1.DOClusterList)(nil), (*DOClusterList)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1beta1_DOClusterList_To_v1alpha3_DOClusterList(a.(*v1beta1.DOClusterList), b.(*DOClusterList), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*DOClusterSpec)(nil), (*v1beta1.DOClusterSpec)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1alpha3_DOClusterSpec_To_v1beta1_DOClusterSpec(a.(*DOClusterSpec), b.(*v1beta1.DOClusterSpec), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*v1beta1.DOClusterSpec)(nil), (*DOClusterSpec)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1beta1_DOClusterSpec_To_v1alpha3_DOClusterSpec(a.(*v1beta1.DOClusterSpec), b.(*DOClusterSpec), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*DOClusterStatus)(nil), (*v1beta1.DOClusterStatus)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1alpha3_DOClusterStatus_To_v1beta1_DOClusterStatus(a.(*DOClusterStatus), b.(*v1beta1.DOClusterStatus), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*v1beta1.DOClusterStatus)(nil), (*DOClusterStatus)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1beta1_DOClusterStatus_To_v1alpha3_DOClusterStatus(a.(*v1beta1.DOClusterStatus), b.(*DOClusterStatus), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*DOControlPlaneDNS)(nil), (*v1beta1.DOControlPlaneDNS)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1alpha3_DOControlPlaneDNS_To_v1beta1_DOControlPlaneDNS(a.(*DOControlPlaneDNS), b.(*v1beta1.DOControlPlaneDNS), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*v1beta1.DOControlPlaneDNS)(nil), (*DOControlPlaneDNS)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1beta1_DOControlPlaneDNS_To_v1alpha3_DOControlPlaneDNS(a.(*v1beta1.DOControlPlaneDNS), b.(*DOControlPlaneDNS), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*DOLoadBalancer)(nil), (*v1beta1.DOLoadBalancer)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1alpha3_DOLoadBalancer_To_v1beta1_DOLoadBalancer(a.(*DOLoadBalancer), b.(*v1beta1.DOLoadBalancer), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*v1beta1.DOLoadBalancer)(nil), (*DOLoadBalancer)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1beta1_DOLoadBalancer_To_v1alpha3_DOLoadBalancer(a.(*v1beta1.DOLoadBalancer), b.(*DOLoadBalancer), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*DOLoadBalancerHealthCheck)(nil), (*v1beta1.DOLoadBalancerHealthCheck)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1alpha3_DOLoadBalancerHealthCheck_To_v1beta1_DOLoadBalancerHealthCheck(a.(*DOLoadBalancerHealthCheck), b.(*v1beta1.DOLoadBalancerHealthCheck), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*v1beta1.DOLoadBalancerHealthCheck)(nil), (*DOLoadBalancerHealthCheck)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1beta1_DOLoadBalancerHealthCheck_To_v1alpha3_DOLoadBalancerHealthCheck(a.(*v1beta1.DOLoadBalancerHealthCheck), b.(*DOLoadBalancerHealthCheck), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*DOMachine)(nil), (*v1beta1.DOMachine)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1alpha3_DOMachine_To_v1beta1_DOMachine(a.(*DOMachine), b.(*v1beta1.DOMachine), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*v1beta1.DOMachine)(nil), (*DOMachine)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1beta1_DOMachine_To_v1alpha3_DOMachine(a.(*v1beta1.DOMachine), b.(*DOMachine), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*DOMachineList)(nil), (*v1beta1.DOMachineList)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1alpha3_DOMachineList_To_v1beta1_DOMachineList(a.(*DOMachineList), b.(*v1beta1.DOMachineList), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*v1beta1.DOMachineList)(nil), (*DOMachineList)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1beta1_DOMachineList_To_v1alpha3_DOMachineList(a.(*v1beta1.DOMachineList), b.(*DOMachineList), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*DOMachineSpec)(nil), (*v1beta1.DOMachineSpec)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1alpha3_DOMachineSpec_To_v1beta1_DOMachineSpec(a.(*DOMachineSpec), b.(*v1beta1.DOMachineSpec), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*v1beta1.DOMachineSpec)(nil), (*DOMachineSpec)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1beta1_DOMachineSpec_To_v1alpha3_DOMachineSpec(a.(*v1beta1.DOMachineSpec), b.(*DOMachineSpec), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*DOMachineStatus)(nil), (*v1beta1.DOMachineStatus)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1alpha3_DOMachineStatus_To_v1beta1_DOMachineStatus(a.(*DOMachineStatus), b.(*v1beta1.DOMachineStatus), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*v1beta1.DOMachineStatus)(nil), (*DOMachineStatus)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1beta1_DOMachineStatus_To_v1alpha3_DOMachineStatus(a.(*v1beta1.DOMachineStatus), b.(*DOMachineStatus), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*DOMachineTemplate)(nil), (*v1beta1.DOMachineTemplate)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1alpha3_DOMachineTemplate_To_v1beta1_DOMachineTemplate(a.(*DOMachineTemplate), b.(*v1beta1.DOMachineTemplate), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*v1beta1.DOMachineTemplate)(nil), (*DOMachineTemplate)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1beta1_DOMachineTemplate_To_v1alpha3_DOMachineTemplate(a.(*v1beta1.DOMachineTemplate), b.(*DOMachineTemplate), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*DOMachineTemplateList)(nil), (*v1beta1.DOMachineTemplateList)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1alpha3_DOMachineTemplateList_To_v1beta1_DOMachineTemplateList(a.(*DOMachineTemplateList), b.(*v1beta1.DOMachineTemplateList), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*v1beta1.DOMachineTemplateList)(nil), (*DOMachineTemplateList)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1beta1_DOMachineTemplateList_To_v1alpha3_DOMachineTemplateList(a.(*v1beta1.DOMachineTemplateList), b.(*DOMachineTemplateList), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*DOMachineTemplateResource)(nil), (*v1beta1.DOMachineTemplateResource)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1alpha3_DOMachineTemplateResource_To_v1beta1_DOMachineTemplateResource(a.(*DOMachineTemplateResource), b.(*v1beta1.DOMachineTemplateResource), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*v1beta1.DOMachineTemplateResource)(nil), (*DOMachineTemplateResource)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1beta1_DOMachineTemplateResource_To_v1alpha3_DOMachineTemplateResource(a.(*v1beta1.DOMachineTemplateResource), b.(*DOMachineTemplateResource), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*DOMachineTemplateSpec)(nil), (*v1beta1.DOMachineTemplateSpec)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1alpha3_DOMachineTemplateSpec_To_v1beta1_DOMachineTemplateSpec(a.(*DOMachineTemplateSpec), b.(*v1beta1.DOMachineTemplateSpec), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*v1beta1.DOMachineTemplateSpec)(nil), (*DOMachineTemplateSpec)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1beta1_DOMachineTemplateSpec_To_v1alpha3_DOMachineTemplateSpec(a.(*v1beta1.DOMachineTemplateSpec), b.(*DOMachineTemplateSpec), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*DONetwork)(nil), (*v1beta1.DONetwork)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1alpha3_DONetwork_To_v1beta1_DONetwork(a.(*DONetwork), b.(*v1beta1.DONetwork), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*v1beta1.DONetwork)(nil), (*DONetwork)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1beta1_DONetwork_To_v1alpha3_DONetwork(a.(*v1beta1.DONetwork), b.(*DONetwork), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*DONetworkResource)(nil), (*v1beta1.DONetworkResource)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1alpha3_DONetworkResource_To_v1beta1_DONetworkResource(a.(*DONetworkResource), b.(*v1beta1.DONetworkResource), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*v1beta1.DONetworkResource)(nil), (*DONetworkResource)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1beta1_DONetworkResource_To_v1alpha3_DONetworkResource(a.(*v1beta1.DONetworkResource), b.(*DONetworkResource), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*DOResourceReference)(nil), (*v1beta1.DOResourceReference)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1alpha3_DOResourceReference_To_v1beta1_DOResourceReference(a.(*DOResourceReference), b.(*v1beta1.DOResourceReference), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*v1beta1.DOResourceReference)(nil), (*DOResourceReference)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1beta1_DOResourceReference_To_v1alpha3_DOResourceReference(a.(*v1beta1.DOResourceReference), b.(*DOResourceReference), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*DOVPC)(nil), (*v1beta1.DOVPC)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1alpha3_DOVPC_To_v1beta1_DOVPC(a.(*DOVPC), b.(*v1beta1.DOVPC), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*v1beta1.DOVPC)(nil), (*DOVPC)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1beta1_DOVPC_To_v1alpha3_DOVPC(a.(*v1beta1.DOVPC), b.(*DOVPC), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*DOVolume)(nil), (*v1beta1.DOVolume)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1alpha3_DOVolume_To_v1beta1_DOVolume(a.(*DOVolume), b.(*v1beta1.DOVolume), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*v1beta1.DOVolume)(nil), (*DOVolume)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1beta1_DOVolume_To_v1alpha3_DOVolume(a.(*v1beta1.DOVolume), b.(*DOVolume), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*DataDisk)(nil), (*v1beta1.DataDisk)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1alpha3_DataDisk_To_v1beta1_DataDisk(a.(*DataDisk), b.(*v1beta1.DataDisk), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*v1beta1.DataDisk)(nil), (*DataDisk)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1beta1_DataDisk_To_v1alpha3_DataDisk(a.(*v1beta1.DataDisk), b.(*DataDisk), scope) - }); err != nil { - return err - } - return nil -} - -func autoConvert_v1alpha3_BuildTagParams_To_v1beta1_BuildTagParams(in *BuildTagParams, out *v1beta1.BuildTagParams, s conversion.Scope) error { - out.ClusterName = in.ClusterName - out.ClusterUID = in.ClusterUID - out.Name = in.Name - out.Role = in.Role - out.Additional = *(*v1beta1.Tags)(unsafe.Pointer(&in.Additional)) - return nil -} - -// Convert_v1alpha3_BuildTagParams_To_v1beta1_BuildTagParams is an autogenerated conversion function. -func Convert_v1alpha3_BuildTagParams_To_v1beta1_BuildTagParams(in *BuildTagParams, out *v1beta1.BuildTagParams, s conversion.Scope) error { - return autoConvert_v1alpha3_BuildTagParams_To_v1beta1_BuildTagParams(in, out, s) -} - -func autoConvert_v1beta1_BuildTagParams_To_v1alpha3_BuildTagParams(in *v1beta1.BuildTagParams, out *BuildTagParams, s conversion.Scope) error { - out.ClusterName = in.ClusterName - out.ClusterUID = in.ClusterUID - out.Name = in.Name - out.Role = in.Role - out.Additional = *(*Tags)(unsafe.Pointer(&in.Additional)) - return nil -} - -// Convert_v1beta1_BuildTagParams_To_v1alpha3_BuildTagParams is an autogenerated conversion function. -func Convert_v1beta1_BuildTagParams_To_v1alpha3_BuildTagParams(in *v1beta1.BuildTagParams, out *BuildTagParams, s conversion.Scope) error { - return autoConvert_v1beta1_BuildTagParams_To_v1alpha3_BuildTagParams(in, out, s) -} - -func autoConvert_v1alpha3_DOCluster_To_v1beta1_DOCluster(in *DOCluster, out *v1beta1.DOCluster, s conversion.Scope) error { - out.ObjectMeta = in.ObjectMeta - if err := Convert_v1alpha3_DOClusterSpec_To_v1beta1_DOClusterSpec(&in.Spec, &out.Spec, s); err != nil { - return err - } - if err := Convert_v1alpha3_DOClusterStatus_To_v1beta1_DOClusterStatus(&in.Status, &out.Status, s); err != nil { - return err - } - return nil -} - -// Convert_v1alpha3_DOCluster_To_v1beta1_DOCluster is an autogenerated conversion function. -func Convert_v1alpha3_DOCluster_To_v1beta1_DOCluster(in *DOCluster, out *v1beta1.DOCluster, s conversion.Scope) error { - return autoConvert_v1alpha3_DOCluster_To_v1beta1_DOCluster(in, out, s) -} - -func autoConvert_v1beta1_DOCluster_To_v1alpha3_DOCluster(in *v1beta1.DOCluster, out *DOCluster, s conversion.Scope) error { - out.ObjectMeta = in.ObjectMeta - if err := Convert_v1beta1_DOClusterSpec_To_v1alpha3_DOClusterSpec(&in.Spec, &out.Spec, s); err != nil { - return err - } - if err := Convert_v1beta1_DOClusterStatus_To_v1alpha3_DOClusterStatus(&in.Status, &out.Status, s); err != nil { - return err - } - return nil -} - -// Convert_v1beta1_DOCluster_To_v1alpha3_DOCluster is an autogenerated conversion function. -func Convert_v1beta1_DOCluster_To_v1alpha3_DOCluster(in *v1beta1.DOCluster, out *DOCluster, s conversion.Scope) error { - return autoConvert_v1beta1_DOCluster_To_v1alpha3_DOCluster(in, out, s) -} - -func autoConvert_v1alpha3_DOClusterList_To_v1beta1_DOClusterList(in *DOClusterList, out *v1beta1.DOClusterList, s conversion.Scope) error { - out.ListMeta = in.ListMeta - out.Items = *(*[]v1beta1.DOCluster)(unsafe.Pointer(&in.Items)) - return nil -} - -// Convert_v1alpha3_DOClusterList_To_v1beta1_DOClusterList is an autogenerated conversion function. -func Convert_v1alpha3_DOClusterList_To_v1beta1_DOClusterList(in *DOClusterList, out *v1beta1.DOClusterList, s conversion.Scope) error { - return autoConvert_v1alpha3_DOClusterList_To_v1beta1_DOClusterList(in, out, s) -} - -func autoConvert_v1beta1_DOClusterList_To_v1alpha3_DOClusterList(in *v1beta1.DOClusterList, out *DOClusterList, s conversion.Scope) error { - out.ListMeta = in.ListMeta - out.Items = *(*[]DOCluster)(unsafe.Pointer(&in.Items)) - return nil -} - -// Convert_v1beta1_DOClusterList_To_v1alpha3_DOClusterList is an autogenerated conversion function. -func Convert_v1beta1_DOClusterList_To_v1alpha3_DOClusterList(in *v1beta1.DOClusterList, out *DOClusterList, s conversion.Scope) error { - return autoConvert_v1beta1_DOClusterList_To_v1alpha3_DOClusterList(in, out, s) -} - -func autoConvert_v1alpha3_DOClusterSpec_To_v1beta1_DOClusterSpec(in *DOClusterSpec, out *v1beta1.DOClusterSpec, s conversion.Scope) error { - out.Region = in.Region - if err := Convert_v1alpha3_DONetwork_To_v1beta1_DONetwork(&in.Network, &out.Network, s); err != nil { - return err - } - out.ControlPlaneEndpoint = in.ControlPlaneEndpoint - out.ControlPlaneDNS = (*v1beta1.DOControlPlaneDNS)(unsafe.Pointer(in.ControlPlaneDNS)) - return nil -} - -// Convert_v1alpha3_DOClusterSpec_To_v1beta1_DOClusterSpec is an autogenerated conversion function. -func Convert_v1alpha3_DOClusterSpec_To_v1beta1_DOClusterSpec(in *DOClusterSpec, out *v1beta1.DOClusterSpec, s conversion.Scope) error { - return autoConvert_v1alpha3_DOClusterSpec_To_v1beta1_DOClusterSpec(in, out, s) -} - -func autoConvert_v1beta1_DOClusterSpec_To_v1alpha3_DOClusterSpec(in *v1beta1.DOClusterSpec, out *DOClusterSpec, s conversion.Scope) error { - out.Region = in.Region - if err := Convert_v1beta1_DONetwork_To_v1alpha3_DONetwork(&in.Network, &out.Network, s); err != nil { - return err - } - out.ControlPlaneEndpoint = in.ControlPlaneEndpoint - out.ControlPlaneDNS = (*DOControlPlaneDNS)(unsafe.Pointer(in.ControlPlaneDNS)) - return nil -} - -// Convert_v1beta1_DOClusterSpec_To_v1alpha3_DOClusterSpec is an autogenerated conversion function. -func Convert_v1beta1_DOClusterSpec_To_v1alpha3_DOClusterSpec(in *v1beta1.DOClusterSpec, out *DOClusterSpec, s conversion.Scope) error { - return autoConvert_v1beta1_DOClusterSpec_To_v1alpha3_DOClusterSpec(in, out, s) -} - -func autoConvert_v1alpha3_DOClusterStatus_To_v1beta1_DOClusterStatus(in *DOClusterStatus, out *v1beta1.DOClusterStatus, s conversion.Scope) error { - out.Ready = in.Ready - out.ControlPlaneDNSRecordReady = in.ControlPlaneDNSRecordReady - if err := Convert_v1alpha3_DONetworkResource_To_v1beta1_DONetworkResource(&in.Network, &out.Network, s); err != nil { - return err - } - return nil -} - -// Convert_v1alpha3_DOClusterStatus_To_v1beta1_DOClusterStatus is an autogenerated conversion function. -func Convert_v1alpha3_DOClusterStatus_To_v1beta1_DOClusterStatus(in *DOClusterStatus, out *v1beta1.DOClusterStatus, s conversion.Scope) error { - return autoConvert_v1alpha3_DOClusterStatus_To_v1beta1_DOClusterStatus(in, out, s) -} - -func autoConvert_v1beta1_DOClusterStatus_To_v1alpha3_DOClusterStatus(in *v1beta1.DOClusterStatus, out *DOClusterStatus, s conversion.Scope) error { - out.Ready = in.Ready - out.ControlPlaneDNSRecordReady = in.ControlPlaneDNSRecordReady - if err := Convert_v1beta1_DONetworkResource_To_v1alpha3_DONetworkResource(&in.Network, &out.Network, s); err != nil { - return err - } - return nil -} - -// Convert_v1beta1_DOClusterStatus_To_v1alpha3_DOClusterStatus is an autogenerated conversion function. -func Convert_v1beta1_DOClusterStatus_To_v1alpha3_DOClusterStatus(in *v1beta1.DOClusterStatus, out *DOClusterStatus, s conversion.Scope) error { - return autoConvert_v1beta1_DOClusterStatus_To_v1alpha3_DOClusterStatus(in, out, s) -} - -func autoConvert_v1alpha3_DOControlPlaneDNS_To_v1beta1_DOControlPlaneDNS(in *DOControlPlaneDNS, out *v1beta1.DOControlPlaneDNS, s conversion.Scope) error { - out.Domain = in.Domain - out.Name = in.Name - return nil -} - -// Convert_v1alpha3_DOControlPlaneDNS_To_v1beta1_DOControlPlaneDNS is an autogenerated conversion function. -func Convert_v1alpha3_DOControlPlaneDNS_To_v1beta1_DOControlPlaneDNS(in *DOControlPlaneDNS, out *v1beta1.DOControlPlaneDNS, s conversion.Scope) error { - return autoConvert_v1alpha3_DOControlPlaneDNS_To_v1beta1_DOControlPlaneDNS(in, out, s) -} - -func autoConvert_v1beta1_DOControlPlaneDNS_To_v1alpha3_DOControlPlaneDNS(in *v1beta1.DOControlPlaneDNS, out *DOControlPlaneDNS, s conversion.Scope) error { - out.Domain = in.Domain - out.Name = in.Name - return nil -} - -// Convert_v1beta1_DOControlPlaneDNS_To_v1alpha3_DOControlPlaneDNS is an autogenerated conversion function. -func Convert_v1beta1_DOControlPlaneDNS_To_v1alpha3_DOControlPlaneDNS(in *v1beta1.DOControlPlaneDNS, out *DOControlPlaneDNS, s conversion.Scope) error { - return autoConvert_v1beta1_DOControlPlaneDNS_To_v1alpha3_DOControlPlaneDNS(in, out, s) -} - -func autoConvert_v1alpha3_DOLoadBalancer_To_v1beta1_DOLoadBalancer(in *DOLoadBalancer, out *v1beta1.DOLoadBalancer, s conversion.Scope) error { - out.Port = in.Port - out.Algorithm = in.Algorithm - if err := Convert_v1alpha3_DOLoadBalancerHealthCheck_To_v1beta1_DOLoadBalancerHealthCheck(&in.HealthCheck, &out.HealthCheck, s); err != nil { - return err - } - out.ResourceID = in.ResourceID - return nil -} - -// Convert_v1alpha3_DOLoadBalancer_To_v1beta1_DOLoadBalancer is an autogenerated conversion function. -func Convert_v1alpha3_DOLoadBalancer_To_v1beta1_DOLoadBalancer(in *DOLoadBalancer, out *v1beta1.DOLoadBalancer, s conversion.Scope) error { - return autoConvert_v1alpha3_DOLoadBalancer_To_v1beta1_DOLoadBalancer(in, out, s) -} - -func autoConvert_v1beta1_DOLoadBalancer_To_v1alpha3_DOLoadBalancer(in *v1beta1.DOLoadBalancer, out *DOLoadBalancer, s conversion.Scope) error { - out.Port = in.Port - out.Algorithm = in.Algorithm - if err := Convert_v1beta1_DOLoadBalancerHealthCheck_To_v1alpha3_DOLoadBalancerHealthCheck(&in.HealthCheck, &out.HealthCheck, s); err != nil { - return err - } - out.ResourceID = in.ResourceID - return nil -} - -// Convert_v1beta1_DOLoadBalancer_To_v1alpha3_DOLoadBalancer is an autogenerated conversion function. -func Convert_v1beta1_DOLoadBalancer_To_v1alpha3_DOLoadBalancer(in *v1beta1.DOLoadBalancer, out *DOLoadBalancer, s conversion.Scope) error { - return autoConvert_v1beta1_DOLoadBalancer_To_v1alpha3_DOLoadBalancer(in, out, s) -} - -func autoConvert_v1alpha3_DOLoadBalancerHealthCheck_To_v1beta1_DOLoadBalancerHealthCheck(in *DOLoadBalancerHealthCheck, out *v1beta1.DOLoadBalancerHealthCheck, s conversion.Scope) error { - out.Interval = in.Interval - out.Timeout = in.Timeout - out.UnhealthyThreshold = in.UnhealthyThreshold - out.HealthyThreshold = in.HealthyThreshold - return nil -} - -// Convert_v1alpha3_DOLoadBalancerHealthCheck_To_v1beta1_DOLoadBalancerHealthCheck is an autogenerated conversion function. -func Convert_v1alpha3_DOLoadBalancerHealthCheck_To_v1beta1_DOLoadBalancerHealthCheck(in *DOLoadBalancerHealthCheck, out *v1beta1.DOLoadBalancerHealthCheck, s conversion.Scope) error { - return autoConvert_v1alpha3_DOLoadBalancerHealthCheck_To_v1beta1_DOLoadBalancerHealthCheck(in, out, s) -} - -func autoConvert_v1beta1_DOLoadBalancerHealthCheck_To_v1alpha3_DOLoadBalancerHealthCheck(in *v1beta1.DOLoadBalancerHealthCheck, out *DOLoadBalancerHealthCheck, s conversion.Scope) error { - out.Interval = in.Interval - out.Timeout = in.Timeout - out.UnhealthyThreshold = in.UnhealthyThreshold - out.HealthyThreshold = in.HealthyThreshold - return nil -} - -// Convert_v1beta1_DOLoadBalancerHealthCheck_To_v1alpha3_DOLoadBalancerHealthCheck is an autogenerated conversion function. -func Convert_v1beta1_DOLoadBalancerHealthCheck_To_v1alpha3_DOLoadBalancerHealthCheck(in *v1beta1.DOLoadBalancerHealthCheck, out *DOLoadBalancerHealthCheck, s conversion.Scope) error { - return autoConvert_v1beta1_DOLoadBalancerHealthCheck_To_v1alpha3_DOLoadBalancerHealthCheck(in, out, s) -} - -func autoConvert_v1alpha3_DOMachine_To_v1beta1_DOMachine(in *DOMachine, out *v1beta1.DOMachine, s conversion.Scope) error { - out.ObjectMeta = in.ObjectMeta - if err := Convert_v1alpha3_DOMachineSpec_To_v1beta1_DOMachineSpec(&in.Spec, &out.Spec, s); err != nil { - return err - } - if err := Convert_v1alpha3_DOMachineStatus_To_v1beta1_DOMachineStatus(&in.Status, &out.Status, s); err != nil { - return err - } - return nil -} - -// Convert_v1alpha3_DOMachine_To_v1beta1_DOMachine is an autogenerated conversion function. -func Convert_v1alpha3_DOMachine_To_v1beta1_DOMachine(in *DOMachine, out *v1beta1.DOMachine, s conversion.Scope) error { - return autoConvert_v1alpha3_DOMachine_To_v1beta1_DOMachine(in, out, s) -} - -func autoConvert_v1beta1_DOMachine_To_v1alpha3_DOMachine(in *v1beta1.DOMachine, out *DOMachine, s conversion.Scope) error { - out.ObjectMeta = in.ObjectMeta - if err := Convert_v1beta1_DOMachineSpec_To_v1alpha3_DOMachineSpec(&in.Spec, &out.Spec, s); err != nil { - return err - } - if err := Convert_v1beta1_DOMachineStatus_To_v1alpha3_DOMachineStatus(&in.Status, &out.Status, s); err != nil { - return err - } - return nil -} - -// Convert_v1beta1_DOMachine_To_v1alpha3_DOMachine is an autogenerated conversion function. -func Convert_v1beta1_DOMachine_To_v1alpha3_DOMachine(in *v1beta1.DOMachine, out *DOMachine, s conversion.Scope) error { - return autoConvert_v1beta1_DOMachine_To_v1alpha3_DOMachine(in, out, s) -} - -func autoConvert_v1alpha3_DOMachineList_To_v1beta1_DOMachineList(in *DOMachineList, out *v1beta1.DOMachineList, s conversion.Scope) error { - out.ListMeta = in.ListMeta - out.Items = *(*[]v1beta1.DOMachine)(unsafe.Pointer(&in.Items)) - return nil -} - -// Convert_v1alpha3_DOMachineList_To_v1beta1_DOMachineList is an autogenerated conversion function. -func Convert_v1alpha3_DOMachineList_To_v1beta1_DOMachineList(in *DOMachineList, out *v1beta1.DOMachineList, s conversion.Scope) error { - return autoConvert_v1alpha3_DOMachineList_To_v1beta1_DOMachineList(in, out, s) -} - -func autoConvert_v1beta1_DOMachineList_To_v1alpha3_DOMachineList(in *v1beta1.DOMachineList, out *DOMachineList, s conversion.Scope) error { - out.ListMeta = in.ListMeta - out.Items = *(*[]DOMachine)(unsafe.Pointer(&in.Items)) - return nil -} - -// Convert_v1beta1_DOMachineList_To_v1alpha3_DOMachineList is an autogenerated conversion function. -func Convert_v1beta1_DOMachineList_To_v1alpha3_DOMachineList(in *v1beta1.DOMachineList, out *DOMachineList, s conversion.Scope) error { - return autoConvert_v1beta1_DOMachineList_To_v1alpha3_DOMachineList(in, out, s) -} - -func autoConvert_v1alpha3_DOMachineSpec_To_v1beta1_DOMachineSpec(in *DOMachineSpec, out *v1beta1.DOMachineSpec, s conversion.Scope) error { - out.ProviderID = (*string)(unsafe.Pointer(in.ProviderID)) - out.Size = in.Size - out.Image = in.Image - out.DataDisks = *(*[]v1beta1.DataDisk)(unsafe.Pointer(&in.DataDisks)) - out.SSHKeys = *(*[]intstr.IntOrString)(unsafe.Pointer(&in.SSHKeys)) - out.AdditionalTags = *(*v1beta1.Tags)(unsafe.Pointer(&in.AdditionalTags)) - return nil -} - -// Convert_v1alpha3_DOMachineSpec_To_v1beta1_DOMachineSpec is an autogenerated conversion function. -func Convert_v1alpha3_DOMachineSpec_To_v1beta1_DOMachineSpec(in *DOMachineSpec, out *v1beta1.DOMachineSpec, s conversion.Scope) error { - return autoConvert_v1alpha3_DOMachineSpec_To_v1beta1_DOMachineSpec(in, out, s) -} - -func autoConvert_v1beta1_DOMachineSpec_To_v1alpha3_DOMachineSpec(in *v1beta1.DOMachineSpec, out *DOMachineSpec, s conversion.Scope) error { - out.ProviderID = (*string)(unsafe.Pointer(in.ProviderID)) - out.Size = in.Size - out.Image = in.Image - out.DataDisks = *(*[]DataDisk)(unsafe.Pointer(&in.DataDisks)) - out.SSHKeys = *(*[]intstr.IntOrString)(unsafe.Pointer(&in.SSHKeys)) - out.AdditionalTags = *(*Tags)(unsafe.Pointer(&in.AdditionalTags)) - return nil -} - -// Convert_v1beta1_DOMachineSpec_To_v1alpha3_DOMachineSpec is an autogenerated conversion function. -func Convert_v1beta1_DOMachineSpec_To_v1alpha3_DOMachineSpec(in *v1beta1.DOMachineSpec, out *DOMachineSpec, s conversion.Scope) error { - return autoConvert_v1beta1_DOMachineSpec_To_v1alpha3_DOMachineSpec(in, out, s) -} - -func autoConvert_v1alpha3_DOMachineStatus_To_v1beta1_DOMachineStatus(in *DOMachineStatus, out *v1beta1.DOMachineStatus, s conversion.Scope) error { - out.Ready = in.Ready - out.Addresses = *(*[]v1.NodeAddress)(unsafe.Pointer(&in.Addresses)) - out.Volumes = *(*[]v1beta1.DOVolume)(unsafe.Pointer(&in.Volumes)) - out.InstanceStatus = (*v1beta1.DOResourceStatus)(unsafe.Pointer(in.InstanceStatus)) - out.FailureReason = (*errors.MachineStatusError)(unsafe.Pointer(in.FailureReason)) - out.FailureMessage = (*string)(unsafe.Pointer(in.FailureMessage)) - return nil -} - -// Convert_v1alpha3_DOMachineStatus_To_v1beta1_DOMachineStatus is an autogenerated conversion function. -func Convert_v1alpha3_DOMachineStatus_To_v1beta1_DOMachineStatus(in *DOMachineStatus, out *v1beta1.DOMachineStatus, s conversion.Scope) error { - return autoConvert_v1alpha3_DOMachineStatus_To_v1beta1_DOMachineStatus(in, out, s) -} - -func autoConvert_v1beta1_DOMachineStatus_To_v1alpha3_DOMachineStatus(in *v1beta1.DOMachineStatus, out *DOMachineStatus, s conversion.Scope) error { - out.Ready = in.Ready - out.Addresses = *(*[]v1.NodeAddress)(unsafe.Pointer(&in.Addresses)) - out.Volumes = *(*[]DOVolume)(unsafe.Pointer(&in.Volumes)) - out.InstanceStatus = (*DOResourceStatus)(unsafe.Pointer(in.InstanceStatus)) - out.FailureReason = (*errors.MachineStatusError)(unsafe.Pointer(in.FailureReason)) - out.FailureMessage = (*string)(unsafe.Pointer(in.FailureMessage)) - return nil -} - -// Convert_v1beta1_DOMachineStatus_To_v1alpha3_DOMachineStatus is an autogenerated conversion function. -func Convert_v1beta1_DOMachineStatus_To_v1alpha3_DOMachineStatus(in *v1beta1.DOMachineStatus, out *DOMachineStatus, s conversion.Scope) error { - return autoConvert_v1beta1_DOMachineStatus_To_v1alpha3_DOMachineStatus(in, out, s) -} - -func autoConvert_v1alpha3_DOMachineTemplate_To_v1beta1_DOMachineTemplate(in *DOMachineTemplate, out *v1beta1.DOMachineTemplate, s conversion.Scope) error { - out.ObjectMeta = in.ObjectMeta - if err := Convert_v1alpha3_DOMachineTemplateSpec_To_v1beta1_DOMachineTemplateSpec(&in.Spec, &out.Spec, s); err != nil { - return err - } - return nil -} - -// Convert_v1alpha3_DOMachineTemplate_To_v1beta1_DOMachineTemplate is an autogenerated conversion function. -func Convert_v1alpha3_DOMachineTemplate_To_v1beta1_DOMachineTemplate(in *DOMachineTemplate, out *v1beta1.DOMachineTemplate, s conversion.Scope) error { - return autoConvert_v1alpha3_DOMachineTemplate_To_v1beta1_DOMachineTemplate(in, out, s) -} - -func autoConvert_v1beta1_DOMachineTemplate_To_v1alpha3_DOMachineTemplate(in *v1beta1.DOMachineTemplate, out *DOMachineTemplate, s conversion.Scope) error { - out.ObjectMeta = in.ObjectMeta - if err := Convert_v1beta1_DOMachineTemplateSpec_To_v1alpha3_DOMachineTemplateSpec(&in.Spec, &out.Spec, s); err != nil { - return err - } - return nil -} - -// Convert_v1beta1_DOMachineTemplate_To_v1alpha3_DOMachineTemplate is an autogenerated conversion function. -func Convert_v1beta1_DOMachineTemplate_To_v1alpha3_DOMachineTemplate(in *v1beta1.DOMachineTemplate, out *DOMachineTemplate, s conversion.Scope) error { - return autoConvert_v1beta1_DOMachineTemplate_To_v1alpha3_DOMachineTemplate(in, out, s) -} - -func autoConvert_v1alpha3_DOMachineTemplateList_To_v1beta1_DOMachineTemplateList(in *DOMachineTemplateList, out *v1beta1.DOMachineTemplateList, s conversion.Scope) error { - out.ListMeta = in.ListMeta - out.Items = *(*[]v1beta1.DOMachineTemplate)(unsafe.Pointer(&in.Items)) - return nil -} - -// Convert_v1alpha3_DOMachineTemplateList_To_v1beta1_DOMachineTemplateList is an autogenerated conversion function. -func Convert_v1alpha3_DOMachineTemplateList_To_v1beta1_DOMachineTemplateList(in *DOMachineTemplateList, out *v1beta1.DOMachineTemplateList, s conversion.Scope) error { - return autoConvert_v1alpha3_DOMachineTemplateList_To_v1beta1_DOMachineTemplateList(in, out, s) -} - -func autoConvert_v1beta1_DOMachineTemplateList_To_v1alpha3_DOMachineTemplateList(in *v1beta1.DOMachineTemplateList, out *DOMachineTemplateList, s conversion.Scope) error { - out.ListMeta = in.ListMeta - out.Items = *(*[]DOMachineTemplate)(unsafe.Pointer(&in.Items)) - return nil -} - -// Convert_v1beta1_DOMachineTemplateList_To_v1alpha3_DOMachineTemplateList is an autogenerated conversion function. -func Convert_v1beta1_DOMachineTemplateList_To_v1alpha3_DOMachineTemplateList(in *v1beta1.DOMachineTemplateList, out *DOMachineTemplateList, s conversion.Scope) error { - return autoConvert_v1beta1_DOMachineTemplateList_To_v1alpha3_DOMachineTemplateList(in, out, s) -} - -func autoConvert_v1alpha3_DOMachineTemplateResource_To_v1beta1_DOMachineTemplateResource(in *DOMachineTemplateResource, out *v1beta1.DOMachineTemplateResource, s conversion.Scope) error { - if err := Convert_v1alpha3_DOMachineSpec_To_v1beta1_DOMachineSpec(&in.Spec, &out.Spec, s); err != nil { - return err - } - return nil -} - -// Convert_v1alpha3_DOMachineTemplateResource_To_v1beta1_DOMachineTemplateResource is an autogenerated conversion function. -func Convert_v1alpha3_DOMachineTemplateResource_To_v1beta1_DOMachineTemplateResource(in *DOMachineTemplateResource, out *v1beta1.DOMachineTemplateResource, s conversion.Scope) error { - return autoConvert_v1alpha3_DOMachineTemplateResource_To_v1beta1_DOMachineTemplateResource(in, out, s) -} - -func autoConvert_v1beta1_DOMachineTemplateResource_To_v1alpha3_DOMachineTemplateResource(in *v1beta1.DOMachineTemplateResource, out *DOMachineTemplateResource, s conversion.Scope) error { - if err := Convert_v1beta1_DOMachineSpec_To_v1alpha3_DOMachineSpec(&in.Spec, &out.Spec, s); err != nil { - return err - } - return nil -} - -// Convert_v1beta1_DOMachineTemplateResource_To_v1alpha3_DOMachineTemplateResource is an autogenerated conversion function. -func Convert_v1beta1_DOMachineTemplateResource_To_v1alpha3_DOMachineTemplateResource(in *v1beta1.DOMachineTemplateResource, out *DOMachineTemplateResource, s conversion.Scope) error { - return autoConvert_v1beta1_DOMachineTemplateResource_To_v1alpha3_DOMachineTemplateResource(in, out, s) -} - -func autoConvert_v1alpha3_DOMachineTemplateSpec_To_v1beta1_DOMachineTemplateSpec(in *DOMachineTemplateSpec, out *v1beta1.DOMachineTemplateSpec, s conversion.Scope) error { - if err := Convert_v1alpha3_DOMachineTemplateResource_To_v1beta1_DOMachineTemplateResource(&in.Template, &out.Template, s); err != nil { - return err - } - return nil -} - -// Convert_v1alpha3_DOMachineTemplateSpec_To_v1beta1_DOMachineTemplateSpec is an autogenerated conversion function. -func Convert_v1alpha3_DOMachineTemplateSpec_To_v1beta1_DOMachineTemplateSpec(in *DOMachineTemplateSpec, out *v1beta1.DOMachineTemplateSpec, s conversion.Scope) error { - return autoConvert_v1alpha3_DOMachineTemplateSpec_To_v1beta1_DOMachineTemplateSpec(in, out, s) -} - -func autoConvert_v1beta1_DOMachineTemplateSpec_To_v1alpha3_DOMachineTemplateSpec(in *v1beta1.DOMachineTemplateSpec, out *DOMachineTemplateSpec, s conversion.Scope) error { - if err := Convert_v1beta1_DOMachineTemplateResource_To_v1alpha3_DOMachineTemplateResource(&in.Template, &out.Template, s); err != nil { - return err - } - return nil -} - -// Convert_v1beta1_DOMachineTemplateSpec_To_v1alpha3_DOMachineTemplateSpec is an autogenerated conversion function. -func Convert_v1beta1_DOMachineTemplateSpec_To_v1alpha3_DOMachineTemplateSpec(in *v1beta1.DOMachineTemplateSpec, out *DOMachineTemplateSpec, s conversion.Scope) error { - return autoConvert_v1beta1_DOMachineTemplateSpec_To_v1alpha3_DOMachineTemplateSpec(in, out, s) -} - -func autoConvert_v1alpha3_DONetwork_To_v1beta1_DONetwork(in *DONetwork, out *v1beta1.DONetwork, s conversion.Scope) error { - if err := Convert_v1alpha3_DOLoadBalancer_To_v1beta1_DOLoadBalancer(&in.APIServerLoadbalancers, &out.APIServerLoadbalancers, s); err != nil { - return err - } - if err := Convert_v1alpha3_DOVPC_To_v1beta1_DOVPC(&in.VPC, &out.VPC, s); err != nil { - return err - } - return nil -} - -// Convert_v1alpha3_DONetwork_To_v1beta1_DONetwork is an autogenerated conversion function. -func Convert_v1alpha3_DONetwork_To_v1beta1_DONetwork(in *DONetwork, out *v1beta1.DONetwork, s conversion.Scope) error { - return autoConvert_v1alpha3_DONetwork_To_v1beta1_DONetwork(in, out, s) -} - -func autoConvert_v1beta1_DONetwork_To_v1alpha3_DONetwork(in *v1beta1.DONetwork, out *DONetwork, s conversion.Scope) error { - if err := Convert_v1beta1_DOLoadBalancer_To_v1alpha3_DOLoadBalancer(&in.APIServerLoadbalancers, &out.APIServerLoadbalancers, s); err != nil { - return err - } - if err := Convert_v1beta1_DOVPC_To_v1alpha3_DOVPC(&in.VPC, &out.VPC, s); err != nil { - return err - } - return nil -} - -// Convert_v1beta1_DONetwork_To_v1alpha3_DONetwork is an autogenerated conversion function. -func Convert_v1beta1_DONetwork_To_v1alpha3_DONetwork(in *v1beta1.DONetwork, out *DONetwork, s conversion.Scope) error { - return autoConvert_v1beta1_DONetwork_To_v1alpha3_DONetwork(in, out, s) -} - -func autoConvert_v1alpha3_DONetworkResource_To_v1beta1_DONetworkResource(in *DONetworkResource, out *v1beta1.DONetworkResource, s conversion.Scope) error { - if err := Convert_v1alpha3_DOResourceReference_To_v1beta1_DOResourceReference(&in.APIServerLoadbalancersRef, &out.APIServerLoadbalancersRef, s); err != nil { - return err - } - return nil -} - -// Convert_v1alpha3_DONetworkResource_To_v1beta1_DONetworkResource is an autogenerated conversion function. -func Convert_v1alpha3_DONetworkResource_To_v1beta1_DONetworkResource(in *DONetworkResource, out *v1beta1.DONetworkResource, s conversion.Scope) error { - return autoConvert_v1alpha3_DONetworkResource_To_v1beta1_DONetworkResource(in, out, s) -} - -func autoConvert_v1beta1_DONetworkResource_To_v1alpha3_DONetworkResource(in *v1beta1.DONetworkResource, out *DONetworkResource, s conversion.Scope) error { - if err := Convert_v1beta1_DOResourceReference_To_v1alpha3_DOResourceReference(&in.APIServerLoadbalancersRef, &out.APIServerLoadbalancersRef, s); err != nil { - return err - } - return nil -} - -// Convert_v1beta1_DONetworkResource_To_v1alpha3_DONetworkResource is an autogenerated conversion function. -func Convert_v1beta1_DONetworkResource_To_v1alpha3_DONetworkResource(in *v1beta1.DONetworkResource, out *DONetworkResource, s conversion.Scope) error { - return autoConvert_v1beta1_DONetworkResource_To_v1alpha3_DONetworkResource(in, out, s) -} - -func autoConvert_v1alpha3_DOResourceReference_To_v1beta1_DOResourceReference(in *DOResourceReference, out *v1beta1.DOResourceReference, s conversion.Scope) error { - out.ResourceID = in.ResourceID - out.ResourceStatus = v1beta1.DOResourceStatus(in.ResourceStatus) - return nil -} - -// Convert_v1alpha3_DOResourceReference_To_v1beta1_DOResourceReference is an autogenerated conversion function. -func Convert_v1alpha3_DOResourceReference_To_v1beta1_DOResourceReference(in *DOResourceReference, out *v1beta1.DOResourceReference, s conversion.Scope) error { - return autoConvert_v1alpha3_DOResourceReference_To_v1beta1_DOResourceReference(in, out, s) -} - -func autoConvert_v1beta1_DOResourceReference_To_v1alpha3_DOResourceReference(in *v1beta1.DOResourceReference, out *DOResourceReference, s conversion.Scope) error { - out.ResourceID = in.ResourceID - out.ResourceStatus = DOResourceStatus(in.ResourceStatus) - return nil -} - -// Convert_v1beta1_DOResourceReference_To_v1alpha3_DOResourceReference is an autogenerated conversion function. -func Convert_v1beta1_DOResourceReference_To_v1alpha3_DOResourceReference(in *v1beta1.DOResourceReference, out *DOResourceReference, s conversion.Scope) error { - return autoConvert_v1beta1_DOResourceReference_To_v1alpha3_DOResourceReference(in, out, s) -} - -func autoConvert_v1alpha3_DOVPC_To_v1beta1_DOVPC(in *DOVPC, out *v1beta1.DOVPC, s conversion.Scope) error { - out.VPCUUID = in.VPCUUID - return nil -} - -// Convert_v1alpha3_DOVPC_To_v1beta1_DOVPC is an autogenerated conversion function. -func Convert_v1alpha3_DOVPC_To_v1beta1_DOVPC(in *DOVPC, out *v1beta1.DOVPC, s conversion.Scope) error { - return autoConvert_v1alpha3_DOVPC_To_v1beta1_DOVPC(in, out, s) -} - -func autoConvert_v1beta1_DOVPC_To_v1alpha3_DOVPC(in *v1beta1.DOVPC, out *DOVPC, s conversion.Scope) error { - out.VPCUUID = in.VPCUUID - return nil -} - -// Convert_v1beta1_DOVPC_To_v1alpha3_DOVPC is an autogenerated conversion function. -func Convert_v1beta1_DOVPC_To_v1alpha3_DOVPC(in *v1beta1.DOVPC, out *DOVPC, s conversion.Scope) error { - return autoConvert_v1beta1_DOVPC_To_v1alpha3_DOVPC(in, out, s) -} - -func autoConvert_v1alpha3_DOVolume_To_v1beta1_DOVolume(in *DOVolume, out *v1beta1.DOVolume, s conversion.Scope) error { - out.ID = in.ID - return nil -} - -// Convert_v1alpha3_DOVolume_To_v1beta1_DOVolume is an autogenerated conversion function. -func Convert_v1alpha3_DOVolume_To_v1beta1_DOVolume(in *DOVolume, out *v1beta1.DOVolume, s conversion.Scope) error { - return autoConvert_v1alpha3_DOVolume_To_v1beta1_DOVolume(in, out, s) -} - -func autoConvert_v1beta1_DOVolume_To_v1alpha3_DOVolume(in *v1beta1.DOVolume, out *DOVolume, s conversion.Scope) error { - out.ID = in.ID - return nil -} - -// Convert_v1beta1_DOVolume_To_v1alpha3_DOVolume is an autogenerated conversion function. -func Convert_v1beta1_DOVolume_To_v1alpha3_DOVolume(in *v1beta1.DOVolume, out *DOVolume, s conversion.Scope) error { - return autoConvert_v1beta1_DOVolume_To_v1alpha3_DOVolume(in, out, s) -} - -func autoConvert_v1alpha3_DataDisk_To_v1beta1_DataDisk(in *DataDisk, out *v1beta1.DataDisk, s conversion.Scope) error { - out.NameSuffix = in.NameSuffix - out.DiskSizeGB = in.DiskSizeGB - out.FilesystemType = in.FilesystemType - out.FilesystemLabel = in.FilesystemLabel - return nil -} - -// Convert_v1alpha3_DataDisk_To_v1beta1_DataDisk is an autogenerated conversion function. -func Convert_v1alpha3_DataDisk_To_v1beta1_DataDisk(in *DataDisk, out *v1beta1.DataDisk, s conversion.Scope) error { - return autoConvert_v1alpha3_DataDisk_To_v1beta1_DataDisk(in, out, s) -} - -func autoConvert_v1beta1_DataDisk_To_v1alpha3_DataDisk(in *v1beta1.DataDisk, out *DataDisk, s conversion.Scope) error { - out.NameSuffix = in.NameSuffix - out.DiskSizeGB = in.DiskSizeGB - out.FilesystemType = in.FilesystemType - out.FilesystemLabel = in.FilesystemLabel - return nil -} - -// Convert_v1beta1_DataDisk_To_v1alpha3_DataDisk is an autogenerated conversion function. -func Convert_v1beta1_DataDisk_To_v1alpha3_DataDisk(in *v1beta1.DataDisk, out *DataDisk, s conversion.Scope) error { - return autoConvert_v1beta1_DataDisk_To_v1alpha3_DataDisk(in, out, s) -} diff --git a/api/v1alpha3/zz_generated.deepcopy.go b/api/v1alpha3/zz_generated.deepcopy.go deleted file mode 100644 index 59a241f2b..000000000 --- a/api/v1alpha3/zz_generated.deepcopy.go +++ /dev/null @@ -1,529 +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 controller-gen. DO NOT EDIT. - -package v1alpha3 - -import ( - "k8s.io/api/core/v1" - "k8s.io/apimachinery/pkg/runtime" - "k8s.io/apimachinery/pkg/util/intstr" - "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 *BuildTagParams) DeepCopyInto(out *BuildTagParams) { - *out = *in - if in.Additional != nil { - in, out := &in.Additional, &out.Additional - *out = make(Tags, len(*in)) - copy(*out, *in) - } -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new BuildTagParams. -func (in *BuildTagParams) DeepCopy() *BuildTagParams { - if in == nil { - return nil - } - out := new(BuildTagParams) - in.DeepCopyInto(out) - return out -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *DOCluster) DeepCopyInto(out *DOCluster) { - *out = *in - out.TypeMeta = in.TypeMeta - in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) - in.Spec.DeepCopyInto(&out.Spec) - out.Status = in.Status -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DOCluster. -func (in *DOCluster) DeepCopy() *DOCluster { - if in == nil { - return nil - } - out := new(DOCluster) - in.DeepCopyInto(out) - return out -} - -// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. -func (in *DOCluster) 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 *DOClusterList) DeepCopyInto(out *DOClusterList) { - *out = *in - out.TypeMeta = in.TypeMeta - in.ListMeta.DeepCopyInto(&out.ListMeta) - if in.Items != nil { - in, out := &in.Items, &out.Items - *out = make([]DOCluster, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } - } -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DOClusterList. -func (in *DOClusterList) DeepCopy() *DOClusterList { - if in == nil { - return nil - } - out := new(DOClusterList) - in.DeepCopyInto(out) - return out -} - -// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. -func (in *DOClusterList) 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 *DOClusterSpec) DeepCopyInto(out *DOClusterSpec) { - *out = *in - out.Network = in.Network - out.ControlPlaneEndpoint = in.ControlPlaneEndpoint - if in.ControlPlaneDNS != nil { - in, out := &in.ControlPlaneDNS, &out.ControlPlaneDNS - *out = new(DOControlPlaneDNS) - **out = **in - } -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DOClusterSpec. -func (in *DOClusterSpec) DeepCopy() *DOClusterSpec { - if in == nil { - return nil - } - out := new(DOClusterSpec) - in.DeepCopyInto(out) - return out -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *DOClusterStatus) DeepCopyInto(out *DOClusterStatus) { - *out = *in - out.Network = in.Network -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DOClusterStatus. -func (in *DOClusterStatus) DeepCopy() *DOClusterStatus { - if in == nil { - return nil - } - out := new(DOClusterStatus) - in.DeepCopyInto(out) - return out -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *DOControlPlaneDNS) DeepCopyInto(out *DOControlPlaneDNS) { - *out = *in -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DOControlPlaneDNS. -func (in *DOControlPlaneDNS) DeepCopy() *DOControlPlaneDNS { - if in == nil { - return nil - } - out := new(DOControlPlaneDNS) - in.DeepCopyInto(out) - return out -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *DOLoadBalancer) DeepCopyInto(out *DOLoadBalancer) { - *out = *in - out.HealthCheck = in.HealthCheck -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DOLoadBalancer. -func (in *DOLoadBalancer) DeepCopy() *DOLoadBalancer { - if in == nil { - return nil - } - out := new(DOLoadBalancer) - in.DeepCopyInto(out) - return out -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *DOLoadBalancerHealthCheck) DeepCopyInto(out *DOLoadBalancerHealthCheck) { - *out = *in -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DOLoadBalancerHealthCheck. -func (in *DOLoadBalancerHealthCheck) DeepCopy() *DOLoadBalancerHealthCheck { - if in == nil { - return nil - } - out := new(DOLoadBalancerHealthCheck) - in.DeepCopyInto(out) - return out -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *DOMachine) DeepCopyInto(out *DOMachine) { - *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 DOMachine. -func (in *DOMachine) DeepCopy() *DOMachine { - if in == nil { - return nil - } - out := new(DOMachine) - in.DeepCopyInto(out) - return out -} - -// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. -func (in *DOMachine) 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 *DOMachineList) DeepCopyInto(out *DOMachineList) { - *out = *in - out.TypeMeta = in.TypeMeta - in.ListMeta.DeepCopyInto(&out.ListMeta) - if in.Items != nil { - in, out := &in.Items, &out.Items - *out = make([]DOMachine, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } - } -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DOMachineList. -func (in *DOMachineList) DeepCopy() *DOMachineList { - if in == nil { - return nil - } - out := new(DOMachineList) - in.DeepCopyInto(out) - return out -} - -// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. -func (in *DOMachineList) 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 *DOMachineSpec) DeepCopyInto(out *DOMachineSpec) { - *out = *in - if in.ProviderID != nil { - in, out := &in.ProviderID, &out.ProviderID - *out = new(string) - **out = **in - } - out.Image = in.Image - if in.DataDisks != nil { - in, out := &in.DataDisks, &out.DataDisks - *out = make([]DataDisk, len(*in)) - copy(*out, *in) - } - if in.SSHKeys != nil { - in, out := &in.SSHKeys, &out.SSHKeys - *out = make([]intstr.IntOrString, len(*in)) - copy(*out, *in) - } - if in.AdditionalTags != nil { - in, out := &in.AdditionalTags, &out.AdditionalTags - *out = make(Tags, len(*in)) - copy(*out, *in) - } -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DOMachineSpec. -func (in *DOMachineSpec) DeepCopy() *DOMachineSpec { - if in == nil { - return nil - } - out := new(DOMachineSpec) - in.DeepCopyInto(out) - return out -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *DOMachineStatus) DeepCopyInto(out *DOMachineStatus) { - *out = *in - if in.Addresses != nil { - in, out := &in.Addresses, &out.Addresses - *out = make([]v1.NodeAddress, len(*in)) - copy(*out, *in) - } - if in.Volumes != nil { - in, out := &in.Volumes, &out.Volumes - *out = make([]DOVolume, len(*in)) - copy(*out, *in) - } - if in.InstanceStatus != nil { - in, out := &in.InstanceStatus, &out.InstanceStatus - *out = new(DOResourceStatus) - **out = **in - } - 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 - } -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DOMachineStatus. -func (in *DOMachineStatus) DeepCopy() *DOMachineStatus { - if in == nil { - return nil - } - out := new(DOMachineStatus) - in.DeepCopyInto(out) - return out -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *DOMachineTemplate) DeepCopyInto(out *DOMachineTemplate) { - *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 DOMachineTemplate. -func (in *DOMachineTemplate) DeepCopy() *DOMachineTemplate { - if in == nil { - return nil - } - out := new(DOMachineTemplate) - in.DeepCopyInto(out) - return out -} - -// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. -func (in *DOMachineTemplate) 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 *DOMachineTemplateList) DeepCopyInto(out *DOMachineTemplateList) { - *out = *in - out.TypeMeta = in.TypeMeta - in.ListMeta.DeepCopyInto(&out.ListMeta) - if in.Items != nil { - in, out := &in.Items, &out.Items - *out = make([]DOMachineTemplate, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } - } -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DOMachineTemplateList. -func (in *DOMachineTemplateList) DeepCopy() *DOMachineTemplateList { - if in == nil { - return nil - } - out := new(DOMachineTemplateList) - in.DeepCopyInto(out) - return out -} - -// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. -func (in *DOMachineTemplateList) 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 *DOMachineTemplateResource) DeepCopyInto(out *DOMachineTemplateResource) { - *out = *in - in.Spec.DeepCopyInto(&out.Spec) -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DOMachineTemplateResource. -func (in *DOMachineTemplateResource) DeepCopy() *DOMachineTemplateResource { - if in == nil { - return nil - } - out := new(DOMachineTemplateResource) - in.DeepCopyInto(out) - return out -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *DOMachineTemplateSpec) DeepCopyInto(out *DOMachineTemplateSpec) { - *out = *in - in.Template.DeepCopyInto(&out.Template) -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DOMachineTemplateSpec. -func (in *DOMachineTemplateSpec) DeepCopy() *DOMachineTemplateSpec { - if in == nil { - return nil - } - out := new(DOMachineTemplateSpec) - in.DeepCopyInto(out) - return out -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *DONetwork) DeepCopyInto(out *DONetwork) { - *out = *in - out.APIServerLoadbalancers = in.APIServerLoadbalancers - out.VPC = in.VPC -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DONetwork. -func (in *DONetwork) DeepCopy() *DONetwork { - if in == nil { - return nil - } - out := new(DONetwork) - in.DeepCopyInto(out) - return out -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *DONetworkResource) DeepCopyInto(out *DONetworkResource) { - *out = *in - out.APIServerLoadbalancersRef = in.APIServerLoadbalancersRef -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DONetworkResource. -func (in *DONetworkResource) DeepCopy() *DONetworkResource { - if in == nil { - return nil - } - out := new(DONetworkResource) - in.DeepCopyInto(out) - return out -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *DOResourceReference) DeepCopyInto(out *DOResourceReference) { - *out = *in -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DOResourceReference. -func (in *DOResourceReference) DeepCopy() *DOResourceReference { - if in == nil { - return nil - } - out := new(DOResourceReference) - in.DeepCopyInto(out) - return out -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *DOVPC) DeepCopyInto(out *DOVPC) { - *out = *in -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DOVPC. -func (in *DOVPC) DeepCopy() *DOVPC { - if in == nil { - return nil - } - out := new(DOVPC) - in.DeepCopyInto(out) - return out -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *DOVolume) DeepCopyInto(out *DOVolume) { - *out = *in -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DOVolume. -func (in *DOVolume) DeepCopy() *DOVolume { - if in == nil { - return nil - } - out := new(DOVolume) - in.DeepCopyInto(out) - return out -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *DataDisk) DeepCopyInto(out *DataDisk) { - *out = *in -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DataDisk. -func (in *DataDisk) DeepCopy() *DataDisk { - if in == nil { - return nil - } - out := new(DataDisk) - in.DeepCopyInto(out) - return out -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in Tags) DeepCopyInto(out *Tags) { - { - in := &in - *out = make(Tags, len(*in)) - copy(*out, *in) - } -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Tags. -func (in Tags) DeepCopy() Tags { - if in == nil { - return nil - } - out := new(Tags) - in.DeepCopyInto(out) - return *out -} diff --git a/api/v1alpha4/zz_generated.conversion.go b/api/v1alpha4/zz_generated.conversion.go index 3e9308c92..e3280d290 100644 --- a/api/v1alpha4/zz_generated.conversion.go +++ b/api/v1alpha4/zz_generated.conversion.go @@ -17,7 +17,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -// Code generated by conversion-gen-v0.22.2. DO NOT EDIT. +// Code generated by conversion-gen-v0.28.6. DO NOT EDIT. package v1alpha4 diff --git a/api/v1alpha4/zz_generated.deepcopy.go b/api/v1alpha4/zz_generated.deepcopy.go index 28b05128f..9183ca423 100644 --- a/api/v1alpha4/zz_generated.deepcopy.go +++ b/api/v1alpha4/zz_generated.deepcopy.go @@ -1,5 +1,4 @@ //go:build !ignore_autogenerated -// +build !ignore_autogenerated /* Copyright The Kubernetes Authors. diff --git a/api/v1beta1/gcpclustertemplate_webhook_test b/api/v1beta1/gcpclustertemplate_webhook_test deleted file mode 100644 index 7d974f670..000000000 --- a/api/v1beta1/gcpclustertemplate_webhook_test +++ /dev/null @@ -1,86 +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 v1beta1 - -import ( - "testing" - - . "github.com/onsi/gomega" -) - -func TestGCPClusterTemplate_ValidateUpdate(t *testing.T) { - g := NewWithT(t) - - tests := []struct { - name string - newTemplate *GCPClusterTemplate - oldTemplate *GCPClusterTemplate - wantErr bool - }{ - { - name: "GCPClusterTemplated with immutable spec", - newTemplate: &GCPClusterTemplate{ - Spec: GCPClusterTemplateSpec{ - Template: GCPClusterTemplateResource{GCPClusterSpec{ - Project: "test-gcp-cluster", - Region: "ap-south-1", - }}, - }, - }, - oldTemplate: &GCPClusterTemplate{ - Spec: GCPClusterTemplateSpec{ - Template: GCPClusterTemplateResource{GCPClusterSpec{ - Project: "test-gcp-cluster", - Region: "ap-south-1", - }}, - }, - }, - wantErr: false, - }, - { - name: "GCPClusterTemplated with mutable spec", - newTemplate: &GCPClusterTemplate{ - Spec: GCPClusterTemplateSpec{ - Template: GCPClusterTemplateResource{GCPClusterSpec{ - Project: "test-gcp-cluster", - Region: "ap-south-1", - }}, - }, - }, - oldTemplate: &GCPClusterTemplate{ - Spec: GCPClusterTemplateSpec{ - Template: GCPClusterTemplateResource{GCPClusterSpec{ - Project: "test-gcp-cluster", - Region: "ap-east-1", - }}, - }, - }, - wantErr: true, - }, - } - for _, test := range tests { - t.Run(test.name, func(t *testing.T) { - t.Parallel() - err := test.newTemplate.ValidateUpdate(test.oldTemplate) - if test.wantErr { - g.Expect(err).To(HaveOccurred()) - } else { - g.Expect(err).NotTo(HaveOccurred()) - } - }) - } -} diff --git a/api/v1beta1/zz_generated.deepcopy.go b/api/v1beta1/zz_generated.deepcopy.go index 1824252a4..6f1f92855 100644 --- a/api/v1beta1/zz_generated.deepcopy.go +++ b/api/v1beta1/zz_generated.deepcopy.go @@ -1,5 +1,4 @@ //go:build !ignore_autogenerated -// +build !ignore_autogenerated /* Copyright The Kubernetes Authors. diff --git a/cloud/scope/machine.go b/cloud/scope/machine.go index 0fa54c3b1..304956665 100644 --- a/cloud/scope/machine.go +++ b/cloud/scope/machine.go @@ -29,7 +29,7 @@ import ( corev1 "k8s.io/api/core/v1" "k8s.io/apimachinery/pkg/types" "k8s.io/klog/v2/klogr" - "k8s.io/utils/pointer" + "k8s.io/utils/ptr" clusterv1 "sigs.k8s.io/cluster-api/api/v1beta1" capierrors "sigs.k8s.io/cluster-api/errors" @@ -141,7 +141,7 @@ func (m *MachineScope) GetProviderID() string { // SetProviderID sets the DOMachine providerID in spec from droplet id. func (m *MachineScope) SetProviderID(dropletID string) { pid := fmt.Sprintf("digitalocean://%s", dropletID) - m.DOMachine.Spec.ProviderID = pointer.String(pid) + m.DOMachine.Spec.ProviderID = ptr.To[string](pid) } // SetVolumes sets the DOMachine volume IDs from droplet in status. @@ -192,7 +192,7 @@ func (m *MachineScope) SetReady() { // SetFailureMessage sets the DOMachine status error message. func (m *MachineScope) SetFailureMessage(v error) { - m.DOMachine.Status.FailureMessage = pointer.String(v.Error()) + m.DOMachine.Status.FailureMessage = ptr.To[string](v.Error()) } // SetFailureReason sets the DOMachine status error reason. diff --git a/cloud/services/computes/droplets_test.go b/cloud/services/computes/droplets_test.go index ddc0a0635..754dd96ff 100644 --- a/cloud/services/computes/droplets_test.go +++ b/cloud/services/computes/droplets_test.go @@ -27,20 +27,20 @@ import ( "github.com/golang/mock/gomock" "github.com/pkg/errors" - infrav1 "sigs.k8s.io/cluster-api-provider-digitalocean/api/v1beta1" - "sigs.k8s.io/cluster-api-provider-digitalocean/cloud/scope" - "sigs.k8s.io/cluster-api-provider-digitalocean/cloud/services/computes/mock_computes" - - clusterv1 "sigs.k8s.io/cluster-api/api/v1beta1" - corev1 "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/runtime" "k8s.io/apimachinery/pkg/util/intstr" utilruntime "k8s.io/apimachinery/pkg/util/runtime" clientgoscheme "k8s.io/client-go/kubernetes/scheme" - "k8s.io/utils/pointer" + "k8s.io/utils/ptr" "sigs.k8s.io/controller-runtime/pkg/client/fake" + + clusterv1 "sigs.k8s.io/cluster-api/api/v1beta1" + + infrav1 "sigs.k8s.io/cluster-api-provider-digitalocean/api/v1beta1" + "sigs.k8s.io/cluster-api-provider-digitalocean/cloud/scope" + "sigs.k8s.io/cluster-api-provider-digitalocean/cloud/services/computes/mock_computes" ) var ( @@ -96,7 +96,7 @@ func TestService_GetDroplet(t *testing.T) { args: args{ id: "", }, - expect: func(md *mock_computes.MockDropletsServiceMockRecorder) {}, + expect: func(_ *mock_computes.MockDropletsServiceMockRecorder) {}, wantErr: false, }, { @@ -104,7 +104,7 @@ func TestService_GetDroplet(t *testing.T) { args: args{ id: "aaa", }, - expect: func(md *mock_computes.MockDropletsServiceMockRecorder) {}, + expect: func(_ *mock_computes.MockDropletsServiceMockRecorder) {}, wantErr: true, }, { @@ -223,7 +223,7 @@ func TestService_CreateDroplet(t *testing.T) { }, Spec: clusterv1.MachineSpec{ Bootstrap: clusterv1.Bootstrap{ - DataSecretName: pointer.String("bootstrap-data"), + DataSecretName: ptr.To[string]("bootstrap-data"), }, }, }, @@ -237,7 +237,7 @@ func TestService_CreateDroplet(t *testing.T) { }, }, }, - expect: func(md *mock_computes.MockDropletsServiceMockRecorder, mk *mock_computes.MockKeysServiceMockRecorder, mi *mock_computes.MockImagesServiceMockRecorder, ms *mock_computes.MockStorageServiceMockRecorder) { + expect: func(md *mock_computes.MockDropletsServiceMockRecorder, _ *mock_computes.MockKeysServiceMockRecorder, _ *mock_computes.MockImagesServiceMockRecorder, _ *mock_computes.MockStorageServiceMockRecorder) { md.Create(gomock.Any(), &godo.DropletCreateRequest{ Name: "capdo-test-control-plane-nkkxn", Region: "nyc1", @@ -286,7 +286,7 @@ func TestService_CreateDroplet(t *testing.T) { }, Spec: clusterv1.MachineSpec{ Bootstrap: clusterv1.Bootstrap{ - DataSecretName: pointer.String("bootstrap-data"), + DataSecretName: ptr.To[string]("bootstrap-data"), }, }, }, @@ -300,7 +300,7 @@ func TestService_CreateDroplet(t *testing.T) { }, }, }, - expect: func(md *mock_computes.MockDropletsServiceMockRecorder, mk *mock_computes.MockKeysServiceMockRecorder, mi *mock_computes.MockImagesServiceMockRecorder, ms *mock_computes.MockStorageServiceMockRecorder) { + expect: func(md *mock_computes.MockDropletsServiceMockRecorder, _ *mock_computes.MockKeysServiceMockRecorder, _ *mock_computes.MockImagesServiceMockRecorder, _ *mock_computes.MockStorageServiceMockRecorder) { md.Create(gomock.Any(), &godo.DropletCreateRequest{ Name: "capdo-test-control-plane-nkkxn", Region: "nyc1", @@ -349,7 +349,7 @@ func TestService_CreateDroplet(t *testing.T) { }, Spec: clusterv1.MachineSpec{ Bootstrap: clusterv1.Bootstrap{ - DataSecretName: pointer.String("no-exist-bootstrap-data"), + DataSecretName: ptr.To[string]("no-exist-bootstrap-data"), }, }, }, @@ -363,7 +363,7 @@ func TestService_CreateDroplet(t *testing.T) { }, }, }, - expect: func(md *mock_computes.MockDropletsServiceMockRecorder, mk *mock_computes.MockKeysServiceMockRecorder, mi *mock_computes.MockImagesServiceMockRecorder, ms *mock_computes.MockStorageServiceMockRecorder) { + expect: func(_ *mock_computes.MockDropletsServiceMockRecorder, _ *mock_computes.MockKeysServiceMockRecorder, _ *mock_computes.MockImagesServiceMockRecorder, _ *mock_computes.MockStorageServiceMockRecorder) { }, wantErr: true, }, @@ -394,7 +394,7 @@ func TestService_CreateDroplet(t *testing.T) { }, Spec: clusterv1.MachineSpec{ Bootstrap: clusterv1.Bootstrap{ - DataSecretName: pointer.String("bootstrap-data"), + DataSecretName: ptr.To[string]("bootstrap-data"), }, }, }, @@ -411,7 +411,7 @@ func TestService_CreateDroplet(t *testing.T) { }, }, }, - expect: func(md *mock_computes.MockDropletsServiceMockRecorder, mk *mock_computes.MockKeysServiceMockRecorder, mi *mock_computes.MockImagesServiceMockRecorder, ms *mock_computes.MockStorageServiceMockRecorder) { + expect: func(md *mock_computes.MockDropletsServiceMockRecorder, mk *mock_computes.MockKeysServiceMockRecorder, _ *mock_computes.MockImagesServiceMockRecorder, _ *mock_computes.MockStorageServiceMockRecorder) { mk.GetByFingerprint(gomock.Any(), "12:f8:7e:78:61:b4:bf:e2:de:24:15:96:4e:d4:72:53").Return(&godo.Key{ID: 12345, Fingerprint: "12:f8:7e:78:61:b4:bf:e2:de:24:15:96:4e:d4:72:53"}, nil, nil) md.Create(gomock.Any(), &godo.DropletCreateRequest{ Name: "capdo-test-control-plane-nkkxn", @@ -466,7 +466,7 @@ func TestService_CreateDroplet(t *testing.T) { }, Spec: clusterv1.MachineSpec{ Bootstrap: clusterv1.Bootstrap{ - DataSecretName: pointer.String("bootstrap-data"), + DataSecretName: ptr.To[string]("bootstrap-data"), }, }, }, @@ -480,7 +480,7 @@ func TestService_CreateDroplet(t *testing.T) { }, }, }, - expect: func(md *mock_computes.MockDropletsServiceMockRecorder, mk *mock_computes.MockKeysServiceMockRecorder, mi *mock_computes.MockImagesServiceMockRecorder, ms *mock_computes.MockStorageServiceMockRecorder) { + expect: func(md *mock_computes.MockDropletsServiceMockRecorder, _ *mock_computes.MockKeysServiceMockRecorder, mi *mock_computes.MockImagesServiceMockRecorder, _ *mock_computes.MockStorageServiceMockRecorder) { mi.GetBySlug(gomock.Any(), "capi-image").Return(&godo.Image{ID: 63624555}, nil, nil) md.Create(gomock.Any(), &godo.DropletCreateRequest{ Name: "capdo-test-control-plane-nkkxn", @@ -530,7 +530,7 @@ func TestService_CreateDroplet(t *testing.T) { }, Spec: clusterv1.MachineSpec{ Bootstrap: clusterv1.Bootstrap{ - DataSecretName: pointer.String("bootstrap-data"), + DataSecretName: ptr.To[string]("bootstrap-data"), }, }, }, @@ -544,7 +544,7 @@ func TestService_CreateDroplet(t *testing.T) { }, }, }, - expect: func(md *mock_computes.MockDropletsServiceMockRecorder, mk *mock_computes.MockKeysServiceMockRecorder, mi *mock_computes.MockImagesServiceMockRecorder, ms *mock_computes.MockStorageServiceMockRecorder) { + expect: func(_ *mock_computes.MockDropletsServiceMockRecorder, _ *mock_computes.MockKeysServiceMockRecorder, mi *mock_computes.MockImagesServiceMockRecorder, _ *mock_computes.MockStorageServiceMockRecorder) { mi.GetBySlug(gomock.Any(), "capi-image").Return(nil, nil, errors.New("error getting image")) }, wantErr: true, @@ -576,7 +576,7 @@ func TestService_CreateDroplet(t *testing.T) { }, Spec: clusterv1.MachineSpec{ Bootstrap: clusterv1.Bootstrap{ - DataSecretName: pointer.String("bootstrap-data"), + DataSecretName: ptr.To[string]("bootstrap-data"), }, }, }, @@ -593,7 +593,7 @@ func TestService_CreateDroplet(t *testing.T) { }, }, }, - expect: func(md *mock_computes.MockDropletsServiceMockRecorder, mk *mock_computes.MockKeysServiceMockRecorder, mi *mock_computes.MockImagesServiceMockRecorder, ms *mock_computes.MockStorageServiceMockRecorder) { + expect: func(_ *mock_computes.MockDropletsServiceMockRecorder, mk *mock_computes.MockKeysServiceMockRecorder, _ *mock_computes.MockImagesServiceMockRecorder, _ *mock_computes.MockStorageServiceMockRecorder) { mk.GetByFingerprint(gomock.Any(), "12:f8:7e:78:61:b4:bf:e2:de:24:15:96:4e:d4:72:53").Return(&godo.Key{}, nil, errors.New("error getting keys")) }, wantErr: true, @@ -625,7 +625,7 @@ func TestService_CreateDroplet(t *testing.T) { }, Spec: clusterv1.MachineSpec{ Bootstrap: clusterv1.Bootstrap{ - DataSecretName: pointer.String("bootstrap-data"), + DataSecretName: ptr.To[string]("bootstrap-data"), }, }, }, @@ -647,7 +647,7 @@ func TestService_CreateDroplet(t *testing.T) { }, }, }, - expect: func(md *mock_computes.MockDropletsServiceMockRecorder, mk *mock_computes.MockKeysServiceMockRecorder, mi *mock_computes.MockImagesServiceMockRecorder, ms *mock_computes.MockStorageServiceMockRecorder) { + expect: func(md *mock_computes.MockDropletsServiceMockRecorder, _ *mock_computes.MockKeysServiceMockRecorder, _ *mock_computes.MockImagesServiceMockRecorder, ms *mock_computes.MockStorageServiceMockRecorder) { ms.ListVolumes(gomock.Any(), &godo.ListVolumeParams{Name: "capdo-test-control-plane-nkkxn-etcd", Region: "nyc1"}).Return([]godo.Volume{{ID: "1234"}}, nil, nil) md.Create(gomock.Any(), &godo.DropletCreateRequest{ Name: "capdo-test-control-plane-nkkxn", @@ -701,7 +701,7 @@ func TestService_CreateDroplet(t *testing.T) { }, Spec: clusterv1.MachineSpec{ Bootstrap: clusterv1.Bootstrap{ - DataSecretName: pointer.String("bootstrap-data"), + DataSecretName: ptr.To[string]("bootstrap-data"), }, }, }, @@ -723,7 +723,7 @@ func TestService_CreateDroplet(t *testing.T) { }, }, }, - expect: func(md *mock_computes.MockDropletsServiceMockRecorder, mk *mock_computes.MockKeysServiceMockRecorder, mi *mock_computes.MockImagesServiceMockRecorder, ms *mock_computes.MockStorageServiceMockRecorder) { + expect: func(_ *mock_computes.MockDropletsServiceMockRecorder, _ *mock_computes.MockKeysServiceMockRecorder, _ *mock_computes.MockImagesServiceMockRecorder, ms *mock_computes.MockStorageServiceMockRecorder) { ms.ListVolumes(gomock.Any(), &godo.ListVolumeParams{Name: "capdo-test-control-plane-nkkxn-etcd", Region: "nyc1"}).Return([]godo.Volume{}, nil, nil) }, wantErr: true, @@ -755,7 +755,7 @@ func TestService_CreateDroplet(t *testing.T) { }, Spec: clusterv1.MachineSpec{ Bootstrap: clusterv1.Bootstrap{ - DataSecretName: pointer.String("bootstrap-data"), + DataSecretName: ptr.To[string]("bootstrap-data"), }, }, }, @@ -777,7 +777,7 @@ func TestService_CreateDroplet(t *testing.T) { }, }, }, - expect: func(md *mock_computes.MockDropletsServiceMockRecorder, mk *mock_computes.MockKeysServiceMockRecorder, mi *mock_computes.MockImagesServiceMockRecorder, ms *mock_computes.MockStorageServiceMockRecorder) { + expect: func(_ *mock_computes.MockDropletsServiceMockRecorder, _ *mock_computes.MockKeysServiceMockRecorder, _ *mock_computes.MockImagesServiceMockRecorder, ms *mock_computes.MockStorageServiceMockRecorder) { ms.ListVolumes(gomock.Any(), &godo.ListVolumeParams{Name: "capdo-test-control-plane-nkkxn-etcd", Region: "nyc1"}).Return([]godo.Volume{}, nil, errors.New("error getting volume")) }, wantErr: true, @@ -871,7 +871,7 @@ func TestService_DeleteDroplet(t *testing.T) { args: args{ "", }, - expect: func(md *mock_computes.MockDropletsServiceMockRecorder) {}, + expect: func(_ *mock_computes.MockDropletsServiceMockRecorder) {}, wantErr: true, }, { @@ -879,7 +879,7 @@ func TestService_DeleteDroplet(t *testing.T) { args: args{ id: "aaa", }, - expect: func(md *mock_computes.MockDropletsServiceMockRecorder) {}, + expect: func(_ *mock_computes.MockDropletsServiceMockRecorder) {}, wantErr: true, }, { diff --git a/cloud/services/networking/loadbalancers_test.go b/cloud/services/networking/loadbalancers_test.go index c26f1a2f9..8d6f5862a 100644 --- a/cloud/services/networking/loadbalancers_test.go +++ b/cloud/services/networking/loadbalancers_test.go @@ -87,7 +87,7 @@ func TestService_GetLoadBalancer(t *testing.T) { args: args{ id: "", }, - expect: func(mlb *mock_networking.MockLoadBalancersServiceMockRecorder) {}, + expect: func(_ *mock_networking.MockLoadBalancersServiceMockRecorder) {}, wantErr: false, }, { diff --git a/clusterctl-settings.json b/clusterctl-settings.json index cd3b4ef19..e0bfee902 100644 --- a/clusterctl-settings.json +++ b/clusterctl-settings.json @@ -2,6 +2,6 @@ "name": "infrastructure-digitalocean", "config": { "componentsFile": "infrastructure-components.yaml", - "nextVersion": "v1.3.0" + "nextVersion": "v1.7.0" } } diff --git a/config/crd/bases/infrastructure.cluster.x-k8s.io_doclusters.yaml b/config/crd/bases/infrastructure.cluster.x-k8s.io_doclusters.yaml index c91af7c31..2d7aafa1c 100644 --- a/config/crd/bases/infrastructure.cluster.x-k8s.io_doclusters.yaml +++ b/config/crd/bases/infrastructure.cluster.x-k8s.io_doclusters.yaml @@ -3,8 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.8.0 - creationTimestamp: null + controller-gen.kubebuilder.io/version: v0.13.0 name: doclusters.infrastructure.cluster.x-k8s.io spec: group: infrastructure.cluster.x-k8s.io @@ -17,187 +16,6 @@ spec: singular: docluster scope: Namespaced versions: - - additionalPrinterColumns: - - description: Cluster to which this DOCluster belongs - jsonPath: .metadata.labels.cluster\.x-k8s\.io/cluster-name - name: Cluster - type: string - - description: Cluster infrastructure is ready for DigitalOcean droplet instances - jsonPath: .status.ready - name: Ready - type: string - - description: API Endpoint - jsonPath: .spec.ControlPlaneEndpoint - name: Endpoint - priority: 1 - type: string - name: v1alpha3 - schema: - openAPIV3Schema: - description: DOCluster is the Schema for the DOClusters 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: DOClusterSpec defines the desired state of DOCluster. - properties: - controlPlaneDNS: - description: ControlPlaneDNS is a managed DNS name that points to - the load-balancer IP used for the ControlPlaneEndpoint. - properties: - domain: - description: Domain is the DO domain that this record should live - in. It must be pre-existing in your DO account. The format must - be a string that conforms to the definition of a subdomain in - DNS (RFC 1123) - pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$ - type: string - name: - description: Name is the DNS short name of the record (non-FQDN) - The format must consist of alphanumeric characters, '-' or '.', - and must start and end with an alphanumeric character - pattern: ^[a-z0-9]([-a-z0-9.]*[a-z0-9])?$ - type: string - required: - - domain - - name - type: object - controlPlaneEndpoint: - description: ControlPlaneEndpoint represents the endpoint used to - communicate with the control plane. If ControlPlaneDNS is unset, - the DO load-balancer IP of the Kubernetes API Server is used. - properties: - host: - description: The hostname on which the API server is serving. - type: string - port: - description: The port on which the API server is serving. - format: int32 - type: integer - required: - - host - - port - type: object - network: - description: Network configurations - properties: - apiServerLoadbalancers: - description: Configures an API Server loadbalancers - properties: - algorithm: - description: The API Server load balancing algorithm used - to determine which backend Droplet will be selected by a - client. It must be either "round_robin" or "least_connections". - The default value is "round_robin". - enum: - - round_robin - - least_connections - type: string - healthCheck: - description: An object specifying health check settings for - the Load Balancer. If omitted, default values will be provided. - properties: - healthyThreshold: - description: The number of times a health check must pass - for a backend Droplet to be marked "healthy" and be - re-added to the pool. The vaule must be between 2 and - 10. If not specified, the default value is 5. - maximum: 10 - minimum: 2 - type: integer - interval: - description: The number of seconds between between two - consecutive health checks. The value must be between - 3 and 300. If not specified, the default value is 10. - maximum: 300 - minimum: 3 - type: integer - timeout: - description: The number of seconds the Load Balancer instance - will wait for a response until marking a health check - as failed. The value must be between 3 and 300. If not - specified, the default value is 5. - maximum: 300 - minimum: 3 - type: integer - unhealthyThreshold: - description: The number of times a health check must fail - for a backend Droplet to be marked "unhealthy" and be - removed from the pool. The vaule must be between 2 and - 10. If not specified, the default value is 3. - maximum: 10 - minimum: 2 - type: integer - type: object - port: - description: API Server port. It must be valid ports range - (1-65535). If omitted, default value is 6443. - maximum: 65535 - minimum: 1 - type: integer - resourceId: - description: The DO load balancer UUID. If omitted, a new - load balancer will be created. - type: string - type: object - vpc: - description: VPC defines the VPC configuration. - properties: - vpc_uuid: - description: VPCUUID defines the VPC UUID to use. An empty - value implies using the default VPC. - type: string - type: object - type: object - region: - description: The DigitalOcean Region the cluster lives in. It must - be one of available region on DigitalOcean. See https://developers.digitalocean.com/documentation/v2/#list-all-regions - type: string - required: - - region - type: object - status: - description: DOClusterStatus defines the observed state of DOCluster. - properties: - controlPlaneDNSRecordReady: - description: ControlPlaneDNSRecordReady denotes that the DNS record - is ready and propagated to the DO DNS servers. - type: boolean - network: - description: Network encapsulates all things related to DigitalOcean - network. - properties: - apiServerLoadbalancersRef: - description: APIServerLoadbalancersRef is the id of apiserver - loadbalancers. - properties: - resourceId: - description: ID of DigitalOcean resource - type: string - resourceStatus: - description: Status of DigitalOcean resource - type: string - type: object - type: object - ready: - description: Ready denotes that the cluster (infrastructure) is ready. - type: boolean - type: object - type: object - served: true - storage: false - subresources: - status: {} - additionalPrinterColumns: - description: Cluster to which this DOCluster belongs jsonPath: .metadata.labels.cluster\.x-k8s\.io/cluster-name @@ -560,9 +378,3 @@ spec: storage: true subresources: status: {} -status: - acceptedNames: - kind: "" - plural: "" - conditions: [] - storedVersions: [] diff --git a/config/crd/bases/infrastructure.cluster.x-k8s.io_doclustertemplates.yaml b/config/crd/bases/infrastructure.cluster.x-k8s.io_doclustertemplates.yaml index d40ec5465..441d1dd3e 100644 --- a/config/crd/bases/infrastructure.cluster.x-k8s.io_doclustertemplates.yaml +++ b/config/crd/bases/infrastructure.cluster.x-k8s.io_doclustertemplates.yaml @@ -3,8 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.8.0 - creationTimestamp: null + controller-gen.kubebuilder.io/version: v0.13.0 name: doclustertemplates.infrastructure.cluster.x-k8s.io spec: group: infrastructure.cluster.x-k8s.io @@ -177,9 +176,3 @@ spec: type: object served: true storage: true -status: - acceptedNames: - kind: "" - plural: "" - conditions: [] - storedVersions: [] diff --git a/config/crd/bases/infrastructure.cluster.x-k8s.io_domachines.yaml b/config/crd/bases/infrastructure.cluster.x-k8s.io_domachines.yaml index 3ec383c66..231254dfb 100644 --- a/config/crd/bases/infrastructure.cluster.x-k8s.io_domachines.yaml +++ b/config/crd/bases/infrastructure.cluster.x-k8s.io_domachines.yaml @@ -3,8 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.8.0 - creationTimestamp: null + controller-gen.kubebuilder.io/version: v0.13.0 name: domachines.infrastructure.cluster.x-k8s.io spec: group: infrastructure.cluster.x-k8s.io @@ -17,189 +16,6 @@ spec: singular: domachine scope: Namespaced versions: - - additionalPrinterColumns: - - description: Cluster to which this DOMachine belongs - jsonPath: .metadata.labels.cluster\.x-k8s\.io/cluster-name - name: Cluster - type: string - - description: DigitalOcean droplet instance state - jsonPath: .status.instanceStatus - name: State - type: string - - description: Machine ready status - jsonPath: .status.ready - name: Ready - type: string - - description: DigitalOcean droplet instance ID - jsonPath: .spec.providerID - name: InstanceID - type: string - - description: Machine object which owns with this DOMachine - jsonPath: .metadata.ownerReferences[?(@.kind=="Machine")].name - name: Machine - type: string - name: v1alpha3 - schema: - openAPIV3Schema: - description: DOMachine is the Schema for the domachines 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: DOMachineSpec defines the desired state of DOMachine. - properties: - additionalTags: - description: AdditionalTags is an optional set of tags to add to DigitalOcean - resources managed by the DigitalOcean provider. - items: - type: string - type: array - dataDisks: - description: DataDisks specifies the parameters that are used to add - one or more data disks to the machine - items: - description: DataDisk specifies the parameters that are used to - add a data disk to the machine. - properties: - diskSizeGB: - description: DiskSizeGB is the size in GB to assign to the data - disk. - format: int64 - type: integer - filesystemLabel: - description: 'FilesystemLabel is the label that is applied to - the created filesystem. Character limits apply: 16 for ext4; - 12 for xfs. May only be used in conjunction with filesystemType.' - type: string - filesystemType: - description: FilesystemType to be used on the volume. When provided - the volume will be automatically formatted. - type: string - nameSuffix: - description: NameSuffix is the suffix to be appended to the - machine name to generate the disk name. Each disk name will - be in format -. - type: string - required: - - diskSizeGB - - nameSuffix - type: object - type: array - image: - anyOf: - - type: integer - - type: string - description: Droplet image can be image id or slug. See https://developers.digitalocean.com/documentation/v2/#list-all-images - x-kubernetes-int-or-string: true - providerID: - description: ProviderID is the unique identifier as specified by the - cloud provider. - type: string - size: - description: Droplet size. It must be known DigitalOcean droplet size. - See https://developers.digitalocean.com/documentation/v2/#list-all-sizes - type: string - sshKeys: - description: SSHKeys is the ssh key id or fingerprint to attach in - DigitalOcean droplet. It must be available on DigitalOcean account. - See https://developers.digitalocean.com/documentation/v2/#list-all-keys - items: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: array - required: - - image - - size - - sshKeys - type: object - status: - description: DOMachineStatus defines the observed state of DOMachine. - properties: - addresses: - description: Addresses contains the DigitalOcean droplet associated - addresses. - items: - description: NodeAddress contains information for the node's address. - properties: - address: - description: The node address. - type: string - type: - description: Node 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 Machine 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 Machine'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 Machines can be added as events - to the Machine 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 Machine 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 Machine'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 Machines can be added as events to - the Machine object and/or logged in the controller's output." - type: string - instanceStatus: - description: InstanceStatus is the status of the DigitalOcean droplet - instance for this machine. - type: string - ready: - description: Ready is true when the provider resource is ready. - type: boolean - volumes: - description: Volumes contains the DigitalOcean droplet associated - block storage volumes. - items: - description: DOVolume defines a DO Block Storage Volume. - properties: - id: - type: string - required: - - id - type: object - type: array - type: object - type: object - served: true - storage: false - subresources: - status: {} - additionalPrinterColumns: - description: Cluster to which this DOMachine belongs jsonPath: .metadata.labels.cluster\.x-k8s\.io/cluster-name @@ -566,9 +382,3 @@ spec: storage: true subresources: status: {} -status: - acceptedNames: - kind: "" - plural: "" - conditions: [] - storedVersions: [] diff --git a/config/crd/bases/infrastructure.cluster.x-k8s.io_domachinetemplates.yaml b/config/crd/bases/infrastructure.cluster.x-k8s.io_domachinetemplates.yaml index 309770270..9d485cd89 100644 --- a/config/crd/bases/infrastructure.cluster.x-k8s.io_domachinetemplates.yaml +++ b/config/crd/bases/infrastructure.cluster.x-k8s.io_domachinetemplates.yaml @@ -3,8 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.8.0 - creationTimestamp: null + controller-gen.kubebuilder.io/version: v0.13.0 name: domachinetemplates.infrastructure.cluster.x-k8s.io spec: group: infrastructure.cluster.x-k8s.io @@ -17,111 +16,6 @@ spec: singular: domachinetemplate scope: Namespaced versions: - - name: v1alpha3 - schema: - openAPIV3Schema: - description: DOMachineTemplate is the Schema for the domachinetemplates 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: DOMachineTemplateSpec defines the desired state of DOMachineTemplate. - properties: - template: - description: DOMachineTemplateResource describes the data needed to - create am DOMachine from a template. - properties: - spec: - description: Spec is the specification of the desired behavior - of the machine. - properties: - additionalTags: - description: AdditionalTags is an optional set of tags to - add to DigitalOcean resources managed by the DigitalOcean - provider. - items: - type: string - type: array - dataDisks: - description: DataDisks specifies the parameters that are used - to add one or more data disks to the machine - items: - description: DataDisk specifies the parameters that are - used to add a data disk to the machine. - properties: - diskSizeGB: - description: DiskSizeGB is the size in GB to assign - to the data disk. - format: int64 - type: integer - filesystemLabel: - description: 'FilesystemLabel is the label that is applied - to the created filesystem. Character limits apply: - 16 for ext4; 12 for xfs. May only be used in conjunction - with filesystemType.' - type: string - filesystemType: - description: FilesystemType to be used on the volume. - When provided the volume will be automatically formatted. - type: string - nameSuffix: - description: NameSuffix is the suffix to be appended - to the machine name to generate the disk name. Each - disk name will be in format -. - type: string - required: - - diskSizeGB - - nameSuffix - type: object - type: array - image: - anyOf: - - type: integer - - type: string - description: Droplet image can be image id or slug. See https://developers.digitalocean.com/documentation/v2/#list-all-images - x-kubernetes-int-or-string: true - providerID: - description: ProviderID is the unique identifier as specified - by the cloud provider. - type: string - size: - description: Droplet size. It must be known DigitalOcean droplet - size. See https://developers.digitalocean.com/documentation/v2/#list-all-sizes - type: string - sshKeys: - description: SSHKeys is the ssh key id or fingerprint to attach - in DigitalOcean droplet. It must be available on DigitalOcean - account. See https://developers.digitalocean.com/documentation/v2/#list-all-keys - items: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: array - required: - - image - - size - - sshKeys - type: object - required: - - spec - type: object - required: - - template - type: object - type: object - served: true - storage: false - name: v1alpha4 schema: openAPIV3Schema: @@ -332,9 +226,3 @@ spec: type: object served: true storage: true -status: - acceptedNames: - kind: "" - plural: "" - conditions: [] - storedVersions: [] diff --git a/config/manager/manager.yaml b/config/manager/manager.yaml index 876535f5b..d6606bed6 100644 --- a/config/manager/manager.yaml +++ b/config/manager/manager.yaml @@ -20,24 +20,28 @@ spec: spec: serviceAccountName: manager containers: - - args: - - --leader-elect - - --metrics-bind-addr=127.0.0.1:8080 - image: controller:latest - imagePullPolicy: Always - name: manager - ports: - - containerPort: 9440 - name: healthz - protocol: TCP - readinessProbe: - httpGet: - path: /readyz - port: healthz - livenessProbe: - httpGet: - path: /healthz - port: healthz + - args: + - --leader-elect + - "--diagnostics-address=:8444" + - "--insecure-diagnostics=false" + image: controller:latest + imagePullPolicy: Always + name: manager + ports: + - containerPort: 9440 + name: healthz + protocol: TCP + - containerPort: 8444 + name: metrics + protocol: TCP + readinessProbe: + httpGet: + path: /readyz + port: healthz + livenessProbe: + httpGet: + path: /healthz + port: healthz terminationGracePeriodSeconds: 10 tolerations: - effect: NoSchedule diff --git a/config/rbac/role.yaml b/config/rbac/role.yaml index 974062813..a11d5e5f7 100644 --- a/config/rbac/role.yaml +++ b/config/rbac/role.yaml @@ -2,7 +2,6 @@ apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: - creationTimestamp: null name: manager-role rules: - apiGroups: @@ -24,6 +23,18 @@ rules: - get - list - watch +- apiGroups: + - authentication.k8s.io + resources: + - tokenreviews + verbs: + - create +- apiGroups: + - authorization.k8s.io + resources: + - subjectaccessreviews + verbs: + - create - apiGroups: - cluster.x-k8s.io resources: diff --git a/config/webhook/manifests.yaml b/config/webhook/manifests.yaml index a9c3b364a..d5f3e858f 100644 --- a/config/webhook/manifests.yaml +++ b/config/webhook/manifests.yaml @@ -2,7 +2,6 @@ apiVersion: admissionregistration.k8s.io/v1 kind: MutatingWebhookConfiguration metadata: - creationTimestamp: null name: mutating-webhook-configuration webhooks: - admissionReviewVersions: @@ -93,7 +92,6 @@ webhooks: apiVersion: admissionregistration.k8s.io/v1 kind: ValidatingWebhookConfiguration metadata: - creationTimestamp: null name: validating-webhook-configuration webhooks: - admissionReviewVersions: diff --git a/controllers/domachine_controller_unit_test.go b/controllers/domachine_controller_unit_test.go index 3581fe115..69a960f11 100644 --- a/controllers/domachine_controller_unit_test.go +++ b/controllers/domachine_controller_unit_test.go @@ -148,7 +148,7 @@ func TestDOMachineReconciler_DOClusterToDOMachines(t *testing.T) { }, } for _, tt := range tests { - t.Run(tt.name, func(t *testing.T) { + t.Run(tt.name, func(_ *testing.T) { r := &DOMachineReconciler{ Client: tt.fields.Client, Recorder: tt.fields.Recorder, diff --git a/controllers/suite_test.go b/controllers/suite_test.go index 1d67c4b17..28caf5668 100644 --- a/controllers/suite_test.go +++ b/controllers/suite_test.go @@ -26,7 +26,6 @@ import ( "k8s.io/client-go/kubernetes/scheme" "k8s.io/client-go/rest" "k8s.io/klog/v2" - "k8s.io/klog/v2/klogr" clusterv1 "sigs.k8s.io/cluster-api/api/v1beta1" "sigs.k8s.io/controller-runtime/pkg/client" @@ -58,7 +57,7 @@ func TestAPIs(t *testing.T) { var _ = BeforeSuite(func() { klog.InitFlags(nil) klog.SetOutput(GinkgoWriter) - logf.SetLogger(klogr.New()) + logf.SetLogger(klog.Background()) By("bootstrapping test environment") testEnv = &envtest.Environment{ diff --git a/go.mod b/go.mod index 26accdea8..d26021a10 100644 --- a/go.mod +++ b/go.mod @@ -1,6 +1,6 @@ module sigs.k8s.io/cluster-api-provider-digitalocean -go 1.20 +go 1.21 require ( github.com/digitalocean/godo v1.110.0 @@ -12,14 +12,14 @@ require ( github.com/pkg/errors v0.9.1 github.com/spf13/pflag v1.0.5 golang.org/x/oauth2 v0.19.0 - k8s.io/api v0.27.6 - k8s.io/apimachinery v0.27.6 - k8s.io/client-go v0.27.6 - k8s.io/klog/v2 v2.90.1 - k8s.io/utils v0.0.0-20230209194617-a36077c30491 - sigs.k8s.io/cluster-api v1.5.2 - sigs.k8s.io/cluster-api/test v1.5.2 - sigs.k8s.io/controller-runtime v0.15.2 + k8s.io/api v0.28.9 + k8s.io/apimachinery v0.28.9 + k8s.io/client-go v0.28.9 + k8s.io/klog/v2 v2.100.1 + k8s.io/utils v0.0.0-20240310230437-4693a0247e57 + sigs.k8s.io/cluster-api v1.6.4 + sigs.k8s.io/cluster-api/test v1.6.4 + sigs.k8s.io/controller-runtime v0.16.5 ) require ( @@ -29,43 +29,51 @@ require ( github.com/Masterminds/semver/v3 v3.2.0 // indirect github.com/Masterminds/sprig/v3 v3.2.3 // indirect github.com/Microsoft/go-winio v0.5.0 // indirect + github.com/NYTimes/gziphandler v1.1.1 // indirect + github.com/ProtonMail/go-crypto v0.0.0-20230217124315-7d5c6f04bbb8 // indirect github.com/adrg/xdg v0.4.0 // indirect github.com/alessio/shellescape v1.4.1 // indirect - github.com/antlr/antlr4/runtime/Go/antlr v1.4.10 // indirect + github.com/antlr/antlr4/runtime/Go/antlr/v4 v4.0.0-20230305170008-8188dc5388df // indirect github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a // indirect github.com/beorn7/perks v1.0.1 // indirect - github.com/blang/semver v3.5.1+incompatible // indirect github.com/blang/semver/v4 v4.0.0 // indirect + github.com/cenkalti/backoff/v4 v4.2.1 // indirect github.com/cespare/xxhash/v2 v2.2.0 // indirect - github.com/coredns/caddy v1.1.0 // indirect - github.com/coredns/corefile-migration v1.0.21 // indirect - github.com/davecgh/go-spew v1.1.1 // indirect - github.com/docker/distribution v2.8.2+incompatible // indirect - github.com/docker/docker v24.0.5+incompatible // indirect + github.com/cloudflare/circl v1.3.7 // indirect + github.com/coreos/go-semver v0.3.1 // indirect + github.com/coreos/go-systemd/v22 v22.5.0 // 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/docker v24.0.9+incompatible // indirect github.com/docker/go-connections v0.4.0 // indirect github.com/docker/go-units v0.4.0 // indirect github.com/drone/envsubst/v2 v2.0.0-20210730161058-179042472c46 // indirect - github.com/emicklei/go-restful/v3 v3.10.2 // 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.6.0 // indirect + github.com/evanphx/json-patch/v5 v5.7.0 // indirect + github.com/felixge/httpsnoop v1.0.4 // indirect github.com/fsnotify/fsnotify v1.6.0 // 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.1 // indirect + github.com/go-openapi/jsonreference v0.20.2 // indirect github.com/go-openapi/swag v0.22.3 // indirect github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572 // 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/google/cel-go v0.12.6 // indirect - github.com/google/gnostic v0.6.9 // indirect + github.com/golang/protobuf v1.5.4 // indirect + github.com/google/cel-go v0.16.1 // indirect + github.com/google/gnostic-models v0.6.8 // indirect github.com/google/go-cmp v0.6.0 // indirect - github.com/google/go-github/v48 v48.2.0 // indirect + github.com/google/go-github/v53 v53.2.0 // indirect github.com/google/go-querystring v1.1.0 // indirect github.com/google/gofuzz v1.2.0 // indirect github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1 // indirect github.com/google/safetext v0.0.0-20220905092116-b49f7bc46da2 // indirect - github.com/google/uuid v1.3.0 // indirect + github.com/google/uuid v1.3.1 // indirect + github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0 // indirect + github.com/grpc-ecosystem/grpc-gateway/v2 v2.16.0 // indirect github.com/hashicorp/go-cleanhttp v0.5.2 // indirect github.com/hashicorp/go-retryablehttp v0.7.4 // indirect github.com/hashicorp/hcl v1.0.0 // indirect @@ -76,7 +84,7 @@ require ( github.com/json-iterator/go v1.1.12 // indirect github.com/magiconair/properties v1.8.7 // indirect github.com/mailru/easyjson v0.7.7 // indirect - github.com/mattn/go-isatty v0.0.17 // indirect + github.com/mattn/go-isatty v0.0.20 // indirect github.com/matttproud/golang_protobuf_extensions v1.0.4 // indirect github.com/mitchellh/copystructure v1.2.0 // indirect github.com/mitchellh/mapstructure v1.5.0 // indirect @@ -87,45 +95,75 @@ require ( github.com/opencontainers/go-digest v1.0.0 // indirect github.com/opencontainers/image-spec v1.0.2 // indirect github.com/pelletier/go-toml v1.9.5 // indirect - github.com/pelletier/go-toml/v2 v2.0.8 // indirect - github.com/prometheus/client_golang v1.16.0 // indirect - github.com/prometheus/client_model v0.4.0 // indirect - github.com/prometheus/common v0.42.0 // indirect - github.com/prometheus/procfs v0.10.1 // indirect + github.com/pelletier/go-toml/v2 v2.1.0 // indirect + github.com/prometheus/client_golang v1.17.0 // indirect + github.com/prometheus/client_model v0.4.1-0.20230718164431-9a2bf3000d16 // indirect + github.com/prometheus/common v0.44.0 // indirect + github.com/prometheus/procfs v0.11.1 // indirect + github.com/sagikazarmark/locafero v0.3.0 // indirect + github.com/sagikazarmark/slog-shim v0.1.0 // indirect github.com/shopspring/decimal v1.3.1 // indirect - github.com/spf13/afero v1.9.5 // 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/cobra v1.7.0 // indirect - github.com/spf13/jwalterweatherman v1.1.0 // indirect - github.com/spf13/viper v1.16.0 // indirect + github.com/spf13/cobra v1.8.0 // indirect + github.com/spf13/viper v1.17.0 // indirect github.com/stoewer/go-strcase v1.2.0 // indirect - github.com/subosito/gotenv v1.4.2 // indirect + github.com/subosito/gotenv v1.6.0 // indirect github.com/valyala/fastjson v1.6.4 // indirect + go.etcd.io/etcd/api/v3 v3.5.10 // indirect + go.etcd.io/etcd/client/pkg/v3 v3.5.10 // indirect + go.etcd.io/etcd/client/v3 v3.5.10 // indirect + go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.46.0 // indirect + go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.46.0 // indirect + go.opentelemetry.io/otel v1.20.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.20.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.20.0 // indirect + go.opentelemetry.io/otel/metric v1.20.0 // indirect + go.opentelemetry.io/otel/sdk v1.20.0 // indirect + go.opentelemetry.io/otel/trace v1.20.0 // indirect + go.opentelemetry.io/proto/otlp v1.0.0 // indirect + go.uber.org/multierr v1.11.0 // indirect + go.uber.org/zap v1.25.0 // indirect golang.org/x/crypto v0.21.0 // indirect + golang.org/x/exp v0.0.0-20230905200255-921286631fa9 // indirect golang.org/x/mod v0.16.0 // indirect golang.org/x/net v0.23.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/tools v0.19.0 // indirect - gomodules.xyz/jsonpatch/v2 v2.3.0 // indirect - google.golang.org/genproto v0.0.0-20230410155749-daa745c078e1 // indirect + gomodules.xyz/jsonpatch/v2 v2.4.0 // indirect + google.golang.org/genproto v0.0.0-20230913181813-007df8e322eb // 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/grpc v1.59.0 // 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/natefinch/lumberjack.v2 v2.2.1 // indirect gopkg.in/yaml.v2 v2.4.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect gotest.tools/v3 v3.5.0 // indirect - k8s.io/apiextensions-apiserver v0.27.2 // indirect - k8s.io/apiserver v0.27.2 // indirect - k8s.io/cluster-bootstrap v0.27.2 // indirect - k8s.io/component-base v0.27.2 // indirect - k8s.io/kube-openapi v0.0.0-20230501164219-8b0f38b5fd1f // indirect + k8s.io/apiextensions-apiserver v0.28.4 // indirect + k8s.io/apiserver v0.28.4 // indirect + k8s.io/cluster-bootstrap v0.28.4 // indirect + k8s.io/component-base v0.28.4 // indirect + k8s.io/kms v0.28.4 // indirect + k8s.io/kube-openapi v0.0.0-20230717233707-2695361300d9 // indirect + sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.1.2 // indirect sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd // indirect sigs.k8s.io/kind v0.20.0 // indirect sigs.k8s.io/structured-merge-diff/v4 v4.2.3 // indirect - sigs.k8s.io/yaml v1.3.0 // indirect + sigs.k8s.io/yaml v1.4.0 // indirect ) -replace sigs.k8s.io/cluster-api => sigs.k8s.io/cluster-api v1.5.2 +replace ( + // pinning cel-go due to a breaking change https://github.com/kubernetes/apiserver/issues/97 + github.com/google/cel-go => github.com/google/cel-go v0.16.1 + // kube-openapi should match the version imported by CAPI. + k8s.io/kube-openapi => k8s.io/kube-openapi v0.0.0-20230717233707-2695361300d9 + sigs.k8s.io/cluster-api => sigs.k8s.io/cluster-api v1.6.4 +) diff --git a/go.sum b/go.sum index 5e04ffc08..dc8fa0efc 100644 --- a/go.sum +++ b/go.sum @@ -17,15 +17,19 @@ cloud.google.com/go v0.65.0/go.mod h1:O5N8zS7uWy9vkA9vayVHs65eM1ubvY4h553ofrNHOb 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 v0.110.7 h1:rJyC7nWRg2jWGZ4wSJ5nY65GTdYJkg0cd/uXb+ACI6o= 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/compute v1.23.0 h1:tP41Zoavr8ptEqaW6j+LQOnyBBhO7OkOMAGrgLopTwY= +cloud.google.com/go/compute v1.23.0/go.mod h1:4tCnrn48xsqlwSAiLf1HXMQk8CONslYbdiEZc9FEIbM= +cloud.google.com/go/compute/metadata v0.2.3 h1:mg4jlk7mCAj6xXp9UJ4fjI9VUI5rubuGBW5aJ7UnBMY= +cloud.google.com/go/compute/metadata v0.2.3/go.mod h1:VAV5nSsACxMJvgaAuX6Pk2AawlZn8kiOGuCv6gTkwuA= 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/firestore v1.1.0/go.mod h1:ulACoGHTpvq5r8rxGJ4ddJZBZqakUQqClKRT5SZwBmk= 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= @@ -38,6 +42,7 @@ cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9 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= @@ -52,124 +57,125 @@ github.com/Masterminds/sprig/v3 v3.2.3 h1:eL2fZNezLomi0uOLqjQoN6BfsDD+fyLtgbJMAj github.com/Masterminds/sprig/v3 v3.2.3/go.mod h1:rXcFaZ2zZbLRJv/xSysmlgIM1u11eBaRMhvYXJNkGuM= github.com/Microsoft/go-winio v0.5.0 h1:Elr9Wn+sGKPlkaBvwu4mTrxtmOp3F3yV9qhaHbXGjwU= github.com/Microsoft/go-winio v0.5.0/go.mod h1:JPGBdM1cNvN/6ISo+n8V5iA4v8pBzdOpzfwIujj1a84= -github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= +github.com/NYTimes/gziphandler v1.1.1 h1:ZUDjpQae29j0ryrS0u/B8HZfJBtBQHjqw2rQ2cqUQ3I= +github.com/NYTimes/gziphandler v1.1.1/go.mod h1:n/CVRwUEOgIxrgPvAQhUUr9oeUtvrhMomdKFjzJNB0c= +github.com/ProtonMail/go-crypto v0.0.0-20230217124315-7d5c6f04bbb8 h1:wPbRQzjjwFc0ih8puEVAOFGELsn1zoIIYdxvML7mDxA= +github.com/ProtonMail/go-crypto v0.0.0-20230217124315-7d5c6f04bbb8/go.mod h1:I0gYDMZ6Z5GRU7l58bNFSkPTFN6Yl12dsUlAZ8xy98g= github.com/adrg/xdg v0.4.0 h1:RzRqFcjH4nE5C6oTAxhBtoE2IRyjBSa62SCbyPidvls= github.com/adrg/xdg v0.4.0/go.mod h1:N6ag73EX4wyxeaoeHctc1mas01KZgsj5tYiAIwqJE/E= -github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= -github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= github.com/alessio/shellescape v1.4.1 h1:V7yhSDDn8LP4lc4jS8pFkt0zCnzVJlG5JXy9BVKJUX0= github.com/alessio/shellescape v1.4.1/go.mod h1:PZAiSCk0LJaZkiCSkPv8qIobYglO3FPpyFjDCtHLS30= -github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= -github.com/antlr/antlr4/runtime/Go/antlr v1.4.10 h1:yL7+Jz0jTC6yykIK/Wh74gnTJnrGr5AyrNMXuA0gves= -github.com/antlr/antlr4/runtime/Go/antlr v1.4.10/go.mod h1:F7bn7fEU90QkQ3tnmaTx3LTKLEDqnwWODIYppRQ5hnY= -github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o= -github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY= -github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= +github.com/antlr/antlr4/runtime/Go/antlr/v4 v4.0.0-20230305170008-8188dc5388df h1:7RFfzj4SSt6nnvCPbCqijJi1nWCd+TqAT3bYCStRC18= +github.com/antlr/antlr4/runtime/Go/antlr/v4 v4.0.0-20230305170008-8188dc5388df/go.mod h1:pSwJ0fSY5KhvocuWSx4fz3BA8OrA1bQn+K1Eli3BRwM= github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a h1:idn718Q4B6AGu/h5Sxe66HYVdqdGu2l9Iebqhi/AEoA= github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a/go.mod h1:lB+ZfQJz7igIIfQNfa7Ml4HSf2uFQQRzpGGRXenZAgY= -github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= -github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= +github.com/benbjohnson/clock v1.3.0 h1:ip6w0uFQkncKQ979AypyG0ER7mqUSBdKLOgAle/AT8A= +github.com/benbjohnson/clock v1.3.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= 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/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= -github.com/bketelsen/crypt v0.0.3-0.20200106085610-5cbc8cc4026c/go.mod h1:MKsuJmJgSg28kpZDP6UIiPt0e0Oz0kqKNGyRaWEPv84= -github.com/blang/semver v3.5.1+incompatible h1:cQNTCjp13qL8KC3Nbxr/y2Bqb63oX6wdnnjpJbkM4JQ= -github.com/blang/semver v3.5.1+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk= github.com/blang/semver/v4 v4.0.0 h1:1PFHFE6yCCTv8C1TeyNNarDzntLi7wMI5i/pzqYIsAM= github.com/blang/semver/v4 v4.0.0/go.mod h1:IbckMUScFkM3pff0VJDNKRiT6TG/YpiHIM2yvyW5YoQ= -github.com/buger/jsonparser v1.1.1/go.mod h1:6RYKKt7H4d4+iWqouImQ9R2FZql3VbhNgx27UK13J/0= +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 v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= 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/cncf/xds/go v0.0.0-20210312221358-fbca930ec8ed/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cncf/xds/go v0.0.0-20230607035331-e9ce68804cb4 h1:/inchEIKaYC1Akx+H+gqO04wryn5h75LSazbRlnya1k= +github.com/cncf/xds/go v0.0.0-20230607035331-e9ce68804cb4/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/coredns/caddy v1.1.0 h1:ezvsPrT/tA/7pYDBZxu0cT0VmWk75AfIaf6GSYCNMf0= github.com/coredns/caddy v1.1.0/go.mod h1:A6ntJQlAWuQfFlsd9hvigKbo2WS0VUs2l1e2F+BawD4= github.com/coredns/corefile-migration v1.0.21 h1:W/DCETrHDiFo0Wj03EyMkaQ9fwsmSgqTCQDHpceaSsE= github.com/coredns/corefile-migration v1.0.21/go.mod h1:XnhgULOEouimnzgn0t4WPuFDN2/PJQcTxdWKC5eXNGE= -github.com/coreos/bbolt v1.3.2/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk= -github.com/coreos/etcd v3.3.13+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= -github.com/coreos/go-semver v0.3.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= -github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= -github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= -github.com/cpuguy83/go-md2man/v2 v2.0.0/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= +github.com/coreos/go-semver v0.3.1 h1:yi21YpKnrx1gt5R+la8n5WgS0kCrsPp33dmEyHReZr4= +github.com/coreos/go-semver v0.3.1/go.mod h1:irMmmIw/7yzSRPWryHsK7EYSg09caPQL03VsM8rvUec= +github.com/coreos/go-systemd/v22 v22.5.0 h1:RrqgGjYQKalulkV8NGVIfkXQf6YYmOyiJKk8iXXhfZs= +github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= github.com/cpuguy83/go-md2man/v2 v2.0.1/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= -github.com/cpuguy83/go-md2man/v2 v2.0.2/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= +github.com/cpuguy83/go-md2man/v2 v2.0.3/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= -github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no= +github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM= +github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/digitalocean/godo v1.110.0 h1:EY+rewWCYrUNOPbk9wI2Ytf0TBSRTJcZ6BINCb5dfmQ= github.com/digitalocean/godo v1.110.0/go.mod h1:R6EmmWI8CT1+fCtjWY9UCB+L5uufuZH13wk3YhxycCs= -github.com/docker/distribution v2.8.2+incompatible h1:T3de5rq0dB1j30rp0sA2rER+m322EBzniBPB6ZIzuh8= -github.com/docker/distribution v2.8.2+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w= -github.com/docker/docker v24.0.5+incompatible h1:WmgcE4fxyI6EEXxBRxsHnZXrO1pQ3smi0k/jho4HLeY= -github.com/docker/docker v24.0.5+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= +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.9+incompatible h1:HPGzNmwfLZWdxHqK9/II92pyi1EpYKsAqcl4G0Of9v0= +github.com/docker/docker v24.0.9+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/go-units v0.4.0 h1:3uh0PgVws3nIA0Q+MwDC8yjEPf9zjRfZZWXZYDct3Tw= github.com/docker/go-units v0.4.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= -github.com/docopt/docopt-go v0.0.0-20180111231733-ee0de3bc6815/go.mod h1:WwZ+bS3ebgob9U8Nd0kOddGdZWjyMGR8Wziv+TBNwSE= 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.10.2 h1:hIovbnmBTLjHXkqEBUz3HGpXZdM7ZrE9fJIZIqlJLqE= -github.com/emicklei/go-restful/v3 v3.10.2/go.mod h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc= +github.com/dustin/go-humanize v1.0.1 h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkpeCY= +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/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/go-control-plane v0.9.9-0.20210512163311-63b5d3c536b0/go.mod h1:hliV/p42l8fGbc6Y9bQ70uLwIvmJyVE5k4iMKlh8wCQ= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= +github.com/envoyproxy/protoc-gen-validate v1.0.2 h1:QkIBuU5k+x7/QXPvPPnWXWlCdaBFApVqftFV6k087DA= +github.com/envoyproxy/protoc-gen-validate v1.0.2/go.mod h1:GpiZQP3dDbg4JouG/NNS7QWXpgx6x8QiMKdmN72jogE= 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.6.0 h1:b91NhWfaz02IuVxO9faSllyAtNXHMPkC5J8sJCLunww= github.com/evanphx/json-patch/v5 v5.6.0/go.mod h1:G79N1coSVB93tBe7j6PhzjmR3/2VvlbKOFpnXhI9Bw4= -github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= -github.com/fatih/color v1.15.0 h1:kOqh6YHBtK8aywxGerMG2Eq3H6Qgoqeo13Bk2Mv/nBs= -github.com/flowstack/go-jsonschema v0.1.1/go.mod h1:yL7fNggx1o8rm9RlgXv7hTBWxdBM0rVwpMwimd3F3N0= -github.com/flynn/go-shlex v0.0.0-20150515145356-3f9db97f8568/go.mod h1:xEzjJPgXI435gkrCt3MPfRiAkVrwSbHsst4LCFVfpJc= +github.com/evanphx/json-patch/v5 v5.7.0 h1:nJqP7uwL84RJInrohHfW0Fx3awjbm8qZeFv0nW9SYGc= +github.com/evanphx/json-patch/v5 v5.7.0/go.mod h1:VNkHZ/282BpEyt/tObQO8s5CMPmYYq14uClGH4abBuQ= +github.com/fatih/color v1.16.0 h1:zmkK9Ngbjj+K0yRhTVONQh1p/HknKYSlNT+vZCzyokM= +github.com/fatih/color v1.16.0/go.mod h1:fL2Sau1YI5c0pdGEVCbKQbLXB6edEj1ZgiY4NijnWvE= +github.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg= +github.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= github.com/frankban/quicktest v1.14.4 h1:g2rn0vABPOOXmZUj+vbmUp0lPoXEMuhTpIluN0XL9UY= -github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= +github.com/frankban/quicktest v1.14.4/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0= github.com/fsnotify/fsnotify v1.6.0 h1:n+5WquG0fcWoWp6xPWfHdbskMCQaFnG6PfBrh1Ky4HY= github.com/fsnotify/fsnotify v1.6.0/go.mod h1:sl3t1tCWJFWoRz9R8WJCbQihKKwmorjAbSClcnxKAGw= -github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= 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-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= -github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= -github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= github.com/go-logr/logr v1.2.0/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= +github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= github.com/go-logr/logr v1.4.1 h1:pKouT5E8xu9zeFC39JXRDukb6JFQPXM5p5I91188VAQ= github.com/go-logr/logr v1.4.1/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= +github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= +github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= github.com/go-logr/zapr v1.2.4 h1:QHVo+6stLbfJmYGkQ7uGHUCu5hnAFAj6mDe6Ea0SeOo= +github.com/go-logr/zapr v1.2.4/go.mod h1:FyHWQIzQORZ0QVE1BtVHv3cKtNLuXsbNLtpuhNapBOA= github.com/go-openapi/jsonpointer v0.19.6 h1:eCs3fxoIi3Wh6vtgmLTOjdhSpiqphQ+DaPn38N2ZdrE= github.com/go-openapi/jsonpointer v0.19.6/go.mod h1:osyAmYz/mB/C3I+WsTTSgw1ONzaLJoLCyoi6/zppojs= -github.com/go-openapi/jsonreference v0.20.1 h1:FBLnyygC4/IZZr893oiomc9XaghoveYTrLC1F86HID8= -github.com/go-openapi/jsonreference v0.20.1/go.mod h1:Bl1zwGIM8/wsvqjsOQLJ/SH+En5Ap4rVB5KVcIDZG2k= +github.com/go-openapi/jsonreference v0.20.2 h1:3sVjiK66+uXK/6oQ8xgcRKcFgQ5KXa2KvnJRumpMGbE= +github.com/go-openapi/jsonreference v0.20.2/go.mod h1:Bl1zwGIM8/wsvqjsOQLJ/SH+En5Ap4rVB5KVcIDZG2k= github.com/go-openapi/swag v0.22.3 h1:yMBqmnQ0gyZvEb/+KzuWZOXgllrXT4SADYbvDaXHv/g= github.com/go-openapi/swag v0.22.3/go.mod h1:UzaqsxGiab7freDnrUUra0MwWfN/q7tE4j+VcZ0yl14= -github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= 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.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= -github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4= +github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= +github.com/golang-jwt/jwt/v4 v4.5.0 h1:7cYmW1XlMY7h7ii7UhUyChSgS5wUJEnm9uZVTGqOWzg= +github.com/golang-jwt/jwt/v4 v4.5.0/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= -github.com/golang/groupcache v0.0.0-20190129154638-5b532d6fd5ef/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/glog v1.1.2 h1:DVjP2PbBOzHyzA+dn3WhHIq4NdVu3Q+pvivFICf/7fo= +github.com/golang/glog v1.1.2/go.mod h1:zR+okUeTbrL6EL3xHUDxZuEtGv04p5shwip1+mL/rLQ= 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= @@ -198,16 +204,16 @@ 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.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= -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/cel-go v0.12.6 h1:kjeKudqV0OygrAqA9fX6J55S8gj+Jre2tckIm5RoG4M= -github.com/google/cel-go v0.12.6/go.mod h1:Jk7ljRzLBhkmiAwBoUxB1sZSCVBAzkqPF25olK/iRDw= -github.com/google/gnostic v0.6.9 h1:ZK/5VhkoX835RikCHpSUJV9a+S3e1zLh59YnyWeBW+0= -github.com/google/gnostic v0.6.9/go.mod h1:Nm8234We1lq6iB9OmlgNv3nH91XLLVZHCDayfA3xq+E= +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.16.1 h1:3hZfSNiAU3KOiNtxuFXVp5WFy4hf/Ly3Sa4/7F8SXNo= +github.com/google/cel-go v0.16.1/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= @@ -217,11 +223,11 @@ 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= -github.com/google/go-github/v48 v48.2.0 h1:68puzySE6WqUY9KWmpOsDEQfDZsso98rT6pZcz9HqcE= -github.com/google/go-github/v48 v48.2.0/go.mod h1:dDlehKBDo850ZPvCTK0sEqTCVWcrGl2LcDiajkYi89Y= +github.com/google/go-github/v53 v53.2.0 h1:wvz3FyF53v4BK+AsnvCmeNhf8AkTaeh2SoYu/XUvTtI= +github.com/google/go-github/v53 v53.2.0/go.mod h1:XhFRObz+m/l+UCm9b7KSIC3lT3NWSXGt7mOsAWEloao= github.com/google/go-querystring v1.1.0 h1:AnCroh3fv4ZBgVIf1Iwtovgjaw/GiKJo8M8yD/fhyJ8= github.com/google/go-querystring v1.1.0/go.mod h1:Kcdr2DB4koayq7X8pmAG4sNG59So17icRSOU623lUBU= github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= @@ -247,44 +253,32 @@ github.com/google/safetext v0.0.0-20220905092116-b49f7bc46da2 h1:SJ+NtwL6QaZ21U+ 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.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I= -github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +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/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/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= +github.com/gorilla/websocket v1.4.2 h1:+/TMaTYc4QFitKJxsQ7Yye35DkWvkdLcvGKqM+x0Ufc= github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= -github.com/grpc-ecosystem/go-grpc-middleware v1.0.0/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= +github.com/grpc-ecosystem/go-grpc-middleware v1.3.0 h1:+9834+KizmvFV7pXQGSXQTsaWhq2GjuNUt0aUU0YBYw= +github.com/grpc-ecosystem/go-grpc-middleware v1.3.0/go.mod h1:z0ButlSOZa5vEBq9m2m2hlwIgKw+rp3sdCBRoJY+30Y= +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.9.0/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= +github.com/grpc-ecosystem/grpc-gateway v1.16.0 h1:gmcG1KaJ57LophUzW0Hy8NmPhnMZb4M0+kPpLofRdBo= github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= -github.com/hashicorp/consul/api v1.1.0/go.mod h1:VmuI/Lkw1nC05EYQWNKwWGbkg+FbDBtguAZLlVdkD9Q= -github.com/hashicorp/consul/sdk v0.1.1/go.mod h1:VKf9jXwCTEY1QZP2MOLRhb5i/I/ssyNV1vwHyQBF0x8= -github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= -github.com/hashicorp/go-cleanhttp v0.5.1/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= +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/go-cleanhttp v0.5.2 h1:035FKYIWjmULyFRBKPs8TBQoi0x6d9G4xc9neXJWAZQ= github.com/hashicorp/go-cleanhttp v0.5.2/go.mod h1:kO/YDlP8L1346E6Sodw+PrpBSV4/SoxCXGY6BqNFT48= github.com/hashicorp/go-hclog v0.9.2/go.mod h1:5CU+agLiy3J7N7QjHK5d05KxGsuXiQLrjA0H7acj2lQ= -github.com/hashicorp/go-hclog v1.2.0 h1:La19f8d7WIlm4ogzNHB0JGqs5AUDAZ2UfCY4sJXcJdM= -github.com/hashicorp/go-immutable-radix v1.0.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= -github.com/hashicorp/go-msgpack v0.5.3/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iPBM1vqhUKIvfM= -github.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHhCYQXV3UM06sGGrk= +github.com/hashicorp/go-hclog v1.5.0 h1:bI2ocEMgcVlz55Oj1xZNBsVi900c7II+fWDyV9o+13c= +github.com/hashicorp/go-hclog v1.5.0/go.mod h1:W4Qnvbt70Wk/zYJryRzDRU/4r0kIg0PVHBcfoyhpF5M= github.com/hashicorp/go-retryablehttp v0.7.4 h1:ZQgVdpTdAL7WpMIwLzCfbalOcSUdkDZnpUv3/+BxzFA= github.com/hashicorp/go-retryablehttp v0.7.4/go.mod h1:Jy/gPYAdjqffZ/yFGCFV2doI5wjtH1ewM9u8iYVjtX8= -github.com/hashicorp/go-rootcerts v1.0.0/go.mod h1:K6zTfqpRlCUIjkwsN4Z+hiSfzSTQa6eBIzfwKfwNnHU= -github.com/hashicorp/go-sockaddr v1.0.0/go.mod h1:7Xibr9yA9JjQq1JpNB2Vw7kxv8xerXegt+ozgdvDeDU= -github.com/hashicorp/go-syslog v1.0.0/go.mod h1:qPfqrKkXGihmCqbJM2mZgkZGvKG1dFdvsLplgctolz4= -github.com/hashicorp/go-uuid v1.0.0/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= -github.com/hashicorp/go-uuid v1.0.1/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= -github.com/hashicorp/go.net v0.0.1/go.mod h1:hjKkEWcCURg++eb33jQU7oqQcI9XDCnUzHA0oac0k90= 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/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64= -github.com/hashicorp/mdns v1.0.0/go.mod h1:tL+uN++7HEJ6SQLQ2/p+z2pH24WQKWjBPkE0mNTz8vQ= -github.com/hashicorp/memberlist v0.1.3/go.mod h1:ajVTdAv/9Im8oMAAj5G31PhhMCZJV2pPBoIllUwCN7I= -github.com/hashicorp/serf v0.8.2/go.mod h1:6hOLApaqBFA1NXqRQAsxw9QxuDEvNxSQRwA/JwenrHc= github.com/huandu/xstrings v1.3.3 h1:/Gcsuc1x8JVbJ9/rlye4xZnVAbEkGauT8lbebqcQws4= github.com/huandu/xstrings v1.3.3/go.mod h1:y5/lhBue+AyNmUVz9RLU9xbLR0o4KIIExikq4ovT0aE= github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= @@ -296,77 +290,58 @@ github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANyt github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= -github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo= +github.com/jonboulle/clockwork v0.2.2 h1:UOGuzwb1PwsrDAObMuhUnj0p5ULPj8V/xJ7Kx9qUBdQ= +github.com/jonboulle/clockwork v0.2.2/go.mod h1:Pkfl5aHPm1nk2H9h0bjmnJD/BcgbGXUBGnn1kMkgxc8= github.com/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8HmY= github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y= -github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk= -github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= -github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= -github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q= 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/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg= -github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= -github.com/kr/pretty v0.2.0/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= +github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= -github.com/lithammer/dedent v1.1.0/go.mod h1:jrXYCQtgg0nJiN+StA2KgR7w6CiQNv9Fd/Z9BP0jIOc= -github.com/magiconair/properties v1.8.1/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= github.com/magiconair/properties v1.8.7 h1:IeQXZAiQcpL9mgcAe1Nu6cX9LLw6ExEHKjN0VQdvPDY= github.com/magiconair/properties v1.8.7/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0= github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0= github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc= -github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= -github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= +github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94= -github.com/mattn/go-isatty v0.0.17 h1:BTarxUcIeDqL27Mc+vyvdWYSL28zpIhv3RoTdsLMPng= -github.com/mattn/go-isatty v0.0.17/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= -github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= +github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= +github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= github.com/matttproud/golang_protobuf_extensions v1.0.4 h1:mmDVorXM7PCGKw94cs5zkfA9PSy5pEvNWRP0ET0TIVo= github.com/matttproud/golang_protobuf_extensions v1.0.4/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4= -github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= github.com/miekg/dns v1.1.59 h1:C9EXc/UToRwKLhK5wKU/I4QVsBUc8kE6MkHBkeypWZs= github.com/miekg/dns v1.1.59/go.mod h1:nZpewl5p6IvctfgrckopVx2OlSEHPRO/U4SYkRklrEk= -github.com/mitchellh/cli v1.0.0/go.mod h1:hNIlj7HEI86fIcpObd7a0FcrxTWetlwJDGcceTlRvqc= 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= -github.com/mitchellh/go-homedir v1.0.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= -github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= -github.com/mitchellh/go-testing-interface v1.0.0/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI= -github.com/mitchellh/gox v0.4.0/go.mod h1:Sd9lOJ0+aimLBi73mGofS1ycjY8lL3uZM3JPS42BGNg= -github.com/mitchellh/iochan v1.0.0/go.mod h1:JwYml1nuB7xOzsp52dPpHFffvOCDupsG0QubkSMEySY= -github.com/mitchellh/mapstructure v0.0.0-20160808181253-ca63d7c062ee/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= -github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY= github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= 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/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= 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= -github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M= github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= github.com/morikuni/aec v1.0.0 h1:nP9CBfwrvYnBRgY6qfDQkygYDmYwOilePFkwzv4dU8A= +github.com/morikuni/aec v1.0.0/go.mod h1:BbKIizmSmc5MMPqRYbxO4ZU0S0+P200+tUnFx7PXmsc= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= -github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= -github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U= github.com/onsi/ginkgo/v2 v2.17.1 h1:V++EzdbhI4ZV4ev0UTIj0PzhzOcReJFyJaLjtSF55M8= github.com/onsi/ginkgo/v2 v2.17.1/go.mod h1:llBI3WDLL9Z6taip6f33H76YcWtJv+7R3HigUjbIBOs= github.com/onsi/gomega v1.33.0 h1:snPCflnZrpMsy94p4lXVEkHo12lmPnc3vY5XBbreexE= @@ -375,81 +350,60 @@ github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8 github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM= github.com/opencontainers/image-spec v1.0.2 h1:9yCKha/T5XdGtO0q9Q9a6T5NUCsTn/DrBg0D7ufOcFM= github.com/opencontainers/image-spec v1.0.2/go.mod h1:BtxoFyWECRxE4U/7sNtV5W15zMzWCbyJoFRP3s7yZA0= -github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= -github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= github.com/pelletier/go-toml v1.9.4/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c= github.com/pelletier/go-toml v1.9.5 h1:4yBQzkHv+7BHq2PQUZF3Mx0IYxG7LsP222s7Agd3ve8= github.com/pelletier/go-toml v1.9.5/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c= -github.com/pelletier/go-toml/v2 v2.0.8 h1:0ctb6s9mE31h0/lhu+J6OPmVeDxJn+kYnJc2jZR9tGQ= -github.com/pelletier/go-toml/v2 v2.0.8/go.mod h1:vuYfssBdrU2XDZ9bYydBu6t+6a6PYNcZljzZR9VXg+4= -github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pelletier/go-toml/v2 v2.1.0 h1:FnwAJ4oYMvbT/34k9zzHuZNrhlz48GB3/s6at6/MHO4= +github.com/pelletier/go-toml/v2 v2.1.0/go.mod h1:tJU2Z3ZkXwnxa4DPO899bsyIoywizdUvyaeZurnPPDc= 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 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndrE9hABlRI= -github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= -github.com/prometheus/client_golang v0.9.3/go.mod h1:/TN21ttK/J9q6uSwhBd54HahCDft0ttaMvbicHlPoso= -github.com/prometheus/client_golang v1.16.0 h1:yk/hx9hDbrGHovbci4BY+pRMfSuuat626eFsHb7tmT8= -github.com/prometheus/client_golang v1.16.0/go.mod h1:Zsulrv/L9oM40tJ7T815tM89lFEugiJ9HzIqaAx4LKc= -github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= -github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/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.17.0 h1:rl2sfwZMtSthVU752MqfjQozy7blglC+1SOtjMAMh+Q= +github.com/prometheus/client_golang v1.17.0/go.mod h1:VeL+gMmOAxkS2IqfCq0ZmHSL+LjWfWDUmp1mBz9JgUY= github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/prometheus/client_model v0.4.0 h1:5lQXD3cAg1OXBf4Wq03gTrXHeaV0TQvGfUooCfx1yqY= -github.com/prometheus/client_model v0.4.0/go.mod h1:oMQmHW1/JoDwqLtg57MGgP/Fb1CJEYF2imWWhWtMkYU= -github.com/prometheus/common v0.0.0-20181113130724-41aa239b4cce/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= -github.com/prometheus/common v0.4.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= -github.com/prometheus/common v0.42.0 h1:EKsfXEYo4JpWMHH5cg+KOUWeuJSov1Id8zGR8eeI1YM= -github.com/prometheus/common v0.42.0/go.mod h1:xBwqVerjNdUDjgODMpudtOMwlOwf2SaTr1yjz4b7Zbc= -github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= -github.com/prometheus/procfs v0.0.0-20190507164030-5867b95ac084/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= -github.com/prometheus/procfs v0.10.1 h1:kYK1Va/YMlutzCGazswoHKo//tZVlFpKYh+PymziUAg= -github.com/prometheus/procfs v0.10.1/go.mod h1:nwNm2aOCAYw8uTR/9bWRREkZFxAUcWzPHWJq+XBB/FM= -github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU= -github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg= -github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= +github.com/prometheus/client_model v0.4.1-0.20230718164431-9a2bf3000d16 h1:v7DLqVdK4VrYkVD5diGdl4sxJurKJEMnODWRJlxV9oM= +github.com/prometheus/client_model v0.4.1-0.20230718164431-9a2bf3000d16/go.mod h1:oMQmHW1/JoDwqLtg57MGgP/Fb1CJEYF2imWWhWtMkYU= +github.com/prometheus/common v0.44.0 h1:+5BrQJwiBB9xsMygAB3TNvpQKOwlkc25LbISbrdOOfY= +github.com/prometheus/common v0.44.0/go.mod h1:ofAIvZbQ1e/nugmZGz4/qCb9Ap1VoSTIO7x0VV9VvuY= +github.com/prometheus/procfs v0.11.1 h1:xRC8Iq1yyca5ypa9n1EZnWZkt7dwcoRPQwX/5gwaUuI= +github.com/prometheus/procfs v0.11.1/go.mod h1:eesXgaPo1q7lBpVMoMy0ZOFTth9hBn4W/y0/p/ScXhY= github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= -github.com/rogpeppe/go-internal v1.11.0 h1:cWPaGQEPrBb5/AsnsZesgZZ9yb1OQ+GOISoDNXVBh4M= -github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= +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/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= -github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= +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/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/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= -github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= github.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= -github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= -github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= -github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM= -github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= -github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= -github.com/spf13/afero v1.9.5 h1:stMpOSZFs//0Lv29HduCmli3GUfpFoF3Y1Q/aXj/wVM= -github.com/spf13/afero v1.9.5/go.mod h1:UBogFpq8E9Hx+xc5CNTTEpTnuHVmXDwZcZcE1eb/UhQ= -github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= +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/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/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/cobra v1.1.3/go.mod h1:pGADOWyqRD/YMrPZigI/zbliZ2wVD/23d+is3pSWzOo= github.com/spf13/cobra v1.4.0/go.mod h1:Wo4iy3BUC+X2Fybo0PDqwJIv3dNRiZLHQymsfxlB84g= -github.com/spf13/cobra v1.7.0 h1:hyqWnYt1ZQShIddO5kBpj3vu05/++x6tJ6dg8EC572I= -github.com/spf13/cobra v1.7.0/go.mod h1:uLxZILRyS/50WlhOIKD7W6V5bgeIt+4sICxh6uRMrb0= -github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= -github.com/spf13/jwalterweatherman v1.1.0 h1:ue6voC5bR5F8YxI5S67j9i582FU4Qvo2bmqnqMYADFk= -github.com/spf13/jwalterweatherman v1.1.0/go.mod h1:aNWZUN0dPAAO/Ljvb5BEdw96iTZ0EXowPYD95IqWIGo= -github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= +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.7.0/go.mod h1:8WkrPz2fc9jxqZNCJI/76HCieCp4Q8HaLFoCha5qpdg= -github.com/spf13/viper v1.16.0 h1:rGGH0XDZhdUOryiDWjmIvUSWpbNqisK8Wk0Vyefw8hc= -github.com/spf13/viper v1.16.0/go.mod h1:yg78JgCJcbrQOvV9YLXgkLaZqUidkY9K+Dd1FofRzQg= +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/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= -github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= @@ -461,17 +415,15 @@ github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/ github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= -github.com/stretchr/testify v1.8.3/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= -github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw= -github.com/subosito/gotenv v1.4.2 h1:X1TuBLAMDFbaTAChgCBLu3DU3UPyELpnF2jjJ2cz/S8= -github.com/subosito/gotenv v1.4.2/go.mod h1:ayKnFf/c6rvx/2iiLrJUk1e6plDbT3edrFNGqEflhK0= -github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= +github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= +github.com/subosito/gotenv v1.6.0 h1:9NlTDc1FTs4qu0DDq7AEtTPNw6SVm7uBMsUCUjABIf8= +github.com/subosito/gotenv v1.6.0/go.mod h1:Dk4QP5c2W3ibzajGcXpNraDfq2IrhjMIvMSWPKKo0FU= +github.com/tmc/grpc-websocket-proxy v0.0.0-20220101234140-673ab2c3ae75 h1:6fotK7otjonDflCTK0BCfls4SPy3NcCVb5dqqmbRknE= +github.com/tmc/grpc-websocket-proxy v0.0.0-20220101234140-673ab2c3ae75/go.mod h1:KO6IkyS8Y3j8OdNO85qEYBsRPuteD+YciPomcXdrMnk= github.com/valyala/fastjson v1.6.4 h1:uAUNq9Z6ymTgGhcm0UynUAB6tlbakBrz6CQFax3BXVQ= github.com/valyala/fastjson v1.6.4/go.mod h1:CLCAqky6SMuOcxStkYQvblddUtoRxhYMGLrsQns1aXY= -github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f/go.mod h1:N2zxlSyiKSe5eX1tZViRH5QA0qijqEDrYZiPEAiq3wU= -github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415/go.mod h1:GwrjFmJcFw6At/Gs6z4yjiIwzuJ1/+UwLxMQDVQXShQ= -github.com/xeipuuv/gojsonschema v1.2.0/go.mod h1:anYRn/JVcOK2ZgGU+IjEV4nwlhoK5sQluxsYJ78Id3Y= +github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2 h1:eY9dn8+vbi4tKz5Qo6v2eYzo7kUS51QINcR5jNpbZS8= github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= @@ -479,23 +431,52 @@ github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9de github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= -go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= +go.etcd.io/bbolt v1.3.7 h1:j+zJOnnEjF/kyHlDDgGnVL/AIqIJPq8UoB2GSNfkUfQ= +go.etcd.io/bbolt v1.3.7/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/client/v2 v2.305.9 h1:YZ2OLi0OvR0H75AcgSUajjd5uqKDKocQUqROTG11jIo= +go.etcd.io/etcd/client/v2 v2.305.9/go.mod h1:0NBdNx9wbxtEQLwAQtrDHwx58m02vXpDcgSYI2seohQ= +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/pkg/v3 v3.5.9 h1:6R2jg/aWd/zB9+9JxmijDKStGJAPFsX3e6BeJkMi6eQ= +go.etcd.io/etcd/pkg/v3 v3.5.9/go.mod h1:BZl0SAShQFk0IpLWR78T/+pyt8AruMHhTNNX73hkNVY= +go.etcd.io/etcd/raft/v3 v3.5.9 h1:ZZ1GIHoUlHsn0QVqiRysAm3/81Xx7+i2d7nSdWxlOiI= +go.etcd.io/etcd/raft/v3 v3.5.9/go.mod h1:WnFkqzFdZua4LVlVXQEGhmooLeyS7mqzS4Pf4BCVqXg= +go.etcd.io/etcd/server/v3 v3.5.9 h1:vomEmmxeztLtS5OEH7d0hBAg4cjVIu9wXuNzUZx2ZA0= +go.etcd.io/etcd/server/v3 v3.5.9/go.mod h1:GgI1fQClQCFIzuVjlvdbMxNbnISt90gdfYyqiAIt65g= 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.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= -go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= -go.uber.org/atomic v1.9.0 h1:ECmE8Bn/WFTYwEW/bpKD3M8VtR/zQVbavAoalC1PYyE= -go.uber.org/goleak v1.2.1 h1:NBol2c7O1ZokfZ0LEU9K6Whx/KnwvepVetCUhtKja4A= -go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= -go.uber.org/multierr v1.8.0 h1:dg6GjLku4EH+249NNmoIciG9N/jURbDG+pFlTkhzIC8= -go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= -go.uber.org/zap v1.24.0 h1:FiJd5l1UOLj0wCgbSE0rwwXHzEdAZS6hiiSnxJN/D60= -golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= -golang.org/x/crypto v0.0.0-20181029021203-45a5f77698d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +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/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/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= +go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE= +go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0= +go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= +go.uber.org/zap v1.25.0 h1:4Hvk6GtkucQ790dqmj7l1eEnRdKm3k3ZUrUMS2d5+5c= +go.uber.org/zap v1.25.0/go.mod h1:JIAUzQIH94IC4fOJQm7gMmBJP5k7wQfdcnYdPoEXJYk= 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= @@ -517,6 +498,8 @@ golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u0 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= @@ -546,10 +529,6 @@ golang.org/x/mod v0.16.0 h1:QX4fJ0Rr5cPQCF7O9lh9Se4pmwfwskqZfq5moyldzic= golang.org/x/mod v0.16.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-20181023162649-9b4f9f5ad519/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181201002055-351d144fa1fc/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181220203305-927f97764cc3/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= @@ -580,7 +559,6 @@ golang.org/x/net v0.0.0-20201209123823-ac852fbbde11/go.mod h1:m0MpNAwzfU5UDzcl9v 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-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= -golang.org/x/net v0.0.0-20210805182204-aaa1db679c0d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= 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= @@ -610,12 +588,8 @@ golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/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/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +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-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181026203630-95b1ffbd15a5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181107165924-66b7b1311ac8/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -655,12 +629,13 @@ golang.org/x/sys v0.0.0-20210423185535-09eb48e85fd7/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= 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= golang.org/x/sys v0.0.0-20211025201205-69cdffdb9359/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220908164124-27713097b956/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= 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= @@ -674,7 +649,6 @@ golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3 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.5/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.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= @@ -685,14 +659,12 @@ golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxb 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/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= 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-20190328211700-ab21143f2384/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= @@ -702,7 +674,6 @@ golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgw 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-20191112195655-aa38f8e97acc/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= @@ -745,8 +716,8 @@ golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8T golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -gomodules.xyz/jsonpatch/v2 v2.3.0 h1:8NFhfS6gzxNqjLIYnZxg319wZ5Qjnx4m/CcX+Klzazc= -gomodules.xyz/jsonpatch/v2 v2.3.0/go.mod h1:AH3dM2RI6uoBZxn3LVrfvJ3E0/9dG4cSrbuBJT4moAY= +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= @@ -796,7 +767,6 @@ google.golang.org/genproto v0.0.0-20200312145019-da6875a35672/go.mod h1:55QSHmfG 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-20200513103714-09dca8ec2884/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= @@ -810,9 +780,12 @@ google.golang.org/genproto v0.0.0-20201210142538-e3217bee35cc/go.mod h1:FWY/as6D 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-20220107163113-42d7afdf6368/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20230410155749-daa745c078e1 h1:KpwkzHKEF7B9Zxg18WzOa7djJ+Ha5DzthMyZYQfEn2A= -google.golang.org/genproto v0.0.0-20230410155749-daa745c078e1/go.mod h1:nKE/iIaLqn2bQwXBg8f1g2Ylh6r5MN5CmZvuzZCgsCU= +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= @@ -826,12 +799,11 @@ google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3Iji 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.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTpR3n0= 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.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= -google.golang.org/grpc v1.40.0/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34= +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= @@ -842,36 +814,26 @@ 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.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= 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/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= 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.51.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/ini.v1 v1.67.0 h1:Dgnx+6+nfE+IfzjUEISNeydPJh9AXNNsWbGP9KzCsOA= gopkg.in/ini.v1 v1.67.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= -gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo= -gopkg.in/yaml.v2 v2.0.0-20170812160011-eb3733d160e7/go.mod h1:JAlM8MvJe8wmxCU4Bli9HhUf9+ttbYbLASfIpnQbh74= -gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/natefinch/lumberjack.v2 v2.2.1 h1:bBRl1b0OH9s/DuPhuXpNl+VtCaJXFZ5/uEFST95x9zc= +gopkg.in/natefinch/lumberjack.v2 v2.2.1/go.mod h1:YD8tP3GAjkrDg1eZH7EGmyESg/lsYskCTPBJVb9jqSc= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.2.3/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= 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= @@ -884,40 +846,45 @@ 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.27.6 h1:PBWu/lywJe2qQcshMjubzcBg7+XDZOo7O8JJAWuYtUo= -k8s.io/api v0.27.6/go.mod h1:AQYj0UsFCp3qJE7bOVnUuy4orCsXVkvHefnbYQiNWgk= -k8s.io/apiextensions-apiserver v0.27.2 h1:iwhyoeS4xj9Y7v8YExhUwbVuBhMr3Q4bd/laClBV6Bo= -k8s.io/apiextensions-apiserver v0.27.2/go.mod h1:Oz9UdvGguL3ULgRdY9QMUzL2RZImotgxvGjdWRq6ZXQ= -k8s.io/apimachinery v0.27.6 h1:mGU8jmBq5o8mWBov+mLjdTBcU+etTE19waies4AQ6NE= -k8s.io/apimachinery v0.27.6/go.mod h1:XNfZ6xklnMCOGGFNqXG7bUrQCoR04dh/E7FprV6pb+E= -k8s.io/apiserver v0.27.2 h1:p+tjwrcQEZDrEorCZV2/qE8osGTINPuS5ZNqWAvKm5E= -k8s.io/apiserver v0.27.2/go.mod h1:EsOf39d75rMivgvvwjJ3OW/u9n1/BmUMK5otEOJrb1Y= -k8s.io/client-go v0.27.6 h1:vzI8804gpUtpMCNaFjIFyJrifH7u//LJCJPy8fQuYQg= -k8s.io/client-go v0.27.6/go.mod h1:PMsXcDKiJTW7PHJ64oEsIUJF319wm+EFlCj76oE5QXM= -k8s.io/cluster-bootstrap v0.27.2 h1:OL3onrOwrUD7NQxBUqQwTl1Uu2GQKCkw9BMHpc4PbiA= -k8s.io/cluster-bootstrap v0.27.2/go.mod h1:b++PF0mjUOiTKdPQFlDw7p4V2VquANZ8SfhAwzxZJFM= -k8s.io/component-base v0.27.2 h1:neju+7s/r5O4x4/txeUONNTS9r1HsPbyoPBAtHsDCpo= -k8s.io/component-base v0.27.2/go.mod h1:5UPk7EjfgrfgRIuDBFtsEFAe4DAvP3U+M8RTzoSJkpo= -k8s.io/klog/v2 v2.90.1 h1:m4bYOKall2MmOiRaR1J+We67Do7vm9KiQVlT96lnHUw= -k8s.io/klog/v2 v2.90.1/go.mod h1:y1WjHnz7Dj687irZUWR/WLkLc5N1YHtjLdmgWjndZn0= -k8s.io/kube-openapi v0.0.0-20230501164219-8b0f38b5fd1f h1:2kWPakN3i/k81b0gvD5C5FJ2kxm1WrQFanWchyKuqGg= -k8s.io/kube-openapi v0.0.0-20230501164219-8b0f38b5fd1f/go.mod h1:byini6yhqGC14c3ebc/QwanvYwhuMWF6yz2F8uwW8eg= -k8s.io/utils v0.0.0-20230209194617-a36077c30491 h1:r0BAOLElQnnFhE/ApUsg3iHdVYYPBjNSSOMowRZxxsY= -k8s.io/utils v0.0.0-20230209194617-a36077c30491/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= +k8s.io/api v0.28.9 h1:E7VEXXCAlSrp+08zq4zgd+ko6Ttu0Mw+XoXlIkDTVW0= +k8s.io/api v0.28.9/go.mod h1:AnCsDYf3SHjfa8mPG5LGYf+iF4mie+3peLQR51MMCgw= +k8s.io/apiextensions-apiserver v0.28.4 h1:AZpKY/7wQ8n+ZYDtNHbAJBb+N4AXXJvyZx6ww6yAJvU= +k8s.io/apiextensions-apiserver v0.28.4/go.mod h1:pgQIZ1U8eJSMQcENew/0ShUTlePcSGFq6dxSxf2mwPM= +k8s.io/apimachinery v0.28.9 h1:aXz4Zxsw+Pk4KhBerAtKRxNN1uSMWKfciL/iOdBfXvA= +k8s.io/apimachinery v0.28.9/go.mod h1:zUG757HaKs6Dc3iGtKjzIpBfqTM4yiRsEe3/E7NX15o= +k8s.io/apiserver v0.28.4 h1:BJXlaQbAU/RXYX2lRz+E1oPe3G3TKlozMMCZWu5GMgg= +k8s.io/apiserver v0.28.4/go.mod h1:Idq71oXugKZoVGUUL2wgBCTHbUR+FYTWa4rq9j4n23w= +k8s.io/client-go v0.28.9 h1:mmMvejwc/KDjMLmDpyaxkWNzlWRCJ6ht7Qsbsnwn39Y= +k8s.io/client-go v0.28.9/go.mod h1:GFDy3rUNId++WGrr0hRaBrs+y1eZz5JtVZODEalhRMo= +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.28.4 h1:c/iQLWPdUgI90O+T9TeECg8o7N3YJTiuz2sKxILYcYo= +k8s.io/component-base v0.28.4/go.mod h1:m9hR0uvqXDybiGL2nf/3Lf0MerAfQXzkfWhUY58JUbU= +k8s.io/klog/v2 v2.100.1 h1:7WCHKK6K8fNhTqfBhISHQ97KrnJNFZMcQvKp7gP/tmg= +k8s.io/klog/v2 v2.100.1/go.mod h1:y1WjHnz7Dj687irZUWR/WLkLc5N1YHtjLdmgWjndZn0= +k8s.io/kms v0.28.4 h1:PMgY/3CQTWP9eIKmNQiTgjLIZ0ns6O+voagzD2/4mSg= +k8s.io/kms v0.28.4/go.mod h1:HL4/lR/bhjAJPbqycKtfhWiKh1Sp21cpHOL8P4oo87w= +k8s.io/kube-openapi v0.0.0-20230717233707-2695361300d9 h1:LyMgNKD2P8Wn1iAwQU5OhxCKlKJy0sHc+PcDwFB24dQ= +k8s.io/kube-openapi v0.0.0-20230717233707-2695361300d9/go.mod h1:wZK2AVp1uHCp4VamDVgBP2COHZjqD1T68Rf0CM3YjSM= +k8s.io/utils v0.0.0-20240310230437-4693a0247e57 h1:gbqbevonBh57eILzModw6mrkbwM0gQBEuevE/AaBsHY= +k8s.io/utils v0.0.0-20240310230437-4693a0247e57/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/cluster-api v1.5.2 h1:pCsyEHwTBb7n+U5Z2OA5STxdJ1EuSpJv8FLBx4lii3s= -sigs.k8s.io/cluster-api v1.5.2/go.mod h1:EGJUNpFWi7dF426tO8MG/jE+w7T0UO5KyMnOwQ5riUY= -sigs.k8s.io/cluster-api/test v1.5.2 h1:Hlorgn4ebGdSxP4IZAT7eMweAowh4n0/vdhc4HAPNF8= -sigs.k8s.io/cluster-api/test v1.5.2/go.mod h1:mFlsY1y0lApBgQyXbmVprdzCK+9MQNp1C38K+aZdn5A= -sigs.k8s.io/controller-runtime v0.15.2 h1:9V7b7SDQSJ08IIsJ6CY1CE85Okhp87dyTMNDG0FS7f4= -sigs.k8s.io/controller-runtime v0.15.2/go.mod h1:7ngYvp1MLT+9GeZ+6lH3LOlcHkp/+tzA/fmHa4iq9kk= +sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.1.2 h1:trsWhjU5jZrx6UvFu4WzQDrN7Pga4a7Qg+zcfcj64PA= +sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.1.2/go.mod h1:+qG7ISXqCDVVcyO8hLn12AKVYYUjM7ftlqsqmrhMZE0= +sigs.k8s.io/cluster-api v1.6.4 h1:O3J+Dm/wBMAQSyTtdkEPcWbv4KyY4yqv8Q8g6pJVefM= +sigs.k8s.io/cluster-api v1.6.4/go.mod h1:az1S/g/6umDjmh3ZWpjJWm23peUZOqEt3vv2FuOIZ3s= +sigs.k8s.io/cluster-api/test v1.6.4 h1:eNs1FtKEQqWKxBB19/cQ/1IAgb4nHT0qbh0w7T9yqZ4= +sigs.k8s.io/cluster-api/test v1.6.4/go.mod h1:QimdqQoykUpYpUKkpIabhj8R34wAzw7akMwlCc65xeA= +sigs.k8s.io/controller-runtime v0.16.5 h1:yr1cEJbX08xsTW6XEIzT13KHHmIyX8Umvme2cULvFZw= +sigs.k8s.io/controller-runtime v0.16.5/go.mod h1:j7bialYoSn142nv9sCOJmQgDXQXxnroFU4VnX/brVJ0= 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/structured-merge-diff/v4 v4.2.3 h1:PRbqxJClWWYMNV1dhaG4NsibJbArud9kFxnAMREiWFE= sigs.k8s.io/structured-merge-diff/v4 v4.2.3/go.mod h1:qjx8mGObPmV2aSZepjQjbmb2ihdVs8cGKBraizNC69E= -sigs.k8s.io/yaml v1.3.0 h1:a2VclLzOGrwOHDiV8EfBGhvjHvP46CtW5j6POvhYGGo= sigs.k8s.io/yaml v1.3.0/go.mod h1:GeOyir5tyXNByN85N/dRIT9es5UQNerPYEKK56eTBm8= +sigs.k8s.io/yaml v1.4.0 h1:Mk1wCc2gy/F0THH0TAp1QYyJNzRm2KCLy3o5ASXVI5E= +sigs.k8s.io/yaml v1.4.0/go.mod h1:Ejl7/uTz7PSA4eKMyQCUTnhZYNmLIl+5c2lQPGR2BPY= diff --git a/main.go b/main.go index 6d9059c5e..80aab15b1 100644 --- a/main.go +++ b/main.go @@ -29,19 +29,20 @@ import ( "github.com/spf13/pflag" "k8s.io/klog/v2" - "k8s.io/klog/v2/klogr" "k8s.io/apimachinery/pkg/runtime" clientgoscheme "k8s.io/client-go/kubernetes/scheme" "k8s.io/client-go/tools/leaderelection/resourcelock" cgrecord "k8s.io/client-go/tools/record" ctrl "sigs.k8s.io/controller-runtime" + "sigs.k8s.io/controller-runtime/pkg/cache" "sigs.k8s.io/controller-runtime/pkg/controller" + "sigs.k8s.io/controller-runtime/pkg/webhook" clusterv1 "sigs.k8s.io/cluster-api/api/v1beta1" + "sigs.k8s.io/cluster-api/util/flags" "sigs.k8s.io/cluster-api/util/record" - infrav1alpha3 "sigs.k8s.io/cluster-api-provider-digitalocean/api/v1alpha3" infrav1alpha4 "sigs.k8s.io/cluster-api-provider-digitalocean/api/v1alpha4" infrav1beta1 "sigs.k8s.io/cluster-api-provider-digitalocean/api/v1beta1" "sigs.k8s.io/cluster-api-provider-digitalocean/controllers" @@ -52,15 +53,15 @@ import ( ) var ( - scheme = runtime.NewScheme() - setupLog = ctrl.Log.WithName("setup") + scheme = runtime.NewScheme() + setupLog = ctrl.Log.WithName("setup") + diagnosticsOptions = flags.DiagnosticsOptions{} ) func init() { klog.InitFlags(nil) _ = clientgoscheme.AddToScheme(scheme) - _ = infrav1alpha3.AddToScheme(scheme) _ = infrav1alpha4.AddToScheme(scheme) _ = infrav1beta1.AddToScheme(scheme) _ = clusterv1.AddToScheme(scheme) @@ -73,11 +74,11 @@ var ( leaderElectionRetryPeriod time.Duration syncPeriod time.Duration reconcileTimeout time.Duration - metricsAddr string leaderElectionNamespace string healthAddr string watchNamespace string profilerAddress string + webhookCertDir string webhookPort int enableLeaderElection bool restConfigQPS float32 @@ -85,7 +86,6 @@ var ( ) func initFlags(fs *pflag.FlagSet) { - fs.StringVar(&metricsAddr, "metrics-bind-addr", ":8080", "The address the metric endpoint binds to.") fs.BoolVar(&enableLeaderElection, "leader-elect", false, "Enable leader election for controller manager. Enabling this will ensure there is only one active controller manager.") fs.StringVar(&leaderElectionNamespace, "leader-election-namespace", "", "Namespace that the controller performs leader election in. If unspecified, the controller will discover which namespace it is running in.") fs.DurationVar(&leaderElectionLeaseDuration, "leader-elect-lease-duration", 15*time.Second, "Interval at which non-leader candidates will wait to force acquire leadership (duration string)") @@ -99,14 +99,26 @@ func initFlags(fs *pflag.FlagSet) { fs.DurationVar(&reconcileTimeout, "reconcile-timeout", reconciler.DefaultLoopTimeout, "The maximum duration a reconcile loop can run (e.g. 90m)") fs.Float32Var(&restConfigQPS, "kube-api-qps", 20, "Maximum queries per second from the controller client to the Kubernetes API server.") fs.IntVar(&restConfigBurst, "kube-api-burst", 30, "Maximum number of queries that should be allowed in one burst from the controller client to the Kubernetes API server.") + fs.StringVar(&webhookCertDir, "webhook-cert-dir", "/tmp/k8s-webhook-server/serving-certs", "Webhook Server Certificate Directory, is the directory that contains the server key and certificate") + flags.AddDiagnosticsOptions(fs, &diagnosticsOptions) } +// Add RBAC for the authorized diagnostics endpoint. +// +kubebuilder:rbac:groups=authentication.k8s.io,resources=tokenreviews,verbs=create +// +kubebuilder:rbac:groups=authorization.k8s.io,resources=subjectaccessreviews,verbs=create + func main() { initFlags(pflag.CommandLine) pflag.CommandLine.AddGoFlagSet(flag.CommandLine) pflag.Parse() + diagnosticsOpts := flags.GetDiagnosticsOptions(diagnosticsOptions) + + var watchNamespaces map[string]cache.Config if watchNamespace != "" { + watchNamespaces = map[string]cache.Config{ + watchNamespace: {}, + } setupLog.Info("Watching cluster-api objects only in namespace for reconciliation", "namespace", watchNamespace) } @@ -129,7 +141,7 @@ func main() { }() } - ctrl.SetLogger(klogr.New()) + ctrl.SetLogger(klog.Background()) ctx := ctrl.SetupSignalHandler() // Machine and cluster operations can create enough events to trigger the event recorder spam filter @@ -144,7 +156,7 @@ func main() { mgr, err := ctrl.NewManager(restConfig, ctrl.Options{ Scheme: scheme, - MetricsBindAddress: metricsAddr, + Metrics: diagnosticsOpts, LeaderElection: enableLeaderElection, LeaderElectionID: "controller-leader-election-capdo", LeaderElectionNamespace: leaderElectionNamespace, @@ -152,11 +164,16 @@ func main() { RenewDeadline: &leaderElectionRenewDeadline, RetryPeriod: &leaderElectionRetryPeriod, LeaderElectionResourceLock: resourcelock.LeasesResourceLock, - Namespace: watchNamespace, - SyncPeriod: &syncPeriod, - Port: webhookPort, - HealthProbeBindAddress: healthAddr, - EventBroadcaster: broadcaster, + Cache: cache.Options{ + DefaultNamespaces: watchNamespaces, + SyncPeriod: &syncPeriod, + }, + WebhookServer: webhook.NewServer(webhook.Options{ + Port: webhookPort, + CertDir: webhookCertDir, + }), + HealthProbeBindAddress: healthAddr, + EventBroadcaster: broadcaster, }) if err != nil { setupLog.Error(err, "unable to start manager") diff --git a/metadata.yaml b/metadata.yaml index 3f780ad0a..08540ddee 100644 --- a/metadata.yaml +++ b/metadata.yaml @@ -25,3 +25,6 @@ releaseSeries: - major: 1 minor: 5 contract: v1beta1 +- major: 1 + minor: 6 + contract: v1beta1 diff --git a/test/e2e/capdo_test.go b/test/e2e/capdo_test.go index 2515e5ff0..f7d0c216e 100644 --- a/test/e2e/capdo_test.go +++ b/test/e2e/capdo_test.go @@ -29,7 +29,7 @@ import ( . "github.com/onsi/gomega" corev1 "k8s.io/api/core/v1" - "k8s.io/utils/pointer" + "k8s.io/utils/ptr" "sigs.k8s.io/cluster-api/test/framework/clusterctl" "sigs.k8s.io/cluster-api/util" @@ -83,8 +83,8 @@ var _ = Describe("Workload cluster creation", func() { Namespace: namespace.Name, ClusterName: clusterName, KubernetesVersion: e2eConfig.GetVariable(KubernetesVersion), - ControlPlaneMachineCount: pointer.Int64Ptr(1), - WorkerMachineCount: pointer.Int64Ptr(1), + ControlPlaneMachineCount: ptr.To[int64](1), + WorkerMachineCount: ptr.To[int64](1), }, WaitForClusterIntervals: e2eConfig.GetIntervals(specName, "wait-cluster"), WaitForControlPlaneIntervals: e2eConfig.GetIntervals(specName, "wait-control-plane"), @@ -103,8 +103,8 @@ var _ = Describe("Workload cluster creation", func() { Namespace: namespace.Name, ClusterName: clusterName, KubernetesVersion: e2eConfig.GetVariable(KubernetesVersion), - ControlPlaneMachineCount: pointer.Int64Ptr(1), - WorkerMachineCount: pointer.Int64Ptr(3), + ControlPlaneMachineCount: ptr.To[int64](1), + WorkerMachineCount: ptr.To[int64](3), }, WaitForClusterIntervals: e2eConfig.GetIntervals(specName, "wait-cluster"), WaitForControlPlaneIntervals: e2eConfig.GetIntervals(specName, "wait-control-plane"), @@ -127,8 +127,8 @@ var _ = Describe("Workload cluster creation", func() { Namespace: namespace.Name, ClusterName: clusterName, KubernetesVersion: e2eConfig.GetVariable(KubernetesVersion), - ControlPlaneMachineCount: pointer.Int64Ptr(3), - WorkerMachineCount: pointer.Int64Ptr(2), + ControlPlaneMachineCount: ptr.To[int64](3), + WorkerMachineCount: ptr.To[int64](2), }, WaitForClusterIntervals: e2eConfig.GetIntervals(specName, "wait-cluster"), WaitForControlPlaneIntervals: e2eConfig.GetIntervals(specName, "wait-control-plane"), diff --git a/test/e2e/capi_test.go b/test/e2e/capi_test.go index 618507bc8..f4e058431 100644 --- a/test/e2e/capi_test.go +++ b/test/e2e/capi_test.go @@ -25,7 +25,7 @@ import ( . "github.com/onsi/ginkgo/v2" . "github.com/onsi/gomega" - "k8s.io/utils/pointer" + "k8s.io/utils/ptr" capi_e2e "sigs.k8s.io/cluster-api/test/e2e" ) @@ -86,8 +86,8 @@ var _ = Describe("Running the Cluster API E2E tests", func() { ClusterctlConfigPath: clusterctlConfigPath, BootstrapClusterProxy: bootstrapClusterProxy, ArtifactFolder: artifactFolder, - ControlPlaneMachineCount: pointer.Int64(3), - WorkerMachineCount: pointer.Int64(0), + ControlPlaneMachineCount: ptr.To[int64](3), + WorkerMachineCount: ptr.To[int64](0), SkipCleanup: skipCleanup, SkipConformanceTests: true, } diff --git a/test/e2e/config/digitalocean-ci.yaml b/test/e2e/config/digitalocean-ci.yaml index 97c96f756..e1c18752b 100644 --- a/test/e2e/config/digitalocean-ci.yaml +++ b/test/e2e/config/digitalocean-ci.yaml @@ -7,8 +7,8 @@ providers: - name: cluster-api type: CoreProvider versions: - - name: v1.5.2 - value: https://github.com/kubernetes-sigs/cluster-api/releases/download/v1.5.2/core-components.yaml + - name: v1.6.4 + value: https://github.com/kubernetes-sigs/cluster-api/releases/download/v1.6.4/core-components.yaml type: "url" files: - sourcePath: "${PWD}/test/e2e/data/metadata/cluster-api/metadata.yaml" @@ -20,8 +20,8 @@ providers: - name: kubeadm type: BootstrapProvider versions: - - name: v1.5.2 - value: https://github.com/kubernetes-sigs/cluster-api/releases/download/v1.5.2/bootstrap-components.yaml + - name: v1.6.4 + value: https://github.com/kubernetes-sigs/cluster-api/releases/download/v1.6.4/bootstrap-components.yaml type: "url" files: - sourcePath: "${PWD}/test/e2e/data/metadata/cluster-api/metadata.yaml" @@ -33,8 +33,8 @@ providers: - name: kubeadm type: ControlPlaneProvider versions: - - name: v1.5.2 - value: https://github.com/kubernetes-sigs/cluster-api/releases/download/v1.5.2/control-plane-components.yaml + - name: v1.6.4 + value: https://github.com/kubernetes-sigs/cluster-api/releases/download/v1.6.4/control-plane-components.yaml type: "url" files: - sourcePath: "${PWD}/test/e2e/data/metadata/cluster-api/metadata.yaml" @@ -46,7 +46,7 @@ providers: - name: digitalocean type: InfrastructureProvider versions: - - name: v1.5.99 + - name: v1.6.99 value: "${PWD}/config/default" replacements: - old: gcr.io/k8s-staging-cluster-api-do/cluster-api-do-controller:dev @@ -66,7 +66,7 @@ providers: variables: REDACT_LOG_SCRIPT: "${PWD}/hack/log/redact.sh" - KUBERNETES_VERSION: "v1.25.5" + KUBERNETES_VERSION: "v1.29.4" EXP_CLUSTER_RESOURCE_SET: "true" # Cluster Addons CNI: "${PWD}/test/e2e/data/cni/calico/calico.yaml" @@ -74,24 +74,24 @@ variables: # Following CAPDO variables should be set before testing DO_REGION: "nyc1" DO_CONTROL_PLANE_MACHINE_TYPE: "s-2vcpu-2gb" - # Cluster API Kubernetes v1.25.5 on Ubuntu 20.04 - DO_CONTROL_PLANE_MACHINE_IMAGE: "123786633" + # Cluster API Kubernetes v1.29.4 on Ubuntu 22.04 + DO_CONTROL_PLANE_MACHINE_IMAGE: "154711321" DO_NODE_MACHINE_TYPE: "s-2vcpu-2gb" - # Cluster API Kubernetes v1.25.5 on Ubuntu 20.04 - DO_NODE_MACHINE_IMAGE: "123786633" + # Cluster API Kubernetes v1.29.4 on Ubuntu 22.04 + DO_NODE_MACHINE_IMAGE: "154711321" CONFORMANCE_WORKER_MACHINE_COUNT: "2" CONFORMANCE_CONTROL_PLANE_MACHINE_COUNT: "1" KUBETEST_CONFIGURATION: "${PWD}/test/e2e/data/kubetest/conformance.yaml" ETCD_VERSION_UPGRADE_TO: "3.5.1-0" COREDNS_VERSION_UPGRADE_TO: "v1.8.6" - # Cluster API Kubernetes v1.24.9 on Ubuntu 20.04 - KUBERNETES_IMAGE_UPGRADE_FROM: "123787403" - # Cluster API Kubernetes v1.25.5 on Ubuntu 20.04 - KUBERNETES_IMAGE_UPGRADE_TO: "123786633" + # Cluster API Kubernetes v1.28.9 on Ubuntu 22.04 + KUBERNETES_IMAGE_UPGRADE_FROM: "154711472" + # Cluster API Kubernetes v1.29.4 on Ubuntu 22.04 + KUBERNETES_IMAGE_UPGRADE_TO: "154711321" CONTROL_PLANE_MACHINE_TEMPLATE_UPGRADE_TO: "cp-k8s-upgrade-and-conformance" WORKERS_MACHINE_TEMPLATE_UPGRADE_TO: "worker-k8s-upgrade-and-conformance" - KUBERNETES_VERSION_UPGRADE_TO: "${KUBERNETES_VERSION_UPGRADE_TO:-v1.25.5}" - KUBERNETES_VERSION_UPGRADE_FROM: "${KUBERNETES_VERSION_UPGRADE_FROM:-v1.24.9}" + KUBERNETES_VERSION_UPGRADE_TO: "${KUBERNETES_VERSION_UPGRADE_TO:-v1.29.4}" + KUBERNETES_VERSION_UPGRADE_FROM: "${KUBERNETES_VERSION_UPGRADE_FROM:-v1.28.9}" IP_FAMILY: "IPv4" intervals: diff --git a/test/e2e/config/digitalocean-dev.yaml b/test/e2e/config/digitalocean-dev.yaml index 2c6ddc439..a06ef33e9 100644 --- a/test/e2e/config/digitalocean-dev.yaml +++ b/test/e2e/config/digitalocean-dev.yaml @@ -7,8 +7,8 @@ providers: - name: cluster-api type: CoreProvider versions: - - name: v1.5.2 - value: https://github.com/kubernetes-sigs/cluster-api/releases/download/v1.5.2/core-components.yaml + - name: v1.6.4 + value: https://github.com/kubernetes-sigs/cluster-api/releases/download/v1.6.4/core-components.yaml type: "url" files: - sourcePath: "${PWD}/test/e2e/data/metadata/cluster-api/metadata.yaml" @@ -20,8 +20,8 @@ providers: - name: kubeadm type: BootstrapProvider versions: - - name: v1.5.2 - value: https://github.com/kubernetes-sigs/cluster-api/releases/download/v1.5.2/bootstrap-components.yaml + - name: v1.6.4 + value: https://github.com/kubernetes-sigs/cluster-api/releases/download/v1.6.4/bootstrap-components.yaml type: "url" files: - sourcePath: "${PWD}/test/e2e/data/metadata/cluster-api/metadata.yaml" @@ -33,8 +33,8 @@ providers: - name: kubeadm type: ControlPlaneProvider versions: - - name: v1.5.2 - value: https://github.com/kubernetes-sigs/cluster-api/releases/download/v1.5.2/control-plane-components.yaml + - name: v1.6.4 + value: https://github.com/kubernetes-sigs/cluster-api/releases/download/v1.6.4/control-plane-components.yaml type: "url" files: - sourcePath: "${PWD}/test/e2e/data/metadata/cluster-api/metadata.yaml" @@ -46,7 +46,7 @@ providers: - name: digitalocean type: InfrastructureProvider versions: - - name: v1.5.99 # Use manifest from source files + - name: v1.6.99 # Use manifest from source files value: ${PWD}/config/default replacements: - old: gcr.io/k8s-staging-cluster-api-do/cluster-api-do-controller:dev @@ -61,7 +61,7 @@ providers: variables: REDACT_LOG_SCRIPT: "${PWD}/hack/log/redact.sh" - KUBERNETES_VERSION: "v1.25.5" + KUBERNETES_VERSION: "v1.29.4" EXP_CLUSTER_RESOURCE_SET: "true" # Cluster Addons CNI: "${PWD}/test/e2e/data/cni/calico/calico.yaml" diff --git a/test/e2e/conformance_test.go b/test/e2e/conformance_test.go index 28189a3c6..8f3d60eb7 100644 --- a/test/e2e/conformance_test.go +++ b/test/e2e/conformance_test.go @@ -30,7 +30,8 @@ import ( . "github.com/onsi/gomega" corev1 "k8s.io/api/core/v1" - "k8s.io/utils/pointer" + "k8s.io/utils/ptr" + capi_e2e "sigs.k8s.io/cluster-api/test/e2e" "sigs.k8s.io/cluster-api/test/framework/clusterctl" "sigs.k8s.io/cluster-api/test/framework/kubetest" @@ -104,8 +105,8 @@ var _ = Describe("Conformance Tests", func() { Namespace: namespace.Name, ClusterName: clusterName, KubernetesVersion: e2eConfig.GetVariable(capi_e2e.KubernetesVersion), - ControlPlaneMachineCount: pointer.Int64Ptr(controlPlaneMachineCount), - WorkerMachineCount: pointer.Int64Ptr(workerMachineCount), + ControlPlaneMachineCount: ptr.To[int64](controlPlaneMachineCount), + WorkerMachineCount: ptr.To[int64](workerMachineCount), }, WaitForClusterIntervals: e2eConfig.GetIntervals(specName, "wait-cluster"), WaitForControlPlaneIntervals: e2eConfig.GetIntervals(specName, "wait-control-plane"), diff --git a/test/e2e/data/metadata/cluster-api-provider-digitalocean/metadata.yaml b/test/e2e/data/metadata/cluster-api-provider-digitalocean/metadata.yaml index e18da5595..08540ddee 100644 --- a/test/e2e/data/metadata/cluster-api-provider-digitalocean/metadata.yaml +++ b/test/e2e/data/metadata/cluster-api-provider-digitalocean/metadata.yaml @@ -19,3 +19,12 @@ releaseSeries: - major: 1 minor: 3 contract: v1beta1 +- major: 1 + minor: 4 + contract: v1beta1 +- major: 1 + minor: 5 + contract: v1beta1 +- major: 1 + minor: 6 + contract: v1beta1 diff --git a/test/e2e/data/metadata/cluster-api/metadata.yaml b/test/e2e/data/metadata/cluster-api/metadata.yaml index 3dcdbd181..1b563a714 100644 --- a/test/e2e/data/metadata/cluster-api/metadata.yaml +++ b/test/e2e/data/metadata/cluster-api/metadata.yaml @@ -1,6 +1,9 @@ apiVersion: clusterctl.cluster.x-k8s.io/v1alpha3 kind: Metadata releaseSeries: + - major: 1 + minor: 6 + contract: v1beta1 - major: 1 minor: 5 contract: v1beta1