Skip to content

Commit

Permalink
feat: Introduce v1aplha2 API
Browse files Browse the repository at this point in the history
  • Loading branch information
Fedosin committed Jul 18, 2023
1 parent f55e815 commit 52ecc4a
Show file tree
Hide file tree
Showing 51 changed files with 9,068 additions and 204 deletions.
4 changes: 2 additions & 2 deletions .golangci.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -103,7 +103,7 @@ linters-settings:
- "disableStutteringCheck"
stylecheck:
# https://staticcheck.io/docs/options#checks
checks: ["all", "-ST1000"]
checks: ["all", "-ST1000", "-ST1003", "-ST1016"]
dot-import-whitelist:
- "github.com/onsi/gomega"
importas:
Expand Down Expand Up @@ -133,7 +133,7 @@ linters-settings:
- pkg: sigs.k8s.io/cluster-api/cmd/clusterctl/client/config
alias: configclient
# CAPI Operator
- pkg: sigs.k8s.io/cluster-api-operator/api/v1alpha1
- pkg: sigs.k8s.io/cluster-api-operator/api/v1alpha2
alias: operatorv1
- pkg: sigs.k8s.io/cluster-api-operator/internal/controller
alias: providercontroller
Expand Down
41 changes: 41 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -109,6 +109,14 @@ KPROMO_VER := v3.5.1
KPROMO_BIN := kpromo
KPROMO := $(TOOLS_BIN_DIR)/$(KPROMO_BIN)-$(KPROMO_VER)

CONVERSION_GEN_VER := v0.27.3
CONVERSION_GEN_BIN := conversion-gen
CONVERSION_GEN := $(TOOLS_BIN_DIR)/$(CONVERSION_GEN_BIN)-$(CONVERSION_GEN_VER)

CONVERSION_VERIFIER_VER := v1.4.4
CONVERSION_VERIFIER_BIN := conversion-verifier
CONVERSION_VERIFIER := $(TOOLS_BIN_DIR)/$(CONVERSION_VERIFIER_BIN)-$(CONVERSION_VERIFIER_VER)

# It is set by Prow GIT_TAG, a git-based tag of the form vYYYYMMDD-hash, e.g., v20210120-v0.3.10-308-gc61521971
TAG ?= dev
ARCH ?= amd64
Expand Down Expand Up @@ -151,6 +159,13 @@ RELEASE_DIR := out
CHART_DIR := $(RELEASE_DIR)/charts/cluster-api-operator
CHART_PACKAGE_DIR := $(RELEASE_DIR)/package

# Set --output-base for conversion-gen if we are not within GOPATH
ifneq ($(abspath $(ROOT_DIR_RELATIVE)),$(shell go env GOPATH)/src/sigs.k8s.io/cluster-api-operator)
CONVERSION_GEN_OUTPUT_BASE := --output-base=$(ROOT_DIR_RELATIVE)
else
export GOPATH := $(shell go env GOPATH)
endif

all: generate test operator

help: ## Display this help
Expand All @@ -171,6 +186,8 @@ gotestsum: $(GOTESTSUM) ## Build a local copy of gotestsum.
helm: $(HELM) ## Build a local copy of helm.
yq: $(YQ) ## Build a local copy of yq.
kpromo: $(KPROMO) ## Build a local copy of kpromo.
conversion-gen: $(CONVERSION_GEN) ## Build a local copy of conversion-gen.
conversion-verifier: $(CONVERSION_VERIFIER) ## Build a local copy of conversion-verifier.

$(KUSTOMIZE): ## Build kustomize from tools folder.
CGO_ENABLED=0 GOBIN=$(TOOLS_BIN_DIR) $(GO_INSTALL) sigs.k8s.io/kustomize/kustomize/v5 $(KUSTOMIZE_BIN) $(KUSTOMIZE_VER)
Expand Down Expand Up @@ -211,6 +228,12 @@ $(YQ):
$(KPROMO):
GOBIN=$(TOOLS_BIN_DIR) $(GO_INSTALL) sigs.k8s.io/promo-tools/v3/cmd/kpromo $(KPROMO_BIN) ${KPROMO_VER}

$(CONVERSION_GEN):
GOBIN=$(TOOLS_BIN_DIR) $(GO_INSTALL) k8s.io/code-generator/cmd/conversion-gen $(CONVERSION_GEN_BIN) ${CONVERSION_GEN_VER}

$(CONVERSION_VERIFIER):
GOBIN=$(TOOLS_BIN_DIR) $(GO_INSTALL) sigs.k8s.io/cluster-api/hack/tools/conversion-verifier $(CONVERSION_VERIFIER_BIN) ${CONVERSION_VERIFIER_VER}

