From 3119cd05cff5c73e24f5807b6e569c3fe1d0ee7f Mon Sep 17 00:00:00 2001 From: Rastislav Wagner Date: Mon, 14 Nov 2022 08:42:13 +0100 Subject: [PATCH] Add Cluster as a service operator Signed-off-by: Rastislav Wagner --- ...er-manager-metrics-service_v1_service.yaml | 17 + ...-operator-manager-config_v1_configmap.yaml | 17 + ...c.authorization.k8s.io_v1_clusterrole.yaml | 10 + ...s-operator-webhook-service_v1_service.yaml | 14 + ...er-aas-operator.clusterserviceversion.yaml | 431 ++++++++ .../cluster_templates_user_role.yaml | 40 + ...openshift.io_clustertemplateinstances.yaml | 231 +++++ ...te.openshift.io_clustertemplatequotas.yaml | 110 +++ ...emplate.openshift.io_clustertemplates.yaml | 929 ++++++++++++++++++ .../0.0.1/metadata/annotations.yaml | 15 + .../0.0.1/metadata/dependencies.yaml | 16 + .../0.0.1/tests/scorecard/config.yaml | 70 ++ operators/cluster-aas-operator/ci.yaml | 7 + 13 files changed, 1907 insertions(+) create mode 100644 operators/cluster-aas-operator/0.0.1/manifests/cluster-aas-operator-controller-manager-metrics-service_v1_service.yaml create mode 100644 operators/cluster-aas-operator/0.0.1/manifests/cluster-aas-operator-manager-config_v1_configmap.yaml create mode 100644 operators/cluster-aas-operator/0.0.1/manifests/cluster-aas-operator-metrics-reader_rbac.authorization.k8s.io_v1_clusterrole.yaml create mode 100644 operators/cluster-aas-operator/0.0.1/manifests/cluster-aas-operator-webhook-service_v1_service.yaml create mode 100644 operators/cluster-aas-operator/0.0.1/manifests/cluster-aas-operator.clusterserviceversion.yaml create mode 100644 operators/cluster-aas-operator/0.0.1/manifests/cluster_templates_user_role.yaml create mode 100644 operators/cluster-aas-operator/0.0.1/manifests/clustertemplate.openshift.io_clustertemplateinstances.yaml create mode 100644 operators/cluster-aas-operator/0.0.1/manifests/clustertemplate.openshift.io_clustertemplatequotas.yaml create mode 100644 operators/cluster-aas-operator/0.0.1/manifests/clustertemplate.openshift.io_clustertemplates.yaml create mode 100644 operators/cluster-aas-operator/0.0.1/metadata/annotations.yaml create mode 100644 operators/cluster-aas-operator/0.0.1/metadata/dependencies.yaml create mode 100644 operators/cluster-aas-operator/0.0.1/tests/scorecard/config.yaml create mode 100644 operators/cluster-aas-operator/ci.yaml diff --git a/operators/cluster-aas-operator/0.0.1/manifests/cluster-aas-operator-controller-manager-metrics-service_v1_service.yaml b/operators/cluster-aas-operator/0.0.1/manifests/cluster-aas-operator-controller-manager-metrics-service_v1_service.yaml new file mode 100644 index 00000000000..4f0e2c4fc77 --- /dev/null +++ b/operators/cluster-aas-operator/0.0.1/manifests/cluster-aas-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: cluster-aas-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/cluster-aas-operator/0.0.1/manifests/cluster-aas-operator-manager-config_v1_configmap.yaml b/operators/cluster-aas-operator/0.0.1/manifests/cluster-aas-operator-manager-config_v1_configmap.yaml new file mode 100644 index 00000000000..663c49dee5a --- /dev/null +++ b/operators/cluster-aas-operator/0.0.1/manifests/cluster-aas-operator-manager-config_v1_configmap.yaml @@ -0,0 +1,17 @@ +apiVersion: v1 +data: + controller_manager_config.yaml: | + 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: 135184d5.openshift.io +kind: ConfigMap +metadata: + name: cluster-aas-operator-manager-config diff --git a/operators/cluster-aas-operator/0.0.1/manifests/cluster-aas-operator-metrics-reader_rbac.authorization.k8s.io_v1_clusterrole.yaml b/operators/cluster-aas-operator/0.0.1/manifests/cluster-aas-operator-metrics-reader_rbac.authorization.k8s.io_v1_clusterrole.yaml new file mode 100644 index 00000000000..36ed618a392 --- /dev/null +++ b/operators/cluster-aas-operator/0.0.1/manifests/cluster-aas-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: cluster-aas-operator-metrics-reader +rules: +- nonResourceURLs: + - /metrics + verbs: + - get diff --git a/operators/cluster-aas-operator/0.0.1/manifests/cluster-aas-operator-webhook-service_v1_service.yaml b/operators/cluster-aas-operator/0.0.1/manifests/cluster-aas-operator-webhook-service_v1_service.yaml new file mode 100644 index 00000000000..7eb51812c48 --- /dev/null +++ b/operators/cluster-aas-operator/0.0.1/manifests/cluster-aas-operator-webhook-service_v1_service.yaml @@ -0,0 +1,14 @@ +apiVersion: v1 +kind: Service +metadata: + creationTimestamp: null + name: cluster-aas-operator-webhook-service +spec: + ports: + - port: 443 + protocol: TCP + targetPort: 9443 + selector: + control-plane: controller-manager +status: + loadBalancer: {} diff --git a/operators/cluster-aas-operator/0.0.1/manifests/cluster-aas-operator.clusterserviceversion.yaml b/operators/cluster-aas-operator/0.0.1/manifests/cluster-aas-operator.clusterserviceversion.yaml new file mode 100644 index 00000000000..08eccb39507 --- /dev/null +++ b/operators/cluster-aas-operator/0.0.1/manifests/cluster-aas-operator.clusterserviceversion.yaml @@ -0,0 +1,431 @@ +apiVersion: operators.coreos.com/v1alpha1 +kind: ClusterServiceVersion +metadata: + annotations: + alm-examples: |- + [ + { + "apiVersion": "clustertemplate.openshift.io/v1alpha1", + "kind": "ClusterTemplate", + "metadata": { + "name": "clustertemplate-sample" + }, + "spec": {} + }, + { + "apiVersion": "clustertemplate.openshift.io/v1alpha1", + "kind": "ClusterTemplateInstance", + "metadata": { + "name": "clustertemplateinstance-sample" + }, + "spec": {} + }, + { + "apiVersion": "clustertemplate.openshift.io/v1alpha1", + "kind": "ClusterTemplateQuota", + "metadata": { + "name": "clustertemplatequota-sample" + }, + "spec": {} + } + ] + categories: Integration & Delivery,OpenShift Optional + certified: "false" + containerImage: quay.io/stolostron/cluster-templates-operator:2.7.0-d6ce1f162f00effe5c3963629dc5fc39243b22f1 + description: Easily install fully configured clusters with guard-rails. + operators.operatorframework.io/builder: operator-sdk-v1.22.2 + operators.operatorframework.io/project_layout: go.kubebuilder.io/v3 + repository: https://github.com/stolostron/cluster-templates-operator + createdAt: "2022-11-11T12:00:00+00:00" + name: cluster-aas-operator.v0.0.1 + namespace: placeholder +spec: + apiservicedefinitions: {} + customresourcedefinitions: + owned: + - description: Represents instance of a cluster + displayName: Cluster template instance + kind: ClusterTemplateInstance + name: clustertemplateinstances.clustertemplate.openshift.io + resources: + - kind: Pod + name: "" + version: v1 + statusDescriptors: + - description: A reference for secret which contains username and password under + keys "username" and "password" + displayName: Admin Password + path: adminPassword + - description: API server URL of the new cluster + displayName: APIserver URL + path: apiServerURL + - description: Status of each cluster setup + displayName: Cluster Setup + path: clusterSetup + - description: Resource conditions + displayName: Conditions + path: conditions + - description: A reference for secret which contains kubeconfig under key "kubeconfig" + displayName: Kubeconfig + path: kubeconfig + - description: Additional message for Phase + displayName: Message + path: message + - description: Represents instance installaton & setup phase + displayName: Phase + path: phase + version: v1alpha1 + - description: Defines which ClusterTemplates can be used in a given namespace + displayName: Cluster template quota + kind: ClusterTemplateQuota + name: clustertemplatequotas.clustertemplate.openshift.io + resources: + - kind: Pod + name: "" + version: v1 + statusDescriptors: + - description: How much budget is currenly spent + displayName: Budget Spent + path: budgetSpent + - description: Which instances are in use + displayName: Template Instances + path: templateInstances + version: v1alpha1 + - description: Template of a cluster - both installation and post-install setup + are defined as ArgoCD application spec. Any application source is supported + - typically a Helm chart + displayName: Cluster template + kind: ClusterTemplate + name: clustertemplates.clustertemplate.openshift.io + resources: + - kind: Pod + name: "" + version: v1 + statusDescriptors: + - description: Resource conditions + displayName: Conditions + path: conditions + version: v1alpha1 + description: | + **Self-service clusters with guardrails!** + Cluster as a service operator provides an easy way to define clusters as templates and allows creating instances of those templates even for non-privileged developer/devops engineers. Cluster templates operator also allows specifing quotas for the developer/devops engineers. + + ### Documentation + Documentation can be found on our [website](https://github.com/stolostron/cluster-templates-operator). + + ### Getting help + To report any issues or ask questions, create an issue on our [Github repo](https://github.com/stolostron/cluster-templates-operator/issues) + displayName: Cluster as a service operator + icon: + - base64data: PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTguNTEgMjU4LjUxIj48ZGVmcz48c3R5bGU+LmNscy0xe2ZpbGw6I2QxZDFkMTt9LmNscy0ye2ZpbGw6IzhkOGQ4Zjt9PC9zdHlsZT48L2RlZnM+PHRpdGxlPkFzc2V0IDQ8L3RpdGxlPjxnIGlkPSJMYXllcl8yIiBkYXRhLW5hbWU9IkxheWVyIDIiPjxnIGlkPSJMYXllcl8xLTIiIGRhdGEtbmFtZT0iTGF5ZXIgMSI+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNMTI5LjI1LDIwQTEwOS4xLDEwOS4xLDAsMCwxLDIwNi40LDIwNi40LDEwOS4xLDEwOS4xLDAsMSwxLDUyLjExLDUyLjExLDEwOC40NSwxMDguNDUsMCwwLDEsMTI5LjI1LDIwbTAtMjBoMEM1OC4xNiwwLDAsNTguMTYsMCwxMjkuMjVIMGMwLDcxLjA5LDU4LjE2LDEyOS4yNiwxMjkuMjUsMTI5LjI2aDBjNzEuMDksMCwxMjkuMjYtNTguMTcsMTI5LjI2LTEyOS4yNmgwQzI1OC41MSw1OC4xNiwyMDAuMzQsMCwxMjkuMjUsMFoiLz48cGF0aCBjbGFzcz0iY2xzLTIiIGQ9Ik0xNzcuNTQsMTAzLjQxSDE0MS42NkwxNTQuOSw2NS43NmMxLjI1LTQuNC0yLjMzLTguNzYtNy4yMS04Ljc2SDEwMi45M2E3LjMyLDcuMzIsMCwwLDAtNy40LDZsLTEwLDY5LjYxYy0uNTksNC4xNywyLjg5LDcuODksNy40LDcuODloMzYuOUwxMTUuNTUsMTk3Yy0xLjEyLDQuNDEsMi40OCw4LjU1LDcuMjQsOC41NWE3LjU4LDcuNTgsMCwwLDAsNi40Ny0zLjQ4TDE4NCwxMTMuODVDMTg2Ljg2LDEwOS4yNCwxODMuMjksMTAzLjQxLDE3Ny41NCwxMDMuNDFaIi8+PC9nPjwvZz48L3N2Zz4= + mediatype: image/svg+xml + install: + spec: + clusterPermissions: + - rules: + - apiGroups: + - "" + resources: + - secrets + verbs: + - create + - delete + - get + - list + - update + - watch + - apiGroups: + - argoproj.io + resources: + - applications + verbs: + - create + - delete + - get + - list + - watch + - apiGroups: + - clustertemplate.openshift.io + resources: + - clustertemplateinstances + verbs: + - create + - delete + - get + - list + - patch + - update + - watch + - apiGroups: + - clustertemplate.openshift.io + resources: + - clustertemplateinstances/status + verbs: + - get + - patch + - update + - apiGroups: + - clustertemplate.openshift.io + resources: + - clustertemplatequotas + verbs: + - create + - delete + - get + - list + - patch + - update + - watch + - apiGroups: + - clustertemplate.openshift.io + resources: + - clustertemplatequotas/status + verbs: + - get + - patch + - update + - apiGroups: + - clustertemplate.openshift.io + resources: + - clustertemplates + verbs: + - create + - get + - list + - update + - watch + - apiGroups: + - helm.openshift.io + resources: + - helmchartrepositories + verbs: + - create + - get + - list + - update + - watch + - apiGroups: + - hive.openshift.io + resources: + - clusterclaims + - clusterdeployments + verbs: + - get + - list + - watch + - apiGroups: + - hypershift.openshift.io + resources: + - hostedclusters + - nodepools + verbs: + - get + - list + - watch + - apiGroups: + - authentication.k8s.io + resources: + - tokenreviews + verbs: + - create + - apiGroups: + - authorization.k8s.io + resources: + - subjectaccessreviews + verbs: + - create + serviceAccountName: cluster-aas-operator-controller-manager + deployments: + - label: + control-plane: controller-manager + name: cluster-aas-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 + 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.11.0 + name: kube-rbac-proxy + ports: + - containerPort: 8443 + name: https + protocol: TCP + resources: + limits: + cpu: 500m + memory: 128Mi + requests: + cpu: 5m + memory: 64Mi + securityContext: + allowPrivilegeEscalation: false + - args: + - --health-probe-bind-address=:8081 + - --metrics-bind-address=127.0.0.1:8080 + - --leader-elect + command: + - /manager + image: quay.io/stolostron/cluster-templates-operator:2.7.0-d6ce1f162f00effe5c3963629dc5fc39243b22f1 + livenessProbe: + httpGet: + path: /healthz + port: 8081 + initialDelaySeconds: 15 + periodSeconds: 20 + name: manager + ports: + - containerPort: 9443 + name: webhook-server + protocol: TCP + readinessProbe: + httpGet: + path: /readyz + port: 8081 + initialDelaySeconds: 5 + periodSeconds: 10 + resources: + limits: + cpu: 500m + memory: 1Gi + requests: + cpu: 10m + memory: 64Mi + securityContext: + allowPrivilegeEscalation: false + securityContext: + runAsNonRoot: true + serviceAccountName: cluster-aas-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: cluster-aas-operator-controller-manager + strategy: deployment + installModes: + - supported: false + type: OwnNamespace + - supported: false + type: SingleNamespace + - supported: false + type: MultiNamespace + - supported: true + type: AllNamespaces + keywords: + - cluster + - templates + - hive + - hypershift + - selfservice + - openshift + - multicluster + - quota + - helm + - argocd + links: + - name: Cluster as a service operator + url: https://github.com/stolostron/cluster-templates-operator + maintainers: + - email: rawagner@redhat.com + name: Rastislav Wagner + maturity: alpha + minKubeVersion: 1.24.0 + provider: + name: Stolostron + version: 0.0.1 + webhookdefinitions: + - admissionReviewVersions: + - v1 + containerPort: 443 + conversionCRDs: + - clustertemplateinstances.clustertemplate.openshift.io + - clustertemplatequotas.clustertemplate.openshift.io + deploymentName: cluster-aas-operator-controller-manager + generateName: cclustertemplateinstancesclustertemplatequotas.kb.io + sideEffects: None + targetPort: 9443 + type: ConversionWebhook + webhookPath: /convert + - admissionReviewVersions: + - v1 + containerPort: 443 + deploymentName: cluster-aas-operator-controller-manager + failurePolicy: Fail + generateName: vclustertemplateinstance.kb.io + rules: + - apiGroups: + - clustertemplate.openshift.io + apiVersions: + - v1alpha1 + operations: + - CREATE + - UPDATE + resources: + - clustertemplateinstances + sideEffects: None + targetPort: 9443 + type: ValidatingAdmissionWebhook + webhookPath: /validate-clustertemplate-openshift-io-v1alpha1-clustertemplateinstance + - admissionReviewVersions: + - v1 + containerPort: 443 + deploymentName: cluster-aas-operator-controller-manager + failurePolicy: Fail + generateName: vclustertemplatequota.kb.io + rules: + - apiGroups: + - clustertemplate.openshift.io + apiVersions: + - v1alpha1 + operations: + - CREATE + - UPDATE + resources: + - clustertemplatequotas + sideEffects: None + targetPort: 9443 + type: ValidatingAdmissionWebhook + webhookPath: /validate-clustertemplate-openshift-io-v1alpha1-clustertemplatequota diff --git a/operators/cluster-aas-operator/0.0.1/manifests/cluster_templates_user_role.yaml b/operators/cluster-aas-operator/0.0.1/manifests/cluster_templates_user_role.yaml new file mode 100644 index 00000000000..6ba17ae89f8 --- /dev/null +++ b/operators/cluster-aas-operator/0.0.1/manifests/cluster_templates_user_role.yaml @@ -0,0 +1,40 @@ +kind: ClusterRole +apiVersion: rbac.authorization.k8s.io/v1 +metadata: + name: cluster-templates-user +rules: + - verbs: + - get + - list + - watch + apiGroups: + - clustertemplate.openshift.io + resources: + - clustertemplatequotas + - verbs: + - get + apiGroups: + - '' + resources: + - secrets + - verbs: + - '*' + apiGroups: + - clustertemplate.openshift.io + resources: + - clustertemplateinstances + - verbs: + - get + apiGroups: + - '' + - project.openshift.io + resources: + - projects + - verbs: + - get + - list + - watch + apiGroups: + - '' + resources: + - namespaces diff --git a/operators/cluster-aas-operator/0.0.1/manifests/clustertemplate.openshift.io_clustertemplateinstances.yaml b/operators/cluster-aas-operator/0.0.1/manifests/clustertemplate.openshift.io_clustertemplateinstances.yaml new file mode 100644 index 00000000000..856db913c46 --- /dev/null +++ b/operators/cluster-aas-operator/0.0.1/manifests/clustertemplate.openshift.io_clustertemplateinstances.yaml @@ -0,0 +1,231 @@ +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.9.0 + creationTimestamp: null + name: clustertemplateinstances.clustertemplate.openshift.io +spec: + conversion: + strategy: Webhook + webhook: + clientConfig: + service: + name: cluster-aas-operator-webhook-service + namespace: cluster-aas-operator-system + path: /convert + conversionReviewVersions: + - v1 + group: clustertemplate.openshift.io + names: + kind: ClusterTemplateInstance + listKind: ClusterTemplateInstanceList + plural: clustertemplateinstances + shortNames: + - cti + - ctis + singular: clustertemplateinstance + scope: Namespaced + versions: + - additionalPrinterColumns: + - description: Cluster phase + jsonPath: .status.phase + name: Phase + type: string + - description: Admin Secret + jsonPath: .status.adminPassword.name + name: Adminpassword + type: string + - description: Kubeconfig Secret + jsonPath: .status.kubeconfig.name + name: Kubeconfig + type: string + - description: API URL + jsonPath: .status.apiServerURL + name: API URL + type: string + name: v1alpha1 + schema: + openAPIV3Schema: + description: Represents instance of a cluster + 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: + clusterTemplateRef: + description: A reference to ClusterTemplate which will be used for + installing and setting up the cluster + type: string + parameters: + description: Helm parameters to be passed to cluster installation + or setup + items: + properties: + clusterSetup: + description: If empty, the parameter is passed to cluster installation + chart otherwise the field value needs to match name of ClusterSetup + of ClusterTemplate + type: string + name: + description: Name of the Helm parameter + type: string + value: + description: Value of the Helm parameter + type: string + required: + - name + - value + type: object + type: array + required: + - clusterTemplateRef + type: object + status: + properties: + adminPassword: + description: A reference for secret which contains username and password + under keys "username" and "password" + 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 + apiServerURL: + description: API server URL of the new cluster + type: string + clusterSetup: + description: Status of each cluster setup + items: + properties: + name: + description: Name of the cluster setup + type: string + status: + description: Status of the cluster setup + properties: + message: + description: Message is a human-readable informational message + describing the health status + type: string + status: + description: Status holds the status code of the application + or resource + type: string + type: object + required: + - name + - status + type: object + type: array + conditions: + description: Resource conditions + 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 + kubeconfig: + description: A reference for secret which contains kubeconfig under + key "kubeconfig" + 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 + message: + description: Additional message for Phase + type: string + phase: + description: Represents instance installaton & setup phase + type: string + required: + - conditions + - message + - phase + type: object + type: object + served: true + storage: true + subresources: + status: {} +status: + acceptedNames: + kind: "" + plural: "" + conditions: null + storedVersions: null diff --git a/operators/cluster-aas-operator/0.0.1/manifests/clustertemplate.openshift.io_clustertemplatequotas.yaml b/operators/cluster-aas-operator/0.0.1/manifests/clustertemplate.openshift.io_clustertemplatequotas.yaml new file mode 100644 index 00000000000..1711d34e110 --- /dev/null +++ b/operators/cluster-aas-operator/0.0.1/manifests/clustertemplate.openshift.io_clustertemplatequotas.yaml @@ -0,0 +1,110 @@ +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.9.0 + creationTimestamp: null + name: clustertemplatequotas.clustertemplate.openshift.io +spec: + conversion: + strategy: Webhook + webhook: + clientConfig: + service: + name: cluster-aas-operator-webhook-service + namespace: cluster-aas-operator-system + path: /convert + conversionReviewVersions: + - v1 + group: clustertemplate.openshift.io + names: + kind: ClusterTemplateQuota + listKind: ClusterTemplateQuotaList + plural: clustertemplatequotas + shortNames: + - ctq + - ctqs + singular: clustertemplatequota + scope: Namespaced + versions: + - name: v1alpha1 + schema: + openAPIV3Schema: + description: Defines which ClusterTemplates can be used in a given namespace + 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: + allowedTemplates: + description: Represents all ClusterTemplates which can be used in + given namespace + items: + properties: + count: + description: Defines how many instances of the ClusterTemplate + can exist + minimum: 1 + type: integer + name: + description: Name of the ClusterTemplate + type: string + required: + - name + type: object + type: array + budget: + description: Total budget for all clusters within given namespace + minimum: 1 + type: integer + required: + - allowedTemplates + type: object + status: + description: ClusterTemplateQuotaStatus defines the observed state of + ClusterTemplateQuota + properties: + budgetSpent: + description: How much budget is currenly spent + type: integer + templateInstances: + description: Which instances are in use + items: + properties: + count: + description: Defines how many instances of the ClusterTemplate + can exist + minimum: 1 + type: integer + name: + description: Name of the ClusterTemplate + type: string + required: + - name + type: object + type: array + required: + - budgetSpent + - templateInstances + type: object + type: object + served: true + storage: true + subresources: + status: {} +status: + acceptedNames: + kind: "" + plural: "" + conditions: null + storedVersions: null diff --git a/operators/cluster-aas-operator/0.0.1/manifests/clustertemplate.openshift.io_clustertemplates.yaml b/operators/cluster-aas-operator/0.0.1/manifests/clustertemplate.openshift.io_clustertemplates.yaml new file mode 100644 index 00000000000..cc46b2e4009 --- /dev/null +++ b/operators/cluster-aas-operator/0.0.1/manifests/clustertemplate.openshift.io_clustertemplates.yaml @@ -0,0 +1,929 @@ +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.9.0 + creationTimestamp: null + name: clustertemplates.clustertemplate.openshift.io +spec: + group: clustertemplate.openshift.io + names: + kind: ClusterTemplate + listKind: ClusterTemplateList + plural: clustertemplates + shortNames: + - ct + - cts + singular: clustertemplate + scope: Cluster + versions: + - additionalPrinterColumns: + - description: Cluster cost + jsonPath: .spec.cost + name: Cost + type: integer + name: v1alpha1 + schema: + openAPIV3Schema: + description: Template of a cluster - both installation and post-install setup + are defined as ArgoCD application spec. Any application source is supported + - typically a Helm chart + 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: + clusterDefinition: + description: ArgoCD application spec which is used for installation + of the cluster + properties: + destination: + description: Destination is a reference to the target Kubernetes + server and namespace + properties: + name: + description: Name is an alternate way of specifying the target + cluster by its symbolic name + type: string + namespace: + description: Namespace specifies the target namespace for + the application's resources. The namespace will only be + set for namespace-scoped resources that have not set a value + for .metadata.namespace + type: string + server: + description: Server specifies the URL of the target cluster + and must be set to the Kubernetes control plane API + type: string + type: object + ignoreDifferences: + description: IgnoreDifferences is a list of resources and their + fields which should be ignored during comparison + items: + description: ResourceIgnoreDifferences contains resource filter + and list of json paths which should be ignored during comparison + with live state. + properties: + group: + type: string + jqPathExpressions: + items: + type: string + type: array + jsonPointers: + items: + type: string + type: array + kind: + type: string + managedFieldsManagers: + description: ManagedFieldsManagers is a list of trusted + managers. Fields mutated by those managers will take precedence + over the desired state defined in the SCM and won't be + displayed in diffs + items: + type: string + type: array + name: + type: string + namespace: + type: string + required: + - kind + type: object + type: array + info: + description: Info contains a list of information (URLs, email + addresses, and plain text) that relates to the application + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + project: + description: Project is a reference to the project this application + belongs to. The empty string means that application belongs + to the 'default' project. + type: string + revisionHistoryLimit: + description: RevisionHistoryLimit limits the number of items kept + in the application's revision history, which is used for informational + purposes as well as for rollbacks to previous versions. This + should only be changed in exceptional circumstances. Setting + to zero will store no history. This will reduce storage used. + Increasing will increase the space used to store the history, + so we do not recommend increasing it. Default is 10. + format: int64 + type: integer + source: + description: Source is a reference to the location of the application's + manifests or chart + properties: + chart: + description: Chart is a Helm chart name, and must be specified + for applications sourced from a Helm repo. + type: string + directory: + description: Directory holds path/directory specific options + properties: + exclude: + description: Exclude contains a glob pattern to match + paths against that should be explicitly excluded from + being used during manifest generation + type: string + include: + description: Include contains a glob pattern to match + paths against that should be explicitly included during + manifest generation + type: string + jsonnet: + description: Jsonnet holds options specific to Jsonnet + properties: + extVars: + description: ExtVars is a list of Jsonnet External + Variables + items: + description: JsonnetVar represents a variable to + be passed to jsonnet during manifest generation + properties: + code: + type: boolean + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + libs: + description: Additional library search dirs + items: + type: string + type: array + tlas: + description: TLAS is a list of Jsonnet Top-level Arguments + items: + description: JsonnetVar represents a variable to + be passed to jsonnet during manifest generation + properties: + code: + type: boolean + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + type: object + recurse: + description: Recurse specifies whether to scan a directory + recursively for manifests + type: boolean + type: object + helm: + description: Helm holds helm specific options + properties: + fileParameters: + description: FileParameters are file parameters to the + helm template + items: + description: HelmFileParameter is a file parameter that's + passed to helm template during manifest generation + properties: + name: + description: Name is the name of the Helm parameter + type: string + path: + description: Path is the path to the file containing + the values for the Helm parameter + type: string + type: object + type: array + ignoreMissingValueFiles: + description: IgnoreMissingValueFiles prevents helm template + from failing when valueFiles do not exist locally by + not appending them to helm template --values + type: boolean + parameters: + description: Parameters is a list of Helm parameters which + are passed to the helm template command upon manifest + generation + items: + description: HelmParameter is a parameter that's passed + to helm template during manifest generation + properties: + forceString: + description: ForceString determines whether to tell + Helm to interpret booleans and numbers as strings + type: boolean + name: + description: Name is the name of the Helm parameter + type: string + value: + description: Value is the value for the Helm parameter + type: string + type: object + type: array + passCredentials: + description: PassCredentials pass credentials to all domains + (Helm's --pass-credentials) + type: boolean + releaseName: + description: ReleaseName is the Helm release name to use. + If omitted it will use the application name + type: string + skipCrds: + description: SkipCrds skips custom resource definition + installation step (Helm's --skip-crds) + type: boolean + valueFiles: + description: ValuesFiles is a list of Helm value files + to use when generating a template + items: + type: string + type: array + values: + description: Values specifies Helm values to be passed + to helm template, typically defined as a block + type: string + version: + description: Version is the Helm version to use for templating + ("3") + type: string + type: object + kustomize: + description: Kustomize holds kustomize specific options + properties: + commonAnnotations: + additionalProperties: + type: string + description: CommonAnnotations is a list of additional + annotations to add to rendered manifests + type: object + commonLabels: + additionalProperties: + type: string + description: CommonLabels is a list of additional labels + to add to rendered manifests + type: object + forceCommonAnnotations: + description: ForceCommonAnnotations specifies whether + to force applying common annotations to resources for + Kustomize apps + type: boolean + forceCommonLabels: + description: ForceCommonLabels specifies whether to force + applying common labels to resources for Kustomize apps + type: boolean + images: + description: Images is a list of Kustomize image override + specifications + items: + description: KustomizeImage represents a Kustomize image + definition in the format [old_image_name=]: + type: string + type: array + namePrefix: + description: NamePrefix is a prefix appended to resources + for Kustomize apps + type: string + nameSuffix: + description: NameSuffix is a suffix appended to resources + for Kustomize apps + type: string + version: + description: Version controls which version of Kustomize + to use for rendering manifests + type: string + type: object + path: + description: Path is a directory path within the Git repository, + and is only valid for applications sourced from Git. + type: string + plugin: + description: ConfigManagementPlugin holds config management + plugin specific options + properties: + env: + description: Env is a list of environment variable entries + items: + description: EnvEntry represents an entry in the application's + environment + properties: + name: + description: Name is the name of the variable, usually + expressed in uppercase + type: string + value: + description: Value is the value of the variable + type: string + required: + - name + - value + type: object + type: array + name: + type: string + type: object + repoURL: + description: RepoURL is the URL to the repository (Git or + Helm) that contains the application manifests + type: string + targetRevision: + description: TargetRevision defines the revision of the source + to sync the application to. In case of Git, this can be + commit, tag, or branch. If omitted, will equal to HEAD. + In case of Helm, this is a semver tag for the Chart's version. + type: string + required: + - repoURL + type: object + syncPolicy: + description: SyncPolicy controls when and how a sync will be performed + properties: + automated: + description: Automated will keep an application synced to + the target revision + properties: + allowEmpty: + description: 'AllowEmpty allows apps have zero live resources + (default: false)' + type: boolean + prune: + description: 'Prune specifies whether to delete resources + from the cluster that are not found in the sources anymore + as part of automated sync (default: false)' + type: boolean + selfHeal: + description: 'SelfHeal specifes whether to revert resources + back to their desired state upon modification in the + cluster (default: false)' + type: boolean + type: object + retry: + description: Retry controls failed sync retry behavior + properties: + backoff: + description: Backoff controls how to backoff on subsequent + retries of failed syncs + properties: + duration: + description: Duration is the amount to back off. Default + unit is seconds, but could also be a duration (e.g. + "2m", "1h") + type: string + factor: + description: Factor is a factor to multiply the base + duration after each failed retry + format: int64 + type: integer + maxDuration: + description: MaxDuration is the maximum amount of + time allowed for the backoff strategy + type: string + type: object + limit: + description: Limit is the maximum number of attempts for + retrying a failed sync. If set to 0, no retries will + be performed. + format: int64 + type: integer + type: object + syncOptions: + description: Options allow you to specify whole app sync-options + items: + type: string + type: array + type: object + required: + - destination + - project + - source + type: object + clusterSetup: + description: Array of ArgoCD application specs which are used for + post installation setup of the cluster + items: + properties: + name: + description: Name of the cluster setup + type: string + spec: + description: ArgoCD application spec which is used for setting + up the cluster + properties: + destination: + description: Destination is a reference to the target Kubernetes + server and namespace + properties: + name: + description: Name is an alternate way of specifying + the target cluster by its symbolic name + type: string + namespace: + description: Namespace specifies the target namespace + for the application's resources. The namespace will + only be set for namespace-scoped resources that have + not set a value for .metadata.namespace + type: string + server: + description: Server specifies the URL of the target + cluster and must be set to the Kubernetes control + plane API + type: string + type: object + ignoreDifferences: + description: IgnoreDifferences is a list of resources and + their fields which should be ignored during comparison + items: + description: ResourceIgnoreDifferences contains resource + filter and list of json paths which should be ignored + during comparison with live state. + properties: + group: + type: string + jqPathExpressions: + items: + type: string + type: array + jsonPointers: + items: + type: string + type: array + kind: + type: string + managedFieldsManagers: + description: ManagedFieldsManagers is a list of trusted + managers. Fields mutated by those managers will + take precedence over the desired state defined in + the SCM and won't be displayed in diffs + items: + type: string + type: array + name: + type: string + namespace: + type: string + required: + - kind + type: object + type: array + info: + description: Info contains a list of information (URLs, + email addresses, and plain text) that relates to the application + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + project: + description: Project is a reference to the project this + application belongs to. The empty string means that application + belongs to the 'default' project. + type: string + revisionHistoryLimit: + description: RevisionHistoryLimit limits the number of items + kept in the application's revision history, which is used + for informational purposes as well as for rollbacks to + previous versions. This should only be changed in exceptional + circumstances. Setting to zero will store no history. + This will reduce storage used. Increasing will increase + the space used to store the history, so we do not recommend + increasing it. Default is 10. + format: int64 + type: integer + source: + description: Source is a reference to the location of the + application's manifests or chart + properties: + chart: + description: Chart is a Helm chart name, and must be + specified for applications sourced from a Helm repo. + type: string + directory: + description: Directory holds path/directory specific + options + properties: + exclude: + description: Exclude contains a glob pattern to + match paths against that should be explicitly + excluded from being used during manifest generation + type: string + include: + description: Include contains a glob pattern to + match paths against that should be explicitly + included during manifest generation + type: string + jsonnet: + description: Jsonnet holds options specific to Jsonnet + properties: + extVars: + description: ExtVars is a list of Jsonnet External + Variables + items: + description: JsonnetVar represents a variable + to be passed to jsonnet during manifest + generation + properties: + code: + type: boolean + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + libs: + description: Additional library search dirs + items: + type: string + type: array + tlas: + description: TLAS is a list of Jsonnet Top-level + Arguments + items: + description: JsonnetVar represents a variable + to be passed to jsonnet during manifest + generation + properties: + code: + type: boolean + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + type: object + recurse: + description: Recurse specifies whether to scan a + directory recursively for manifests + type: boolean + type: object + helm: + description: Helm holds helm specific options + properties: + fileParameters: + description: FileParameters are file parameters + to the helm template + items: + description: HelmFileParameter is a file parameter + that's passed to helm template during manifest + generation + properties: + name: + description: Name is the name of the Helm + parameter + type: string + path: + description: Path is the path to the file + containing the values for the Helm parameter + type: string + type: object + type: array + ignoreMissingValueFiles: + description: IgnoreMissingValueFiles prevents helm + template from failing when valueFiles do not exist + locally by not appending them to helm template + --values + type: boolean + parameters: + description: Parameters is a list of Helm parameters + which are passed to the helm template command + upon manifest generation + items: + description: HelmParameter is a parameter that's + passed to helm template during manifest generation + properties: + forceString: + description: ForceString determines whether + to tell Helm to interpret booleans and numbers + as strings + type: boolean + name: + description: Name is the name of the Helm + parameter + type: string + value: + description: Value is the value for the Helm + parameter + type: string + type: object + type: array + passCredentials: + description: PassCredentials pass credentials to + all domains (Helm's --pass-credentials) + type: boolean + releaseName: + description: ReleaseName is the Helm release name + to use. If omitted it will use the application + name + type: string + skipCrds: + description: SkipCrds skips custom resource definition + installation step (Helm's --skip-crds) + type: boolean + valueFiles: + description: ValuesFiles is a list of Helm value + files to use when generating a template + items: + type: string + type: array + values: + description: Values specifies Helm values to be + passed to helm template, typically defined as + a block + type: string + version: + description: Version is the Helm version to use + for templating ("3") + type: string + type: object + kustomize: + description: Kustomize holds kustomize specific options + properties: + commonAnnotations: + additionalProperties: + type: string + description: CommonAnnotations is a list of additional + annotations to add to rendered manifests + type: object + commonLabels: + additionalProperties: + type: string + description: CommonLabels is a list of additional + labels to add to rendered manifests + type: object + forceCommonAnnotations: + description: ForceCommonAnnotations specifies whether + to force applying common annotations to resources + for Kustomize apps + type: boolean + forceCommonLabels: + description: ForceCommonLabels specifies whether + to force applying common labels to resources for + Kustomize apps + type: boolean + images: + description: Images is a list of Kustomize image + override specifications + items: + description: KustomizeImage represents a Kustomize + image definition in the format [old_image_name=]: + type: string + type: array + namePrefix: + description: NamePrefix is a prefix appended to + resources for Kustomize apps + type: string + nameSuffix: + description: NameSuffix is a suffix appended to + resources for Kustomize apps + type: string + version: + description: Version controls which version of Kustomize + to use for rendering manifests + type: string + type: object + path: + description: Path is a directory path within the Git + repository, and is only valid for applications sourced + from Git. + type: string + plugin: + description: ConfigManagementPlugin holds config management + plugin specific options + properties: + env: + description: Env is a list of environment variable + entries + items: + description: EnvEntry represents an entry in the + application's environment + properties: + name: + description: Name is the name of the variable, + usually expressed in uppercase + type: string + value: + description: Value is the value of the variable + type: string + required: + - name + - value + type: object + type: array + name: + type: string + type: object + repoURL: + description: RepoURL is the URL to the repository (Git + or Helm) that contains the application manifests + type: string + targetRevision: + description: TargetRevision defines the revision of + the source to sync the application to. In case of + Git, this can be commit, tag, or branch. If omitted, + will equal to HEAD. In case of Helm, this is a semver + tag for the Chart's version. + type: string + required: + - repoURL + type: object + syncPolicy: + description: SyncPolicy controls when and how a sync will + be performed + properties: + automated: + description: Automated will keep an application synced + to the target revision + properties: + allowEmpty: + description: 'AllowEmpty allows apps have zero live + resources (default: false)' + type: boolean + prune: + description: 'Prune specifies whether to delete + resources from the cluster that are not found + in the sources anymore as part of automated sync + (default: false)' + type: boolean + selfHeal: + description: 'SelfHeal specifes whether to revert + resources back to their desired state upon modification + in the cluster (default: false)' + type: boolean + type: object + retry: + description: Retry controls failed sync retry behavior + properties: + backoff: + description: Backoff controls how to backoff on + subsequent retries of failed syncs + properties: + duration: + description: Duration is the amount to back + off. Default unit is seconds, but could also + be a duration (e.g. "2m", "1h") + type: string + factor: + description: Factor is a factor to multiply + the base duration after each failed retry + format: int64 + type: integer + maxDuration: + description: MaxDuration is the maximum amount + of time allowed for the backoff strategy + type: string + type: object + limit: + description: Limit is the maximum number of attempts + for retrying a failed sync. If set to 0, no retries + will be performed. + format: int64 + type: integer + type: object + syncOptions: + description: Options allow you to specify whole app + sync-options + items: + type: string + type: array + type: object + required: + - destination + - project + - source + type: object + required: + - name + - spec + type: object + type: array + cost: + description: Cost of the cluster, used for quotas + minimum: 0 + type: integer + required: + - clusterDefinition + - cost + type: object + status: + description: ClusterTemplateStatus defines the observed state of ClusterTemplate + properties: + conditions: + description: Resource conditions + 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 + type: object + required: + - spec + type: object + served: true + storage: true + subresources: + status: {} +status: + acceptedNames: + kind: "" + plural: "" + conditions: null + storedVersions: null diff --git a/operators/cluster-aas-operator/0.0.1/metadata/annotations.yaml b/operators/cluster-aas-operator/0.0.1/metadata/annotations.yaml new file mode 100644 index 00000000000..067e569955f --- /dev/null +++ b/operators/cluster-aas-operator/0.0.1/metadata/annotations.yaml @@ -0,0 +1,15 @@ +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: cluster-aas-operator + operators.operatorframework.io.bundle.channels.v1: alpha + operators.operatorframework.io.metrics.builder: operator-sdk-v1.22.2 + operators.operatorframework.io.metrics.mediatype.v1: metrics+v1 + operators.operatorframework.io.metrics.project_layout: go.kubebuilder.io/v3 + com.redhat.openshift.versions: v4.11 + + # Annotations for testing. + operators.operatorframework.io.test.mediatype.v1: scorecard+v1 + operators.operatorframework.io.test.config.v1: tests/scorecard/ diff --git a/operators/cluster-aas-operator/0.0.1/metadata/dependencies.yaml b/operators/cluster-aas-operator/0.0.1/metadata/dependencies.yaml new file mode 100644 index 00000000000..148decc743b --- /dev/null +++ b/operators/cluster-aas-operator/0.0.1/metadata/dependencies.yaml @@ -0,0 +1,16 @@ +dependencies: +- type: olm.gvk + value: + group: hive.openshift.io + kind: ClusterDeployment + version: v1 +- type: olm.gvk + value: + group: hive.openshift.io + kind: ClusterClaim + version: v1 +- type: olm.gvk + value: + group: argoproj.io + kind: Application + version: v1alpha1 \ No newline at end of file diff --git a/operators/cluster-aas-operator/0.0.1/tests/scorecard/config.yaml b/operators/cluster-aas-operator/0.0.1/tests/scorecard/config.yaml new file mode 100644 index 00000000000..6643020929c --- /dev/null +++ b/operators/cluster-aas-operator/0.0.1/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.22.2 + 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.22.2 + 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.22.2 + 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.22.2 + 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.22.2 + 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.22.2 + labels: + suite: olm + test: olm-status-descriptors-test + storage: + spec: + mountPath: {} +storage: + spec: + mountPath: {} diff --git a/operators/cluster-aas-operator/ci.yaml b/operators/cluster-aas-operator/ci.yaml new file mode 100644 index 00000000000..70820e563ca --- /dev/null +++ b/operators/cluster-aas-operator/ci.yaml @@ -0,0 +1,7 @@ +# Use `replaces-mode` or `semver-mode`. Once you switch to `semver-mode`, there is no easy way back. +updateGraph: semver-mode +addReviewers: true +reviewers: + - rawagner + - mareklibra + - jtomasek