--- apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: controller-gen.kubebuilder.io/version: v0.19.0 observability.openshift.io/api-support: GeneralAvailability operatorframework.io/installed-alongside-69f117a18fa7f63e: openshift-cluster-observability-operator/cluster-observability-operator.v1.5.3 creationTimestamp: "2026-10-30T03:11:30Z" generation: 1 labels: olm.managed: "true" operators.coreos.com/cluster-observability-operator.openshift-cluster-observability: "" managedFields: - apiVersion: apiextensions.k8s.io/v1 fieldsType: FieldsV1 fieldsV1: f:metadata: f:annotations: .: {} f:controller-gen.kubebuilder.io/version: {} f:observability.openshift.io/api-support: {} f:operatorframework.io/installed-alongside-69f117a18fa7f63e: {} f:labels: .: {} f:olm.managed: {} f:spec: f:conversion: .: {} f:strategy: {} f:group: {} f:names: f:kind: {} f:listKind: {} f:plural: {} f:shortNames: {} f:singular: {} f:scope: {} f:versions: {} manager: catalog operation: Update time: "2026-10-30T03:11:30Z" - apiVersion: apiextensions.k8s.io/v1 fieldsType: FieldsV1 fieldsV1: f:status: f:acceptedNames: f:kind: {} f:listKind: {} f:plural: {} f:shortNames: {} f:singular: {} f:conditions: k:{"type":"Established"}: .: {} f:lastTransitionTime: {} f:message: {} f:reason: {} f:status: {} f:type: {} k:{"type":"NamesAccepted"}: .: {} f:lastTransitionTime: {} f:message: {} f:reason: {} f:status: {} f:type: {} manager: kube-apiserver operation: Update subresource: status time: "2026-10-30T03:11:30Z" - apiVersion: apiextensions.k8s.io/v1 fieldsType: FieldsV1 fieldsV1: f:metadata: f:labels: f:operators.coreos.com/cluster-observability-operator.openshift-cluster-observability: {} manager: olm operation: Update time: "2026-10-30T03:12:01Z" name: persesdatasources.perses.dev resourceVersion: "17201" uid: 7978a457-0b2b-46d2-9ad0-ce5ae2974a7a spec: conversion: strategy: None group: perses.dev names: kind: PersesDatasource listKind: PersesDatasourceList plural: persesdatasources shortNames: - perds singular: persesdatasource scope: Namespaced versions: - deprecated: true deprecationWarning: perses.dev/v1alpha1 is deprecated; use perses.dev/v1alpha2 name: v1alpha1 schema: openAPIV3Schema: description: PersesDatasource is the Schema for the PersesDatasources API properties: apiVersion: description: |- APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources type: string kind: description: |- Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds type: string metadata: type: object spec: properties: client: properties: basicAuth: description: BasicAuth basic auth config for perses client properties: name: description: Name of basic auth k8s resource (when type is secret or configmap) type: string namespace: description: Namespace of certificate k8s resource (when type is secret or configmap) type: string password_path: description: Path to password minLength: 1 type: string type: description: Type source type of secret enum: - secret - configmap - file type: string username: description: Username for basic auth minLength: 1 type: string required: - password_path - type - username type: object kubernetesAuth: description: KubernetesAuth configuration for perses client properties: enable: description: Enable kubernetes auth for perses client type: boolean required: - enable type: object oauth: description: OAuth configuration for perses client properties: authStyle: description: |- AuthStyle optionally specifies how the endpoint wants the client ID & client secret sent. The zero value means to auto-detect. type: integer clientIDPath: description: Path to client id type: string clientSecretPath: description: Path to client secret type: string endpointParams: additionalProperties: items: type: string type: array description: EndpointParams specifies additional parameters for requests to the token endpoint. type: object name: description: Name of basic auth k8s resource (when type is secret or configmap) type: string namespace: description: Namespace of certificate k8s resource (when type is secret or configmap) type: string scopes: description: Scope specifies optional requested permissions. items: type: string type: array tokenURL: description: |- TokenURL is the resource server's token endpoint URL. This is a constant specific to each server. minLength: 1 type: string type: description: Type source type of secret enum: - secret - configmap - file type: string required: - tokenURL - type type: object tls: description: TLS the equivalent to the tls_config for perses client properties: caCert: description: CaCert to verify the perses certificate properties: certPath: description: Path to Certificate minLength: 1 type: string name: description: Name of basic auth k8s resource (when type is secret or configmap) type: string namespace: description: Namespace of certificate k8s resource (when type is secret or configmap) type: string privateKeyPath: description: Path to Private key certificate type: string type: description: Type source type of secret enum: - secret - configmap - file type: string required: - certPath - type type: object enable: description: Enable TLS connection to perses type: boolean insecureSkipVerify: description: InsecureSkipVerify skip verify of perses certificate type: boolean userCert: description: UserCert client cert/key for mTLS properties: certPath: description: Path to Certificate minLength: 1 type: string name: description: Name of basic auth k8s resource (when type is secret or configmap) type: string namespace: description: Namespace of certificate k8s resource (when type is secret or configmap) type: string privateKeyPath: description: Path to Private key certificate type: string type: description: Type source type of secret enum: - secret - configmap - file type: string required: - certPath - type type: object required: - enable type: object type: object config: properties: default: type: boolean display: properties: description: type: string name: type: string type: object plugin: description: |- Plugin will contain the datasource configuration. The data typed is available in Cue. properties: kind: description: Kind is the type of the plugin (e.g., Panel, Variable, Datasource, etc.). type: string metadata: description: Metadata is an optional field that contains additional information such as version and registry of the plugin. properties: registry: description: 'Registry is optional. If not provided, it means the default registry: "perses.dev".' type: string version: description: Version is optional. If not provided, it means the latest version available in the Perses instance. type: string type: object spec: x-kubernetes-preserve-unknown-fields: true required: - kind - spec type: object required: - default - plugin type: object required: - config type: object status: description: PersesDatasourceStatus defines the observed state of PersesDatasource properties: conditions: items: description: Condition contains details for one aspect of the current state of this API Resource. 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. 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 type: object served: true storage: false subresources: status: {} - name: v1alpha2 schema: openAPIV3Schema: description: PersesDatasource is the Schema for the PersesDatasources 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: spec is the desired state of the PersesDatasource resource properties: client: description: client specifies authentication and TLS configuration for the datasource properties: basicAuth: description: basicAuth provides username/password authentication configuration for the Perses client properties: name: description: |- name is the name of the Kubernetes Secret or ConfigMap resource Required when Type is "secret" or "configmap", ignored when Type is "file" minLength: 1 type: string namespace: description: |- namespace is the namespace of the Kubernetes Secret or ConfigMap resource Required when Type is "secret" or "configmap", ignored when Type is "file" minLength: 1 type: string passwordPath: description: |- passwordPath specifies the key name within the secret/configmap or filesystem path (depending on SecretSource.Type) where the password is stored minLength: 1 type: string type: description: type specifies the source type for secret data (secret, configmap, or file) enum: - secret - configmap - file type: string username: description: username is the username credential for basic authentication minLength: 1 type: string required: - passwordPath - type - username type: object x-kubernetes-validations: - message: name is required when type is secret or configmap rule: self.type != 'secret' && self.type != 'configmap' || has(self.name) - message: namespace is required when type is secret or configmap rule: self.type != 'secret' && self.type != 'configmap' || has(self.__namespace__) kubernetesAuth: description: kubernetesAuth enables Kubernetes native authentication for the Perses client properties: enable: description: enable determines whether Kubernetes authentication is enabled for the Perses client type: boolean type: object oauth: description: oauth provides OAuth 2.0 authentication configuration for the Perses client properties: authStyle: description: |- authStyle specifies how the endpoint wants the client ID and client secret sent The zero value means to auto-detect format: int32 type: integer clientIDPath: description: |- clientIDPath specifies the key name within the secret/configmap or filesystem path (depending on SecretSource.Type) where the OAuth client ID is stored type: string clientSecretPath: description: |- clientSecretPath specifies the key name within the secret/configmap or filesystem path (depending on SecretSource.Type) where the OAuth client secret is stored type: string endpointParams: additionalProperties: items: type: string type: array description: endpointParams specifies additional parameters to include in requests to the token endpoint type: object name: description: |- name is the name of the Kubernetes Secret or ConfigMap resource Required when Type is "secret" or "configmap", ignored when Type is "file" minLength: 1 type: string namespace: description: |- namespace is the namespace of the Kubernetes Secret or ConfigMap resource Required when Type is "secret" or "configmap", ignored when Type is "file" minLength: 1 type: string scopes: description: scopes specifies optional requested permissions for the OAuth token items: type: string type: array x-kubernetes-list-type: atomic tokenURL: description: |- tokenURL is the OAuth 2.0 provider's token endpoint URL This is a constant specific to each OAuth provider minLength: 1 type: string type: description: type specifies the source type for secret data (secret, configmap, or file) enum: - secret - configmap - file type: string required: - tokenURL - type type: object x-kubernetes-validations: - message: name is required when type is secret or configmap rule: self.type != 'secret' && self.type != 'configmap' || has(self.name) - message: namespace is required when type is secret or configmap rule: self.type != 'secret' && self.type != 'configmap' || has(self.__namespace__) tls: description: tls provides TLS/SSL configuration for secure connections to Perses properties: caCert: description: caCert specifies the CA certificate to verify the Perses server's certificate properties: certPath: description: |- certPath specifies the key name within the secret/configmap or filesystem path (depending on SecretSource.Type) where the certificate is stored minLength: 1 type: string name: description: |- name is the name of the Kubernetes Secret or ConfigMap resource Required when Type is "secret" or "configmap", ignored when Type is "file" minLength: 1 type: string namespace: description: |- namespace is the namespace of the Kubernetes Secret or ConfigMap resource Required when Type is "secret" or "configmap", ignored when Type is "file" minLength: 1 type: string privateKeyPath: description: |- privateKeyPath specifies the key name within the secret/configmap or filesystem path (depending on SecretSource.Type) where the private key is stored Required for client certificates (UserCert), optional for CA certificates (CaCert) type: string type: description: type specifies the source type for secret data (secret, configmap, or file) enum: - secret - configmap - file type: string required: - certPath - type type: object x-kubernetes-validations: - message: name is required when type is secret or configmap rule: self.type != 'secret' && self.type != 'configmap' || has(self.name) - message: namespace is required when type is secret or configmap rule: self.type != 'secret' && self.type != 'configmap' || has(self.__namespace__) enable: description: enable determines whether TLS is enabled for connections to Perses type: boolean insecureSkipVerify: description: |- insecureSkipVerify determines whether to skip verification of the Perses server's certificate Setting this to true is insecure and should only be used for testing type: boolean userCert: description: userCert specifies the client certificate and key for mutual TLS (mTLS) authentication properties: certPath: description: |- certPath specifies the key name within the secret/configmap or filesystem path (depending on SecretSource.Type) where the certificate is stored minLength: 1 type: string name: description: |- name is the name of the Kubernetes Secret or ConfigMap resource Required when Type is "secret" or "configmap", ignored when Type is "file" minLength: 1 type: string namespace: description: |- namespace is the namespace of the Kubernetes Secret or ConfigMap resource Required when Type is "secret" or "configmap", ignored when Type is "file" minLength: 1 type: string privateKeyPath: description: |- privateKeyPath specifies the key name within the secret/configmap or filesystem path (depending on SecretSource.Type) where the private key is stored Required for client certificates (UserCert), optional for CA certificates (CaCert) type: string type: description: type specifies the source type for secret data (secret, configmap, or file) enum: - secret - configmap - file type: string required: - certPath - type type: object x-kubernetes-validations: - message: name is required when type is secret or configmap rule: self.type != 'secret' && self.type != 'configmap' || has(self.name) - message: namespace is required when type is secret or configmap rule: self.type != 'secret' && self.type != 'configmap' || has(self.__namespace__) type: object type: object config: description: config specifies the Perses datasource configuration properties: default: type: boolean display: properties: description: type: string name: type: string type: object plugin: description: |- Plugin will contain the datasource configuration. The data typed is available in Cue. properties: kind: description: Kind is the type of the plugin (e.g., Panel, Variable, Datasource, etc.). type: string metadata: description: Metadata is an optional field that contains additional information such as version and registry of the plugin. properties: registry: description: 'Registry is optional. If not provided, it means the default registry: "perses.dev".' type: string version: description: Version is optional. If not provided, it means the latest version available in the Perses instance. type: string type: object spec: x-kubernetes-preserve-unknown-fields: true required: - kind - spec type: object required: - default - plugin type: object instanceSelector: description: instanceSelector selects Perses instances where this datasource will be created properties: matchExpressions: description: matchExpressions is a list of label selector requirements. The requirements are ANDed. items: description: |- A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. properties: key: description: key is the label key that the selector applies to. type: string operator: description: |- operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. type: string values: description: |- values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. items: type: string type: array x-kubernetes-list-type: atomic required: - key - operator type: object type: array x-kubernetes-list-type: atomic matchLabels: additionalProperties: type: string description: |- matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. type: object type: object x-kubernetes-map-type: atomic required: - config type: object status: description: status is the observed state of the PersesDatasource resource properties: conditions: description: conditions represent the latest observations of the PersesDatasource resource state items: description: Condition contains details for one aspect of the current state of this API Resource. 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. 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 type: object required: - spec type: object served: true storage: true subresources: status: {} status: acceptedNames: kind: PersesDatasource listKind: PersesDatasourceList plural: persesdatasources shortNames: - perds singular: persesdatasource conditions: - lastTransitionTime: "2026-10-30T03:11:30Z" message: no conflicts found reason: NoConflicts status: "True" type: NamesAccepted - lastTransitionTime: "2026-10-30T03:11:30Z" message: the initial names have been accepted reason: InitialNamesAccepted status: "True" type: Established storedVersions: - v1alpha2