.PHONY: cert-mananger
cert-manager: # Install cert-manager on the cluster. This is used for development purposes only.
$(ROOT)/hack/cert-manager.sh
Expand Down Expand Up @@ -288,6 +311,7 @@ verify-gen: generate
generate: $(CONTROLLER_GEN) ## Generate code
$(MAKE) generate-manifests
$(MAKE) generate-go
$(MAKE) generate-go-conversions

.PHONY: generate-go
generate-go: $(CONTROLLER_GEN) ## Runs Go related generate targets for the operator
Expand All @@ -308,6 +332,15 @@ generate-manifests: $(CONTROLLER_GEN) ## Generate manifests for the operator e.g
output:webhook:dir=./config/webhook \
webhook

.PHONY: generate-go-conversions
generate-go-conversions: $(CONVERSION_GEN) ## Generate conversions go code
$(MAKE) clean-generated-conversions SRC_DIRS="./api/v1alpha1"
$(CONVERSION_GEN) \
--input-dirs=./api/v1alpha1 \
--build-tag=ignore_autogenerated_core \
--output-file-base=zz_generated.conversion $(CONVERSION_GEN_OUTPUT_BASE) \
--go-header-file=$(ROOT)/hack/boilerplate.go.txt

.PHONY: modules
modules: ## Runs go mod to ensure modules are up to date.
go mod tidy
Expand Down Expand Up @@ -451,6 +484,14 @@ promote-images: $(KPROMO)
## Cleanup / Verification
## --------------------------------------

.PHONY: verify-conversions
verify-conversions: $(CONVERSION_VERIFIER) ## Verifies expected API conversion are in place
$(CONVERSION_VERIFIER)

.PHONY: clean-generated-conversions
clean-generated-conversions: ## Remove files generated by conversion-gen from the mentioned dirs
(IFS=','; for i in $(SRC_DIRS); do find $$i -type f -name 'zz_generated.conversion*' -exec rm -f {} \;; done)

.PHONY: clean
clean: ## Remove all generated files
$(MAKE) clean-bin
Expand Down
33 changes: 33 additions & 0 deletions PROJECT
Original file line number Diff line number Diff line change
Expand Up @@ -41,4 +41,37 @@ resources:
kind: InfrastructureProvider
path: sigs.k8s.io/cluster-api-operator/api/v1alpha1
version: v1alpha1
- api:
crdVersion: v1
namespaced: true
controller: true
domain: cluster.x-k8s.io
group: operator
kind: CoreProvider
path: sigs.k8s.io/cluster-api-operator/api/v1alpha2
version: v1alpha2
- api:
crdVersion: v1
namespaced: true
domain: cluster.x-k8s.io
group: operator
kind: BootstrapProvider
path: sigs.k8s.io/cluster-api-operator/api/v1alpha2
version: v1alpha2
- api:
crdVersion: v1
namespaced: true
domain: cluster.x-k8s.io
group: operator
kind: ControlPlaneProvider
path: sigs.k8s.io/cluster-api-operator/api/v1alpha2
version: v1alpha2
- api:
crdVersion: v1
namespaced: true
domain: cluster.x-k8s.io
group: operator
kind: InfrastructureProvider
path: sigs.k8s.io/cluster-api-operator/api/v1alpha2
version: v1alpha2
version: "3"
15 changes: 3 additions & 12 deletions internal/webhook/provider_webhook.go → api/v1alpha1/doc.go
Original file line number Diff line number Diff line change
Expand Up @@ -14,15 +14,6 @@ See the License for the specific language governing permissions and
limitations under the License.
*/

package webhook

import (
operatorv1 "sigs.k8s.io/cluster-api-operator/api/v1alpha1"
)

// setDefaultProviderSpec sets the default values for the provider spec.
func setDefaultProviderSpec(providerSpec *operatorv1.ProviderSpec, providerNamespace string) {
if providerSpec.SecretName != "" && providerSpec.SecretNamespace == "" {
providerSpec.SecretNamespace = providerNamespace
}
}
// Package v1alpha1 contains the v1alpha1 API implementation.
// +k8s:conversion-gen=sigs.k8s.io/cluster-api-operator/api/v1alpha2
package v1alpha1
2 changes: 2 additions & 0 deletions api/v1alpha1/groupversion_info.go
Original file line number Diff line number Diff line change
Expand Up @@ -33,4 +33,6 @@ var (

// AddToScheme adds the types in this group-version to the given scheme.
AddToScheme = SchemeBuilder.AddToScheme

localSchemeBuilder = SchemeBuilder.SchemeBuilder
)
Loading

0 comments on commit 52ecc4a

Please sign in to comment.