From 554127cee2e3d177183164974c661507f267340e Mon Sep 17 00:00:00 2001 From: StreamNative Bot <44651360+streamnativebot@users.noreply.github.com> Date: Mon, 27 May 2024 06:45:17 -0700 Subject: [PATCH] operator pulsar-resources-operator (0.4.10) --- .../0.4.10/bundle.Dockerfile | 21 + ...er-manager-metrics-service_v1_service.yaml | 17 + ...-operator-manager-config_v1_configmap.yaml | 31 ++ ...c.authorization.k8s.io_v1_clusterrole.yaml | 10 + ...ources-operator.clusterserviceversion.yaml | 523 ++++++++++++++++++ ...rce.streamnative.io_pulsarconnections.yaml | 252 +++++++++ ...streamnative.io_pulsargeoreplications.yaml | 161 ++++++ ...urce.streamnative.io_pulsarnamespaces.yaml | 235 ++++++++ ...rce.streamnative.io_pulsarpermissions.yaml | 199 +++++++ ...esource.streamnative.io_pulsartenants.yaml | 193 +++++++ ...resource.streamnative.io_pulsartopics.yaml | 252 +++++++++ .../0.4.10/metadata/annotations.yaml | 17 + .../0.4.10/tests/scorecard/config.yaml | 70 +++ 13 files changed, 1981 insertions(+) create mode 100644 operators/pulsar-resources-operator/0.4.10/bundle.Dockerfile create mode 100644 operators/pulsar-resources-operator/0.4.10/manifests/pulsar-resources-operator-controller-manager-metrics-service_v1_service.yaml create mode 100644 operators/pulsar-resources-operator/0.4.10/manifests/pulsar-resources-operator-manager-config_v1_configmap.yaml create mode 100644 operators/pulsar-resources-operator/0.4.10/manifests/pulsar-resources-operator-metrics-reader_rbac.authorization.k8s.io_v1_clusterrole.yaml create mode 100644 operators/pulsar-resources-operator/0.4.10/manifests/pulsar-resources-operator.clusterserviceversion.yaml create mode 100644 operators/pulsar-resources-operator/0.4.10/manifests/resource.streamnative.io_pulsarconnections.yaml create mode 100644 operators/pulsar-resources-operator/0.4.10/manifests/resource.streamnative.io_pulsargeoreplications.yaml create mode 100644 operators/pulsar-resources-operator/0.4.10/manifests/resource.streamnative.io_pulsarnamespaces.yaml create mode 100644 operators/pulsar-resources-operator/0.4.10/manifests/resource.streamnative.io_pulsarpermissions.yaml create mode 100644 operators/pulsar-resources-operator/0.4.10/manifests/resource.streamnative.io_pulsartenants.yaml create mode 100644 operators/pulsar-resources-operator/0.4.10/manifests/resource.streamnative.io_pulsartopics.yaml create mode 100644 operators/pulsar-resources-operator/0.4.10/metadata/annotations.yaml create mode 100644 operators/pulsar-resources-operator/0.4.10/tests/scorecard/config.yaml diff --git a/operators/pulsar-resources-operator/0.4.10/bundle.Dockerfile b/operators/pulsar-resources-operator/0.4.10/bundle.Dockerfile new file mode 100644 index 00000000000..9cc4042d586 --- /dev/null +++ b/operators/pulsar-resources-operator/0.4.10/bundle.Dockerfile @@ -0,0 +1,21 @@ +FROM scratch + +# Core bundle labels. +LABEL operators.operatorframework.io.bundle.mediatype.v1=registry+v1 +LABEL operators.operatorframework.io.bundle.manifests.v1=manifests/ +LABEL operators.operatorframework.io.bundle.metadata.v1=metadata/ +LABEL operators.operatorframework.io.bundle.package.v1=pulsar-resources-operator +LABEL operators.operatorframework.io.bundle.channels.v1=alpha,beta,stable +LABEL operators.operatorframework.io.bundle.channel.default.v1=alpha +LABEL operators.operatorframework.io.metrics.builder=operator-sdk-v1.31.0 +LABEL operators.operatorframework.io.metrics.mediatype.v1=metrics+v1 +LABEL operators.operatorframework.io.metrics.project_layout=go.kubebuilder.io/v3 + +# Labels for testing. +LABEL operators.operatorframework.io.test.mediatype.v1=scorecard+v1 +LABEL operators.operatorframework.io.test.config.v1=tests/scorecard/ + +# Copy files to locations specified by labels. +COPY bundle/manifests /manifests/ +COPY bundle/metadata /metadata/ +COPY bundle/tests/scorecard /tests/scorecard/ diff --git a/operators/pulsar-resources-operator/0.4.10/manifests/pulsar-resources-operator-controller-manager-metrics-service_v1_service.yaml b/operators/pulsar-resources-operator/0.4.10/manifests/pulsar-resources-operator-controller-manager-metrics-service_v1_service.yaml new file mode 100644 index 00000000000..5f429958c54 --- /dev/null +++ b/operators/pulsar-resources-operator/0.4.10/manifests/pulsar-resources-operator-controller-manager-metrics-service_v1_service.yaml @@ -0,0 +1,17 @@ +apiVersion: v1 +kind: Service +metadata: + creationTimestamp: null + labels: + control-plane: controller-manager + name: pulsar-resources-operator-controller-manager-metrics-service +spec: + ports: + - name: https + port: 8443 + protocol: TCP + targetPort: https + selector: + control-plane: controller-manager +status: + loadBalancer: {} diff --git a/operators/pulsar-resources-operator/0.4.10/manifests/pulsar-resources-operator-manager-config_v1_configmap.yaml b/operators/pulsar-resources-operator/0.4.10/manifests/pulsar-resources-operator-manager-config_v1_configmap.yaml new file mode 100644 index 00000000000..72ddced1d81 --- /dev/null +++ b/operators/pulsar-resources-operator/0.4.10/manifests/pulsar-resources-operator-manager-config_v1_configmap.yaml @@ -0,0 +1,31 @@ +apiVersion: v1 +data: + controller_manager_config.yaml: | + # Copyright 2022 StreamNative + # + # 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. + + apiVersion: controller-runtime.sigs.k8s.io/v1alpha1 + kind: ControllerManagerConfig + health: + healthProbeBindAddress: :8081 + metrics: + bindAddress: 127.0.0.1:8080 + webhook: + port: 9443 + leaderElection: + leaderElect: true + resourceName: ed4866ca.streamnative.io +kind: ConfigMap +metadata: + name: pulsar-resources-operator-manager-config diff --git a/operators/pulsar-resources-operator/0.4.10/manifests/pulsar-resources-operator-metrics-reader_rbac.authorization.k8s.io_v1_clusterrole.yaml b/operators/pulsar-resources-operator/0.4.10/manifests/pulsar-resources-operator-metrics-reader_rbac.authorization.k8s.io_v1_clusterrole.yaml new file mode 100644 index 00000000000..aefabbcdb40 --- /dev/null +++ b/operators/pulsar-resources-operator/0.4.10/manifests/pulsar-resources-operator-metrics-reader_rbac.authorization.k8s.io_v1_clusterrole.yaml @@ -0,0 +1,10 @@ +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + creationTimestamp: null + name: pulsar-resources-operator-metrics-reader +rules: +- nonResourceURLs: + - /metrics + verbs: + - get diff --git a/operators/pulsar-resources-operator/0.4.10/manifests/pulsar-resources-operator.clusterserviceversion.yaml b/operators/pulsar-resources-operator/0.4.10/manifests/pulsar-resources-operator.clusterserviceversion.yaml new file mode 100644 index 00000000000..5597d754c24 --- /dev/null +++ b/operators/pulsar-resources-operator/0.4.10/manifests/pulsar-resources-operator.clusterserviceversion.yaml @@ -0,0 +1,523 @@ +apiVersion: operators.coreos.com/v1alpha1 +kind: ClusterServiceVersion +metadata: + annotations: + alm-examples: |- + [ + { + "apiVersion": "resource.streamnative.io/v1alpha1", + "kind": "PulsarConnection", + "metadata": { + "name": "pulsarconnection-sample", + "namespace": "pulsar" + }, + "spec": { + "adminServiceURL": "http://c-sn-platform-broker.pulsar.svc.cluster.local:8080", + "authentication": { + "token": { + "secretRef": { + "key": "brokerClientAuthenticationParameters", + "name": "c-sn-platform-vault-secret-env-injection" + } + } + } + } + }, + { + "apiVersion": "resource.streamnative.io/v1alpha1", + "kind": "PulsarGeoReplication", + "metadata": { + "labels": { + "app.kubernetes.io/created-by": "pulsar-resources-operator", + "app.kubernetes.io/instance": "pulsargeoreplication-sample", + "app.kubernetes.io/managed-by": "kustomize", + "app.kubernetes.io/name": "pulsargeoreplication", + "app.kubernetes.io/part-of": "pulsar-resources-operator" + }, + "name": "pulsargeoreplication-sample" + }, + "spec": { + "connectionRef": { + "name": "local-pulsarconnection" + }, + "destinationConnectionRef": { + "name": "remote-pulsarconnection" + } + } + }, + { + "apiVersion": "resource.streamnative.io/v1alpha1", + "kind": "PulsarNamespace", + "metadata": { + "name": "pulsarnamespace-sample", + "namespace": "pulsar" + }, + "spec": { + "backlogQuotaLimitSize": "1Gi", + "backlogQuotaLimitTime": "2h", + "backlogQuotaRetentionPolicy": "producer_request_hold", + "bundles": 16, + "connectionRef": { + "name": "pulsarconnection-sample" + }, + "lifecyclePolicy": "CleanUpAfterDeletion", + "maxConsumersPerSubscription": 4, + "maxConsumersPerTopic": 12, + "maxProducersPerTopic": 2, + "messageTTL": "1h", + "name": "tenant-one/testns", + "retentionSize": "2Gi", + "retentionTime": "20h" + } + }, + { + "apiVersion": "resource.streamnative.io/v1alpha1", + "kind": "PulsarPermission", + "metadata": { + "name": "pulsarpermission-namespace", + "namespace": "pulsar" + }, + "spec": { + "actions": [ + "produce", + "consume" + ], + "connectionRef": { + "name": "pulsarconnection-sample" + }, + "lifecyclePolicy": "CleanUpAfterDeletion", + "resourceName": "tenant-one/testns", + "resourceType": "namespace", + "roles": [ + "ironman" + ] + } + }, + { + "apiVersion": "resource.streamnative.io/v1alpha1", + "kind": "PulsarPermission", + "metadata": { + "name": "pulsarpermission-topic", + "namespace": "pulsar" + }, + "spec": { + "actions": [ + "produce", + "consume", + "functions" + ], + "connectionRef": { + "name": "pulsarconnection-sample" + }, + "lifecyclePolicy": "CleanUpAfterDeletion", + "resourceName": "persistent://tenant-one/testns/topic123", + "resourceType": "topic", + "roles": [ + "superman" + ] + } + }, + { + "apiVersion": "resource.streamnative.io/v1alpha1", + "kind": "PulsarTenant", + "metadata": { + "name": "pulsartenant-sample", + "namespace": "pulsar" + }, + "spec": { + "adminRoles": [ + "admin", + "ops", + "devops" + ], + "connectionRef": { + "name": "pulsarconnection-sample" + }, + "lifecyclePolicy": "CleanUpAfterDeletion", + "name": "tenant-one" + } + }, + { + "apiVersion": "resource.streamnative.io/v1alpha1", + "kind": "PulsarTopic", + "metadata": { + "name": "pulsartopic-sample", + "namespace": "pulsar" + }, + "spec": { + "connectionRef": { + "name": "pulsarconnection-sample" + }, + "lifecyclePolicy": "CleanUpAfterDeletion", + "maxConsumers": 9, + "maxProducers": 4, + "messageTTL": "1h", + "name": "persistent://tenant-one/testns/topic123" + } + } + ] + capabilities: Full Lifecycle + categories: Streaming & Messaging + containerImage: olm.streamnative.io/streamnativeio/pulsar-resources-operator:v0.4.10 + createdAt: "2024-05-27T13:35:12Z" + description: Authored by StreamNative, this Pulsar Resources Operator manages + the Pulsar resources automatically using the manifest on Kubernetes. + operators.operatorframework.io/builder: operator-sdk-v1.31.0 + operators.operatorframework.io/project_layout: go.kubebuilder.io/v3 + support: StreamNative + name: pulsar-resources-operator.v0.4.10 + namespace: placeholder +spec: + apiservicedefinitions: {} + customresourcedefinitions: + owned: + - description: PulsarConnection is the Schema for the pulsarconnections API + displayName: Pulsar Connection + kind: PulsarConnection + name: pulsarconnections.resource.streamnative.io + version: v1alpha1 + - kind: PulsarGeoReplication + name: pulsargeoreplications.resource.streamnative.io + version: v1alpha1 + - description: PulsarNamespace is the Schema for the pulsarnamespaces API + displayName: Pulsar Namespace + kind: PulsarNamespace + name: pulsarnamespaces.resource.streamnative.io + version: v1alpha1 + - description: PulsarPermission is the Schema for the pulsarpermissions API + displayName: Pulsar Permission + kind: PulsarPermission + name: pulsarpermissions.resource.streamnative.io + version: v1alpha1 + - description: PulsarTenant is the Schema for the pulsartenants API + displayName: Pulsar Tenant + kind: PulsarTenant + name: pulsartenants.resource.streamnative.io + version: v1alpha1 + - description: PulsarTopic is the Schema for the pulsartopics API + displayName: Pulsar Topic + kind: PulsarTopic + name: pulsartopics.resource.streamnative.io + version: v1alpha1 + description: | + Authored by [StreamNative](https://streamnative.io), this Pulsar Resources Operator is a controller that manages the Pulsar resources automatically using the manifest on Kubernetes. Therefore, you can manage the Pulsar resources without the help of `pulsar-admin` or `pulsarctl` CLI tool. It is useful for initializing basic resources when creating a new Pulsar cluster. + displayName: Pulsar Resources Operator + icon: + - base64data: PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9Ijc2OCIgaGVpZ2h0PSI3NjgiPgo8cGF0aCBkPSJNMCAwIEMyNTMuNDQgMCA1MDYuODggMCA3NjggMCBDNzY4IDI1My40NCA3NjggNTA2Ljg4IDc2OCA3NjggQzUxNC41NiA3NjggMjYxLjEyIDc2OCAwIDc2OCBDMCA1MTQuNTYgMCAyNjEuMTIgMCAwIFogIiBmaWxsPSIjRkVGRUZFIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwLDApIi8+CjxwYXRoIGQ9Ik0wIDAgQzYuMjYxOTA0MjkgMC4wMjUyOTg2IDEyLjUyMzgxOTMzIDAuMDI3Mzc3NzcgMTguNzg1NzY2ODQgMC4wMzIxMDE2MyBDMjkuOTMxNDgzODUgMC4wNDM3NTA0OSA0MS4wNzcwNjUzNSAwLjA3MjUwODUgNTIuMjIyNzIwOSAwLjExMDY3MjUgQzYyLjMzMjQ0ODU0IDAuMTQ1MTAyNDcgNzIuNDQyMTUxOTcgMC4xNjk5ODg0NyA4Mi41NTE5MjU5IDAuMTg1ODQ5MTkgQzgzLjIxOTg5MzM2IDAuMTg2OTAwMDggODMuODg3ODYwODMgMC4xODc5NTA5OCA4NC41NzYwNjk3MyAwLjE4OTAzMzcyIEM4Ny45MjgxNjI1MSAwLjE5NDI1NTExIDkxLjI4MDI1NTUxIDAuMTk5MzA5NjQgOTQuNjMyMzQ4NjYgMC4yMDQyODEzMyBDMTIyLjI5NzExMTkyIDAuMjQ1ODk4MzQgMTQ5Ljk2MTc0MTgyIDAuMzE2MDg2OTEgMTc3LjYyNjM4ODc5IDAuNDA1NTc1NzUgQzE3Ny42NDAzODA1NiAyLjk1NzE5MDA4IDE3Ny42NTA1NzQyMSA1LjUwODcyNjU1IDE3Ny42NTg2MTUzNSA4LjA2MDM2MDkxIEMxNzcuNjYyOTM1NzIgOC43NzcyMDU1NCAxNzcuNjY3MjU2MSA5LjQ5NDA1MDE4IDE3Ny42NzE3MDczOSAxMC4yMzI2MTczOCBDMTc3LjY4NDkyODExIDE1LjgzNDM5NjE1IDE3Ny4yNjMxOTI3MSAyMS4yNDU1OTk3MiAxNzYuMzc2Mzg4NzkgMjYuNzgwNTc1NzUgQzE3Ni4xNzUwNTMzNCAyOC4wOTk2NDkyNCAxNzYuMTc1MDUzMzQgMjguMDk5NjQ5MjQgMTc1Ljk2OTY1MDUxIDI5LjQ0NTM3MDY3IEMxNjkuOTA1MTQyMTYgNjcuNzk1Mjc5MjUgMTU1LjMwNjU0MTQ1IDEwNS42MDE4MjE5NCAxMjguNjI2Mzg4NzkgMTM0LjQwNTU3NTc1IEMxMjcuNzY2NTg0MSAxMzUuMzQ2NTkxMzggMTI2LjkwNjc3OTQxIDEzNi4yODc2MDcgMTI2LjAyMDkyMDA0IDEzNy4yNTcxMzgyNSBDMTA1Ljk3NjEyMTQ0IDE1OC4yNzkwMDk3NSA3OS44MTgxODk1NCAxNzAuNzYwMTU4ODMgNTEuNjI2Mzg4NzkgMTc2LjQwNTU3NTc1IEM1MC4wNDI3NzU1MSAxNzYuNzQ1ODg4MjUgNTAuMDQyNzc1NTEgMTc2Ljc0NTg4ODI1IDQ4LjQyNzE3MDA0IDE3Ny4wOTMwNzU3NSBDMzIuMDA0ODE4MTUgMTgwLjA2MDIyNTkxIDE0LjM2NzQ0MTMzIDE3OS4zNDEyNjU3NSAtMi4wNjExMTEyMSAxNzYuOTA1NTc1NzUgQy0zMC43NzU4NDMxMiAxNzIuNzE3MDQ1MDcgLTYwLjA1MzI1NDAzIDE3NC40NjkyMjQ1MiAtODcuMzczNjExMjEgMTg0LjQwNTU3NTc1IEMtODguMDQ2MTc5NTcgMTg0LjY0Njc5MTU3IC04OC43MTg3NDc5MyAxODQuODg4MDA3MzkgLTg5LjQxMTY5NzE1IDE4NS4xMzY1MzI3OCBDLTExMS4wODc4MjE3MyAxOTMuMDE3MjgyNzMgLTEyOS45MDU3Njk0OSAyMDUuMzIwMTUxMjUgLTE0Ni4zNzM2MTEyMSAyMjEuNDA1NTc1NzUgQy0xNDcuMjEwMjEyNzcgMjIyLjE4MDMwMjMxIC0xNDguMDQ2ODE0MzQgMjIyLjk1NTAyODg4IC0xNDguOTA4NzY3NDYgMjIzLjc1MzIzMiBDLTE4MS4yMTM0OTEwNyAyNTQuNDE5NjgxMTkgLTE5MS41MjMyMjEwNSAyOTUuODAwOTAyNjkgLTE5Ni4zNzM2MTEyMSAzMzguNDA1NTc1NzUgQy0xOTkuNzczNTk0NSAzMzUuMTAyNTA1MTcgLTIwMi40NTk1ODA4NyAzMzEuNjA0MzM2MzMgLTIwNS4wNjExMTEyMSAzMjcuNjU1NTc1NzUgQy0yMDUuNDkzMTg4ODUgMzI3LjAwMzA2ODQzIC0yMDUuOTI1MjY2NDkgMzI2LjM1MDU2MTEgLTIwNi4zNzA0MzczOCAzMjUuNjc4MjgwODMgQy0yMTAuNzIzOTU2OTYgMzE5LjAxMzQ2NyAtMjE0LjY2MTA5ODYgMzEyLjEzNjUxMDgxIC0yMTguNDQwOTk0MDIgMzA1LjEzMzExNDgxIEMtMjE5LjIyODY0MjMxIDMwMy42NzQxMDk3NyAtMjIwLjAzMDA2NTU3IDMwMi4yMjI1NTM3MiAtMjIwLjgzNDU0ODcxIDMwMC43NzI3NjMyNSBDLTIyNC42MDc4MDM4NCAyOTMuNjgyODg4OTYgLTIyNy4wODc3ODc4MyAyODYuMTIwODYzMjEgLTIyOS42NDYwNzIxNSAyNzguNTMxMDY0MDMgQy0yMzAuMzEyOTAzMzIgMjc2LjU4MjkzMjQyIC0yMzEuMDE3MjIxODcgMjc0LjY0NzczNzM5IC0yMzEuNzI1MTczNzEgMjcyLjcxNDE2OTUgQy0yNDguNDI3NjM3ODUgMjI2LjAzOTQ5MjEyIC0yNDQuNTA0NjMyNCAxNjkuMDA0MzA4MjggLTIyMy40OTg2MTEyMSAxMjQuMzY2NTEzMjUgQy0yMjEuNTQ4NjE0MzkgMTIwLjMzMDEyNTg3IC0yMTkuNDg0MzI4MiAxMTYuMzU5ODY4OTQgLTIxNy4zNzM2MTEyMSAxMTIuNDA1NTc1NzUgQy0yMTYuNzU3NDM5MzQgMTExLjI0NDEzMDQ0IC0yMTYuMTQxMjY3NDYgMTEwLjA4MjY4NTEzIC0yMTUuNTA2NDIzNzEgMTA4Ljg4NjA0NDUgQy0yMDguMDAyMjc0NjUgOTUuMjYzMzY3MjcgLTE5OS4wNjc5MjM3IDgyLjcwMjA5MjI0IC0xODguMzczNjExMjEgNzEuNDA1NTc1NzUgQy0xODcuMjAwOTMyNTEgNzAuMDU2NjEyMDIgLTE4Ni4wMzQwMDQ4NyA2OC43MDI2MjE2NCAtMTg0Ljg3MzYxMTIxIDY3LjM0MzA3NTc1IEMtMTY5LjE2MTM0MTU1IDQ5LjM0NDcyNTI4IC0xNTAuMjY0MjkwMjggMzUuNzUwMjQ0OTcgLTEyOS4zNzM2MTEyMSAyNC40MDU1NzU3NSBDLTEyOC43NTgwODM4NyAyNC4wNjY4NzQ1OCAtMTI4LjE0MjU1NjUyIDIzLjcyODE3MzQxIC0xMjcuNTA4Mzc2ODQgMjMuMzc5MjA4NTYgQy0xMTEuMjI4NDc5MTkgMTQuNDk2NzMzMDUgLTkzLjQ1NDYyMzA5IDguMzU0MzU4NDUgLTc1LjM3MzYxMTIxIDQuNDA1NTc1NzUgQy03NC41NTIwOTI1NiA0LjIyNDI3MzY0IC03My43MzA1NzM5MSA0LjA0Mjk3MTUzIC03Mi44ODQxNjA3NiAzLjg1NjE3NTQyIEMtNDguODkxOTkxNzQgLTEuMTQ0NTk4MTkgLTI0LjM2OTczNjYyIC0wLjExNTM0MDc5IDAgMCBaICIgZmlsbD0iIzAwOTFGRSIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNDE5LjM3MzYxMTIxMTc3NjczLDQwLjU5NDQyNDI0Nzc0MTcpIi8+CjxwYXRoIGQ9Ik0wIDAgQzMuNDc3MDY0OTggMy4yMTQ0OTQ4NiA2LjA5NjczNTc5IDYuODE1ODE5NzkgOC42ODc1IDEwLjc1IEM5LjMzODg3OTM5IDExLjczNzQ2MjE2IDkuMzM4ODc5MzkgMTEuNzM3NDYyMTYgMTAuMDAzNDE3OTcgMTIuNzQ0ODczMDUgQzE4LjM1MTU4MzQ1IDI1LjU2MTI2Mjk1IDI1LjE0MDI3NTc3IDM4Ljg3ODU2MDU5IDMxIDUzIEMzMS4zOTk2MDkzNyA1My45NjE2NDA2MiAzMS43OTkyMTg3NSA1NC45MjMyODEyNSAzMi4yMTA5Mzc1IDU1LjkxNDA2MjUgQzM3LjUyMzkyODA5IDY5LjY0MjgzMDE4IDQwLjc2MjMxMjU4IDg0LjQ3OTgxNjMxIDQzIDk5IEM0My4xMDQ0MTQwNiA5OS42NjcyNTA5OCA0My4yMDg4MjgxMyAxMDAuMzM0NTAxOTUgNDMuMzE2NDA2MjUgMTAxLjAyMTk3MjY2IEM1MS4yNTM5MzkwNSAxNTQuMDEwMDI3ODcgMzYuNjUzMTE4MDcgMjA4LjU5NDIyMDgyIDUuMzI4MTI1IDI1MS43MzA0Njg3NSBDMC45MTU5NzY1IDI1Ny42NDg4OTQ3OCAtMy44NDQ1NTMxIDI2My4yMzQ5OTg3IC04Ljg0NzY1NjI1IDI2OC42NjAxNTYyNSBDLTEwLjk2NzE2NjE0IDI3MC45NjQzMDU4NCAtMTMuMDE0MzUzNDIgMjczLjMxOTk1NDM0IC0xNS4wNjI1IDI3NS42ODc1IEMtMTguNzYyNzgwNjkgMjc5Ljg0NTc3MjIxIC0yMi43MzEyNzM4NSAyODMuNDM5MDAzMzEgLTI3IDI4NyBDLTI4LjMwOTA0Mjk3IDI4OC4xNDA4MjAzMSAtMjguMzA5MDQyOTcgMjg4LjE0MDgyMDMxIC0yOS42NDQ1MzEyNSAyODkuMzA0Njg3NSBDLTM2Ljc2NjE2MzA2IDI5NS40MjUyODY3MyAtNDQuMjAxODYyOTkgMzAwLjc2NTkzMzMzIC01Mi4xMjUgMzA1LjgwMTc1NzgxIEMtNTMuODg4ODQ4NzQgMzA2LjkyODk2NzQgLTU1LjYzMTkzODE3IDMwOC4wODMyMTUwNSAtNTcuMzc1IDMwOS4yNDIxODc1IEMtOTEuNTc2MDgyNzQgMzMxLjQxOTQ5MDU0IC0xMzEuODczMzI1OTEgMzM4LjE4NTYzMDUyIC0xNzEuODMzMDA3ODEgMzM4LjExMzUyNTM5IEMtMTc0LjAzMTc5NDIyIDMzOC4xMTMyNDI5NSAtMTc2LjIzMDU4MDcyIDMzOC4xMTM0MDIzNyAtMTc4LjQyOTM2NzA3IDMzOC4xMTM5Njc5IEMtMTg0LjM2ODU1ODAzIDMzOC4xMTQyNTM2MyAtMTkwLjMwNzcyODYxIDMzOC4xMDgzOTMwNiAtMTk2LjI0NjkxNDg2IDMzOC4xMDEzOTM5NCBDLTIwMi40NjQ4ODE0NyAzMzguMDk1MTIzMTYgLTIwOC42ODI4NDg1OSAzMzguMDk0NTUzNjYgLTIxNC45MDA4MTc4NyAzMzguMDkzMzY4NTMgQy0yMjUuOTk0Mzg5MDcgMzM4LjA5MDQ0MjI5IC0yMzcuMDg3OTUxODcgMzM4LjA4MzIyOTI2IC0yNDguMTgxNTE5MjQgMzM4LjA3MzcyNTgxIEMtMjU4LjI0ODc3OTI5IDMzOC4wNjUxNDc1NCAtMjY4LjMxNjAzNzg1IDMzOC4wNTg5MTAxMSAtMjc4LjM4MzMwMDc4IDMzOC4wNTQ5MzE2NCBDLTI3OS4zNzc3MjE3OCAzMzguMDU0NTM3NTYgLTI3OS4zNzc3MjE3OCAzMzguMDU0NTM3NTYgLTI4MC4zOTIyMzIwOSAzMzguMDU0MTM1NTEgQy0yODMuNzE4NDMyMzUgMzM4LjA1MjgzMDM2IC0yODcuMDQ0NjMyNjMgMzM4LjA1MTU2ODk0IC0yOTAuMzcwODMyOTIgMzM4LjA1MDMyMzYxIEMtMzE3LjkxMzg5Mzc5IDMzOC4wMzk4ODQwMyAtMzQ1LjQ1Njk0NjM3IDMzOC4wMjIzMDU4NiAtMzczIDMzOCBDLTM3My4wMTk0NjczIDMzNC44MDk3NDE3NSAtMzczLjAzMTE0NzMyIDMzMS42MTk0OTkwMyAtMzczLjA0MTUwMzkxIDMyOC40MjkxOTkyMiBDLTM3My4wNDcwNjgwMiAzMjcuNTMyODMyNDkgLTM3My4wNTI2MzIxNCAzMjYuNjM2NDY1NzYgLTM3My4wNTgzNjQ4NyAzMjUuNzEyOTM2NCBDLTM3My4wNzUzMzM4NyAzMTguNzMzNDg0MTQgLTM3Mi41NDU2Njg1NiAzMTIuMDExNzQ4OTUgLTM3MS4zNzUgMzA1LjEyNSBDLTM3MS4xOTg5NjI0IDMwNC4wNDIwMjYzNyAtMzcxLjAyMjkyNDggMzAyLjk1OTA1MjczIC0zNzAuODQxNTUyNzMgMzAxLjg0MzI2MTcyIEMtMzY4LjI2MDU4OTIgMjg2Ljc1ODQ0OTY3IC0zNjQuNDg0NDc2NzcgMjcxLjkwMzgzMjA5IC0zNTggMjU4IEMtMzU3LjM4MjQ0NTQ0IDI1Ni41ODYwOTc3NiAtMzU2Ljc2NTI5OTIyIDI1NS4xNzIwMTcxNSAtMzU2LjE0ODQzNzUgMjUzLjc1NzgxMjUgQy0zNTAuNTg5ODg0OSAyNDEuMjQzOTM2MTUgLTM0NC4wNTYwNjk1OCAyMjkuMDgyODI4MTcgLTMzNiAyMTggQy0zMzUuNjEzNDQyMzggMjE3LjQ2NjgxMTUyIC0zMzUuMjI2ODg0NzcgMjE2LjkzMzYyMzA1IC0zMzQuODI4NjEzMjggMjE2LjM4NDI3NzM0IEMtMzEyLjExNDU2MzAzIDE4NS4yOTA5ODYwMiAtMjc5LjM3NDk2ODMyIDE2Ny42ODE4MDYxNCAtMjQxLjgwNzg2MTMzIDE2MS40MjExNDI1OCBDLTIyMy44NDk5Nzc1NyAxNTguNzI3Njk0MjMgLTIwNi4xODE0NjE3MiAxNTkuNzkxNDkwNjcgLTE4OC4yNSAxNjIgQy0xNjEuNTkyOTg2NzggMTY1LjI0NTAzOTUzIC0xMzYuNTIyNTEwMTEgMTY0LjQ1MzgwMjM0IC0xMTEgMTU1IEMtMTA5Ljc2NTA3ODEzIDE1NC41NDc1MzkwNiAtMTA4LjUzMDE1NjI1IDE1NC4wOTUwNzgxMiAtMTA3LjI1NzgxMjUgMTUzLjYyODkwNjI1IEMtNjUuOTU2ODU4NjEgMTM4LjAyMzEwNzA4IC0zNC41NjU4NzcxMSAxMDguMTE0NDYwNjMgLTE1LjMyNDIxODc1IDY4LjU1NDY4NzUgQy01LjM2Njk4Njk2IDQ2LjM3NjA0NzE4IC0xLjg2ODg4NDM1IDI0LjA0NzIwNjcyIDAgMCBaICIgZmlsbD0iIzAwOTFGRiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNTUyLDM5MCkiLz4KPHBhdGggZD0iTTAgMCBDMTUuNTI0NzIxNDcgMTEuMjA1MzQzMzIgMjUuNjkzNzY2MTYgMjUuMTE4MTM5ODcgMjkuNTExNzE4NzUgNDQuMTA5Mzc1IEMzMS43MjMzNTE4NiA2MC44NjA4NTM1IDI4LjQ3MDMwMDQ4IDc3LjA2MDk1MzY5IDE4LjkwNjI1IDkxLjA5NzY1NjI1IEM4LjI1NTM4MTgxIDEwNC44MzUwNjg1NyAtNi41MjM0MzgwNSAxMTYuNTU2ODk5OTYgLTI0LjI0MjE4NzUgMTE4Ljg4MjgxMjUgQy00My44NTM3OTE4MSAxMjAuMzYwMzk5MTMgLTU5LjI2NTYwMjcgMTE3LjI3MzU3MDU2IC03NC44NzEwOTM3NSAxMDQuODk0NTMxMjUgQy04Ny4zODAxMzcyOCA5NC4xMzQ4NzI3NiAtOTYuODIwMDAzMTkgNzkuNzk0Nzk2NjUgLTk4LjM3ODkwNjI1IDYzLjAzMTI1IEMtOTguNDkzODU2MDEgNTkuODYwMjIyMTkgLTk4LjUwMzYzNjk2IDU2LjcwNzkzMTAzIC05OC40Njg3NSA1My41MzUxNTYyNSBDLTk4LjQ4MDM1MTU2IDUyLjQ3NjE5MTQxIC05OC40OTE5NTMxMyA1MS40MTcyMjY1NiAtOTguNTAzOTA2MjUgNTAuMzI2MTcxODggQy05OC40NDI4MDE1IDMzLjc5NzMzNjU4IC05MC45NTU0NzIzMSAyMC4yNDMxNTEwOSAtNzkuNjU2MjUgOC40OTYwOTM3NSBDLTU4LjIxMTA1MTMzIC0xMS41NzYwODkxNSAtMjUuMjE5ODA1OSAtMTUuOTY1NzY0MjIgMCAwIFogIiBmaWxsPSIjMDAwMDJCIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSg0MjIuMDkzNzUsMzI5LjkwMjM0Mzc1KSIvPgo8L3N2Zz4K + mediatype: image/svg+xml + install: + spec: + clusterPermissions: + - rules: + - apiGroups: + - "" + resources: + - secrets + verbs: + - create + - delete + - get + - list + - patch + - update + - watch + - apiGroups: + - resource.streamnative.io + resources: + - pulsarconnections + verbs: + - create + - delete + - get + - list + - patch + - update + - watch + - apiGroups: + - resource.streamnative.io + resources: + - pulsarconnections/finalizers + verbs: + - update + - apiGroups: + - resource.streamnative.io + resources: + - pulsarconnections/status + verbs: + - get + - patch + - update + - apiGroups: + - resource.streamnative.io + resources: + - pulsargeoreplications + verbs: + - create + - delete + - get + - list + - patch + - update + - watch + - apiGroups: + - resource.streamnative.io + resources: + - pulsargeoreplications/finalizers + verbs: + - update + - apiGroups: + - resource.streamnative.io + resources: + - pulsargeoreplications/status + verbs: + - get + - patch + - update + - apiGroups: + - resource.streamnative.io + resources: + - pulsarnamespaces + verbs: + - create + - delete + - get + - list + - patch + - update + - watch + - apiGroups: + - resource.streamnative.io + resources: + - pulsarnamespaces/finalizers + verbs: + - update + - apiGroups: + - resource.streamnative.io + resources: + - pulsarnamespaces/status + verbs: + - get + - patch + - update + - apiGroups: + - resource.streamnative.io + resources: + - pulsarpermissions + verbs: + - create + - delete + - get + - list + - patch + - update + - watch + - apiGroups: + - resource.streamnative.io + resources: + - pulsarpermissions/finalizers + verbs: + - update + - apiGroups: + - resource.streamnative.io + resources: + - pulsarpermissions/status + verbs: + - get + - patch + - update + - apiGroups: + - resource.streamnative.io + resources: + - pulsartenants + verbs: + - create + - delete + - get + - list + - patch + - update + - watch + - apiGroups: + - resource.streamnative.io + resources: + - pulsartenants/finalizers + verbs: + - update + - apiGroups: + - resource.streamnative.io + resources: + - pulsartenants/status + verbs: + - get + - patch + - update + - apiGroups: + - resource.streamnative.io + resources: + - pulsartopics + verbs: + - create + - delete + - get + - list + - patch + - update + - watch + - apiGroups: + - resource.streamnative.io + resources: + - pulsartopics/finalizers + verbs: + - update + - apiGroups: + - resource.streamnative.io + resources: + - pulsartopics/status + verbs: + - get + - patch + - update + - apiGroups: + - authentication.k8s.io + resources: + - tokenreviews + verbs: + - create + - apiGroups: + - authorization.k8s.io + resources: + - subjectaccessreviews + verbs: + - create + serviceAccountName: pulsar-resources-operator-controller-manager + deployments: + - label: + control-plane: controller-manager + name: pulsar-resources-operator-controller-manager + spec: + replicas: 1 + selector: + matchLabels: + control-plane: controller-manager + strategy: {} + template: + metadata: + annotations: + kubectl.kubernetes.io/default-container: manager + labels: + control-plane: controller-manager + service.istio.io/canonical-revision: 0.4.10 + spec: + containers: + - args: + - --secure-listen-address=0.0.0.0:8443 + - --upstream=http://127.0.0.1:8080/ + - --logtostderr=true + - --v=0 + image: gcr.io/kubebuilder/kube-rbac-proxy:v0.14.4 + name: kube-rbac-proxy + ports: + - containerPort: 8443 + name: https + protocol: TCP + resources: + limits: + cpu: 500m + memory: 128Mi + requests: + cpu: 5m + memory: 64Mi + - args: + - --health-probe-bind-address=:8081 + - --metrics-bind-address=127.0.0.1:8080 + - --leader-elect + command: + - /manager + image: olm.streamnative.io/streamnativeio/pulsar-resources-operator:v0.4.10 + imagePullPolicy: IfNotPresent + livenessProbe: + httpGet: + path: /healthz + port: 8081 + initialDelaySeconds: 15 + periodSeconds: 20 + name: manager + readinessProbe: + httpGet: + path: /readyz + port: 8081 + initialDelaySeconds: 5 + periodSeconds: 10 + resources: + limits: + cpu: 500m + memory: 128Mi + requests: + cpu: 10m + memory: 64Mi + securityContext: + allowPrivilegeEscalation: false + securityContext: + runAsNonRoot: true + serviceAccountName: pulsar-resources-operator-controller-manager + terminationGracePeriodSeconds: 10 + permissions: + - rules: + - apiGroups: + - "" + resources: + - configmaps + verbs: + - get + - list + - watch + - create + - update + - patch + - delete + - apiGroups: + - coordination.k8s.io + resources: + - leases + verbs: + - get + - list + - watch + - create + - update + - patch + - delete + - apiGroups: + - "" + resources: + - events + verbs: + - create + - patch + serviceAccountName: pulsar-resources-operator-controller-manager + strategy: deployment + installModes: + - supported: true + type: OwnNamespace + - supported: true + type: SingleNamespace + - supported: false + type: MultiNamespace + - supported: true + type: AllNamespaces + keywords: + - resources + - pulsar resources + - pulsar + - streamnative + links: + - name: Pulsar Resources Operator + url: https://github.com/streamnative/pulsar-resources-operator + maintainers: + - email: cloud@streamnative.io + name: StreamNative Cloud + maturity: alpha + provider: + name: StreamNative + url: https://streamnative.io + version: 0.4.10 diff --git a/operators/pulsar-resources-operator/0.4.10/manifests/resource.streamnative.io_pulsarconnections.yaml b/operators/pulsar-resources-operator/0.4.10/manifests/resource.streamnative.io_pulsarconnections.yaml new file mode 100644 index 00000000000..b2d2ce2f630 --- /dev/null +++ b/operators/pulsar-resources-operator/0.4.10/manifests/resource.streamnative.io_pulsarconnections.yaml @@ -0,0 +1,252 @@ +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.8.0 + creationTimestamp: null + name: pulsarconnections.resource.streamnative.io +spec: + group: resource.streamnative.io + names: + categories: + - pulsar + - pulsarres + kind: PulsarConnection + listKind: PulsarConnectionList + plural: pulsarconnections + shortNames: + - pconn + singular: pulsarconnection + scope: Namespaced + versions: + - additionalPrinterColumns: + - jsonPath: .spec.adminServiceURL + name: ADMIN_SERVICE_URL + type: string + - jsonPath: .spec.adminServiceSecureURL + name: ADMIN_SERVICE_SECURE_URL + priority: 1 + type: string + - jsonPath: .spec.brokerServiceURL + name: BROKER_SERVICE_URL + type: string + - jsonPath: .spec.brokerServiceSecureURL + name: BROKER_SERVICE_SECURE_URL + priority: 1 + type: string + - jsonPath: .metadata.generation + name: GENERATION + priority: 1 + type: string + - jsonPath: .status.observedGeneration + name: OBSERVED_GENERATION + priority: 1 + type: string + - jsonPath: .status.conditions[?(@.type=="Ready")].status + name: READY + type: string + name: v1alpha1 + schema: + openAPIV3Schema: + description: PulsarConnection is the Schema for the pulsarconnections 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: PulsarConnectionSpec defines the desired state of PulsarConnection + properties: + adminServiceSecureURL: + description: AdminServiceSecureURL is the admin service url for secure + connection. + pattern: ^https://.+$ + type: string + adminServiceURL: + description: AdminServiceURL is the admin service url of the pulsar + cluster + pattern: ^https?://.+$ + type: string + authentication: + description: Authentication defines authentication configurations + properties: + oauth2: + description: PulsarAuthenticationOAuth2 indicates the parameters + which are need by pulsar OAuth2 + properties: + audience: + type: string + clientID: + type: string + issuerEndpoint: + type: string + key: + description: ValueOrSecretRef is a string or a secret reference + of the authentication + properties: + secretRef: + description: SecretKeyRef indicates a secret name and + key + properties: + key: + type: string + name: + type: string + required: + - key + - name + type: object + value: + type: string + type: object + scope: + type: string + required: + - audience + - clientID + - issuerEndpoint + - key + type: object + token: + description: ValueOrSecretRef is a string or a secret reference + of the authentication + properties: + secretRef: + description: SecretKeyRef indicates a secret name and key + properties: + key: + type: string + name: + type: string + required: + - key + - name + type: object + value: + type: string + type: object + type: object + brokerClientTrustCertsFilePath: + description: BrokerClientTrustCertsFilePath Path for the trusted TLS + certificate file for outgoing connection to a server (broker) + type: string + brokerServiceSecureURL: + description: BrokerServiceSecureURL is the broker service url for + secure connection. + pattern: ^pulsar\+ssl://.+$ + type: string + brokerServiceURL: + description: BrokerServiceURL is the broker service url of the pulsar + cluster + pattern: ^pulsar?://.+$ + type: string + clusterName: + description: ClusterName indicates the local cluster name of the pulsar + cluster. It should set when enabling the Geo Replication + type: string + type: object + status: + description: PulsarConnectionStatus defines the observed state of PulsarConnection + properties: + conditions: + description: Represents the observations of a connection's current + state. + items: + description: "Condition contains details for one aspect of the current + state of this API Resource. --- This struct is intended for direct + use as an array at the field path .status.conditions. For example, + type FooStatus struct{ // Represents the observations of a foo's + current state. // Known .status.conditions.type are: \"Available\", + \"Progressing\", and \"Degraded\" // +patchMergeKey=type // +patchStrategy=merge + // +listType=map // +listMapKey=type Conditions []metav1.Condition + `json:\"conditions,omitempty\" patchStrategy:\"merge\" patchMergeKey:\"type\" + protobuf:\"bytes,1,rep,name=conditions\"` \n // other fields }" + properties: + lastTransitionTime: + description: lastTransitionTime is the last time the condition + transitioned from one status to another. This should be when + the underlying condition changed. If that is not known, then + using the time when the API field changed is acceptable. + format: date-time + type: string + message: + description: message is a human readable message indicating + details about the transition. This may be an empty string. + maxLength: 32768 + type: string + observedGeneration: + description: observedGeneration represents the .metadata.generation + that the condition was set based upon. For instance, if .metadata.generation + is currently 12, but the .status.conditions[x].observedGeneration + is 9, the condition is out of date with respect to the current + state of the instance. + format: int64 + minimum: 0 + type: integer + reason: + description: reason contains a programmatic identifier indicating + the reason for the condition's last transition. Producers + of specific condition types may define expected values and + meanings for this field, and whether the values are considered + a guaranteed API. The value should be a CamelCase string. + This field may not be empty. + maxLength: 1024 + minLength: 1 + pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ + type: string + status: + description: status of the condition, one of True, False, Unknown. + enum: + - "True" + - "False" + - Unknown + type: string + type: + description: type of condition in CamelCase or in foo.example.com/CamelCase. + --- Many .condition.type values are consistent across resources + like Available, but because arbitrary conditions can be useful + (see .node.status.conditions), the ability to deconflict is + important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) + maxLength: 316 + pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ + type: string + required: + - lastTransitionTime + - message + - reason + - status + - type + type: object + type: array + x-kubernetes-list-map-keys: + - type + x-kubernetes-list-type: map + observedGeneration: + description: ObservedGeneration is the most recent generation observed + for this resource. It corresponds to the metadata generation, which + is updated on mutation by the API Server. + format: int64 + type: integer + secretKeyHash: + description: SecretKeyHash is the hash of the secret ref + type: string + type: object + type: object + served: true + storage: true + subresources: + status: {} +status: + acceptedNames: + kind: "" + plural: "" + conditions: [] + storedVersions: [] diff --git a/operators/pulsar-resources-operator/0.4.10/manifests/resource.streamnative.io_pulsargeoreplications.yaml b/operators/pulsar-resources-operator/0.4.10/manifests/resource.streamnative.io_pulsargeoreplications.yaml new file mode 100644 index 00000000000..1d0ebd9680e --- /dev/null +++ b/operators/pulsar-resources-operator/0.4.10/manifests/resource.streamnative.io_pulsargeoreplications.yaml @@ -0,0 +1,161 @@ +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.8.0 + creationTimestamp: null + name: pulsargeoreplications.resource.streamnative.io +spec: + group: resource.streamnative.io + names: + kind: PulsarGeoReplication + listKind: PulsarGeoReplicationList + plural: pulsargeoreplications + singular: pulsargeoreplication + scope: Namespaced + versions: + - name: v1alpha1 + schema: + openAPIV3Schema: + description: PulsarGeoReplication is the Schema for the pulsargeoreplications + 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: PulsarGeoReplicationSpec defines the desired state of PulsarGeoReplication + properties: + connectionRef: + description: ConnectionRef is the reference to the source PulsarConnection + properties: + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + type: object + destinationConnectionRef: + description: DestinationConnectionRef is the connection reference + to the remote cluster + properties: + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + type: object + lifecyclePolicy: + description: PulsarResourceLifeCyclePolicy indicates whether it will + keep or delete the resource in pulsar cluster after resource is + deleted by controller KeepAfterDeletion or CleanUpAfterDeletion + enum: + - CleanUpAfterDeletion + - KeepAfterDeletion + type: string + required: + - connectionRef + - destinationConnectionRef + type: object + status: + description: PulsarGeoReplicationStatus defines the observed state of + PulsarGeoReplication + properties: + conditions: + description: Conditions Represents the observations of a connection's + current state. + items: + description: "Condition contains details for one aspect of the current + state of this API Resource. --- This struct is intended for direct + use as an array at the field path .status.conditions. For example, + type FooStatus struct{ // Represents the observations of a foo's + current state. // Known .status.conditions.type are: \"Available\", + \"Progressing\", and \"Degraded\" // +patchMergeKey=type // +patchStrategy=merge + // +listType=map // +listMapKey=type Conditions []metav1.Condition + `json:\"conditions,omitempty\" patchStrategy:\"merge\" patchMergeKey:\"type\" + protobuf:\"bytes,1,rep,name=conditions\"` \n // other fields }" + properties: + lastTransitionTime: + description: lastTransitionTime is the last time the condition + transitioned from one status to another. This should be when + the underlying condition changed. If that is not known, then + using the time when the API field changed is acceptable. + format: date-time + type: string + message: + description: message is a human readable message indicating + details about the transition. This may be an empty string. + maxLength: 32768 + type: string + observedGeneration: + description: observedGeneration represents the .metadata.generation + that the condition was set based upon. For instance, if .metadata.generation + is currently 12, but the .status.conditions[x].observedGeneration + is 9, the condition is out of date with respect to the current + state of the instance. + format: int64 + minimum: 0 + type: integer + reason: + description: reason contains a programmatic identifier indicating + the reason for the condition's last transition. Producers + of specific condition types may define expected values and + meanings for this field, and whether the values are considered + a guaranteed API. The value should be a CamelCase string. + This field may not be empty. + maxLength: 1024 + minLength: 1 + pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ + type: string + status: + description: status of the condition, one of True, False, Unknown. + enum: + - "True" + - "False" + - Unknown + type: string + type: + description: type of condition in CamelCase or in foo.example.com/CamelCase. + --- Many .condition.type values are consistent across resources + like Available, but because arbitrary conditions can be useful + (see .node.status.conditions), the ability to deconflict is + important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) + maxLength: 316 + pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ + type: string + required: + - lastTransitionTime + - message + - reason + - status + - type + type: object + type: array + x-kubernetes-list-map-keys: + - type + x-kubernetes-list-type: map + observedGeneration: + description: ObservedGeneration is the most recent generation observed + for this resource. It corresponds to the metadata generation, which + is updated on mutation by the API Server. + format: int64 + type: integer + type: object + type: object + served: true + storage: true + subresources: + status: {} +status: + acceptedNames: + kind: "" + plural: "" + conditions: [] + storedVersions: [] diff --git a/operators/pulsar-resources-operator/0.4.10/manifests/resource.streamnative.io_pulsarnamespaces.yaml b/operators/pulsar-resources-operator/0.4.10/manifests/resource.streamnative.io_pulsarnamespaces.yaml new file mode 100644 index 00000000000..54c4559fff8 --- /dev/null +++ b/operators/pulsar-resources-operator/0.4.10/manifests/resource.streamnative.io_pulsarnamespaces.yaml @@ -0,0 +1,235 @@ +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.8.0 + creationTimestamp: null + name: pulsarnamespaces.resource.streamnative.io +spec: + group: resource.streamnative.io + names: + categories: + - pulsar + - pulsarres + kind: PulsarNamespace + listKind: PulsarNamespaceList + plural: pulsarnamespaces + shortNames: + - pns + singular: pulsarnamespace + scope: Namespaced + versions: + - additionalPrinterColumns: + - jsonPath: .spec.name + name: RESOURCE_NAME + type: string + - jsonPath: .metadata.generation + name: GENERATION + type: string + - jsonPath: .status.observedGeneration + name: OBSERVED_GENERATION + type: string + - jsonPath: .status.conditions[?(@.type=="Ready")].status + name: READY + type: string + name: v1alpha1 + schema: + openAPIV3Schema: + description: PulsarNamespace is the Schema for the pulsarnamespaces 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: PulsarNamespaceSpec defines the desired state of PulsarNamespace + properties: + backlogQuotaLimitSize: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + backlogQuotaLimitTime: + description: Backlog Should set at least one of them if setting backlog + type: string + backlogQuotaRetentionPolicy: + type: string + backlogQuotaType: + description: BacklogQuotaType controls the backlog by setting the + type to destination_storage or message_age destination_storage limits + backlog by size (in bytes). message_age limits backlog by time, + that is, message timestamp (broker or publish timestamp) + enum: + - destination_storage + - message_age + type: string + bundles: + format: int32 + type: integer + connectionRef: + description: ConnectionRef is the reference to the PulsarConnection + resource + properties: + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + type: object + geoReplicationRefs: + description: GeoReplicationRefs is the reference list to the PulsarGeoReplication + resource + items: + description: LocalObjectReference contains enough information to + let you locate the referenced object inside the same namespace. + properties: + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + type: object + type: array + lifecyclePolicy: + description: PulsarResourceLifeCyclePolicy indicates whether it will + keep or delete the resource in pulsar cluster after resource is + deleted by controller KeepAfterDeletion or CleanUpAfterDeletion + enum: + - CleanUpAfterDeletion + - KeepAfterDeletion + type: string + maxConsumersPerSubscription: + format: int32 + type: integer + maxConsumersPerTopic: + format: int32 + type: integer + maxProducersPerTopic: + description: Tenant Policy Setting + format: int32 + type: integer + messageTTL: + description: MessageTTL indicates the message ttl for the namespace + type: string + name: + description: Name is the namespace name + type: string + retentionSize: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + retentionTime: + description: Retention Should set at least one of them if setting + retention Retention Quota must exceed configured backlog quota for + namespace + type: string + required: + - connectionRef + - name + type: object + status: + description: PulsarNamespaceStatus defines the observed state of PulsarNamespace + properties: + conditions: + description: Represents the observations of a connection's current + state. + items: + description: "Condition contains details for one aspect of the current + state of this API Resource. --- This struct is intended for direct + use as an array at the field path .status.conditions. For example, + type FooStatus struct{ // Represents the observations of a foo's + current state. // Known .status.conditions.type are: \"Available\", + \"Progressing\", and \"Degraded\" // +patchMergeKey=type // +patchStrategy=merge + // +listType=map // +listMapKey=type Conditions []metav1.Condition + `json:\"conditions,omitempty\" patchStrategy:\"merge\" patchMergeKey:\"type\" + protobuf:\"bytes,1,rep,name=conditions\"` \n // other fields }" + properties: + lastTransitionTime: + description: lastTransitionTime is the last time the condition + transitioned from one status to another. This should be when + the underlying condition changed. If that is not known, then + using the time when the API field changed is acceptable. + format: date-time + type: string + message: + description: message is a human readable message indicating + details about the transition. This may be an empty string. + maxLength: 32768 + type: string + observedGeneration: + description: observedGeneration represents the .metadata.generation + that the condition was set based upon. For instance, if .metadata.generation + is currently 12, but the .status.conditions[x].observedGeneration + is 9, the condition is out of date with respect to the current + state of the instance. + format: int64 + minimum: 0 + type: integer + reason: + description: reason contains a programmatic identifier indicating + the reason for the condition's last transition. Producers + of specific condition types may define expected values and + meanings for this field, and whether the values are considered + a guaranteed API. The value should be a CamelCase string. + This field may not be empty. + maxLength: 1024 + minLength: 1 + pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ + type: string + status: + description: status of the condition, one of True, False, Unknown. + enum: + - "True" + - "False" + - Unknown + type: string + type: + description: type of condition in CamelCase or in foo.example.com/CamelCase. + --- Many .condition.type values are consistent across resources + like Available, but because arbitrary conditions can be useful + (see .node.status.conditions), the ability to deconflict is + important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) + maxLength: 316 + pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ + type: string + required: + - lastTransitionTime + - message + - reason + - status + - type + type: object + type: array + x-kubernetes-list-map-keys: + - type + x-kubernetes-list-type: map + geoReplicationEnabled: + description: GeoReplicationEnabled + type: boolean + observedGeneration: + description: ObservedGeneration is the most recent generation observed + for this resource. It corresponds to the metadata generation, which + is updated on mutation by the API Server. + format: int64 + type: integer + type: object + type: object + served: true + storage: true + subresources: + status: {} +status: + acceptedNames: + kind: "" + plural: "" + conditions: [] + storedVersions: [] diff --git a/operators/pulsar-resources-operator/0.4.10/manifests/resource.streamnative.io_pulsarpermissions.yaml b/operators/pulsar-resources-operator/0.4.10/manifests/resource.streamnative.io_pulsarpermissions.yaml new file mode 100644 index 00000000000..cab8d18692b --- /dev/null +++ b/operators/pulsar-resources-operator/0.4.10/manifests/resource.streamnative.io_pulsarpermissions.yaml @@ -0,0 +1,199 @@ +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.8.0 + creationTimestamp: null + name: pulsarpermissions.resource.streamnative.io +spec: + group: resource.streamnative.io + names: + categories: + - pulsar + - pulsarres + kind: PulsarPermission + listKind: PulsarPermissionList + plural: pulsarpermissions + shortNames: + - ppermission + singular: pulsarpermission + scope: Namespaced + versions: + - additionalPrinterColumns: + - jsonPath: .spec.resourceName + name: RESOURCE NAME + type: string + - jsonPath: .spec.resourceType + name: RESOURCE TYPE + type: string + - jsonPath: .spec.roles + name: ROLES + type: string + - jsonPath: .spec.actions + name: ACTIONS + type: string + - jsonPath: .metadata.generation + name: GENERATION + type: string + - jsonPath: .status.observedGeneration + name: OBSERVED GENERATION + type: string + - jsonPath: .status.conditions[?(@.type=="Ready")].status + name: READY + type: string + name: v1alpha1 + schema: + openAPIV3Schema: + description: PulsarPermission is the Schema for the pulsarpermissions 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: PulsarPermissionSpec defines the desired state of PulsarPermission + properties: + actions: + description: Actions contains a list of action to grant. the options + include produce,consume,functions + items: + type: string + type: array + connectionRef: + description: ConnectionRef is the reference to the PulsarConnection + resource + properties: + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + type: object + lifecyclePolicy: + description: LifecyclePolicy is the policy that how to deal with pulsar + resource when PulsarPermission is deleted + type: string + resourceName: + description: ResourceName name of the target resource which will be + granted the permssions + type: string + resourceType: + description: ResourceType indicates the resource type, the options + include namespace and topic + enum: + - namespace + - topic + type: string + roles: + description: Roles contains a list of role which will be granted the + same permissions for the same target + items: + type: string + type: array + required: + - connectionRef + - resourceName + - resourceType + - roles + type: object + status: + description: PulsarPermissionStatus defines the observed state of PulsarPermission + properties: + conditions: + description: Represents the observations of a connection's current + state. + items: + description: "Condition contains details for one aspect of the current + state of this API Resource. --- This struct is intended for direct + use as an array at the field path .status.conditions. For example, + type FooStatus struct{ // Represents the observations of a foo's + current state. // Known .status.conditions.type are: \"Available\", + \"Progressing\", and \"Degraded\" // +patchMergeKey=type // +patchStrategy=merge + // +listType=map // +listMapKey=type Conditions []metav1.Condition + `json:\"conditions,omitempty\" patchStrategy:\"merge\" patchMergeKey:\"type\" + protobuf:\"bytes,1,rep,name=conditions\"` \n // other fields }" + properties: + lastTransitionTime: + description: lastTransitionTime is the last time the condition + transitioned from one status to another. This should be when + the underlying condition changed. If that is not known, then + using the time when the API field changed is acceptable. + format: date-time + type: string + message: + description: message is a human readable message indicating + details about the transition. This may be an empty string. + maxLength: 32768 + type: string + observedGeneration: + description: observedGeneration represents the .metadata.generation + that the condition was set based upon. For instance, if .metadata.generation + is currently 12, but the .status.conditions[x].observedGeneration + is 9, the condition is out of date with respect to the current + state of the instance. + format: int64 + minimum: 0 + type: integer + reason: + description: reason contains a programmatic identifier indicating + the reason for the condition's last transition. Producers + of specific condition types may define expected values and + meanings for this field, and whether the values are considered + a guaranteed API. The value should be a CamelCase string. + This field may not be empty. + maxLength: 1024 + minLength: 1 + pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ + type: string + status: + description: status of the condition, one of True, False, Unknown. + enum: + - "True" + - "False" + - Unknown + type: string + type: + description: type of condition in CamelCase or in foo.example.com/CamelCase. + --- Many .condition.type values are consistent across resources + like Available, but because arbitrary conditions can be useful + (see .node.status.conditions), the ability to deconflict is + important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) + maxLength: 316 + pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ + type: string + required: + - lastTransitionTime + - message + - reason + - status + - type + type: object + type: array + x-kubernetes-list-map-keys: + - type + x-kubernetes-list-type: map + observedGeneration: + description: ObservedGeneration is the most recent generation observed + for this resource. It corresponds to the metadata generation, which + is updated on mutation by the API Server. + format: int64 + type: integer + type: object + type: object + served: true + storage: true + subresources: + status: {} +status: + acceptedNames: + kind: "" + plural: "" + conditions: [] + storedVersions: [] diff --git a/operators/pulsar-resources-operator/0.4.10/manifests/resource.streamnative.io_pulsartenants.yaml b/operators/pulsar-resources-operator/0.4.10/manifests/resource.streamnative.io_pulsartenants.yaml new file mode 100644 index 00000000000..0bacff803ea --- /dev/null +++ b/operators/pulsar-resources-operator/0.4.10/manifests/resource.streamnative.io_pulsartenants.yaml @@ -0,0 +1,193 @@ +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.8.0 + creationTimestamp: null + name: pulsartenants.resource.streamnative.io +spec: + group: resource.streamnative.io + names: + categories: + - pulsar + - pulsarres + kind: PulsarTenant + listKind: PulsarTenantList + plural: pulsartenants + shortNames: + - ptenant + singular: pulsartenant + scope: Namespaced + versions: + - additionalPrinterColumns: + - jsonPath: .spec.name + name: RESOURCE_NAME + type: string + - jsonPath: .metadata.generation + name: GENERATION + type: string + - jsonPath: .status.observedGeneration + name: OBSERVED_GENERATION + type: string + - jsonPath: .status.conditions[?(@.type=="Ready")].status + name: READY + type: string + name: v1alpha1 + schema: + openAPIV3Schema: + description: PulsarTenant is the Schema for the pulsartenants 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: PulsarTenantSpec defines the desired state of PulsarTenant + properties: + adminRoles: + items: + type: string + type: array + allowedClusters: + items: + type: string + type: array + connectionRef: + description: ConnectionRef is the reference to the PulsarConnection + resource + properties: + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + type: object + geoReplicationRefs: + description: GeoReplicationRefs is the reference list to the PulsarGeoReplication + resource + items: + description: LocalObjectReference contains enough information to + let you locate the referenced object inside the same namespace. + properties: + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + type: object + type: array + lifecyclePolicy: + description: PulsarResourceLifeCyclePolicy indicates whether it will + keep or delete the resource in pulsar cluster after resource is + deleted by controller KeepAfterDeletion or CleanUpAfterDeletion + enum: + - CleanUpAfterDeletion + - KeepAfterDeletion + type: string + name: + description: Name is the tenant name + type: string + required: + - connectionRef + - name + type: object + status: + description: PulsarTenantStatus defines the observed state of PulsarTenant + properties: + conditions: + description: Represents the observations of a connection's current + state. + items: + description: "Condition contains details for one aspect of the current + state of this API Resource. --- This struct is intended for direct + use as an array at the field path .status.conditions. For example, + type FooStatus struct{ // Represents the observations of a foo's + current state. // Known .status.conditions.type are: \"Available\", + \"Progressing\", and \"Degraded\" // +patchMergeKey=type // +patchStrategy=merge + // +listType=map // +listMapKey=type Conditions []metav1.Condition + `json:\"conditions,omitempty\" patchStrategy:\"merge\" patchMergeKey:\"type\" + protobuf:\"bytes,1,rep,name=conditions\"` \n // other fields }" + properties: + lastTransitionTime: + description: lastTransitionTime is the last time the condition + transitioned from one status to another. This should be when + the underlying condition changed. If that is not known, then + using the time when the API field changed is acceptable. + format: date-time + type: string + message: + description: message is a human readable message indicating + details about the transition. This may be an empty string. + maxLength: 32768 + type: string + observedGeneration: + description: observedGeneration represents the .metadata.generation + that the condition was set based upon. For instance, if .metadata.generation + is currently 12, but the .status.conditions[x].observedGeneration + is 9, the condition is out of date with respect to the current + state of the instance. + format: int64 + minimum: 0 + type: integer + reason: + description: reason contains a programmatic identifier indicating + the reason for the condition's last transition. Producers + of specific condition types may define expected values and + meanings for this field, and whether the values are considered + a guaranteed API. The value should be a CamelCase string. + This field may not be empty. + maxLength: 1024 + minLength: 1 + pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ + type: string + status: + description: status of the condition, one of True, False, Unknown. + enum: + - "True" + - "False" + - Unknown + type: string + type: + description: type of condition in CamelCase or in foo.example.com/CamelCase. + --- Many .condition.type values are consistent across resources + like Available, but because arbitrary conditions can be useful + (see .node.status.conditions), the ability to deconflict is + important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) + maxLength: 316 + pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ + type: string + required: + - lastTransitionTime + - message + - reason + - status + - type + type: object + type: array + x-kubernetes-list-map-keys: + - type + x-kubernetes-list-type: map + observedGeneration: + description: ObservedGeneration is the most recent generation observed + for this resource. It corresponds to the metadata generation, which + is updated on mutation by the API Server. + format: int64 + type: integer + type: object + type: object + served: true + storage: true + subresources: + status: {} +status: + acceptedNames: + kind: "" + plural: "" + conditions: [] + storedVersions: [] diff --git a/operators/pulsar-resources-operator/0.4.10/manifests/resource.streamnative.io_pulsartopics.yaml b/operators/pulsar-resources-operator/0.4.10/manifests/resource.streamnative.io_pulsartopics.yaml new file mode 100644 index 00000000000..399daa0c148 --- /dev/null +++ b/operators/pulsar-resources-operator/0.4.10/manifests/resource.streamnative.io_pulsartopics.yaml @@ -0,0 +1,252 @@ +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.8.0 + creationTimestamp: null + name: pulsartopics.resource.streamnative.io +spec: + group: resource.streamnative.io + names: + categories: + - pulsar + - pulsarres + kind: PulsarTopic + listKind: PulsarTopicList + plural: pulsartopics + shortNames: + - ptopic + singular: pulsartopic + scope: Namespaced + versions: + - additionalPrinterColumns: + - jsonPath: .spec.name + name: RESOURCE_NAME + type: string + - jsonPath: .metadata.generation + name: GENERATION + type: string + - jsonPath: .status.observedGeneration + name: OBSERVED_GENERATION + type: string + - jsonPath: .status.conditions[?(@.type=="Ready")].status + name: READY + type: string + name: v1alpha1 + schema: + openAPIV3Schema: + description: PulsarTopic is the Schema for the pulsartopics 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: PulsarTopicSpec defines the desired state of PulsarTopic + properties: + backlogQuotaLimitSize: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + backlogQuotaLimitTime: + description: Backlog Should set at least one of them if setting backlog + type: string + backlogQuotaRetentionPolicy: + type: string + connectionRef: + description: ConnectionRef is the reference to the PulsarConnection + resource + properties: + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + type: object + geoReplicationRefs: + description: GeoReplicationRefs is the reference list to the PulsarGeoReplication + resource + items: + description: LocalObjectReference contains enough information to + let you locate the referenced object inside the same namespace. + properties: + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + type: object + type: array + lifecyclePolicy: + description: PulsarResourceLifeCyclePolicy indicates whether it will + keep or delete the resource in pulsar cluster after resource is + deleted by controller KeepAfterDeletion or CleanUpAfterDeletion + enum: + - CleanUpAfterDeletion + - KeepAfterDeletion + type: string + maxConsumers: + format: int32 + type: integer + maxProducers: + description: Topic Policy Setting + format: int32 + type: integer + maxUnAckedMessagesPerConsumer: + description: Max unacked messages + format: int32 + type: integer + maxUnAckedMessagesPerSubscription: + format: int32 + type: integer + messageTTL: + description: MessageTTL indicates the message ttl for the topic + type: string + name: + description: Name is the topic name + type: string + partitions: + default: 0 + format: int32 + type: integer + persistent: + default: true + type: boolean + retentionSize: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + retentionTime: + description: Retention Should set at least one of them if setting + retention Retention Quota must exceed configured backlog quota for + topic + type: string + schemaInfo: + description: SchemaInfo defines the Pulsar Schema. It is stored and + enforced on a per-topic basis and cannot be stored at the namespace + or tenant level. + properties: + properties: + additionalProperties: + type: string + description: Properties is a user defined properties as a string/string + map + type: object + schema: + description: Schema is schema data + type: string + type: + description: Type determines how to interpret the schema data + type: string + type: object + required: + - connectionRef + - name + type: object + status: + description: PulsarTopicStatus defines the observed state of PulsarTopic + properties: + conditions: + description: Represents the observations of a connection's current + state. + items: + description: "Condition contains details for one aspect of the current + state of this API Resource. --- This struct is intended for direct + use as an array at the field path .status.conditions. For example, + type FooStatus struct{ // Represents the observations of a foo's + current state. // Known .status.conditions.type are: \"Available\", + \"Progressing\", and \"Degraded\" // +patchMergeKey=type // +patchStrategy=merge + // +listType=map // +listMapKey=type Conditions []metav1.Condition + `json:\"conditions,omitempty\" patchStrategy:\"merge\" patchMergeKey:\"type\" + protobuf:\"bytes,1,rep,name=conditions\"` \n // other fields }" + properties: + lastTransitionTime: + description: lastTransitionTime is the last time the condition + transitioned from one status to another. This should be when + the underlying condition changed. If that is not known, then + using the time when the API field changed is acceptable. + format: date-time + type: string + message: + description: message is a human readable message indicating + details about the transition. This may be an empty string. + maxLength: 32768 + type: string + observedGeneration: + description: observedGeneration represents the .metadata.generation + that the condition was set based upon. For instance, if .metadata.generation + is currently 12, but the .status.conditions[x].observedGeneration + is 9, the condition is out of date with respect to the current + state of the instance. + format: int64 + minimum: 0 + type: integer + reason: + description: reason contains a programmatic identifier indicating + the reason for the condition's last transition. Producers + of specific condition types may define expected values and + meanings for this field, and whether the values are considered + a guaranteed API. The value should be a CamelCase string. + This field may not be empty. + maxLength: 1024 + minLength: 1 + pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ + type: string + status: + description: status of the condition, one of True, False, Unknown. + enum: + - "True" + - "False" + - Unknown + type: string + type: + description: type of condition in CamelCase or in foo.example.com/CamelCase. + --- Many .condition.type values are consistent across resources + like Available, but because arbitrary conditions can be useful + (see .node.status.conditions), the ability to deconflict is + important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) + maxLength: 316 + pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ + type: string + required: + - lastTransitionTime + - message + - reason + - status + - type + type: object + type: array + x-kubernetes-list-map-keys: + - type + x-kubernetes-list-type: map + geoReplicationEnabled: + description: GeoReplicationEnabled + type: boolean + observedGeneration: + description: ObservedGeneration is the most recent generation observed + for this resource. It corresponds to the metadata generation, which + is updated on mutation by the API Server. + format: int64 + type: integer + type: object + type: object + served: true + storage: true + subresources: + status: {} +status: + acceptedNames: + kind: "" + plural: "" + conditions: [] + storedVersions: [] diff --git a/operators/pulsar-resources-operator/0.4.10/metadata/annotations.yaml b/operators/pulsar-resources-operator/0.4.10/metadata/annotations.yaml new file mode 100644 index 00000000000..896f35ec7d6 --- /dev/null +++ b/operators/pulsar-resources-operator/0.4.10/metadata/annotations.yaml @@ -0,0 +1,17 @@ +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: pulsar-resources-operator + operators.operatorframework.io.bundle.channels.v1: alpha,beta,stable + operators.operatorframework.io.bundle.channel.default.v1: alpha + operators.operatorframework.io.metrics.builder: operator-sdk-v1.31.0 + operators.operatorframework.io.metrics.mediatype.v1: metrics+v1 + operators.operatorframework.io.metrics.project_layout: go.kubebuilder.io/v3 + + # Annotations for testing. + operators.operatorframework.io.test.mediatype.v1: scorecard+v1 + operators.operatorframework.io.test.config.v1: tests/scorecard/ + # OpenShift annotations. + com.redhat.openshift.versions: v4.6-v4.15 diff --git a/operators/pulsar-resources-operator/0.4.10/tests/scorecard/config.yaml b/operators/pulsar-resources-operator/0.4.10/tests/scorecard/config.yaml new file mode 100644 index 00000000000..21f1d101ef8 --- /dev/null +++ b/operators/pulsar-resources-operator/0.4.10/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:master + labels: + suite: basic + test: basic-check-spec-test + storage: + spec: + mountPath: {} + - entrypoint: + - scorecard-test + - olm-bundle-validation + image: quay.io/operator-framework/scorecard-test:master + 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:master + 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:master + 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:master + labels: + suite: olm + test: olm-spec-descriptors-test + storage: + spec: + mountPath: {} + - entrypoint: + - scorecard-test + - olm-status-descriptors + image: quay.io/operator-framework/scorecard-test:master + labels: + suite: olm + test: olm-status-descriptors-test + storage: + spec: + mountPath: {} +storage: + spec: + mountPath: {}