--- apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: controller-gen.kubebuilder.io/version: v0.19.0 observability.openshift.io/api-support: DevPreview operatorframework.io/installed-alongside-56529da9d339fb48: openshift-operators/cluster-observability-operator.v1.4.0 creationTimestamp: "2026-03-19T09:45:02Z" generation: 2 labels: olm.managed: "true" operators.coreos.com/cluster-observability-operator.openshift-operators: "" 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-56529da9d339fb48: {} f:labels: .: {} f:olm.managed: {} f:spec: f:conversion: .: {} f:strategy: {} f:webhook: .: {} f:clientConfig: .: {} f:service: .: {} f:path: {} f:port: {} f:conversionReviewVersions: {} f:group: {} f:names: f:kind: {} f:listKind: {} f:plural: {} f:shortNames: {} f:singular: {} f:scope: {} f:versions: {} manager: catalog operation: Update time: "2026-03-19T09:45:02Z" - 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-03-19T09:45:02Z" - apiVersion: apiextensions.k8s.io/v1 fieldsType: FieldsV1 fieldsV1: f:metadata: f:labels: f:operators.coreos.com/cluster-observability-operator.openshift-operators: {} f:spec: f:conversion: f:webhook: f:clientConfig: f:caBundle: {} f:service: f:name: {} f:namespace: {} manager: olm operation: Update time: "2026-03-19T09:45:09Z" name: persesdashboards.perses.dev resourceVersion: "21565" uid: 45fad80c-208f-403d-b426-68af84ca1816 spec: conversion: strategy: Webhook webhook: clientConfig: caBundle: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUJ2RENDQVdLZ0F3SUJBZ0lJWk5yZTFXcURLVmt3Q2dZSUtvWkl6ajBFQXdJd1FqRVdNQlFHQTFVRUNoTU4KVW1Wa0lFaGhkQ3dnU1c1akxqRW9NQ1lHQTFVRUF4TWZiMnh0TFhObGJHWnphV2R1WldRdE5qUmtZV1JsWkRVMgpZVGd6TWprMU9UQWVGdzB5TmpBek1Ua3dPVFExTURoYUZ3MHlPREF6TVRnd09UUTFNRGhhTUVJeEZqQVVCZ05WCkJBb1REVkpsWkNCSVlYUXNJRWx1WXk0eEtEQW1CZ05WQkFNVEgyOXNiUzF6Wld4bWMybG5ibVZrTFRZMFpHRmsKWldRMU5tRTRNekk1TlRrd1dUQVRCZ2NxaGtqT1BRSUJCZ2dxaGtqT1BRTUJCd05DQUFTN3dGS3VYMC80NVZMRgpoaU5UVzF4bFpOOWhBR0crdXdkZ2pHWCtmemlzL2ZaWFBWd1hEdDdlRjc2RTJDWU53UEYyNTg4U0RkU0tKZW5aCitldzBPeHdSbzBJd1FEQU9CZ05WSFE4QkFmOEVCQU1DQWdRd0R3WURWUjBUQVFIL0JBVXdBd0VCL3pBZEJnTlYKSFE0RUZnUVVQMlUvSUEvbXdqb0Q1a0VyWjZIcE4zQ1JyQjB3Q2dZSUtvWkl6ajBFQXdJRFNBQXdSUUlnTmd3OQo0b0d2dEVaTjE3YVJGVnZTQ1BLdWxWaW1XMkV5OW1SODIweit4VTRDSVFDbC95cUFpcWkyaklnSC9xR3FmdGlBCjI0L2ZhSjI2ZWdOQk9Yb0hLUGtsQlE9PQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg== service: name: perses-operator-service namespace: openshift-operators path: /convert port: 443 conversionReviewVersions: - v1 group: perses.dev names: kind: PersesDashboard listKind: PersesDashboardList plural: persesdashboards shortNames: - perdb singular: persesdashboard scope: Namespaced versions: - deprecated: true deprecationWarning: perses.dev/v1alpha1 is deprecated; use perses.dev/v1alpha2 name: v1alpha1 schema: openAPIV3Schema: description: PersesDashboard is the Schema for the persesdashboards 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: datasources: additionalProperties: 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 description: Datasources is an optional list of datasource definition. type: object display: properties: description: type: string name: type: string type: object duration: description: Duration is the default time range to use when getting data to fill the dashboard format: duration pattern: ^(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?$ type: string layouts: items: properties: kind: type: string spec: x-kubernetes-preserve-unknown-fields: true required: - kind - spec type: object type: array links: description: Links is an optional list of links to display at the dashboard level items: properties: name: type: string renderVariables: type: boolean targetBlank: type: boolean tooltip: type: string url: type: string required: - url type: object type: array panels: additionalProperties: properties: kind: type: string spec: properties: display: properties: description: type: string name: type: string type: object links: items: properties: name: type: string renderVariables: type: boolean targetBlank: type: boolean tooltip: type: string url: type: string required: - url type: object type: array plugin: 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 queries: items: properties: kind: type: string spec: properties: plugin: 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: - plugin type: object required: - kind - spec type: object type: array required: - plugin type: object required: - kind - spec type: object type: object refreshInterval: description: RefreshInterval is the default refresh interval to use when landing on the dashboard format: duration pattern: ^(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?$ type: string variables: items: properties: kind: description: Kind is the type of the variable. Depending on the value of Kind, it will change the content of Spec. type: string spec: x-kubernetes-preserve-unknown-fields: true required: - kind - spec type: object type: array required: - duration - layouts - panels type: object status: description: PersesDashboardStatus defines the observed state of PersesDashboard 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: PersesDashboard is the Schema for the persesdashboards 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: PersesDashboardSpec defines the desired state of PersesDashboard properties: config: description: Perses dashboard configuration properties: datasources: additionalProperties: 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 description: Datasources is an optional list of datasource definition. type: object display: properties: description: type: string name: type: string type: object duration: description: Duration is the default time range to use when getting data to fill the dashboard format: duration pattern: ^(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?$ type: string layouts: items: properties: kind: type: string spec: x-kubernetes-preserve-unknown-fields: true required: - kind - spec type: object type: array links: description: Links is an optional list of links to display at the dashboard level items: properties: name: type: string renderVariables: type: boolean targetBlank: type: boolean tooltip: type: string url: type: string required: - url type: object type: array panels: additionalProperties: properties: kind: type: string spec: properties: display: properties: description: type: string name: type: string type: object links: items: properties: name: type: string renderVariables: type: boolean targetBlank: type: boolean tooltip: type: string url: type: string required: - url type: object type: array plugin: 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 queries: items: properties: kind: type: string spec: properties: plugin: 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: - plugin type: object required: - kind - spec type: object type: array required: - plugin type: object required: - kind - spec type: object type: object refreshInterval: description: RefreshInterval is the default refresh interval to use when landing on the dashboard format: duration pattern: ^(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?$ type: string variables: items: properties: kind: description: Kind is the type of the variable. Depending on the value of Kind, it will change the content of Spec. type: string spec: x-kubernetes-preserve-unknown-fields: true required: - kind - spec type: object type: array required: - duration - layouts - panels type: object instanceSelector: description: InstanceSelector selects Perses instances where this dashboard 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: PersesDashboardStatus defines the observed state of PersesDashboard properties: conditions: description: Conditions represent the latest observations of the PersesDashboard 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 type: object type: object served: true storage: true subresources: status: {} status: acceptedNames: kind: PersesDashboard listKind: PersesDashboardList plural: persesdashboards shortNames: - perdb singular: persesdashboard conditions: - lastTransitionTime: "2026-03-19T09:45:02Z" message: no conflicts found reason: NoConflicts status: "True" type: NamesAccepted - lastTransitionTime: "2026-03-19T09:45:02Z" message: the initial names have been accepted reason: InitialNamesAccepted status: "True" type: Established storedVersions: - v1alpha2