From a8747f3e90f8e067e5a688382e2c7f13f37f4fbb Mon Sep 17 00:00:00 2001 From: KevFan Date: Thu, 19 Jan 2023 12:27:41 +0000 Subject: [PATCH 1/2] MGDAPI-5078 - feat: support container image platform --- Makefile | 5 +++-- scripts/create-olm-bundle.sh | 4 +++- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/Makefile b/Makefile index 67592aecd..8f45849d7 100644 --- a/Makefile +++ b/Makefile @@ -2,6 +2,7 @@ IMAGE_REG ?= quay.io IMAGE_ORG ?= integreatly IMAGE_NAME ?= cloud-resource-operator OPERATOR_IMG = $(IMAGE_REG)/$(IMAGE_ORG)/$(IMAGE_NAME):v$(VERSION) +CONTAINER_PLATFORM ?= linux/amd64 MANIFEST_NAME ?= cloud-resources NAMESPACE=cloud-resource-operator PREV_VERSION=0.41.0 @@ -141,7 +142,7 @@ test/unit: .PHONY: image/build image/build: build echo "build image ${OPERATOR_IMG}" - docker build -t ${OPERATOR_IMG} . + docker build --platform=$(CONTAINER_PLATFORM) -t ${OPERATOR_IMG} . .PHONY: image/push image/push: image/build @@ -238,7 +239,7 @@ release/prepare: gen/csv image/push create/olm/bundle .PHONY: image/build/pipelines image/build/pipelines: build echo "build image ${OPERATOR_IMG}" - sudo podman build --ulimit nofile=65535:65535 . -t ${OPERATOR_IMG} + sudo podman build --platform=$(CONTAINER_PLATFORM) --ulimit nofile=65535:65535 . -t ${OPERATOR_IMG} sudo podman save ${OPERATOR_IMG} | sudo -u jenkins podman load .PHONY: image/push/pipelines diff --git a/scripts/create-olm-bundle.sh b/scripts/create-olm-bundle.sh index 98269ebcf..0f004d7b4 100755 --- a/scripts/create-olm-bundle.sh +++ b/scripts/create-olm-bundle.sh @@ -8,6 +8,7 @@ LATEST_VERSION=$(grep cloud-resource-operator bundles/cloud-resource-operator.pa ORG="${IMAGE_ORG:-integreatly}" REG="${IMAGE_REG:-quay.io}" BUILD_TOOL="${BUILD_TOOL:-docker}" +CONTAINER_PLATFORM="${CONTAINER_PLATFORM:-linux/amd64}" UPGRADE_CRO="${UPGRADE:-true}" VERSIONS="${BUNDLE_VERSIONS:-$LATEST_VERSION}" ROOT=$(pwd) @@ -63,6 +64,7 @@ generate_bundles() { do image="$REG/$ORG/cloud-resource-operator:bundle-v$VERSION" $BUILD_TOOL build -f ./bundles/bundle.Dockerfile -t $image \ + --platform="$CONTAINER_PLATFORM" \ --build-arg manifest_path=./bundles/temp/$VERSION/manifests \ --build-arg metadata_path=./bundles/temp/$VERSION/metadata \ --build-arg version=$VERSION . @@ -88,7 +90,7 @@ generate_index() { INDEX_IMAGE=$REG/$ORG/cloud-resource-operator:index-v$LATEST_VERSION printf "Building index image:$INDEX_IMAGE\n" - ${BUILD_TOOL} build . -f index.Dockerfile -t $INDEX_IMAGE + ${BUILD_TOOL} build . -f index.Dockerfile -t $INDEX_IMAGE --platform="$CONTAINER_PLATFORM" printf "Pushing index image:'$INDEX_IMAGE\n" ${BUILD_TOOL} push $INDEX_IMAGE From eb4e5f570a9f72712bd301349ed59ef87c206bc0 Mon Sep 17 00:00:00 2001 From: KevFan Date: Thu, 19 Jan 2023 13:56:29 +0000 Subject: [PATCH 2/2] MGDAPI-5078 - release: 0.43.0 --- Makefile | 4 +- ...nitoring.coreos.com_v1_servicemonitor.yaml | 13 + ...source-operator.clusterserviceversion.yaml | 368 ++++++++++++++++++ .../integreatly.org_blobstorages.yaml | 98 +++++ .../manifests/integreatly.org_postgres.yaml | 98 +++++ .../integreatly.org_postgressnapshots.yaml | 65 ++++ .../manifests/integreatly.org_redis.yaml | 98 +++++ .../integreatly.org_redissnapshots.yaml | 63 +++ .../operator-metrics-service_v1_service.yaml | 16 + bundles/0.43.0/metadata/annotations.yaml | 14 + bundles/0.43.0/tests/scorecard/config.yaml | 70 ++++ bundles/cloud-resource-operator.package.yaml | 2 +- ...source-operator.clusterserviceversion.yaml | 8 +- index/base.yaml | 2 +- index/index.yaml | 2 +- version/version.go | 2 +- 16 files changed, 913 insertions(+), 10 deletions(-) create mode 100644 bundles/0.43.0/manifests/cloud-resource-operator-metrics_monitoring.coreos.com_v1_servicemonitor.yaml create mode 100644 bundles/0.43.0/manifests/cloud-resource-operator.clusterserviceversion.yaml create mode 100644 bundles/0.43.0/manifests/integreatly.org_blobstorages.yaml create mode 100644 bundles/0.43.0/manifests/integreatly.org_postgres.yaml create mode 100644 bundles/0.43.0/manifests/integreatly.org_postgressnapshots.yaml create mode 100644 bundles/0.43.0/manifests/integreatly.org_redis.yaml create mode 100644 bundles/0.43.0/manifests/integreatly.org_redissnapshots.yaml create mode 100644 bundles/0.43.0/manifests/operator-metrics-service_v1_service.yaml create mode 100644 bundles/0.43.0/metadata/annotations.yaml create mode 100644 bundles/0.43.0/tests/scorecard/config.yaml diff --git a/Makefile b/Makefile index 8f45849d7..fc7f34021 100644 --- a/Makefile +++ b/Makefile @@ -5,8 +5,8 @@ OPERATOR_IMG = $(IMAGE_REG)/$(IMAGE_ORG)/$(IMAGE_NAME):v$(VERSION) CONTAINER_PLATFORM ?= linux/amd64 MANIFEST_NAME ?= cloud-resources NAMESPACE=cloud-resource-operator -PREV_VERSION=0.41.0 -VERSION=0.42.0 +PREV_VERSION=0.42.0 +VERSION=0.43.0 COMPILE_TARGET=./tmp/_output/bin/$(IMAGE_NAME) UPGRADE ?= true CHANNEL ?= rhmi diff --git a/bundles/0.43.0/manifests/cloud-resource-operator-metrics_monitoring.coreos.com_v1_servicemonitor.yaml b/bundles/0.43.0/manifests/cloud-resource-operator-metrics_monitoring.coreos.com_v1_servicemonitor.yaml new file mode 100644 index 000000000..72373b523 --- /dev/null +++ b/bundles/0.43.0/manifests/cloud-resource-operator-metrics_monitoring.coreos.com_v1_servicemonitor.yaml @@ -0,0 +1,13 @@ +apiVersion: monitoring.coreos.com/v1 +kind: ServiceMonitor +metadata: + labels: + name: cloud-resource-operator + name: cloud-resource-operator-metrics +spec: + endpoints: + - path: /metrics + port: http-metrics + selector: + matchLabels: + name: cloud-resource-operator diff --git a/bundles/0.43.0/manifests/cloud-resource-operator.clusterserviceversion.yaml b/bundles/0.43.0/manifests/cloud-resource-operator.clusterserviceversion.yaml new file mode 100644 index 000000000..8b0f5ad64 --- /dev/null +++ b/bundles/0.43.0/manifests/cloud-resource-operator.clusterserviceversion.yaml @@ -0,0 +1,368 @@ +apiVersion: operators.coreos.com/v1alpha1 +kind: ClusterServiceVersion +metadata: + annotations: + alm-examples: |- + [ + { + "apiVersion": "integreatly.org/v1alpha1", + "kind": "BlobStorage", + "metadata": { + "labels": { + "productName": "ProductName" + }, + "name": "example-blobstorage" + }, + "spec": { + "applyImmediately": false, + "maintenanceWindow": false, + "secretRef": { + "name": "example-blobstorage-sec" + }, + "tier": "development", + "type": "REPLACE_ME" + } + }, + { + "apiVersion": "integreatly.org/v1alpha1", + "kind": "Postgres", + "metadata": { + "labels": { + "productName": "productName" + }, + "name": "example-postgres" + }, + "spec": { + "maintenanceWindow": false, + "secretRef": { + "name": "example-postgres-sec" + }, + "tier": "development", + "type": "REPLACE_ME" + } + }, + { + "apiVersion": "integreatly.org/v1alpha1", + "kind": "PostgresSnapshot", + "metadata": { + "name": "example-postgressnapshot" + }, + "spec": { + "resourceName": "REPLACE_ME" + } + }, + { + "apiVersion": "integreatly.org/v1alpha1", + "kind": "Redis", + "metadata": { + "labels": { + "productName": "productName" + }, + "name": "REPLACE_ME" + }, + "spec": { + "applyImmediately": false, + "maintenanceWindow": false, + "secretRef": { + "name": "REPLACE_ME-sec" + }, + "size": "REPLACE_ME", + "tier": "development", + "type": "REPLACE_ME" + } + }, + { + "apiVersion": "integreatly.org/v1alpha1", + "kind": "RedisSnapshot", + "metadata": { + "name": "example-redissnapshot" + }, + "spec": { + "resourceName": "REPLACE_ME" + } + } + ] + capabilities: Basic Install + containerImage: quay.io/integreatly/cloud-resource-operator:v0.43.0 + operators.operatorframework.io/builder: operator-sdk-v1.21.0 + operators.operatorframework.io/project_layout: go.kubebuilder.io/v2 + name: cloud-resources.v0.43.0 + namespace: placeholder +spec: + apiservicedefinitions: {} + customresourcedefinitions: + owned: + - description: BlobStorage is the Schema for the blobstorages API + kind: BlobStorage + name: blobstorages.integreatly.org + version: v1alpha1 + - description: Postgres is the Schema for the postgres API + kind: Postgres + name: postgres.integreatly.org + version: v1alpha1 + - description: PostgresSnapshot is the Schema for the postgressnapshots API + kind: PostgresSnapshot + name: postgressnapshots.integreatly.org + version: v1alpha1 + - description: Redis is the Schema for the redis API + kind: Redis + name: redis.integreatly.org + version: v1alpha1 + - description: RedisSnapshot is the Schema for the redissnapshots API + kind: RedisSnapshot + name: redissnapshots.integreatly.org + version: v1alpha1 + description: Provision and manage in-cluster and cloud provider resources (Blob Storage, Postgres, Redis, SMTP Details) + displayName: Cloud Resource Operator + icon: + - base64data: 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 + mediatype: image/png + install: + spec: + clusterPermissions: + - rules: + - apiGroups: + - "" + resources: + - configmaps + - persistentvolumes + verbs: + - '*' + - apiGroups: + - config.openshift.io + resources: + - infrastructures + - networks + verbs: + - get + - list + - watch + - apiGroups: + - coordination.k8s.io + resources: + - leases + verbs: + - create + - get + - list + - update + - apiGroups: + - integreatly.org + resources: + - postgres + - postgressnapshots + - redis + - redissnapshots + verbs: + - list + - watch + - apiGroups: + - monitoring.coreos.com + resources: + - prometheusrules + verbs: + - '*' + serviceAccountName: cloud-resource-operator + deployments: + - name: cloud-resource-operator + spec: + replicas: 1 + selector: + matchLabels: + name: cloud-resource-operator + strategy: {} + template: + metadata: + labels: + name: cloud-resource-operator + spec: + containers: + - args: + - --enable-leader-election + command: + - cloud-resource-operator + env: + - name: WATCH_NAMESPACE + valueFrom: + fieldRef: + fieldPath: metadata.annotations['olm.targetNamespaces'] + - name: POD_NAME + valueFrom: + fieldRef: + fieldPath: metadata.name + - name: OPERATOR_NAME + value: cloud-resource-operator + - name: TAG_KEY_PREFIX + value: integreatly.org/ + image: quay.io/integreatly/cloud-resource-operator:v0.43.0 + imagePullPolicy: Always + name: cloud-resource-operator + resources: {} + volumeMounts: + - mountPath: /var/run/secrets/openshift/serviceaccount + name: bound-sa-token + serviceAccountName: cloud-resource-operator + volumes: + - name: bound-sa-token + projected: + sources: + - serviceAccountToken: + audience: openshift + path: token + permissions: + - rules: + - apiGroups: + - "" + resources: + - configmaps + verbs: + - get + - list + - watch + - create + - update + - patch + - delete + - apiGroups: + - "" + resources: + - configmaps/status + verbs: + - get + - update + - patch + - apiGroups: + - "" + resources: + - events + verbs: + - create + - patch + - apiGroups: + - "" + resources: + - configmaps + - endpoints + - events + - persistentvolumeclaims + - pods + - pods/exec + - secrets + - services + - services/finalizers + verbs: + - '*' + - apiGroups: + - apps + resources: + - '*' + verbs: + - '*' + - apiGroups: + - cloud-resource-operator + resources: + - deployments/finalizers + verbs: + - update + - apiGroups: + - cloudcredential.openshift.io + resources: + - credentialsrequests + verbs: + - '*' + - apiGroups: + - config.openshift.io + resources: + - '*' + - authentications + - builds + - clusteroperators + - featuregates + - infrastructures + - ingresses + - networks + - schedulers + verbs: + - '*' + - apiGroups: + - integreatly + resources: + - '*' + verbs: + - '*' + - apiGroups: + - integreatly.org + resources: + - '*' + - postgres + - postgressnapshots + - redis + - redissnapshots + - smtpcredentialset + verbs: + - '*' + - apiGroups: + - integreatly.org + resources: + - blobstorages + verbs: + - create + - delete + - get + - list + - patch + - update + - watch + - apiGroups: + - integreatly.org + resources: + - blobstorages/status + verbs: + - get + - patch + - update + - apiGroups: + - monitoring.coreos.com + resources: + - prometheusrules + verbs: + - '*' + - apiGroups: + - monitoring.coreos.com + resources: + - servicemonitors + verbs: + - create + - get + - apiGroups: + - operators.coreos.com + resources: + - catalogsources + verbs: + - get + - patch + - update + serviceAccountName: cloud-resource-operator + strategy: deployment + installModes: + - supported: true + type: OwnNamespace + - supported: true + type: SingleNamespace + - supported: false + type: MultiNamespace + - supported: true + type: AllNamespaces + keywords: + - integreatly + links: + - name: Cloud Resource Operator + url: https://cloud-resource-operator.domain + maintainers: + - email: integreatly-support@redhat.com + name: Integreatly + maturity: alpha + provider: + name: Integreatly + replaces: cloud-resources.v0.42.0 + version: 0.43.0 diff --git a/bundles/0.43.0/manifests/integreatly.org_blobstorages.yaml b/bundles/0.43.0/manifests/integreatly.org_blobstorages.yaml new file mode 100644 index 000000000..995b98ca3 --- /dev/null +++ b/bundles/0.43.0/manifests/integreatly.org_blobstorages.yaml @@ -0,0 +1,98 @@ +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.9.2 + creationTimestamp: null + name: blobstorages.integreatly.org +spec: + group: integreatly.org + names: + kind: BlobStorage + listKind: BlobStorageList + plural: blobstorages + singular: blobstorage + scope: Namespaced + versions: + - name: v1alpha1 + schema: + openAPIV3Schema: + description: BlobStorage is the Schema for the blobstorages 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: + properties: + applyImmediately: + description: ApplyImmediately is only available to Postgres cr, for + blobstorage and redis cr's currently does nothing + type: boolean + maintenanceWindow: + type: boolean + secretRef: + properties: + name: + type: string + namespace: + type: string + required: + - name + type: object + size: + description: Size allows defining the node size. It is only available + to Redis CR. Blobstorage and Postgres CR's currently does nothing + type: string + skipCreate: + type: boolean + tier: + type: string + type: + type: string + required: + - secretRef + - tier + - type + type: object + status: + properties: + message: + type: string + phase: + type: string + provider: + type: string + secretRef: + properties: + name: + type: string + namespace: + type: string + required: + - name + type: object + strategy: + type: string + version: + type: string + type: object + type: object + served: true + storage: true + subresources: + status: {} +status: + acceptedNames: + kind: "" + plural: "" + conditions: null + storedVersions: null diff --git a/bundles/0.43.0/manifests/integreatly.org_postgres.yaml b/bundles/0.43.0/manifests/integreatly.org_postgres.yaml new file mode 100644 index 000000000..442cdebfa --- /dev/null +++ b/bundles/0.43.0/manifests/integreatly.org_postgres.yaml @@ -0,0 +1,98 @@ +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.9.2 + creationTimestamp: null + name: postgres.integreatly.org +spec: + group: integreatly.org + names: + kind: Postgres + listKind: PostgresList + plural: postgres + singular: postgres + scope: Namespaced + versions: + - name: v1alpha1 + schema: + openAPIV3Schema: + description: Postgres is the Schema for the postgres 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: + properties: + applyImmediately: + description: ApplyImmediately is only available to Postgres cr, for + blobstorage and redis cr's currently does nothing + type: boolean + maintenanceWindow: + type: boolean + secretRef: + properties: + name: + type: string + namespace: + type: string + required: + - name + type: object + size: + description: Size allows defining the node size. It is only available + to Redis CR. Blobstorage and Postgres CR's currently does nothing + type: string + skipCreate: + type: boolean + tier: + type: string + type: + type: string + required: + - secretRef + - tier + - type + type: object + status: + properties: + message: + type: string + phase: + type: string + provider: + type: string + secretRef: + properties: + name: + type: string + namespace: + type: string + required: + - name + type: object + strategy: + type: string + version: + type: string + type: object + type: object + served: true + storage: true + subresources: + status: {} +status: + acceptedNames: + kind: "" + plural: "" + conditions: null + storedVersions: null diff --git a/bundles/0.43.0/manifests/integreatly.org_postgressnapshots.yaml b/bundles/0.43.0/manifests/integreatly.org_postgressnapshots.yaml new file mode 100644 index 000000000..b6e6016a0 --- /dev/null +++ b/bundles/0.43.0/manifests/integreatly.org_postgressnapshots.yaml @@ -0,0 +1,65 @@ +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.9.2 + creationTimestamp: null + name: postgressnapshots.integreatly.org +spec: + group: integreatly.org + names: + kind: PostgresSnapshot + listKind: PostgresSnapshotList + plural: postgressnapshots + singular: postgressnapshot + scope: Namespaced + versions: + - name: v1alpha1 + schema: + openAPIV3Schema: + description: PostgresSnapshot is the Schema for the postgressnapshots 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: PostgresSnapshotSpec defines the desired state of PostgresSnapshot + properties: + resourceName: + description: 'INSERT ADDITIONAL SPEC FIELDS - desired state of cluster + Important: Run "operator-sdk generate k8s" to regenerate code after + modifying this file Add custom validation using kubebuilder tags: + https://book-v1.book.kubebuilder.io/beyond_basics/generating_crd.html' + type: string + required: + - resourceName + type: object + status: + properties: + message: + type: string + phase: + type: string + snapshotID: + type: string + type: object + type: object + served: true + storage: true + subresources: + status: {} +status: + acceptedNames: + kind: "" + plural: "" + conditions: null + storedVersions: null diff --git a/bundles/0.43.0/manifests/integreatly.org_redis.yaml b/bundles/0.43.0/manifests/integreatly.org_redis.yaml new file mode 100644 index 000000000..360eb3364 --- /dev/null +++ b/bundles/0.43.0/manifests/integreatly.org_redis.yaml @@ -0,0 +1,98 @@ +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.9.2 + creationTimestamp: null + name: redis.integreatly.org +spec: + group: integreatly.org + names: + kind: Redis + listKind: RedisList + plural: redis + singular: redis + scope: Namespaced + versions: + - name: v1alpha1 + schema: + openAPIV3Schema: + description: Redis is the Schema for the redis 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: + properties: + applyImmediately: + description: ApplyImmediately is only available to Postgres cr, for + blobstorage and redis cr's currently does nothing + type: boolean + maintenanceWindow: + type: boolean + secretRef: + properties: + name: + type: string + namespace: + type: string + required: + - name + type: object + size: + description: Size allows defining the node size. It is only available + to Redis CR. Blobstorage and Postgres CR's currently does nothing + type: string + skipCreate: + type: boolean + tier: + type: string + type: + type: string + required: + - secretRef + - tier + - type + type: object + status: + properties: + message: + type: string + phase: + type: string + provider: + type: string + secretRef: + properties: + name: + type: string + namespace: + type: string + required: + - name + type: object + strategy: + type: string + version: + type: string + type: object + type: object + served: true + storage: true + subresources: + status: {} +status: + acceptedNames: + kind: "" + plural: "" + conditions: null + storedVersions: null diff --git a/bundles/0.43.0/manifests/integreatly.org_redissnapshots.yaml b/bundles/0.43.0/manifests/integreatly.org_redissnapshots.yaml new file mode 100644 index 000000000..8b5754687 --- /dev/null +++ b/bundles/0.43.0/manifests/integreatly.org_redissnapshots.yaml @@ -0,0 +1,63 @@ +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.9.2 + creationTimestamp: null + name: redissnapshots.integreatly.org +spec: + group: integreatly.org + names: + kind: RedisSnapshot + listKind: RedisSnapshotList + plural: redissnapshots + singular: redissnapshot + scope: Namespaced + versions: + - name: v1alpha1 + schema: + openAPIV3Schema: + description: RedisSnapshot is the Schema for the redissnapshots 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: RedisSnapshotSpec defines the desired state of RedisSnapshot + properties: + resourceName: + description: Foo is an example field of RedisSnapshot. Edit RedisSnapshot_types.go + to remove/update + type: string + required: + - resourceName + type: object + status: + properties: + message: + type: string + phase: + type: string + snapshotID: + type: string + type: object + type: object + served: true + storage: true + subresources: + status: {} +status: + acceptedNames: + kind: "" + plural: "" + conditions: null + storedVersions: null diff --git a/bundles/0.43.0/manifests/operator-metrics-service_v1_service.yaml b/bundles/0.43.0/manifests/operator-metrics-service_v1_service.yaml new file mode 100644 index 000000000..854804866 --- /dev/null +++ b/bundles/0.43.0/manifests/operator-metrics-service_v1_service.yaml @@ -0,0 +1,16 @@ +apiVersion: v1 +kind: Service +metadata: + creationTimestamp: null + labels: + name: cloud-resource-operator + name: operator-metrics-service +spec: + ports: + - name: http-metrics + port: 8383 + targetPort: 8383 + selector: + name: cloud-resource-operator +status: + loadBalancer: {} diff --git a/bundles/0.43.0/metadata/annotations.yaml b/bundles/0.43.0/metadata/annotations.yaml new file mode 100644 index 000000000..6afa6d6b0 --- /dev/null +++ b/bundles/0.43.0/metadata/annotations.yaml @@ -0,0 +1,14 @@ +annotations: + # Core bundle annotations. + operators.operatorframework.io.bundle.mediatype.v1: registry+v1 + operators.operatorframework.io.bundle.manifests.v1: manifests/ + operators.operatorframework.io.bundle.metadata.v1: metadata/ + operators.operatorframework.io.bundle.package.v1: rhmi-cloud-resources + operators.operatorframework.io.bundle.channels.v1: rhmi + operators.operatorframework.io.bundle.channel.default.v1: rhmi + operators.operatorframework.io.metrics.builder: operator-sdk-v1.21.0 + operators.operatorframework.io.metrics.mediatype.v1: metrics+v1 + operators.operatorframework.io.metrics.project_layout: go.kubebuilder.io/v2 + # Annotations for testing. + operators.operatorframework.io.test.mediatype.v1: scorecard+v1 + operators.operatorframework.io.test.config.v1: tests/scorecard/ diff --git a/bundles/0.43.0/tests/scorecard/config.yaml b/bundles/0.43.0/tests/scorecard/config.yaml new file mode 100644 index 000000000..ffc0447e0 --- /dev/null +++ b/bundles/0.43.0/tests/scorecard/config.yaml @@ -0,0 +1,70 @@ +apiVersion: scorecard.operatorframework.io/v1alpha3 +kind: Configuration +metadata: + name: config +stages: +- parallel: true + tests: + - entrypoint: + - scorecard-test + - basic-check-spec + image: quay.io/operator-framework/scorecard-test:v1.2.0 + labels: + suite: basic + test: basic-check-spec-test + storage: + spec: + mountPath: {} + - entrypoint: + - scorecard-test + - olm-bundle-validation + image: quay.io/operator-framework/scorecard-test:v1.2.0 + labels: + suite: olm + test: olm-bundle-validation-test + storage: + spec: + mountPath: {} + - entrypoint: + - scorecard-test + - olm-crds-have-validation + image: quay.io/operator-framework/scorecard-test:v1.2.0 + labels: + suite: olm + test: olm-crds-have-validation-test + storage: + spec: + mountPath: {} + - entrypoint: + - scorecard-test + - olm-crds-have-resources + image: quay.io/operator-framework/scorecard-test:v1.2.0 + labels: + suite: olm + test: olm-crds-have-resources-test + storage: + spec: + mountPath: {} + - entrypoint: + - scorecard-test + - olm-spec-descriptors + image: quay.io/operator-framework/scorecard-test:v1.2.0 + labels: + suite: olm + test: olm-spec-descriptors-test + storage: + spec: + mountPath: {} + - entrypoint: + - scorecard-test + - olm-status-descriptors + image: quay.io/operator-framework/scorecard-test:v1.2.0 + labels: + suite: olm + test: olm-status-descriptors-test + storage: + spec: + mountPath: {} +storage: + spec: + mountPath: {} diff --git a/bundles/cloud-resource-operator.package.yaml b/bundles/cloud-resource-operator.package.yaml index 3e0caeb73..1b393642c 100644 --- a/bundles/cloud-resource-operator.package.yaml +++ b/bundles/cloud-resource-operator.package.yaml @@ -1,5 +1,5 @@ channels: - - currentCSV: cloud-resource-operator.v0.42.0 + - currentCSV: cloud-resource-operator.v0.43.0 name: integreatly defaultChannel: integreatly packageName: cloud-resource-operator diff --git a/config/manifests/bases/cloud-resource-operator.clusterserviceversion.yaml b/config/manifests/bases/cloud-resource-operator.clusterserviceversion.yaml index 6096e1568..8d7c6436b 100644 --- a/config/manifests/bases/cloud-resource-operator.clusterserviceversion.yaml +++ b/config/manifests/bases/cloud-resource-operator.clusterserviceversion.yaml @@ -4,10 +4,10 @@ metadata: annotations: alm-examples: '[]' capabilities: Basic Install - containerImage: quay.io/integreatly/cloud-resource-operator:v0.42.0 + containerImage: quay.io/integreatly/cloud-resource-operator:v0.43.0 operators.operatorframework.io/builder: operator-sdk-v1.2.0 operators.operatorframework.io/project_layout: go.kubebuilder.io/v2 - name: cloud-resource-operator.v0.42.0 + name: cloud-resource-operator.v0.43.0 namespace: placeholder spec: apiservicedefinitions: {} @@ -62,5 +62,5 @@ spec: maturity: alpha provider: name: Integreatly - version: 0.42.0 - replaces: cloud-resource-operator.v0.41.0 + version: 0.43.0 + replaces: cloud-resource-operator.v0.42.0 diff --git a/index/base.yaml b/index/base.yaml index bba59ab86..70c25fd45 100644 --- a/index/base.yaml +++ b/index/base.yaml @@ -3,7 +3,7 @@ schema: olm.channel package: rhmi-cloud-resources name: rhmi entries: - - name: cloud-resources.v0.42.0 + - name: cloud-resources.v0.43.0 --- defaultChannel: rhmi icon: diff --git a/index/index.yaml b/index/index.yaml index bba59ab86..70c25fd45 100644 --- a/index/index.yaml +++ b/index/index.yaml @@ -3,7 +3,7 @@ schema: olm.channel package: rhmi-cloud-resources name: rhmi entries: - - name: cloud-resources.v0.42.0 + - name: cloud-resources.v0.43.0 --- defaultChannel: rhmi icon: diff --git a/version/version.go b/version/version.go index 98d684e5a..33f686c1c 100644 --- a/version/version.go +++ b/version/version.go @@ -1,5 +1,5 @@ package version var ( - Version = "0.42.0" + Version = "0.43.0" )