diff --git a/.github/workflows/image_release.yaml b/.github/workflows/image_release.yaml index 2947d2356..f2c2a5dba 100644 --- a/.github/workflows/image_release.yaml +++ b/.github/workflows/image_release.yaml @@ -23,7 +23,7 @@ jobs: - name: Set up Docker Buildx id: buildx - uses: docker/setup-buildx-action@v2 + uses: docker/setup-buildx-action@v3 - name: Login to Quay uses: docker/login-action@v2 diff --git a/.github/workflows/upgrade_tests.yaml b/.github/workflows/upgrade_tests.yaml index 2e5eb3c79..987979326 100644 --- a/.github/workflows/upgrade_tests.yaml +++ b/.github/workflows/upgrade_tests.yaml @@ -30,19 +30,19 @@ jobs: steps: - name: Checkout - uses: actions/checkout@v3 + uses: actions/checkout@v4 with: ref: ${{ inputs.ref }} repository: ${{ inputs.repository }} - name: Checkout - uses: actions/checkout@v3 + uses: actions/checkout@v4 with: ref: ${{ inputs.ref }} repository: ${{ inputs.repository }} - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v2 + uses: docker/setup-buildx-action@v3 - if: ${{ inputs.operandArtifact != '' }} name: Download operand artifact @@ -63,21 +63,21 @@ jobs: # Cache go build cache, used to speedup go test - name: Go Build Cache - uses: actions/cache@v2 + uses: actions/cache@v3 with: path: ${{ steps.go-cache-paths.outputs.go-build }} key: ${{ runner.os }}-go-build-${{ hashFiles('**/go.sum') }} # Cache go mod cache, used to speedup builds - name: Go Mod Cache - uses: actions/cache@v2 + uses: actions/cache@v3 with: path: ${{ steps.go-cache-paths.outputs.go-mod }} key: ${{ runner.os }}-go-mod-${{ hashFiles('**/go.sum') }} # Cache local bin dependencies - name: Local Dependencies Cache - uses: actions/cache@v2 + uses: actions/cache@v3 with: path: bin key: ${{ runner.os }}-bin-${{ hashFiles('Makefile') }} diff --git a/Dockerfile b/Dockerfile index 94bda47a8..067b20370 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM registry.access.redhat.com/ubi9/go-toolset:1.19 AS build +FROM registry.access.redhat.com/ubi9/go-toolset:1.20 AS build ARG OPERATOR_VERSION ARG SKAFFOLD_GO_GCFLAGS WORKDIR /workspace diff --git a/Makefile b/Makefile index e3d906cb5..b8f0a3e7c 100644 --- a/Makefile +++ b/Makefile @@ -1,7 +1,8 @@ # Current Operator version VERSION ?= $(shell git describe --tags --always --dirty) # Default bundle image tag -BUNDLE_IMG ?= infinispan-operator-bundle:v$(VERSION) +IMAGE_TAG_BASE ?= infinispan-operator +BUNDLE_IMG ?= $(IMAGE_TAG_BASE)-bundle:v$(VERSION) export KUBECONFIG ?= ${HOME}/.kube/config export WATCH_NAMESPACE ?= namespace-for-testing @@ -14,17 +15,25 @@ BUNDLE_DEFAULT_CHANNEL := --default-channel=$(DEFAULT_CHANNEL) endif BUNDLE_METADATA_OPTS ?= --version $(VERSION) $(BUNDLE_CHANNELS) $(BUNDLE_DEFAULT_CHANNEL) +# BUNDLE_GEN_FLAGS are the flags passed to the operator-sdk generate bundle command +BUNDLE_GEN_FLAGS ?= -q --overwrite --version $(VERSION) $(BUNDLE_METADATA_OPTS) + +# USE_IMAGE_DIGESTS defines if images are resolved via tags or digests +# You can enable this value if you would like to use SHA Based Digests +# To enable set flag to true +USE_IMAGE_DIGESTS ?= false +ifeq ($(USE_IMAGE_DIGESTS), true) + BUNDLE_GEN_FLAGS += --use-image-digests +endif + # The namespace to deploy the infinispan-operator DEPLOYMENT_NAMESPACE ?= infinispan-operator-system # Image URL to use all building/pushing image targets IMG ?= operator:latest -# Produce CRDs that work back to Kubernetes 1.11 (no version conversion) -CRD_OPTIONS ?= "crd:trivialVersions=true,preserveUnknownFields=false" - # ENVTEST_K8S_VERSION refers to the version of kubebuilder assets to be downloaded by envtest binary. -ENVTEST_K8S_VERSION = 1.19 +ENVTEST_K8S_VERSION = 1.24 export CONTAINER_TOOL ?= docker @@ -35,7 +44,30 @@ else GOBIN=$(shell go env GOBIN) endif -PATH ?= $(PATH):./bin +##@ Build Dependencies + +## Location to install dependencies to +LOCALBIN ?= $(shell pwd)/bin +$(LOCALBIN): + mkdir -p $(LOCALBIN) + +## Tool Binaries +CONTROLLER_GEN ?= $(LOCALBIN)/controller-gen +ENVTEST ?= $(LOCALBIN)/setup-envtest +export GO_JUNIT_REPORT ?= $(LOCALBIN)/go-junit-report +GOLANGCI_LINT ?= $(LOCALBIN)/golangci-lint +KUSTOMIZE ?= $(LOCALBIN)/kustomize +MOCKGEN ?= $(LOCALBIN)/mockgen +RICE ?= $(LOCALBIN)/rice + +## Tool Versions +CONTROLLER_TOOLS_VERSION ?= v0.9.2 +GO_JUNIT_REPORT_VERSION ?= latest +GOLANGCI_LINT_VERSION ?= v1.53.3 +KUSTOMIZE_VERSION ?= v3.8.7 +RICE_VERSION ?= v1.0.2 +JQ_VERSION ?= 1.7 +YQ_VERSION ?= v4.31.1 .DEFAULT_GOAL := help @@ -140,7 +172,7 @@ undeploy: .PHONY: manifests ## Generate manifests locally e.g. CRD, RBAC etc. manifests: controller-gen operator-sdk - $(CONTROLLER_GEN) $(CRD_OPTIONS) rbac:roleName=manager-role webhook paths="./..." output:crd:artifacts:config=config/crd/bases + $(CONTROLLER_GEN) rbac:roleName=manager-role crd webhook paths="./..." output:crd:artifacts:config=config/crd/bases $(OPERATOR_SDK) generate kustomize manifests -q .PHONY: fmt @@ -176,57 +208,41 @@ operator-build: manager operator-push: $(CONTAINER_TOOL) push $(IMG) -RICE = $(shell pwd)/bin/rice .PHONY: rice -## Download Rice locally if necessary -rice: - $(call go-get-tool,$(RICE),github.com/GeertJohan/go.rice/rice@v1.0.2) +rice: $(RICE) ## Download Rice locally if necessary. +$(RICE): $(LOCALBIN) + test -s $(RICE) || GOBIN=$(LOCALBIN) go install github.com/GeertJohan/go.rice/rice@$(RICE_VERSION) + +KUSTOMIZE_INSTALL_SCRIPT ?= "https://raw.githubusercontent.com/kubernetes-sigs/kustomize/master/hack/install_kustomize.sh" +.PHONY: kustomize +kustomize: $(KUSTOMIZE) ## Download kustomize locally if necessary. +$(KUSTOMIZE): $(LOCALBIN) + test -s $(KUSTOMIZE) || { curl -s $(KUSTOMIZE_INSTALL_SCRIPT) | bash -s -- $(subst v,,$(KUSTOMIZE_VERSION)) $(LOCALBIN); } -CONTROLLER_GEN = $(shell pwd)/bin/controller-gen .PHONY: controller-gen -## Download controller-gen locally if necessary -controller-gen: - $(call go-get-tool,$(CONTROLLER_GEN),sigs.k8s.io/controller-tools/cmd/controller-gen@v0.4.1) +controller-gen: $(CONTROLLER_GEN) ## Download controller-gen locally if necessary. +$(CONTROLLER_GEN): $(LOCALBIN) + test -s $(CONTROLLER_GEN) || GOBIN=$(LOCALBIN) go install sigs.k8s.io/controller-tools/cmd/controller-gen@$(CONTROLLER_TOOLS_VERSION) + +.PHONY: golangci-lint +golangci-lint: $(GOLANGCI_LINT) ## Download golangci-lint locally if necessary. +$(GOLANGCI_LINT): $(LOCALBIN) + test -s $(GOLANGCI_LINT) || GOBIN=$(LOCALBIN) go install github.com/golangci/golangci-lint/cmd/golangci-lint@$(GOLANGCI_LINT_VERSION) + +.PHONY: go-junit-report +go-junit-report: $(GO_JUNIT_REPORT) ## Download go-junit-report locally if necessary. +$(GO_JUNIT_REPORT): $(LOCALBIN) + test -s $(GO_JUNIT_REPORT) || GOBIN=$(LOCALBIN) go install github.com/jstemmer/go-junit-report@$(GO_JUNIT_REPORT_VERSION) -KUSTOMIZE = $(shell pwd)/bin/kustomize -.PHONY: kustomize -## Download kustomize locally if necessary -kustomize: - $(call go-get-tool,$(KUSTOMIZE),sigs.k8s.io/kustomize/kustomize/v4@v4.5.7) - -GOLANGCI_LINT = $(shell pwd)/bin/golangci-lint -.PHONY: golanci-lint -## Download golanci-lint locally if necessary -golangci-lint: - $(call go-get-tool,$(GOLANGCI_LINT),github.com/golangci/golangci-lint/cmd/golangci-lint@v1.53.3) - -export GO_JUNIT_REPORT = $(shell pwd)/bin/go-junit-report -.PHONY: GO_JUNIT_REPORT -## Download go-junit-report locally if necessary -go-junit-report: - $(call go-get-tool,$(GO_JUNIT_REPORT),github.com/jstemmer/go-junit-report@latest) - -export MOCKGEN = $(shell pwd)/bin/mockgen .PHONY: mockgen -## Download mockgen locally if necessary -mockgen: - $(call go-get-tool,$(MOCKGEN),github.com/golang/mock/mockgen@v1.6.0) +mockgen: $(MOCKGEN) ## Download mockgen locally if necessary +$(MOCKGEN): $(LOCALBIN) + test -s $(MOCKGEN) || GOBIN=$(LOCALBIN) go install github.com/golang/mock/mockgen@v1.6.0 -ENVTEST = $(shell pwd)/bin/setup-envtest .PHONY: envtest -## Download envtest-setup locally if necessary. -envtest: - $(call go-get-tool,$(ENVTEST),sigs.k8s.io/controller-runtime/tools/setup-envtest@latest) - -# go-get-tool will 'go get' any package $2 and install it to $1. -PROJECT_DIR := $(shell dirname $(abspath $(lastword $(MAKEFILE_LIST)))) -define go-get-tool -@[ -f $(1) ] || { \ -set -e ;\ -echo "Downloading $(2)" ;\ -GOBIN=$(PROJECT_DIR)/bin go install $(2) ;\ -} -endef +envtest: $(ENVTEST) ## Download envtest-setup locally if necessary. +$(ENVTEST): $(LOCALBIN) + test -s $(ENVTEST) || GOBIN=$(LOCALBIN) go install sigs.k8s.io/controller-runtime/tools/setup-envtest@latest .PHONY: bundle ## Generate bundle manifests and metadata, then validate generated files. @@ -234,13 +250,12 @@ bundle: manifests kustomize yq # Remove old bundle as old files aren't always cleaned up by operator-sdk rm -rf bundle cd config/manager && $(KUSTOMIZE) edit set image operator=$(IMG) - $(KUSTOMIZE) build config/manifests | $(OPERATOR_SDK) generate bundle -q --overwrite $(BUNDLE_METADATA_OPTS) + $(KUSTOMIZE) build config/manifests | $(OPERATOR_SDK) generate bundle $(BUNDLE_GEN_FLAGS) # TODO is there a better way todo this with operator-sdk and/or kustomize. `commonAnnotations` adds annotations to all resources, not just CSV. sed -i -e "s,,$(IMG)," bundle/manifests/infinispan-operator.clusterserviceversion.yaml # Hack to set the metadata package name to "infinispan". `operator-sdk --package infinispan` can't be used as it # changes the csv name from infinispan-operator.v0.0.0 -> infinispan.v0.0.0 sed -i -e 's/infinispan-operator/infinispan/' bundle/metadata/annotations.yaml bundle.Dockerfile - rm bundle/manifests/infinispan-operator-controller-manager_v1_serviceaccount.yaml rm bundle/manifests/infinispan-operator-webhook-service_v1_service.yaml # Minimum Openshift version must correspond to `minKubeVersion` set in CSV $(YQ) -i '.annotations += {"com.redhat.openshift.versions": "v4.11"}' bundle/metadata/annotations.yaml @@ -259,51 +274,56 @@ bundle-push: .PHONY: opm export OPM = ./bin/opm opm: ## Download opm locally if necessary. +ifeq (,$(wildcard $(OPM))) ifeq (,$(shell which opm 2>/dev/null)) @{ \ set -e ;\ mkdir -p $(dir $(OPM)) ;\ OS=$(shell go env GOOS) && ARCH=$(shell go env GOARCH) && \ - curl -sSLo $(OPM) https://github.com/operator-framework/operator-registry/releases/download/v1.21.0/$${OS}-$${ARCH}-opm ;\ + curl -sSLo $(OPM) https://github.com/operator-framework/operator-registry/releases/download/v1.23.0/$${OS}-$${ARCH}-opm ;\ chmod +x $(OPM) ;\ } else OPM = $(shell which opm) endif - +endif .PHONY: jq export JQ = ./bin/jq jq: ## Download opm locally if necessary. +ifeq (,$(wildcard $(JQ))) ifeq (,$(shell which jq 2>/dev/null)) @{ \ set -e ;\ mkdir -p $(dir $(JQ)) ;\ - curl -sSLo $(JQ) https://github.com/stedolan/jq/releases/download/jq-1.7/jq-linux64 ;\ + curl -sSLo $(JQ) https://github.com/stedolan/jq/releases/download/jq-$(JQ_VERSION)/jq-linux64 ;\ chmod +x $(JQ) ;\ } else JQ = $(shell which jq) endif +endif .PHONY: yq export YQ = ./bin/yq -## Download yq locally if necessary. -yq: jq +yq: ## Download yq locally if necessary. +ifeq (,$(wildcard $(YQ))) ifeq (,$(shell which yq 2>/dev/null)) @{ \ set -e ;\ mkdir -p $(dir $(YQ)) ;\ - curl -sSLo $(YQ) https://github.com/mikefarah/yq/releases/download/v4.40.2/yq_linux_amd64 ;\ + curl -sSLo $(YQ) https://github.com/mikefarah/yq/releases/download/$(YQ_VERSION)/yq_linux_amd64 ;\ chmod +x $(YQ) ;\ } else YQ = $(shell which yq) endif +endif .PHONY: oc export OC = ./bin/oc oc: ## Download oc locally if necessary. +ifeq (,$(wildcard $(OC))) ifeq (,$(shell which oc 2>/dev/null)) @{ \ set -e ;\ @@ -314,10 +334,13 @@ ifeq (,$(shell which oc 2>/dev/null)) else OC = $(shell which oc) endif +endif .PHONY: operator-sdk +## Download operator-sdk locally if necessary. export OPERATOR_SDK = ./bin/operator-sdk -operator-sdk: ## Download operator-sdk locally if necessary. +operator-sdk: +ifeq (,$(wildcard $(OPERATOR_SDK))) ifeq (,$(shell which operator-sdk 2>/dev/null)) @{ \ set -e ;\ @@ -328,6 +351,7 @@ ifeq (,$(shell which operator-sdk 2>/dev/null)) else OPERATOR_SDK = $(shell which operator-sdk) endif +endif # A comma-separated list of bundle images (e.g. make catalog-build BUNDLE_IMGS=example.com/operator-bundle:v0.1.0,example.com/operator-bundle:v0.2.0). # These images MUST exist in a registry and be pull-able. diff --git a/PROJECT b/PROJECT index f4e048f91..be99b8543 100644 --- a/PROJECT +++ b/PROJECT @@ -3,31 +3,68 @@ layout: go.kubebuilder.io/v3 projectName: infinispan-operator repo: github.com/infinispan/infinispan-operator resources: -- crdVersion: v1 +- api: + crdVersion: v1 + namespaced: true + controller: true + domain: org group: infinispan kind: Infinispan + path: github.com/infinispan/infinispan-operator/api/v1 version: v1 - webhookVersion: v1 -- crdVersion: v1 + webhooks: + defaulting: true + validation: true + webhookVersion: v1 +- api: + crdVersion: v1 + namespaced: true + controller: true + domain: org group: infinispan kind: Backup + path: github.com/infinispan/infinispan-operator/api/v2alpha1 version: v2alpha1 - webhookVersion: v1 -- crdVersion: v1 + webhooks: + defaulting: true + validation: true + webhookVersion: v1 +- api: + crdVersion: v1 + namespaced: true + controller: true + domain: org group: infinispan kind: Restore + path: github.com/infinispan/infinispan-operator/api/v2alpha1 version: v2alpha1 - webhookVersion: v1 -- crdVersion: v1 + webhooks: + defaulting: true + validation: true + webhookVersion: v1 +- api: + crdVersion: v1 + namespaced: true + controller: true + domain: org group: infinispan kind: Batch + path: github.com/infinispan/infinispan-operator/api/v2alpha1 version: v2alpha1 -- crdVersion: v1 +- api: + crdVersion: v1 + namespaced: true + controller: true + domain: org group: infinispan kind: Cache + path: github.com/infinispan/infinispan-operator/api/v2alpha1 version: v2alpha1 - webhookVersion: v1 -version: 3-alpha + webhooks: + defaulting: true + validation: true + webhookVersion: v1 +version: "3" plugins: manifests.sdk.operatorframework.io/v2: {} scorecard.sdk.operatorframework.io/v2: {} diff --git a/api/v1/infinispan_webhook_test.go b/api/v1/infinispan_webhook_test.go index 3e85fb866..0a703443d 100644 --- a/api/v1/infinispan_webhook_test.go +++ b/api/v1/infinispan_webhook_test.go @@ -403,7 +403,7 @@ var _ = Describe("Infinispan Webhooks", func() { } err := k8sClient.Create(ctx, ispn.DeepCopy()) - expectInvalidErrStatus(err, statusDetailCause{metav1.CauseTypeFieldValueInvalid, "spec.dependencies.artifacts.hash", "in body should match"}) + expectInvalidErrStatus(err, statusDetailCause{metav1.CauseTypeFieldValueInvalid, "spec.dependencies.artifacts[0].hash", "in body should match"}) ispn.Spec.Dependencies.Artifacts[0].Hash = "sha1:" + hash.HashString("made up") Expect(k8sClient.Create(ctx, ispn.DeepCopy())).Should(Succeed()) @@ -417,7 +417,7 @@ var _ = Describe("Infinispan Webhooks", func() { // Invalid Http ispn.Spec.Dependencies.Artifacts[0].Url = "httasfap://test.com" err = k8sClient.Create(ctx, ispn.DeepCopy()) - expectInvalidErrStatus(err, statusDetailCause{metav1.CauseTypeFieldValueInvalid, "spec.dependencies.artifacts.url", "should match"}) + expectInvalidErrStatus(err, statusDetailCause{metav1.CauseTypeFieldValueInvalid, "spec.dependencies.artifacts[0].url", "should match"}) // FTP ispn.Spec.Dependencies.Artifacts[0].Url = "ftp://test.com" @@ -436,7 +436,7 @@ var _ = Describe("Infinispan Webhooks", func() { Maven: "http://org.postgresql:postgresql:42.3.1", } err = k8sClient.Create(ctx, ispn.DeepCopy()) - expectInvalidErrStatus(err, statusDetailCause{metav1.CauseTypeFieldValueInvalid, "spec.dependencies.artifacts.maven", "should match"}) + expectInvalidErrStatus(err, statusDetailCause{metav1.CauseTypeFieldValueInvalid, "spec.dependencies.artifacts[0].maven", "should match"}) // Ensure that an artifacts Url and Maven field can't be set at the same time ispn.Spec.Dependencies.Artifacts[0] = InfinispanExternalArtifacts{ diff --git a/config/crd/bases/infinispan.org_backups.yaml b/config/crd/bases/infinispan.org_backups.yaml index 5bd456816..5d78eda5d 100644 --- a/config/crd/bases/infinispan.org_backups.yaml +++ b/config/crd/bases/infinispan.org_backups.yaml @@ -1,10 +1,9 @@ - --- apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.4.1 + controller-gen.kubebuilder.io/version: v0.9.2 creationTimestamp: null name: backups.infinispan.org spec: @@ -122,9 +121,3 @@ spec: storage: true subresources: status: {} -status: - acceptedNames: - kind: "" - plural: "" - conditions: [] - storedVersions: [] diff --git a/config/crd/bases/infinispan.org_batches.yaml b/config/crd/bases/infinispan.org_batches.yaml index 84c35618d..7868bc0a3 100644 --- a/config/crd/bases/infinispan.org_batches.yaml +++ b/config/crd/bases/infinispan.org_batches.yaml @@ -1,10 +1,9 @@ - --- apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.4.1 + controller-gen.kubebuilder.io/version: v0.9.2 creationTimestamp: null name: batches.infinispan.org spec: @@ -70,9 +69,3 @@ spec: storage: true subresources: status: {} -status: - acceptedNames: - kind: "" - plural: "" - conditions: [] - storedVersions: [] diff --git a/config/crd/bases/infinispan.org_caches.yaml b/config/crd/bases/infinispan.org_caches.yaml index d8a156fa7..4f4db267a 100644 --- a/config/crd/bases/infinispan.org_caches.yaml +++ b/config/crd/bases/infinispan.org_caches.yaml @@ -1,10 +1,9 @@ - --- apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.4.1 + controller-gen.kubebuilder.io/version: v0.9.2 creationTimestamp: null name: caches.infinispan.org spec: @@ -59,6 +58,7 @@ spec: required: - key type: object + x-kubernetes-map-type: atomic secretName: description: The secret that contains user credentials. type: string @@ -81,6 +81,7 @@ spec: required: - key type: object + x-kubernetes-map-type: atomic type: object clusterName: description: Infinispan cluster name @@ -143,9 +144,3 @@ spec: storage: true subresources: status: {} -status: - acceptedNames: - kind: "" - plural: "" - conditions: [] - storedVersions: [] diff --git a/config/crd/bases/infinispan.org_infinispans.yaml b/config/crd/bases/infinispan.org_infinispans.yaml index 71e5f1d84..bfdae1230 100644 --- a/config/crd/bases/infinispan.org_infinispans.yaml +++ b/config/crd/bases/infinispan.org_infinispans.yaml @@ -1,10 +1,9 @@ - --- apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.4.1 + controller-gen.kubebuilder.io/version: v0.9.2 creationTimestamp: null name: infinispans.infinispan.org spec: @@ -138,6 +137,7 @@ spec: type: object type: array type: object + x-kubernetes-map-type: atomic weight: description: Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100. @@ -238,10 +238,12 @@ spec: type: object type: array type: object + x-kubernetes-map-type: atomic type: array required: - nodeSelectorTerms type: object + x-kubernetes-map-type: atomic type: object podAffinity: description: Describes pod affinity scheduling rules (e.g. co-locate @@ -318,6 +320,7 @@ spec: The requirements are ANDed. type: object type: object + x-kubernetes-map-type: atomic namespaceSelector: description: A label query over the set of namespaces that the term applies to. The term is applied @@ -374,6 +377,7 @@ spec: The requirements are ANDed. type: object type: object + x-kubernetes-map-type: atomic namespaces: description: namespaces specifies a static list of namespace names that the term applies to. The @@ -472,6 +476,7 @@ spec: requirements are ANDed. type: object type: object + x-kubernetes-map-type: atomic namespaceSelector: description: A label query over the set of namespaces that the term applies to. The term is applied to the @@ -523,6 +528,7 @@ spec: requirements are ANDed. type: object type: object + x-kubernetes-map-type: atomic namespaces: description: namespaces specifies a static list of namespace names that the term applies to. The term is applied @@ -623,6 +629,7 @@ spec: The requirements are ANDed. type: object type: object + x-kubernetes-map-type: atomic namespaceSelector: description: A label query over the set of namespaces that the term applies to. The term is applied @@ -679,6 +686,7 @@ spec: The requirements are ANDed. type: object type: object + x-kubernetes-map-type: atomic namespaces: description: namespaces specifies a static list of namespace names that the term applies to. The @@ -777,6 +785,7 @@ spec: requirements are ANDed. type: object type: object + x-kubernetes-map-type: atomic namespaceSelector: description: A label query over the set of namespaces that the term applies to. The term is applied to the @@ -828,6 +837,7 @@ spec: requirements are ANDed. type: object type: object + x-kubernetes-map-type: atomic namespaces: description: namespaces specifies a static list of namespace names that the term applies to. The term is applied @@ -1133,6 +1143,7 @@ spec: type: object type: array type: object + x-kubernetes-map-type: atomic weight: description: Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100. @@ -1238,10 +1249,12 @@ spec: type: object type: array type: object + x-kubernetes-map-type: atomic type: array required: - nodeSelectorTerms type: object + x-kubernetes-map-type: atomic type: object podAffinity: description: Describes pod affinity scheduling rules (e.g. @@ -1322,6 +1335,7 @@ spec: only "value". The requirements are ANDed. type: object type: object + x-kubernetes-map-type: atomic namespaceSelector: description: A label query over the set of namespaces that the term applies to. The term is applied @@ -1379,6 +1393,7 @@ spec: only "value". The requirements are ANDed. type: object type: object + x-kubernetes-map-type: atomic namespaces: description: namespaces specifies a static list of namespace names that the term applies to. @@ -1483,6 +1498,7 @@ spec: The requirements are ANDed. type: object type: object + x-kubernetes-map-type: atomic namespaceSelector: description: A label query over the set of namespaces that the term applies to. The term is applied @@ -1539,6 +1555,7 @@ spec: The requirements are ANDed. type: object type: object + x-kubernetes-map-type: atomic namespaces: description: namespaces specifies a static list of namespace names that the term applies to. The @@ -1642,6 +1659,7 @@ spec: only "value". The requirements are ANDed. type: object type: object + x-kubernetes-map-type: atomic namespaceSelector: description: A label query over the set of namespaces that the term applies to. The term is applied @@ -1699,6 +1717,7 @@ spec: only "value". The requirements are ANDed. type: object type: object + x-kubernetes-map-type: atomic namespaces: description: namespaces specifies a static list of namespace names that the term applies to. @@ -1803,6 +1822,7 @@ spec: The requirements are ANDed. type: object type: object + x-kubernetes-map-type: atomic namespaceSelector: description: A label query over the set of namespaces that the term applies to. The term is applied @@ -1859,6 +1879,7 @@ spec: The requirements are ANDed. type: object type: object + x-kubernetes-map-type: atomic namespaces: description: namespaces specifies a static list of namespace names that the term applies to. The @@ -2313,9 +2334,3 @@ spec: storage: true subresources: status: {} -status: - acceptedNames: - kind: "" - plural: "" - conditions: [] - storedVersions: [] diff --git a/config/crd/bases/infinispan.org_restores.yaml b/config/crd/bases/infinispan.org_restores.yaml index 510937a99..725c6c254 100644 --- a/config/crd/bases/infinispan.org_restores.yaml +++ b/config/crd/bases/infinispan.org_restores.yaml @@ -1,10 +1,9 @@ - --- apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.4.1 + controller-gen.kubebuilder.io/version: v0.9.2 creationTimestamp: null name: restores.infinispan.org spec: @@ -113,9 +112,3 @@ spec: storage: true subresources: status: {} -status: - acceptedNames: - kind: "" - plural: "" - conditions: [] - storedVersions: [] diff --git a/config/crd/bases/integreatly.org_grafanadashboards.yaml b/config/crd/bases/integreatly.org_grafanadashboards.yaml index b3af36591..a3c9cd5d2 100644 --- a/config/crd/bases/integreatly.org_grafanadashboards.yaml +++ b/config/crd/bases/integreatly.org_grafanadashboards.yaml @@ -1,10 +1,9 @@ - --- apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.4.1 + controller-gen.kubebuilder.io/version: v0.9.2 creationTimestamp: null name: grafanadashboards.integreatly.org spec: @@ -53,6 +52,7 @@ spec: required: - key type: object + x-kubernetes-map-type: atomic customFolderName: type: string datasources: @@ -96,9 +96,3 @@ spec: type: object served: true storage: true -status: - acceptedNames: - kind: "" - plural: "" - conditions: [] - storedVersions: [] diff --git a/config/crd/bases/integreatly.org_grafanadatasources.yaml b/config/crd/bases/integreatly.org_grafanadatasources.yaml index f2dace37a..3bcf5cdce 100644 --- a/config/crd/bases/integreatly.org_grafanadatasources.yaml +++ b/config/crd/bases/integreatly.org_grafanadatasources.yaml @@ -1,10 +1,9 @@ - --- apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.4.1 + controller-gen.kubebuilder.io/version: v0.9.2 creationTimestamp: null name: grafanadatasources.integreatly.org spec: @@ -61,9 +60,9 @@ spec: description: The most common json options See https://grafana.com/docs/administration/provisioning/#datasources properties: addCorsHeader: - description: ' Useful fields for clickhouse datasource See - https://github.com/Vertamedia/clickhouse-grafana/tree/master/dist/README.md#configure-the-datasource-with-provisioning See - https://github.com/Vertamedia/clickhouse-grafana/tree/master/src/datasource.ts#L44' + description: Useful fields for clickhouse datasource See + https://github.com/Vertamedia/clickhouse-grafana/tree/master/dist/README.md#configure-the-datasource-with-provisioning + See https://github.com/Vertamedia/clickhouse-grafana/tree/master/src/datasource.ts#L44 type: boolean appInsightsAppId: description: Fields for Azure data sources @@ -298,9 +297,3 @@ spec: type: object served: true storage: true -status: - acceptedNames: - kind: "" - plural: "" - conditions: [] - storedVersions: [] diff --git a/config/crd/bases/integreatly.org_grafanas.yaml b/config/crd/bases/integreatly.org_grafanas.yaml index 84a9a11f4..065080c8b 100644 --- a/config/crd/bases/integreatly.org_grafanas.yaml +++ b/config/crd/bases/integreatly.org_grafanas.yaml @@ -1,10 +1,9 @@ - --- apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.4.1 + controller-gen.kubebuilder.io/version: v0.9.2 creationTimestamp: null name: grafanas.integreatly.org spec: @@ -694,6 +693,7 @@ spec: required: - key type: object + x-kubernetes-map-type: atomic fieldRef: description: 'Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['''']`, @@ -712,6 +712,7 @@ spec: required: - fieldPath type: object + x-kubernetes-map-type: atomic resourceFieldRef: description: 'Selects a resource of the container: only resources limits and requests (limits.cpu, @@ -737,6 +738,7 @@ spec: required: - resource type: object + x-kubernetes-map-type: atomic secretKeyRef: description: Selects a key of a secret in the pod's namespace @@ -758,6 +760,7 @@ spec: required: - key type: object + x-kubernetes-map-type: atomic type: object required: - name @@ -788,6 +791,7 @@ spec: defined type: boolean type: object + x-kubernetes-map-type: atomic prefix: description: An optional identifier to prepend to each key in the ConfigMap. Must be a C_IDENTIFIER. @@ -804,6 +808,7 @@ spec: description: Specify whether the Secret must be defined type: boolean type: object + x-kubernetes-map-type: atomic type: object type: array image: @@ -1890,6 +1895,7 @@ spec: are ANDed. type: object type: object + x-kubernetes-map-type: atomic type: array dashboardNamespaceSelector: description: A label selector is a label query over a set of resources. @@ -1938,6 +1944,7 @@ spec: are ANDed. type: object type: object + x-kubernetes-map-type: atomic dataStorage: description: GrafanaDataStorage provides a means to configure the grafana data storage @@ -2072,6 +2079,7 @@ spec: type: object type: array type: object + x-kubernetes-map-type: atomic weight: description: Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100. @@ -2177,10 +2185,12 @@ spec: type: object type: array type: object + x-kubernetes-map-type: atomic type: array required: - nodeSelectorTerms type: object + x-kubernetes-map-type: atomic type: object podAffinity: description: Describes pod affinity scheduling rules (e.g. @@ -2261,6 +2271,7 @@ spec: only "value". The requirements are ANDed. type: object type: object + x-kubernetes-map-type: atomic namespaceSelector: description: A label query over the set of namespaces that the term applies to. The term is applied @@ -2318,6 +2329,7 @@ spec: only "value". The requirements are ANDed. type: object type: object + x-kubernetes-map-type: atomic namespaces: description: namespaces specifies a static list of namespace names that the term applies to. @@ -2422,6 +2434,7 @@ spec: The requirements are ANDed. type: object type: object + x-kubernetes-map-type: atomic namespaceSelector: description: A label query over the set of namespaces that the term applies to. The term is applied @@ -2478,6 +2491,7 @@ spec: The requirements are ANDed. type: object type: object + x-kubernetes-map-type: atomic namespaces: description: namespaces specifies a static list of namespace names that the term applies to. The @@ -2581,6 +2595,7 @@ spec: only "value". The requirements are ANDed. type: object type: object + x-kubernetes-map-type: atomic namespaceSelector: description: A label query over the set of namespaces that the term applies to. The term is applied @@ -2638,6 +2653,7 @@ spec: only "value". The requirements are ANDed. type: object type: object + x-kubernetes-map-type: atomic namespaces: description: namespaces specifies a static list of namespace names that the term applies to. @@ -2742,6 +2758,7 @@ spec: The requirements are ANDed. type: object type: object + x-kubernetes-map-type: atomic namespaceSelector: description: A label query over the set of namespaces that the term applies to. The term is applied @@ -2798,6 +2815,7 @@ spec: The requirements are ANDed. type: object type: object + x-kubernetes-map-type: atomic namespaces: description: namespaces specifies a static list of namespace names that the term applies to. The @@ -3014,6 +3032,7 @@ spec: description: Specify whether the ConfigMap must be defined type: boolean type: object + x-kubernetes-map-type: atomic prefix: description: An optional identifier to prepend to each key in the ConfigMap. Must be a C_IDENTIFIER. @@ -3029,6 +3048,7 @@ spec: description: Specify whether the Secret must be defined type: boolean type: object + x-kubernetes-map-type: atomic type: object type: array extraVolumeMounts: @@ -3201,6 +3221,7 @@ spec: uid?' type: string type: object + x-kubernetes-map-type: atomic user: description: 'user is optional: User is the rados user name, default is admin More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' @@ -3233,6 +3254,7 @@ spec: uid?' type: string type: object + x-kubernetes-map-type: atomic volumeID: description: 'volumeID used to identify the volume in cinder. More info: https://examples.k8s.io/mysql-cinder-pd/README.md' @@ -3308,6 +3330,7 @@ spec: or its keys must be defined type: boolean type: object + x-kubernetes-map-type: atomic csi: description: csi (Container Storage Interface) represents ephemeral storage that is handled by certain external @@ -3339,6 +3362,7 @@ spec: uid?' type: string type: object + x-kubernetes-map-type: atomic readOnly: description: readOnly specifies a read-only configuration for the volume. Defaults to false (read/write). @@ -3394,6 +3418,7 @@ spec: required: - fieldPath type: object + x-kubernetes-map-type: atomic mode: description: 'Optional: mode bits used to set permissions on this file, must be an octal value @@ -3438,6 +3463,7 @@ spec: required: - resource type: object + x-kubernetes-map-type: atomic required: - path type: object @@ -3476,12 +3502,12 @@ spec: the pod starts, and deleted when the pod is removed. \n Use this if: a) the volume is only needed while the pod runs, b) features of normal volumes like restoring from - snapshot or capacity tracking are needed, c) the storage + snapshot or capacity tracking are needed, c) the storage driver is specified through a storage class, and d) the storage driver supports dynamic volume provisioning through - \ a PersistentVolumeClaim (see EphemeralVolumeSource - for more information on the connection between this - volume type and PersistentVolumeClaim). \n Use PersistentVolumeClaim + a PersistentVolumeClaim (see EphemeralVolumeSource for + more information on the connection between this volume + type and PersistentVolumeClaim). \n Use PersistentVolumeClaim or one of the vendor-specific APIs for volumes that persist for longer than the lifecycle of an individual pod. \n Use CSI for light-weight local ephemeral volumes if the @@ -3564,6 +3590,7 @@ spec: - kind - name type: object + x-kubernetes-map-type: atomic dataSourceRef: description: 'dataSourceRef specifies the object from which to populate the volume with data, @@ -3583,12 +3610,12 @@ spec: the other is non-empty. There are two important differences between DataSource and DataSourceRef: * While DataSource only allows two specific - types of objects, DataSourceRef allows any + types of objects, DataSourceRef allows any non-core object, as well as PersistentVolumeClaim objects. * While DataSource ignores disallowed - values (dropping them), DataSourceRef preserves + values (dropping them), DataSourceRef preserves all values, and generates an error if a disallowed - value is specified. (Beta) Using this field + value is specified. (Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled.' properties: @@ -3611,6 +3638,7 @@ spec: - kind - name type: object + x-kubernetes-map-type: atomic resources: description: 'resources represents the minimum resources the volume should have. If RecoverVolumeExpansionFailure @@ -3698,6 +3726,7 @@ spec: only "value". The requirements are ANDed. type: object type: object + x-kubernetes-map-type: atomic storageClassName: description: 'storageClassName is the name of the StorageClass required by the claim. More @@ -3792,6 +3821,7 @@ spec: uid?' type: string type: object + x-kubernetes-map-type: atomic required: - driver type: object @@ -3975,6 +4005,7 @@ spec: uid?' type: string type: object + x-kubernetes-map-type: atomic targetPortal: description: targetPortal is iSCSI Target Portal. The Portal is either an IP or ip_addr:port if the port @@ -4151,6 +4182,7 @@ spec: ConfigMap or its keys must be defined type: boolean type: object + x-kubernetes-map-type: atomic downwardAPI: description: downwardAPI information about the downwardAPI data to project @@ -4180,6 +4212,7 @@ spec: required: - fieldPath type: object + x-kubernetes-map-type: atomic mode: description: 'Optional: mode bits used to set permissions on this file, must @@ -4231,6 +4264,7 @@ spec: required: - resource type: object + x-kubernetes-map-type: atomic required: - path type: object @@ -4298,6 +4332,7 @@ spec: the Secret or its key must be defined type: boolean type: object + x-kubernetes-map-type: atomic serviceAccountToken: description: serviceAccountToken is information about the serviceAccountToken data to project @@ -4418,6 +4453,7 @@ spec: uid?' type: string type: object + x-kubernetes-map-type: atomic user: description: 'user is the rados user name. Default is admin. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' @@ -4458,6 +4494,7 @@ spec: uid?' type: string type: object + x-kubernetes-map-type: atomic sslEnabled: description: sslEnabled Flag enable/disable SSL communication with Gateway, default false @@ -4578,6 +4615,7 @@ spec: uid?' type: string type: object + x-kubernetes-map-type: atomic volumeName: description: volumeName is the human-readable name of the StorageOS volume. Volume names are only unique @@ -4971,6 +5009,7 @@ spec: "value". The requirements are ANDed. type: object type: object + x-kubernetes-map-type: atomic type: object livenessProbeSpec: properties: @@ -5133,6 +5172,7 @@ spec: TODO: Add other useful fields. apiVersion, kind, uid?' type: string type: object + x-kubernetes-map-type: atomic type: array labels: additionalProperties: @@ -5219,9 +5259,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 86522ebcc..f235fb8b9 100644 --- a/config/manager/manager.yaml +++ b/config/manager/manager.yaml @@ -19,6 +19,8 @@ spec: replicas: 1 template: metadata: + annotations: + kubectl.kubernetes.io/default-container: manager labels: control-plane: controller-manager spec: diff --git a/config/manifests/bases/infinispan-operator.clusterserviceversion.yaml b/config/manifests/bases/infinispan-operator.clusterserviceversion.yaml index 16bbc5a43..dd3c676e3 100644 --- a/config/manifests/bases/infinispan-operator.clusterserviceversion.yaml +++ b/config/manifests/bases/infinispan-operator.clusterserviceversion.yaml @@ -37,7 +37,8 @@ spec: - description: Current phase of the backup operation displayName: Phase path: phase - - description: The name of the created PersistentVolumeClaim used to store the backup + - description: The name of the created PersistentVolumeClaim used to store the + backup displayName: Persistent Volume Claim path: pvc - description: Reason indicates the reason for any backup related failures. @@ -57,11 +58,13 @@ spec: - description: Batch string to be executed displayName: Config Command path: config - - description: Name of the ConfigMap containing the batch and resource files to be executed + - description: Name of the ConfigMap containing the batch and resource files + to be executed displayName: ConfigMap Name path: configMap statusDescriptors: - - description: The UUID of the Infinispan instance that the Batch is associated with + - description: The UUID of the Infinispan instance that the Batch is associated + with displayName: Cluster UUID path: clusterUID - description: Current phase of the batch operation @@ -86,7 +89,8 @@ spec: path: clusterName x-descriptors: - urn:alm:descriptor:io.kubernetes:infinispan.org:v1:Infinispan - - description: How updates to Cache CR template should be applied on the Infinispan server + - description: How updates to Cache CR template should be applied on the Infinispan + server displayName: Update Strategy path: updates.strategy x-descriptors: @@ -98,7 +102,8 @@ spec: kind: Infinispan name: infinispans.infinispan.org specDescriptors: - - description: If true, a dedicated pod is used to ensure that all config resources created on the Infinispan server have a matching CR resource + - description: If true, a dedicated pod is used to ensure that all config resources + created on the Infinispan server have a matching CR resource displayName: Toggle Config Listener path: configListener.enabled x-descriptors: @@ -187,7 +192,8 @@ spec: path: service.replicationFactor x-descriptors: - urn:alm:descriptor:com.tectonic.ui:number - - description: Deprecated and to be removed on subsequent release. Use .URL with infinispan+xsite schema instead. + - description: Deprecated and to be removed on subsequent release. Use .URL + with infinispan+xsite schema instead. displayName: Node Port path: service.sites.locations[0].port x-descriptors: diff --git a/config/prometheus/monitor.yaml b/config/prometheus/monitor.yaml index 9b8047b76..d19136ae7 100644 --- a/config/prometheus/monitor.yaml +++ b/config/prometheus/monitor.yaml @@ -11,6 +11,10 @@ spec: endpoints: - path: /metrics port: https + scheme: https + bearerTokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token + tlsConfig: + insecureSkipVerify: true selector: matchLabels: control-plane: controller-manager diff --git a/config/rbac/role.yaml b/config/rbac/role.yaml index 77a867539..8788eaf30 100644 --- a/config/rbac/role.yaml +++ b/config/rbac/role.yaml @@ -1,4 +1,3 @@ - --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole @@ -31,7 +30,6 @@ rules: - get - list - watch - --- apiVersion: rbac.authorization.k8s.io/v1 kind: Role diff --git a/config/webhook/manifests.yaml b/config/webhook/manifests.yaml index 18df153e5..888e493ba 100644 --- a/config/webhook/manifests.yaml +++ b/config/webhook/manifests.yaml @@ -1,4 +1,3 @@ - --- apiVersion: admissionregistration.k8s.io/v1 kind: MutatingWebhookConfiguration @@ -90,7 +89,6 @@ webhooks: resources: - restores sideEffects: None - --- apiVersion: admissionregistration.k8s.io/v1 kind: ValidatingWebhookConfiguration diff --git a/config/webhook/service.yaml b/config/webhook/service.yaml index 31e0f8295..f6b9eff34 100644 --- a/config/webhook/service.yaml +++ b/config/webhook/service.yaml @@ -1,4 +1,3 @@ - apiVersion: v1 kind: Service metadata: diff --git a/go.mod b/go.mod index 6b02edffc..5216dc9d0 100644 --- a/go.mod +++ b/go.mod @@ -1,6 +1,6 @@ module github.com/infinispan/infinispan-operator -go 1.17 +go 1.19 require ( github.com/GeertJohan/go.rice v1.0.2 diff --git a/go.sum b/go.sum index 7c0beb106..c64775068 100644 --- a/go.sum +++ b/go.sum @@ -115,7 +115,6 @@ github.com/blang/semver/v4 v4.0.0/go.mod h1:IbckMUScFkM3pff0VJDNKRiT6TG/YpiHIM2y github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/certifi/gocertifi v0.0.0-20191021191039-0944d244cd40/go.mod h1:sGbDF6GwGcLpkNXPUTkMRoywsNa/ol15pxFe6ERfguA= github.com/certifi/gocertifi v0.0.0-20200922220541-2c3bb06c6054/go.mod h1:sGbDF6GwGcLpkNXPUTkMRoywsNa/ol15pxFe6ERfguA= -github.com/cespare/xxhash v1.1.0 h1:a6HrQnmkObjyL+Gs60czilIUGqrzKutQD6XZog3p+ko= github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/cespare/xxhash/v2 v2.1.2 h1:YRXhKfTDauu4ajMg1TPgFO5jnlC2HCbmLXMcTG5cbYE= @@ -698,7 +697,6 @@ go.uber.org/atomic v1.7.0 h1:ADUqmZGgLDDfbSL9ZmPxKTybcoEYHgpYfELNoN+7hsw= go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= go.uber.org/goleak v1.1.10/go.mod h1:8a7PlsEVH3e/a/GLqe5IIrQx6GzcnRmZEufDUTk4A7A= go.uber.org/goleak v1.1.11-0.20210813005559-691160354723/go.mod h1:cwTWslyiVhfpKIDGSZEM2HlOvcqm+tG4zioyIeLoqMQ= -go.uber.org/goleak v1.1.12/go.mod h1:cwTWslyiVhfpKIDGSZEM2HlOvcqm+tG4zioyIeLoqMQ= go.uber.org/goleak v1.2.0 h1:xqgm/S+aQvhWFTtR0XK3Jvg7z8kGV8P4X14IzwN3Eqk= go.uber.org/goleak v1.2.0/go.mod h1:XJYK+MuIchqpmGmUSAzotztawfKvYLUIgg7guXrwVUo= go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= @@ -1260,7 +1258,6 @@ k8s.io/gengo v0.0.0-20210813121822-485abfe95c7c/go.mod h1:FiNAH4ZV3gBg2Kwh89tzAE k8s.io/gengo v0.0.0-20211129171323-c02415ce4185/go.mod h1:FiNAH4ZV3gBg2Kwh89tzAEV2be7d5xI0vBa/VySYy3E= k8s.io/klog v0.0.0-20181102134211-b9b56d5dfc92/go.mod h1:Gq+BEi5rUBO/HRz0bTSXDUcqjScdoY3a9IHpCEIOOfk= k8s.io/klog v0.3.0/go.mod h1:Gq+BEi5rUBO/HRz0bTSXDUcqjScdoY3a9IHpCEIOOfk= -k8s.io/klog v1.0.0 h1:Pt+yjF5aB1xDSVbau4VsWe+dQNzA0qv1LlXdC2dF6Q8= k8s.io/klog v1.0.0/go.mod h1:4Bi6QPql/J/LkTDqv7R/cd3hPo4k2DG6Ptcz060Ez5I= k8s.io/klog/v2 v2.0.0/go.mod h1:PBfzABfn139FHAV07az/IF9Wp1bkk3vpT2XSJ76fSDE= k8s.io/klog/v2 v2.2.0/go.mod h1:Od+F08eJP+W3HUb4pSrPpgp9DGU4GzlpG/TmITuYh/Y= diff --git a/pkg/apis/integreatly/v1alpha1/grafanadashboard_types.go b/pkg/apis/integreatly/v1alpha1/grafanadashboard_types.go index a61261b93..2eb303dca 100644 --- a/pkg/apis/integreatly/v1alpha1/grafanadashboard_types.go +++ b/pkg/apis/integreatly/v1alpha1/grafanadashboard_types.go @@ -74,7 +74,7 @@ func init() { SchemeBuilder.Register(&GrafanaDashboard{}, &GrafanaDashboardList{}) } -//nolint +// nolint func (d *GrafanaDashboard) Hash() string { hash := sha256.New() diff --git a/pkg/infinispan/client/client.go b/pkg/infinispan/client/client.go index bdc341478..b3d07e082 100644 --- a/pkg/infinispan/client/client.go +++ b/pkg/infinispan/client/client.go @@ -16,6 +16,7 @@ To prevent duplicated code, newer api implementation packages should use composi function as expected on newer server versions. For example, if v14 can reuse a new `api.Cache` implementation but requires a new `api.Caches` implementation: + package v14 ... type infinispan struct { diff --git a/scripts/run-tests.sh b/scripts/run-tests.sh index 0d34d44af..38c2543b6 100755 --- a/scripts/run-tests.sh +++ b/scripts/run-tests.sh @@ -11,7 +11,7 @@ PARALLEL_COUNT=${PARALLEL_COUNT:-1} VERSION=$(git describe --tags --always --dirty) GO_LDFLAGS="-X github.com/infinispan/infinispan-operator/launcher.Version=${VERSION}" -go clean -testcache ./test/e2e +go clean -testcache if [ -z "${TEST_NAME}" ]; then go test -v ./test/e2e/"${TEST_BUNDLE}" -timeout ${TIMEOUT} -ldflags "${GO_LDFLAGS}" -parallel "${PARALLEL_COUNT}" 2>&1 | tee /tmp/testOutput testExitCode=${PIPESTATUS[0]}