kind: CustomResourceDefinition
spec:
  group: superset.stackable.tech
  names:
    kind: SupersetCluster
    plural: supersetclusters
    singular: supersetcluster
    categories: []
    shortNames:
      - superset
  scope: Namespaced
  versions:
    - name: v1alpha1
      schema:
        openAPIV3Schema:
          type: object
          title: SupersetCluster
          required:
            - spec
          properties:
            spec:
              type: object
              required:
                - clusterConfig
                - image
              properties:
                beat:
                  type: object
                  nullable: true
                  required:
                    - roleGroups
                  properties:
                    config:
                      type: object
                      default: {}
                      properties:
                        logging:
                          type: object
                          default:
                            containers: {}
                            enableVectorAgent: null
                          properties:
                            containers:
                              type: object
                              properties:
                                vector:
                                  type: object
                                  anyOf:
                                    - required:
                                        - custom
                                    - {}
                                    - {}
                                  properties:
                                    file:
                                      type: object
                                      nullable: true
                                      properties:
                                        level:
                                          enum:
                                            - TRACE
                                            - DEBUG
                                            - INFO
                                            - WARN
                                            - ERROR
                                            - FATAL
                                            - NONE
                                            - null
                                          type: string
                                          nullable: true
                                          description: >-
                                            The log level threshold.

                                            Log events with a lower log level
                                            are discarded.
                                      description: Configuration for the file appender
                                    custom:
                                      type: object
                                      properties:
                                        configMap:
                                          type: string
                                          nullable: true
                                          description: ConfigMap containing the log configuration files
                                      description: Log configuration provided in a ConfigMap
                                    console:
                                      type: object
                                      nullable: true
                                      properties:
                                        level:
                                          enum:
                                            - TRACE
                                            - DEBUG
                                            - INFO
                                            - WARN
                                            - ERROR
                                            - FATAL
                                            - NONE
                                            - null
                                          type: string
                                          nullable: true
                                          description: >-
                                            The log level threshold.

                                            Log events with a lower log level
                                            are discarded.
                                      description: Configuration for the console appender
                                    loggers:
                                      type: object
                                      default: {}
                                      description: Configuration per logger
                                      additionalProperties:
                                        type: object
                                        properties:
                                          level:
                                            enum:
                                              - TRACE
                                              - DEBUG
                                              - INFO
                                              - WARN
                                              - ERROR
                                              - FATAL
                                              - NONE
                                              - null
                                            type: string
                                            nullable: true
                                            description: >-
                                              The log level threshold.

                                              Log events with a lower log level
                                              are discarded.
                                        description: Configuration of a logger
                                  description: Log configuration of the container
                                superset:
                                  type: object
                                  anyOf:
                                    - required:
                                        - custom
                                    - {}
                                    - {}
                                  properties:
                                    file:
                                      type: object
                                      nullable: true
                                      properties:
                                        level:
                                          enum:
                                            - TRACE
                                            - DEBUG
                                            - INFO
                                            - WARN
                                            - ERROR
                                            - FATAL
                                            - NONE
                                            - null
                                          type: string
                                          nullable: true
                                          description: >-
                                            The log level threshold.

                                            Log events with a lower log level
                                            are discarded.
                                      description: Configuration for the file appender
                                    custom:
                                      type: object
                                      properties:
                                        configMap:
                                          type: string
                                          nullable: true
                                          description: ConfigMap containing the log configuration files
                                      description: Log configuration provided in a ConfigMap
                                    console:
                                      type: object
                                      nullable: true
                                      properties:
                                        level:
                                          enum:
                                            - TRACE
                                            - DEBUG
                                            - INFO
                                            - WARN
                                            - ERROR
                                            - FATAL
                                            - NONE
                                            - null
                                          type: string
                                          nullable: true
                                          description: >-
                                            The log level threshold.

                                            Log events with a lower log level
                                            are discarded.
                                      description: Configuration for the console appender
                                    loggers:
                                      type: object
                                      default: {}
                                      description: Configuration per logger
                                      additionalProperties:
                                        type: object
                                        properties:
                                          level:
                                            enum:
                                              - TRACE
                                              - DEBUG
                                              - INFO
                                              - WARN
                                              - ERROR
                                              - FATAL
                                              - NONE
                                              - null
                                            type: string
                                            nullable: true
                                            description: >-
                                              The log level threshold.

                                              Log events with a lower log level
                                              are discarded.
                                        description: Configuration of a logger
                                  description: Log configuration of the container
                              description: Log configuration per container.
                            enableVectorAgent:
                              type: boolean
                              nullable: true
                              description: Whether or not to deploy a container with the Vector log agent.
                          description: Logging configuration, learn more in the [logging concept
                            documentation](https://docs.stackable.tech/home/nightly/concepts/logging).
                        affinity:
                          type: object
                          default:
                            podAffinity: null
                            nodeAffinity: null
                            nodeSelector: null
                            podAntiAffinity: null
                          properties:
                            podAffinity:
                              type: object
                              nullable: true
                              description: Same as the `spec.affinity.podAffinity` field on the Pod, see the
                                [Kubernetes
                                docs](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node)
                              x-kubernetes-preserve-unknown-fields: true
                            nodeAffinity:
                              type: object
                              nullable: true
                              description: Same as the `spec.affinity.nodeAffinity` field on the Pod, see the
                                [Kubernetes
                                docs](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node)
                              x-kubernetes-preserve-unknown-fields: true
                            nodeSelector:
                              type: object
                              nullable: true
                              description: Simple key-value pairs forming a nodeSelector, see the [Kubernetes
                                docs](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node)
                              additionalProperties:
                                type: string
                            podAntiAffinity:
                              type: object
                              nullable: true
                              description: Same as the `spec.affinity.podAntiAffinity` field on the Pod, see
                                the [Kubernetes
                                docs](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node)
                              x-kubernetes-preserve-unknown-fields: true
                          description: |-
                            These configuration settings control
                            [Pod placement](https://docs.stackable.tech/home/nightly/concepts/operations/pod_placement).
                        rowLimit:
                          type: integer
                          format: int32
                          nullable: true
                          description: Row limit when requesting chart data. Corresponds to ROW_LIMIT.
                        resources:
                          type: object
                          default:
                            cpu:
                              max: null
                              min: null
                            memory:
                              limit: null
                              runtimeLimits: {}
                            storage: {}
                          properties:
                            cpu:
                              type: object
                              default:
                                max: null
                                min: null
                              properties:
                                max:
                                  nullable: true
                                  description: >-
                                    The maximum amount of CPU cores that can be
                                    requested by Pods.

                                    Equivalent to the `limit` for Pod resource
                                    configuration.

                                    Cores are specified either as a decimal
                                    point number or as milli units.

                                    For example:`1.5` will be 1.5 cores, also
                                    written as `1500m`.
                                  x-kubernetes-int-or-string: true
                                min:
                                  nullable: true
                                  description: >-
                                    The minimal amount of CPU cores that Pods
                                    need to run.

                                    Equivalent to the `request` for Pod resource
                                    configuration.

                                    Cores are specified either as a decimal
                                    point number or as milli units.

                                    For example:`1.5` will be 1.5 cores, also
                                    written as `1500m`.
                                  x-kubernetes-int-or-string: true
                            memory:
                              type: object
                              properties:
                                limit:
                                  nullable: true
                                  description: |-
                                    The maximum amount of memory that should be available to the Pod.
                                    Specified as a byte [Quantity](https://kubernetes.io/docs/reference/kubernetes-api/common-definitions/quantity/),
                                    which means these suffixes are supported: E, P, T, G, M, k.
                                    You can also use the power-of-two equivalents: Ei, Pi, Ti, Gi, Mi, Ki.
                                    For example, the following represent roughly the same value:
                                    `128974848, 129e6, 129M,  128974848000m, 123Mi`
                                  x-kubernetes-int-or-string: true
                                runtimeLimits:
                                  type: object
                                  description: Additional options that can be specified.
                            storage:
                              type: object
                          description: CPU and memory limits for Superset pods
                        webserverTimeout:
                          type: integer
                          format: uint32
                          minimum: 0
                          nullable: true
                          description: >-
                            Maximum time period a Superset request can take
                            before timing out. This

                            setting affects the maximum duration a query to an
                            underlying datasource

                            can take. If you get timeout errors before your
                            query returns the result

                            you may need to increase this timeout. Corresponds
                            to

                            SUPERSET_WEBSERVER_TIMEOUT.
                        gracefulShutdownTimeout:
                          type: string
                          nullable: true
                          description: Time period Pods have to gracefully shut down, e.g. `30m`, `1h` or
                            `2d`. Consult the operator documentation for
                            details.
                    roleConfig:
                      type: object
                      default:
                        listenerClass: cluster-internal
                        podDisruptionBudget:
                          enabled: true
                          maxUnavailable: null
                      properties:
                        listenerClass:
                          type: string
                          default: cluster-internal
                          pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$
                          maxLength: 253
                          minLength: 1
                          description: This field controls which
                            [ListenerClass](https://docs.stackable.tech/home/nightly/listener-operator/listenerclass.html)
                            is used to expose the webserver.
                        podDisruptionBudget:
                          type: object
                          default:
                            enabled: true
                            maxUnavailable: null
                          properties:
                            enabled:
                              type: boolean
                              default: true
                              description: >-
                                Whether a PodDisruptionBudget should be written
                                out for this role.

                                Disabling this enables you to specify your own -
                                custom - one.

                                Defaults to true.
                            maxUnavailable:
                              type: integer
                              format: uint16
                              maximum: 65535
                              minimum: 0
                              nullable: true
                              description: >-
                                The number of Pods that are allowed to be down
                                because of voluntary disruptions.

                                If you don't explicitly set this, the operator
                                will use a sane default based

                                upon knowledge about the individual product.
                          description: |-
                            This struct is used to configure:

                            1. If PodDisruptionBudgets are created by the operator
                            2. The allowed number of Pods to be unavailable (`maxUnavailable`)

                            Learn more in the
                            [allowed Pod disruptions documentation](https://docs.stackable.tech/home/nightly/concepts/operations/pod_disruptions).
                      description: This is a product-agnostic RoleConfig, which is sufficient for most
                        of the products.
                    roleGroups:
                      type: object
                      description: |-
                        The set of role groups for this role, keyed by their name.

                        A role group is a subset of the replicas of a role that share the same configuration,
                        allowing finer-grained control than the role level. This is useful to e.g. schedule groups
                        onto different classes of nodes or into different regions, or to run them with different
                        settings. Configuration set on a role group is merged on top of the role-level `config`,
                        with the more specific role group values taking precedence.

                        Every role needs at least one role group. A role with a single role group conventionally
                        names it `default`.

                        Read the
                        [roles and role groups concept documentation](https://docs.stackable.tech/home/nightly/concepts/roles-and-role-groups)
                        for more details.
                      additionalProperties:
                        type: object
                        properties:
                          config:
                            type: object
                            default: {}
                            properties:
                              logging:
                                type: object
                                default:
                                  containers: {}
                                  enableVectorAgent: null
                                properties:
                                  containers:
                                    type: object
                                    properties:
                                      vector:
                                        type: object
                                        anyOf:
                                          - required:
                                              - custom
                                          - {}
                                          - {}
                                        properties:
                                          file:
                                            type: object
                                            nullable: true
                                            properties:
                                              level:
                                                enum:
                                                  - TRACE
                                                  - DEBUG
                                                  - INFO
                                                  - WARN
                                                  - ERROR
                                                  - FATAL
                                                  - NONE
                                                  - null
                                                type: string
                                                nullable: true
                                                description: >-
                                                  The log level threshold.

                                                  Log events with a lower log
                                                  level are discarded.
                                            description: Configuration for the file appender
                                          custom:
                                            type: object
                                            properties:
                                              configMap:
                                                type: string
                                                nullable: true
                                                description: ConfigMap containing the log configuration files
                                            description: Log configuration provided in a ConfigMap
                                          console:
                                            type: object
                                            nullable: true
                                            properties:
                                              level:
                                                enum:
                                                  - TRACE
                                                  - DEBUG
                                                  - INFO
                                                  - WARN
                                                  - ERROR
                                                  - FATAL
                                                  - NONE
                                                  - null
                                                type: string
                                                nullable: true
                                                description: >-
                                                  The log level threshold.

                                                  Log events with a lower log
                                                  level are discarded.
                                            description: Configuration for the console appender
                                          loggers:
                                            type: object
                                            default: {}
                                            description: Configuration per logger
                                            additionalProperties:
                                              type: object
                                              properties:
                                                level:
                                                  enum:
                                                    - TRACE
                                                    - DEBUG
                                                    - INFO
                                                    - WARN
                                                    - ERROR
                                                    - FATAL
                                                    - NONE
                                                    - null
                                                  type: string
                                                  nullable: true
                                                  description: >-
                                                    The log level threshold.

                                                    Log events with a lower log
                                                    level are discarded.
                                              description: Configuration of a logger
                                        description: Log configuration of the container
                                      superset:
                                        type: object
                                        anyOf:
                                          - required:
                                              - custom
                                          - {}
                                          - {}
                                        properties:
                                          file:
                                            type: object
                                            nullable: true
                                            properties:
                                              level:
                                                enum:
                                                  - TRACE
                                                  - DEBUG
                                                  - INFO
                                                  - WARN
                                                  - ERROR
                                                  - FATAL
                                                  - NONE
                                                  - null
                                                type: string
                                                nullable: true
                                                description: >-
                                                  The log level threshold.

                                                  Log events with a lower log
                                                  level are discarded.
                                            description: Configuration for the file appender
                                          custom:
                                            type: object
                                            properties:
                                              configMap:
                                                type: string
                                                nullable: true
                                                description: ConfigMap containing the log configuration files
                                            description: Log configuration provided in a ConfigMap
                                          console:
                                            type: object
                                            nullable: true
                                            properties:
                                              level:
                                                enum:
                                                  - TRACE
                                                  - DEBUG
                                                  - INFO
                                                  - WARN
                                                  - ERROR
                                                  - FATAL
                                                  - NONE
                                                  - null
                                                type: string
                                                nullable: true
                                                description: >-
                                                  The log level threshold.

                                                  Log events with a lower log
                                                  level are discarded.
                                            description: Configuration for the console appender
                                          loggers:
                                            type: object
                                            default: {}
                                            description: Configuration per logger
                                            additionalProperties:
                                              type: object
                                              properties:
                                                level:
                                                  enum:
                                                    - TRACE
                                                    - DEBUG
                                                    - INFO
                                                    - WARN
                                                    - ERROR
                                                    - FATAL
                                                    - NONE
                                                    - null
                                                  type: string
                                                  nullable: true
                                                  description: >-
                                                    The log level threshold.

                                                    Log events with a lower log
                                                    level are discarded.
                                              description: Configuration of a logger
                                        description: Log configuration of the container
                                    description: Log configuration per container.
                                  enableVectorAgent:
                                    type: boolean
                                    nullable: true
                                    description: Whether or not to deploy a container with the Vector log agent.
                                description: Logging configuration, learn more in the [logging concept
                                  documentation](https://docs.stackable.tech/home/nightly/concepts/logging).
                              affinity:
                                type: object
                                default:
                                  podAffinity: null
                                  nodeAffinity: null
                                  nodeSelector: null
                                  podAntiAffinity: null
                                properties:
                                  podAffinity:
                                    type: object
                                    nullable: true
                                    description: Same as the `spec.affinity.podAffinity` field on the Pod, see the
                                      [Kubernetes
                                      docs](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node)
                                    x-kubernetes-preserve-unknown-fields: true
                                  nodeAffinity:
                                    type: object
                                    nullable: true
                                    description: Same as the `spec.affinity.nodeAffinity` field on the Pod, see the
                                      [Kubernetes
                                      docs](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node)
                                    x-kubernetes-preserve-unknown-fields: true
                                  nodeSelector:
                                    type: object
                                    nullable: true
                                    description: Simple key-value pairs forming a nodeSelector, see the [Kubernetes
                                      docs](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node)
                                    additionalProperties:
                                      type: string
                                  podAntiAffinity:
                                    type: object
                                    nullable: true
                                    description: Same as the `spec.affinity.podAntiAffinity` field on the Pod, see
                                      the [Kubernetes
                                      docs](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node)
                                    x-kubernetes-preserve-unknown-fields: true
                                description: |-
                                  These configuration settings control
                                  [Pod placement](https://docs.stackable.tech/home/nightly/concepts/operations/pod_placement).
                              rowLimit:
                                type: integer
                                format: int32
                                nullable: true
                                description: Row limit when requesting chart data. Corresponds to ROW_LIMIT.
                              resources:
                                type: object
                                default:
                                  cpu:
                                    max: null
                                    min: null
                                  memory:
                                    limit: null
                                    runtimeLimits: {}
                                  storage: {}
                                properties:
                                  cpu:
                                    type: object
                                    default:
                                      max: null
                                      min: null
                                    properties:
                                      max:
                                        nullable: true
                                        description: >-
                                          The maximum amount of CPU cores that
                                          can be requested by Pods.

                                          Equivalent to the `limit` for Pod
                                          resource configuration.

                                          Cores are specified either as a
                                          decimal point number or as milli
                                          units.

                                          For example:`1.5` will be 1.5 cores,
                                          also written as `1500m`.
                                        x-kubernetes-int-or-string: true
                                      min:
                                        nullable: true
                                        description: >-
                                          The minimal amount of CPU cores that
                                          Pods need to run.

                                          Equivalent to the `request` for Pod
                                          resource configuration.

                                          Cores are specified either as a
                                          decimal point number or as milli
                                          units.

                                          For example:`1.5` will be 1.5 cores,
                                          also written as `1500m`.
                                        x-kubernetes-int-or-string: true
                                  memory:
                                    type: object
                                    properties:
                                      limit:
                                        nullable: true
                                        description: |-
                                          The maximum amount of memory that should be available to the Pod.
                                          Specified as a byte [Quantity](https://kubernetes.io/docs/reference/kubernetes-api/common-definitions/quantity/),
                                          which means these suffixes are supported: E, P, T, G, M, k.
                                          You can also use the power-of-two equivalents: Ei, Pi, Ti, Gi, Mi, Ki.
                                          For example, the following represent roughly the same value:
                                          `128974848, 129e6, 129M,  128974848000m, 123Mi`
                                        x-kubernetes-int-or-string: true
                                      runtimeLimits:
                                        type: object
                                        description: Additional options that can be specified.
                                  storage:
                                    type: object
                                description: CPU and memory limits for Superset pods
                              webserverTimeout:
                                type: integer
                                format: uint32
                                minimum: 0
                                nullable: true
                                description: >-
                                  Maximum time period a Superset request can
                                  take before timing out. This

                                  setting affects the maximum duration a query
                                  to an underlying datasource

                                  can take. If you get timeout errors before
                                  your query returns the result

                                  you may need to increase this timeout.
                                  Corresponds to

                                  SUPERSET_WEBSERVER_TIMEOUT.
                              gracefulShutdownTimeout:
                                type: string
                                nullable: true
                                description: Time period Pods have to gracefully shut down, e.g. `30m`, `1h` or
                                  `2d`. Consult the operator documentation for
                                  details.
                          replicas:
                            type: integer
                            format: uint16
                            maximum: 65535
                            minimum: 0
                            nullable: true
                          cliOverrides:
                            type: object
                            default: {}
                            additionalProperties:
                              type: string
                          envOverrides:
                            type: object
                            default: {}
                            description: |-
                              `envOverrides` configure environment variables to be set in the Pods.
                              It is a map from strings to strings - environment variables and the value to set.
                              Read the
                              [environment variable overrides documentation](https://docs.stackable.tech/home/nightly/concepts/overrides#env-overrides)
                              for more information and consult the operator specific usage guide to find out about
                              the product specific environment variables that are available.
                            additionalProperties:
                              type: string
                          podOverrides:
                            type: object
                            default: {}
                            description: |-
                              In the `podOverrides` property you can define a
                              [PodTemplateSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.34/#podtemplatespec-v1-core)
                              to override any property that can be set on a Kubernetes Pod.
                              Read the
                              [Pod overrides documentation](https://docs.stackable.tech/home/nightly/concepts/overrides#pod-overrides)
                              for more information.
                            x-kubernetes-preserve-unknown-fields: true
                          configOverrides:
                            type: object
                            properties:
                              superset_config.py:
                                type: object
                                default: {}
                                description: Flat key-value overrides for `*.properties`, Hadoop XML, etc.
                                additionalProperties:
                                  type: string
                            description: |-
                              The `configOverrides` can be used to configure properties in product config files
                              that are not exposed in the CRD. Read the
                              [config overrides documentation](https://docs.stackable.tech/home/nightly/concepts/overrides#config-overrides)
                              and consult the operator specific usage guide documentation for details on the
                              available config files and settings for the specific product.
                    cliOverrides:
                      type: object
                      default: {}
                      additionalProperties:
                        type: string
                    envOverrides:
                      type: object
                      default: {}
                      description: |-
                        `envOverrides` configure environment variables to be set in the Pods.
                        It is a map from strings to strings - environment variables and the value to set.
                        Read the
                        [environment variable overrides documentation](https://docs.stackable.tech/home/nightly/concepts/overrides#env-overrides)
                        for more information and consult the operator specific usage guide to find out about
                        the product specific environment variables that are available.
                      additionalProperties:
                        type: string
                    podOverrides:
                      type: object
                      default: {}
                      description: |-
                        In the `podOverrides` property you can define a
                        [PodTemplateSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.34/#podtemplatespec-v1-core)
                        to override any property that can be set on a Kubernetes Pod.
                        Read the
                        [Pod overrides documentation](https://docs.stackable.tech/home/nightly/concepts/overrides#pod-overrides)
                        for more information.
                      x-kubernetes-preserve-unknown-fields: true
                    configOverrides:
                      type: object
                      properties:
                        superset_config.py:
                          type: object
                          default: {}
                          description: Flat key-value overrides for `*.properties`, Hadoop XML, etc.
                          additionalProperties:
                            type: string
                      description: |-
                        The `configOverrides` can be used to configure properties in product config files
                        that are not exposed in the CRD. Read the
                        [config overrides documentation](https://docs.stackable.tech/home/nightly/concepts/overrides#config-overrides)
                        and consult the operator specific usage guide documentation for details on the
                        available config files and settings for the specific product.
                  description: |-
                    This struct represents a role - e.g. HDFS datanodes or Trino workers. It has a key-value-map containing
                    all the roleGroups that are part of this role. Additionally, there is a `config`, which is configurable
                    at the role *and* roleGroup level. Everything at roleGroup level is merged on top of what is configured
                    on role level. There is also a second form of config, which can only be configured
                    at role level, the `roleConfig`.
                    You can learn more about this in the
                    [Roles and role group concept documentation](https://docs.stackable.tech/home/nightly/concepts/roles-and-role-groups).
                image:
                  type: object
                  anyOf:
                    - required:
                        - custom
                        - productVersion
                    - required:
                        - productVersion
                  properties:
                    repo:
                      type: string
                      nullable: true
                      description: >-
                        The repository on the container image registry where the
                        container image is located, e.g.

                        `oci.example.com/namespace`.


                        If not specified, the operator will use the image
                        registry provided via the operator

                        environment options.
                    custom:
                      type: string
                      description: >-
                        Provide a custom container image.


                        Specify the full container image name, e.g.
                        `oci.example.tech/namespace/superset:1.4.1-my-tag`
                    pullPolicy:
                      enum:
                        - IfNotPresent
                        - Always
                        - Never
                      type: string
                      default: Always
                      description: "[Pull
                        policy](https://kubernetes.io/docs/concepts/containers/image\
                        s/#image-pull-policy) used when pulling the image."
                    pullSecrets:
                      type: array
                      items:
                        type: object
                        required:
                          - name
                        properties:
                          name:
                            type: string
                            description: "Name of the referent. This field is effectively required, but due
                              to backwards compatibility is allowed to be empty.
                              Instances of this type with an empty value here
                              are almost certainly wrong. More info:
                              https://kubernetes.io/docs/concepts/overview/work\
                              ing-with-objects/names/#names"
                        description: LocalObjectReference contains enough information to let you locate
                          the referenced object inside the same namespace.
                      nullable: true
                      description: "[Image pull
                        secrets](https://kubernetes.io/docs/concepts/containers\
                        /images/#specifying-imagepullsecrets-on-a-pod) to pull
                        images from a private registry."
                    productVersion:
                      type: string
                      description: Version of the product, e.g. `1.4.1`.
                    stackableVersion:
                      type: string
                      nullable: true
                      description: >-
                        Stackable version of the product, e.g. `23.4`, `23.4.1`
                        or `0.0.0-dev`.


                        If not specified, the operator will use its own version,
                        e.g. `23.4.1`. When using a nightly

                        operator or a PR version, it will use the nightly
                        `0.0.0-dev` image.
                  description: |-
                    Specify which image to use, the easiest way is to only configure the `productVersion`.
                    You can also configure a custom image registry to pull from, as well as completely custom
                    images.

                    Consult the [Product image selection documentation](https://docs.stackable.tech/home/nightly/concepts/product_image_selection)
                    for details.
                nodes:
                  type: object
                  nullable: true
                  required:
                    - roleGroups
                  properties:
                    config:
                      type: object
                      default: {}
                      properties:
                        logging:
                          type: object
                          default:
                            containers: {}
                            enableVectorAgent: null
                          properties:
                            containers:
                              type: object
                              properties:
                                vector:
                                  type: object
                                  anyOf:
                                    - required:
                                        - custom
                                    - {}
                                    - {}
                                  properties:
                                    file:
                                      type: object
                                      nullable: true
                                      properties:
                                        level:
                                          enum:
                                            - TRACE
                                            - DEBUG
                                            - INFO
                                            - WARN
                                            - ERROR
                                            - FATAL
                                            - NONE
                                            - null
                                          type: string
                                          nullable: true
                                          description: >-
                                            The log level threshold.

                                            Log events with a lower log level
                                            are discarded.
                                      description: Configuration for the file appender
                                    custom:
                                      type: object
                                      properties:
                                        configMap:
                                          type: string
                                          nullable: true
                                          description: ConfigMap containing the log configuration files
                                      description: Log configuration provided in a ConfigMap
                                    console:
                                      type: object
                                      nullable: true
                                      properties:
                                        level:
                                          enum:
                                            - TRACE
                                            - DEBUG
                                            - INFO
                                            - WARN
                                            - ERROR
                                            - FATAL
                                            - NONE
                                            - null
                                          type: string
                                          nullable: true
                                          description: >-
                                            The log level threshold.

                                            Log events with a lower log level
                                            are discarded.
                                      description: Configuration for the console appender
                                    loggers:
                                      type: object
                                      default: {}
                                      description: Configuration per logger
                                      additionalProperties:
                                        type: object
                                        properties:
                                          level:
                                            enum:
                                              - TRACE
                                              - DEBUG
                                              - INFO
                                              - WARN
                                              - ERROR
                                              - FATAL
                                              - NONE
                                              - null
                                            type: string
                                            nullable: true
                                            description: >-
                                              The log level threshold.

                                              Log events with a lower log level
                                              are discarded.
                                        description: Configuration of a logger
                                  description: Log configuration of the container
                                superset:
                                  type: object
                                  anyOf:
                                    - required:
                                        - custom
                                    - {}
                                    - {}
                                  properties:
                                    file:
                                      type: object
                                      nullable: true
                                      properties:
                                        level:
                                          enum:
                                            - TRACE
                                            - DEBUG
                                            - INFO
                                            - WARN
                                            - ERROR
                                            - FATAL
                                            - NONE
                                            - null
                                          type: string
                                          nullable: true
                                          description: >-
                                            The log level threshold.

                                            Log events with a lower log level
                                            are discarded.
                                      description: Configuration for the file appender
                                    custom:
                                      type: object
                                      properties:
                                        configMap:
                                          type: string
                                          nullable: true
                                          description: ConfigMap containing the log configuration files
                                      description: Log configuration provided in a ConfigMap
                                    console:
                                      type: object
                                      nullable: true
                                      properties:
                                        level:
                                          enum:
                                            - TRACE
                                            - DEBUG
                                            - INFO
                                            - WARN
                                            - ERROR
                                            - FATAL
                                            - NONE
                                            - null
                                          type: string
                                          nullable: true
                                          description: >-
                                            The log level threshold.

                                            Log events with a lower log level
                                            are discarded.
                                      description: Configuration for the console appender
                                    loggers:
                                      type: object
                                      default: {}
                                      description: Configuration per logger
                                      additionalProperties:
                                        type: object
                                        properties:
                                          level:
                                            enum:
                                              - TRACE
                                              - DEBUG
                                              - INFO
                                              - WARN
                                              - ERROR
                                              - FATAL
                                              - NONE
                                              - null
                                            type: string
                                            nullable: true
                                            description: >-
                                              The log level threshold.

                                              Log events with a lower log level
                                              are discarded.
                                        description: Configuration of a logger
                                  description: Log configuration of the container
                              description: Log configuration per container.
                            enableVectorAgent:
                              type: boolean
                              nullable: true
                              description: Whether or not to deploy a container with the Vector log agent.
                          description: Logging configuration, learn more in the [logging concept
                            documentation](https://docs.stackable.tech/home/nightly/concepts/logging).
                        affinity:
                          type: object
                          default:
                            podAffinity: null
                            nodeAffinity: null
                            nodeSelector: null
                            podAntiAffinity: null
                          properties:
                            podAffinity:
                              type: object
                              nullable: true
                              description: Same as the `spec.affinity.podAffinity` field on the Pod, see the
                                [Kubernetes
                                docs](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node)
                              x-kubernetes-preserve-unknown-fields: true
                            nodeAffinity:
                              type: object
                              nullable: true
                              description: Same as the `spec.affinity.nodeAffinity` field on the Pod, see the
                                [Kubernetes
                                docs](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node)
                              x-kubernetes-preserve-unknown-fields: true
                            nodeSelector:
                              type: object
                              nullable: true
                              description: Simple key-value pairs forming a nodeSelector, see the [Kubernetes
                                docs](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node)
                              additionalProperties:
                                type: string
                            podAntiAffinity:
                              type: object
                              nullable: true
                              description: Same as the `spec.affinity.podAntiAffinity` field on the Pod, see
                                the [Kubernetes
                                docs](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node)
                              x-kubernetes-preserve-unknown-fields: true
                          description: |-
                            These configuration settings control
                            [Pod placement](https://docs.stackable.tech/home/nightly/concepts/operations/pod_placement).
                        rowLimit:
                          type: integer
                          format: int32
                          nullable: true
                          description: Row limit when requesting chart data. Corresponds to ROW_LIMIT.
                        resources:
                          type: object
                          default:
                            cpu:
                              max: null
                              min: null
                            memory:
                              limit: null
                              runtimeLimits: {}
                            storage: {}
                          properties:
                            cpu:
                              type: object
                              default:
                                max: null
                                min: null
                              properties:
                                max:
                                  nullable: true
                                  description: >-
                                    The maximum amount of CPU cores that can be
                                    requested by Pods.

                                    Equivalent to the `limit` for Pod resource
                                    configuration.

                                    Cores are specified either as a decimal
                                    point number or as milli units.

                                    For example:`1.5` will be 1.5 cores, also
                                    written as `1500m`.
                                  x-kubernetes-int-or-string: true
                                min:
                                  nullable: true
                                  description: >-
                                    The minimal amount of CPU cores that Pods
                                    need to run.

                                    Equivalent to the `request` for Pod resource
                                    configuration.

                                    Cores are specified either as a decimal
                                    point number or as milli units.

                                    For example:`1.5` will be 1.5 cores, also
                                    written as `1500m`.
                                  x-kubernetes-int-or-string: true
                            memory:
                              type: object
                              properties:
                                limit:
                                  nullable: true
                                  description: |-
                                    The maximum amount of memory that should be available to the Pod.
                                    Specified as a byte [Quantity](https://kubernetes.io/docs/reference/kubernetes-api/common-definitions/quantity/),
                                    which means these suffixes are supported: E, P, T, G, M, k.
                                    You can also use the power-of-two equivalents: Ei, Pi, Ti, Gi, Mi, Ki.
                                    For example, the following represent roughly the same value:
                                    `128974848, 129e6, 129M,  128974848000m, 123Mi`
                                  x-kubernetes-int-or-string: true
                                runtimeLimits:
                                  type: object
                                  description: Additional options that can be specified.
                            storage:
                              type: object
                          description: CPU and memory limits for Superset pods
                        webserverTimeout:
                          type: integer
                          format: uint32
                          minimum: 0
                          nullable: true
                          description: >-
                            Maximum time period a Superset request can take
                            before timing out. This

                            setting affects the maximum duration a query to an
                            underlying datasource

                            can take. If you get timeout errors before your
                            query returns the result

                            you may need to increase this timeout. Corresponds
                            to

                            SUPERSET_WEBSERVER_TIMEOUT.
                        gracefulShutdownTimeout:
                          type: string
                          nullable: true
                          description: Time period Pods have to gracefully shut down, e.g. `30m`, `1h` or
                            `2d`. Consult the operator documentation for
                            details.
                    roleConfig:
                      type: object
                      default:
                        listenerClass: cluster-internal
                        podDisruptionBudget:
                          enabled: true
                          maxUnavailable: null
                      properties:
                        listenerClass:
                          type: string
                          default: cluster-internal
                          pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$
                          maxLength: 253
                          minLength: 1
                          description: This field controls which
                            [ListenerClass](https://docs.stackable.tech/home/nightly/listener-operator/listenerclass.html)
                            is used to expose the webserver.
                        podDisruptionBudget:
                          type: object
                          default:
                            enabled: true
                            maxUnavailable: null
                          properties:
                            enabled:
                              type: boolean
                              default: true
                              description: >-
                                Whether a PodDisruptionBudget should be written
                                out for this role.

                                Disabling this enables you to specify your own -
                                custom - one.

                                Defaults to true.
                            maxUnavailable:
                              type: integer
                              format: uint16
                              maximum: 65535
                              minimum: 0
                              nullable: true
                              description: >-
                                The number of Pods that are allowed to be down
                                because of voluntary disruptions.

                                If you don't explicitly set this, the operator
                                will use a sane default based

                                upon knowledge about the individual product.
                          description: |-
                            This struct is used to configure:

                            1. If PodDisruptionBudgets are created by the operator
                            2. The allowed number of Pods to be unavailable (`maxUnavailable`)

                            Learn more in the
                            [allowed Pod disruptions documentation](https://docs.stackable.tech/home/nightly/concepts/operations/pod_disruptions).
                      description: This is a product-agnostic RoleConfig, which is sufficient for most
                        of the products.
                    roleGroups:
                      type: object
                      description: |-
                        The set of role groups for this role, keyed by their name.

                        A role group is a subset of the replicas of a role that share the same configuration,
                        allowing finer-grained control than the role level. This is useful to e.g. schedule groups
                        onto different classes of nodes or into different regions, or to run them with different
                        settings. Configuration set on a role group is merged on top of the role-level `config`,
                        with the more specific role group values taking precedence.

                        Every role needs at least one role group. A role with a single role group conventionally
                        names it `default`.

                        Read the
                        [roles and role groups concept documentation](https://docs.stackable.tech/home/nightly/concepts/roles-and-role-groups)
                        for more details.
                      additionalProperties:
                        type: object
                        properties:
                          config:
                            type: object
                            default: {}
                            properties:
                              logging:
                                type: object
                                default:
                                  containers: {}
                                  enableVectorAgent: null
                                properties:
                                  containers:
                                    type: object
                                    properties:
                                      vector:
                                        type: object
                                        anyOf:
                                          - required:
                                              - custom
                                          - {}
                                          - {}
                                        properties:
                                          file:
                                            type: object
                                            nullable: true
                                            properties:
                                              level:
                                                enum:
                                                  - TRACE
                                                  - DEBUG
                                                  - INFO
                                                  - WARN
                                                  - ERROR
                                                  - FATAL
                                                  - NONE
                                                  - null
                                                type: string
                                                nullable: true
                                                description: >-
                                                  The log level threshold.

                                                  Log events with a lower log
                                                  level are discarded.
                                            description: Configuration for the file appender
                                          custom:
                                            type: object
                                            properties:
                                              configMap:
                                                type: string
                                                nullable: true
                                                description: ConfigMap containing the log configuration files
                                            description: Log configuration provided in a ConfigMap
                                          console:
                                            type: object
                                            nullable: true
                                            properties:
                                              level:
                                                enum:
                                                  - TRACE
                                                  - DEBUG
                                                  - INFO
                                                  - WARN
                                                  - ERROR
                                                  - FATAL
                                                  - NONE
                                                  - null
                                                type: string
                                                nullable: true
                                                description: >-
                                                  The log level threshold.

                                                  Log events with a lower log
                                                  level are discarded.
                                            description: Configuration for the console appender
                                          loggers:
                                            type: object
                                            default: {}
                                            description: Configuration per logger
                                            additionalProperties:
                                              type: object
                                              properties:
                                                level:
                                                  enum:
                                                    - TRACE
                                                    - DEBUG
                                                    - INFO
                                                    - WARN
                                                    - ERROR
                                                    - FATAL
                                                    - NONE
                                                    - null
                                                  type: string
                                                  nullable: true
                                                  description: >-
                                                    The log level threshold.

                                                    Log events with a lower log
                                                    level are discarded.
                                              description: Configuration of a logger
                                        description: Log configuration of the container
                                      superset:
                                        type: object
                                        anyOf:
                                          - required:
                                              - custom
                                          - {}
                                          - {}
                                        properties:
                                          file:
                                            type: object
                                            nullable: true
                                            properties:
                                              level:
                                                enum:
                                                  - TRACE
                                                  - DEBUG
                                                  - INFO
                                                  - WARN
                                                  - ERROR
                                                  - FATAL
                                                  - NONE
                                                  - null
                                                type: string
                                                nullable: true
                                                description: >-
                                                  The log level threshold.

                                                  Log events with a lower log
                                                  level are discarded.
                                            description: Configuration for the file appender
                                          custom:
                                            type: object
                                            properties:
                                              configMap:
                                                type: string
                                                nullable: true
                                                description: ConfigMap containing the log configuration files
                                            description: Log configuration provided in a ConfigMap
                                          console:
                                            type: object
                                            nullable: true
                                            properties:
                                              level:
                                                enum:
                                                  - TRACE
                                                  - DEBUG
                                                  - INFO
                                                  - WARN
                                                  - ERROR
                                                  - FATAL
                                                  - NONE
                                                  - null
                                                type: string
                                                nullable: true
                                                description: >-
                                                  The log level threshold.

                                                  Log events with a lower log
                                                  level are discarded.
                                            description: Configuration for the console appender
                                          loggers:
                                            type: object
                                            default: {}
                                            description: Configuration per logger
                                            additionalProperties:
                                              type: object
                                              properties:
                                                level:
                                                  enum:
                                                    - TRACE
                                                    - DEBUG
                                                    - INFO
                                                    - WARN
                                                    - ERROR
                                                    - FATAL
                                                    - NONE
                                                    - null
                                                  type: string
                                                  nullable: true
                                                  description: >-
                                                    The log level threshold.

                                                    Log events with a lower log
                                                    level are discarded.
                                              description: Configuration of a logger
                                        description: Log configuration of the container
                                    description: Log configuration per container.
                                  enableVectorAgent:
                                    type: boolean
                                    nullable: true
                                    description: Whether or not to deploy a container with the Vector log agent.
                                description: Logging configuration, learn more in the [logging concept
                                  documentation](https://docs.stackable.tech/home/nightly/concepts/logging).
                              affinity:
                                type: object
                                default:
                                  podAffinity: null
                                  nodeAffinity: null
                                  nodeSelector: null
                                  podAntiAffinity: null
                                properties:
                                  podAffinity:
                                    type: object
                                    nullable: true
                                    description: Same as the `spec.affinity.podAffinity` field on the Pod, see the
                                      [Kubernetes
                                      docs](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node)
                                    x-kubernetes-preserve-unknown-fields: true
                                  nodeAffinity:
                                    type: object
                                    nullable: true
                                    description: Same as the `spec.affinity.nodeAffinity` field on the Pod, see the
                                      [Kubernetes
                                      docs](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node)
                                    x-kubernetes-preserve-unknown-fields: true
                                  nodeSelector:
                                    type: object
                                    nullable: true
                                    description: Simple key-value pairs forming a nodeSelector, see the [Kubernetes
                                      docs](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node)
                                    additionalProperties:
                                      type: string
                                  podAntiAffinity:
                                    type: object
                                    nullable: true
                                    description: Same as the `spec.affinity.podAntiAffinity` field on the Pod, see
                                      the [Kubernetes
                                      docs](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node)
                                    x-kubernetes-preserve-unknown-fields: true
                                description: |-
                                  These configuration settings control
                                  [Pod placement](https://docs.stackable.tech/home/nightly/concepts/operations/pod_placement).
                              rowLimit:
                                type: integer
                                format: int32
                                nullable: true
                                description: Row limit when requesting chart data. Corresponds to ROW_LIMIT.
                              resources:
                                type: object
                                default:
                                  cpu:
                                    max: null
                                    min: null
                                  memory:
                                    limit: null
                                    runtimeLimits: {}
                                  storage: {}
                                properties:
                                  cpu:
                                    type: object
                                    default:
                                      max: null
                                      min: null
                                    properties:
                                      max:
                                        nullable: true
                                        description: >-
                                          The maximum amount of CPU cores that
                                          can be requested by Pods.

                                          Equivalent to the `limit` for Pod
                                          resource configuration.

                                          Cores are specified either as a
                                          decimal point number or as milli
                                          units.

                                          For example:`1.5` will be 1.5 cores,
                                          also written as `1500m`.
                                        x-kubernetes-int-or-string: true
                                      min:
                                        nullable: true
                                        description: >-
                                          The minimal amount of CPU cores that
                                          Pods need to run.

                                          Equivalent to the `request` for Pod
                                          resource configuration.

                                          Cores are specified either as a
                                          decimal point number or as milli
                                          units.

                                          For example:`1.5` will be 1.5 cores,
                                          also written as `1500m`.
                                        x-kubernetes-int-or-string: true
                                  memory:
                                    type: object
                                    properties:
                                      limit:
                                        nullable: true
                                        description: |-
                                          The maximum amount of memory that should be available to the Pod.
                                          Specified as a byte [Quantity](https://kubernetes.io/docs/reference/kubernetes-api/common-definitions/quantity/),
                                          which means these suffixes are supported: E, P, T, G, M, k.
                                          You can also use the power-of-two equivalents: Ei, Pi, Ti, Gi, Mi, Ki.
                                          For example, the following represent roughly the same value:
                                          `128974848, 129e6, 129M,  128974848000m, 123Mi`
                                        x-kubernetes-int-or-string: true
                                      runtimeLimits:
                                        type: object
                                        description: Additional options that can be specified.
                                  storage:
                                    type: object
                                description: CPU and memory limits for Superset pods
                              webserverTimeout:
                                type: integer
                                format: uint32
                                minimum: 0
                                nullable: true
                                description: >-
                                  Maximum time period a Superset request can
                                  take before timing out. This

                                  setting affects the maximum duration a query
                                  to an underlying datasource

                                  can take. If you get timeout errors before
                                  your query returns the result

                                  you may need to increase this timeout.
                                  Corresponds to

                                  SUPERSET_WEBSERVER_TIMEOUT.
                              gracefulShutdownTimeout:
                                type: string
                                nullable: true
                                description: Time period Pods have to gracefully shut down, e.g. `30m`, `1h` or
                                  `2d`. Consult the operator documentation for
                                  details.
                          replicas:
                            type: integer
                            format: uint16
                            maximum: 65535
                            minimum: 0
                            nullable: true
                          cliOverrides:
                            type: object
                            default: {}
                            additionalProperties:
                              type: string
                          envOverrides:
                            type: object
                            default: {}
                            description: |-
                              `envOverrides` configure environment variables to be set in the Pods.
                              It is a map from strings to strings - environment variables and the value to set.
                              Read the
                              [environment variable overrides documentation](https://docs.stackable.tech/home/nightly/concepts/overrides#env-overrides)
                              for more information and consult the operator specific usage guide to find out about
                              the product specific environment variables that are available.
                            additionalProperties:
                              type: string
                          podOverrides:
                            type: object
                            default: {}
                            description: |-
                              In the `podOverrides` property you can define a
                              [PodTemplateSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.34/#podtemplatespec-v1-core)
                              to override any property that can be set on a Kubernetes Pod.
                              Read the
                              [Pod overrides documentation](https://docs.stackable.tech/home/nightly/concepts/overrides#pod-overrides)
                              for more information.
                            x-kubernetes-preserve-unknown-fields: true
                          configOverrides:
                            type: object
                            properties:
                              superset_config.py:
                                type: object
                                default: {}
                                description: Flat key-value overrides for `*.properties`, Hadoop XML, etc.
                                additionalProperties:
                                  type: string
                            description: |-
                              The `configOverrides` can be used to configure properties in product config files
                              that are not exposed in the CRD. Read the
                              [config overrides documentation](https://docs.stackable.tech/home/nightly/concepts/overrides#config-overrides)
                              and consult the operator specific usage guide documentation for details on the
                              available config files and settings for the specific product.
                    cliOverrides:
                      type: object
                      default: {}
                      additionalProperties:
                        type: string
                    envOverrides:
                      type: object
                      default: {}
                      description: |-
                        `envOverrides` configure environment variables to be set in the Pods.
                        It is a map from strings to strings - environment variables and the value to set.
                        Read the
                        [environment variable overrides documentation](https://docs.stackable.tech/home/nightly/concepts/overrides#env-overrides)
                        for more information and consult the operator specific usage guide to find out about
                        the product specific environment variables that are available.
                      additionalProperties:
                        type: string
                    podOverrides:
                      type: object
                      default: {}
                      description: |-
                        In the `podOverrides` property you can define a
                        [PodTemplateSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.34/#podtemplatespec-v1-core)
                        to override any property that can be set on a Kubernetes Pod.
                        Read the
                        [Pod overrides documentation](https://docs.stackable.tech/home/nightly/concepts/overrides#pod-overrides)
                        for more information.
                      x-kubernetes-preserve-unknown-fields: true
                    configOverrides:
                      type: object
                      properties:
                        superset_config.py:
                          type: object
                          default: {}
                          description: Flat key-value overrides for `*.properties`, Hadoop XML, etc.
                          additionalProperties:
                            type: string
                      description: |-
                        The `configOverrides` can be used to configure properties in product config files
                        that are not exposed in the CRD. Read the
                        [config overrides documentation](https://docs.stackable.tech/home/nightly/concepts/overrides#config-overrides)
                        and consult the operator specific usage guide documentation for details on the
                        available config files and settings for the specific product.
                  description: |-
                    This struct represents a role - e.g. HDFS datanodes or Trino workers. It has a key-value-map containing
                    all the roleGroups that are part of this role. Additionally, there is a `config`, which is configurable
                    at the role *and* roleGroup level. Everything at roleGroup level is merged on top of what is configured
                    on role level. There is also a second form of config, which can only be configured
                    at role level, the `roleConfig`.
                    You can learn more about this in the
                    [Roles and role group concept documentation](https://docs.stackable.tech/home/nightly/concepts/roles-and-role-groups).
                workers:
                  type: object
                  nullable: true
                  required:
                    - roleGroups
                  properties:
                    config:
                      type: object
                      default: {}
                      properties:
                        logging:
                          type: object
                          default:
                            containers: {}
                            enableVectorAgent: null
                          properties:
                            containers:
                              type: object
                              properties:
                                vector:
                                  type: object
                                  anyOf:
                                    - required:
                                        - custom
                                    - {}
                                    - {}
                                  properties:
                                    file:
                                      type: object
                                      nullable: true
                                      properties:
                                        level:
                                          enum:
                                            - TRACE
                                            - DEBUG
                                            - INFO
                                            - WARN
                                            - ERROR
                                            - FATAL
                                            - NONE
                                            - null
                                          type: string
                                          nullable: true
                                          description: >-
                                            The log level threshold.

                                            Log events with a lower log level
                                            are discarded.
                                      description: Configuration for the file appender
                                    custom:
                                      type: object
                                      properties:
                                        configMap:
                                          type: string
                                          nullable: true
                                          description: ConfigMap containing the log configuration files
                                      description: Log configuration provided in a ConfigMap
                                    console:
                                      type: object
                                      nullable: true
                                      properties:
                                        level:
                                          enum:
                                            - TRACE
                                            - DEBUG
                                            - INFO
                                            - WARN
                                            - ERROR
                                            - FATAL
                                            - NONE
                                            - null
                                          type: string
                                          nullable: true
                                          description: >-
                                            The log level threshold.

                                            Log events with a lower log level
                                            are discarded.
                                      description: Configuration for the console appender
                                    loggers:
                                      type: object
                                      default: {}
                                      description: Configuration per logger
                                      additionalProperties:
                                        type: object
                                        properties:
                                          level:
                                            enum:
                                              - TRACE
                                              - DEBUG
                                              - INFO
                                              - WARN
                                              - ERROR
                                              - FATAL
                                              - NONE
                                              - null
                                            type: string
                                            nullable: true
                                            description: >-
                                              The log level threshold.

                                              Log events with a lower log level
                                              are discarded.
                                        description: Configuration of a logger
                                  description: Log configuration of the container
                                superset:
                                  type: object
                                  anyOf:
                                    - required:
                                        - custom
                                    - {}
                                    - {}
                                  properties:
                                    file:
                                      type: object
                                      nullable: true
                                      properties:
                                        level:
                                          enum:
                                            - TRACE
                                            - DEBUG
                                            - INFO
                                            - WARN
                                            - ERROR
                                            - FATAL
                                            - NONE
                                            - null
                                          type: string
                                          nullable: true
                                          description: >-
                                            The log level threshold.

                                            Log events with a lower log level
                                            are discarded.
                                      description: Configuration for the file appender
                                    custom:
                                      type: object
                                      properties:
                                        configMap:
                                          type: string
                                          nullable: true
                                          description: ConfigMap containing the log configuration files
                                      description: Log configuration provided in a ConfigMap
                                    console:
                                      type: object
                                      nullable: true
                                      properties:
                                        level:
                                          enum:
                                            - TRACE
                                            - DEBUG
                                            - INFO
                                            - WARN
                                            - ERROR
                                            - FATAL
                                            - NONE
                                            - null
                                          type: string
                                          nullable: true
                                          description: >-
                                            The log level threshold.

                                            Log events with a lower log level
                                            are discarded.
                                      description: Configuration for the console appender
                                    loggers:
                                      type: object
                                      default: {}
                                      description: Configuration per logger
                                      additionalProperties:
                                        type: object
                                        properties:
                                          level:
                                            enum:
                                              - TRACE
                                              - DEBUG
                                              - INFO
                                              - WARN
                                              - ERROR
                                              - FATAL
                                              - NONE
                                              - null
                                            type: string
                                            nullable: true
                                            description: >-
                                              The log level threshold.

                                              Log events with a lower log level
                                              are discarded.
                                        description: Configuration of a logger
                                  description: Log configuration of the container
                              description: Log configuration per container.
                            enableVectorAgent:
                              type: boolean
                              nullable: true
                              description: Whether or not to deploy a container with the Vector log agent.
                          description: Logging configuration, learn more in the [logging concept
                            documentation](https://docs.stackable.tech/home/nightly/concepts/logging).
                        affinity:
                          type: object
                          default:
                            podAffinity: null
                            nodeAffinity: null
                            nodeSelector: null
                            podAntiAffinity: null
                          properties:
                            podAffinity:
                              type: object
                              nullable: true
                              description: Same as the `spec.affinity.podAffinity` field on the Pod, see the
                                [Kubernetes
                                docs](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node)
                              x-kubernetes-preserve-unknown-fields: true
                            nodeAffinity:
                              type: object
                              nullable: true
                              description: Same as the `spec.affinity.nodeAffinity` field on the Pod, see the
                                [Kubernetes
                                docs](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node)
                              x-kubernetes-preserve-unknown-fields: true
                            nodeSelector:
                              type: object
                              nullable: true
                              description: Simple key-value pairs forming a nodeSelector, see the [Kubernetes
                                docs](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node)
                              additionalProperties:
                                type: string
                            podAntiAffinity:
                              type: object
                              nullable: true
                              description: Same as the `spec.affinity.podAntiAffinity` field on the Pod, see
                                the [Kubernetes
                                docs](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node)
                              x-kubernetes-preserve-unknown-fields: true
                          description: |-
                            These configuration settings control
                            [Pod placement](https://docs.stackable.tech/home/nightly/concepts/operations/pod_placement).
                        rowLimit:
                          type: integer
                          format: int32
                          nullable: true
                          description: Row limit when requesting chart data. Corresponds to ROW_LIMIT.
                        resources:
                          type: object
                          default:
                            cpu:
                              max: null
                              min: null
                            memory:
                              limit: null
                              runtimeLimits: {}
                            storage: {}
                          properties:
                            cpu:
                              type: object
                              default:
                                max: null
                                min: null
                              properties:
                                max:
                                  nullable: true
                                  description: >-
                                    The maximum amount of CPU cores that can be
                                    requested by Pods.

                                    Equivalent to the `limit` for Pod resource
                                    configuration.

                                    Cores are specified either as a decimal
                                    point number or as milli units.

                                    For example:`1.5` will be 1.5 cores, also
                                    written as `1500m`.
                                  x-kubernetes-int-or-string: true
                                min:
                                  nullable: true
                                  description: >-
                                    The minimal amount of CPU cores that Pods
                                    need to run.

                                    Equivalent to the `request` for Pod resource
                                    configuration.

                                    Cores are specified either as a decimal
                                    point number or as milli units.

                                    For example:`1.5` will be 1.5 cores, also
                                    written as `1500m`.
                                  x-kubernetes-int-or-string: true
                            memory:
                              type: object
                              properties:
                                limit:
                                  nullable: true
                                  description: |-
                                    The maximum amount of memory that should be available to the Pod.
                                    Specified as a byte [Quantity](https://kubernetes.io/docs/reference/kubernetes-api/common-definitions/quantity/),
                                    which means these suffixes are supported: E, P, T, G, M, k.
                                    You can also use the power-of-two equivalents: Ei, Pi, Ti, Gi, Mi, Ki.
                                    For example, the following represent roughly the same value:
                                    `128974848, 129e6, 129M,  128974848000m, 123Mi`
                                  x-kubernetes-int-or-string: true
                                runtimeLimits:
                                  type: object
                                  description: Additional options that can be specified.
                            storage:
                              type: object
                          description: CPU and memory limits for Superset pods
                        webserverTimeout:
                          type: integer
                          format: uint32
                          minimum: 0
                          nullable: true
                          description: >-
                            Maximum time period a Superset request can take
                            before timing out. This

                            setting affects the maximum duration a query to an
                            underlying datasource

                            can take. If you get timeout errors before your
                            query returns the result

                            you may need to increase this timeout. Corresponds
                            to

                            SUPERSET_WEBSERVER_TIMEOUT.
                        gracefulShutdownTimeout:
                          type: string
                          nullable: true
                          description: Time period Pods have to gracefully shut down, e.g. `30m`, `1h` or
                            `2d`. Consult the operator documentation for
                            details.
                    roleConfig:
                      type: object
                      default:
                        listenerClass: cluster-internal
                        podDisruptionBudget:
                          enabled: true
                          maxUnavailable: null
                      properties:
                        listenerClass:
                          type: string
                          default: cluster-internal
                          pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$
                          maxLength: 253
                          minLength: 1
                          description: This field controls which
                            [ListenerClass](https://docs.stackable.tech/home/nightly/listener-operator/listenerclass.html)
                            is used to expose the webserver.
                        podDisruptionBudget:
                          type: object
                          default:
                            enabled: true
                            maxUnavailable: null
                          properties:
                            enabled:
                              type: boolean
                              default: true
                              description: >-
                                Whether a PodDisruptionBudget should be written
                                out for this role.

                                Disabling this enables you to specify your own -
                                custom - one.

                                Defaults to true.
                            maxUnavailable:
                              type: integer
                              format: uint16
                              maximum: 65535
                              minimum: 0
                              nullable: true
                              description: >-
                                The number of Pods that are allowed to be down
                                because of voluntary disruptions.

                                If you don't explicitly set this, the operator
                                will use a sane default based

                                upon knowledge about the individual product.
                          description: |-
                            This struct is used to configure:

                            1. If PodDisruptionBudgets are created by the operator
                            2. The allowed number of Pods to be unavailable (`maxUnavailable`)

                            Learn more in the
                            [allowed Pod disruptions documentation](https://docs.stackable.tech/home/nightly/concepts/operations/pod_disruptions).
                      description: This is a product-agnostic RoleConfig, which is sufficient for most
                        of the products.
                    roleGroups:
                      type: object
                      description: |-
                        The set of role groups for this role, keyed by their name.

                        A role group is a subset of the replicas of a role that share the same configuration,
                        allowing finer-grained control than the role level. This is useful to e.g. schedule groups
                        onto different classes of nodes or into different regions, or to run them with different
                        settings. Configuration set on a role group is merged on top of the role-level `config`,
                        with the more specific role group values taking precedence.

                        Every role needs at least one role group. A role with a single role group conventionally
                        names it `default`.

                        Read the
                        [roles and role groups concept documentation](https://docs.stackable.tech/home/nightly/concepts/roles-and-role-groups)
                        for more details.
                      additionalProperties:
                        type: object
                        properties:
                          config:
                            type: object
                            default: {}
                            properties:
                              logging:
                                type: object
                                default:
                                  containers: {}
                                  enableVectorAgent: null
                                properties:
                                  containers:
                                    type: object
                                    properties:
                                      vector:
                                        type: object
                                        anyOf:
                                          - required:
                                              - custom
                                          - {}
                                          - {}
                                        properties:
                                          file:
                                            type: object
                                            nullable: true
                                            properties:
                                              level:
                                                enum:
                                                  - TRACE
                                                  - DEBUG
                                                  - INFO
                                                  - WARN
                                                  - ERROR
                                                  - FATAL
                                                  - NONE
                                                  - null
                                                type: string
                                                nullable: true
                                                description: >-
                                                  The log level threshold.

                                                  Log events with a lower log
                                                  level are discarded.
                                            description: Configuration for the file appender
                                          custom:
                                            type: object
                                            properties:
                                              configMap:
                                                type: string
                                                nullable: true
                                                description: ConfigMap containing the log configuration files
                                            description: Log configuration provided in a ConfigMap
                                          console:
                                            type: object
                                            nullable: true
                                            properties:
                                              level:
                                                enum:
                                                  - TRACE
                                                  - DEBUG
                                                  - INFO
                                                  - WARN
                                                  - ERROR
                                                  - FATAL
                                                  - NONE
                                                  - null
                                                type: string
                                                nullable: true
                                                description: >-
                                                  The log level threshold.

                                                  Log events with a lower log
                                                  level are discarded.
                                            description: Configuration for the console appender
                                          loggers:
                                            type: object
                                            default: {}
                                            description: Configuration per logger
                                            additionalProperties:
                                              type: object
                                              properties:
                                                level:
                                                  enum:
                                                    - TRACE
                                                    - DEBUG
                                                    - INFO
                                                    - WARN
                                                    - ERROR
                                                    - FATAL
                                                    - NONE
                                                    - null
                                                  type: string
                                                  nullable: true
                                                  description: >-
                                                    The log level threshold.

                                                    Log events with a lower log
                                                    level are discarded.
                                              description: Configuration of a logger
                                        description: Log configuration of the container
                                      superset:
                                        type: object
                                        anyOf:
                                          - required:
                                              - custom
                                          - {}
                                          - {}
                                        properties:
                                          file:
                                            type: object
                                            nullable: true
                                            properties:
                                              level:
                                                enum:
                                                  - TRACE
                                                  - DEBUG
                                                  - INFO
                                                  - WARN
                                                  - ERROR
                                                  - FATAL
                                                  - NONE
                                                  - null
                                                type: string
                                                nullable: true
                                                description: >-
                                                  The log level threshold.

                                                  Log events with a lower log
                                                  level are discarded.
                                            description: Configuration for the file appender
                                          custom:
                                            type: object
                                            properties:
                                              configMap:
                                                type: string
                                                nullable: true
                                                description: ConfigMap containing the log configuration files
                                            description: Log configuration provided in a ConfigMap
                                          console:
                                            type: object
                                            nullable: true
                                            properties:
                                              level:
                                                enum:
                                                  - TRACE
                                                  - DEBUG
                                                  - INFO
                                                  - WARN
                                                  - ERROR
                                                  - FATAL
                                                  - NONE
                                                  - null
                                                type: string
                                                nullable: true
                                                description: >-
                                                  The log level threshold.

                                                  Log events with a lower log
                                                  level are discarded.
                                            description: Configuration for the console appender
                                          loggers:
                                            type: object
                                            default: {}
                                            description: Configuration per logger
                                            additionalProperties:
                                              type: object
                                              properties:
                                                level:
                                                  enum:
                                                    - TRACE
                                                    - DEBUG
                                                    - INFO
                                                    - WARN
                                                    - ERROR
                                                    - FATAL
                                                    - NONE
                                                    - null
                                                  type: string
                                                  nullable: true
                                                  description: >-
                                                    The log level threshold.

                                                    Log events with a lower log
                                                    level are discarded.
                                              description: Configuration of a logger
                                        description: Log configuration of the container
                                    description: Log configuration per container.
                                  enableVectorAgent:
                                    type: boolean
                                    nullable: true
                                    description: Whether or not to deploy a container with the Vector log agent.
                                description: Logging configuration, learn more in the [logging concept
                                  documentation](https://docs.stackable.tech/home/nightly/concepts/logging).
                              affinity:
                                type: object
                                default:
                                  podAffinity: null
                                  nodeAffinity: null
                                  nodeSelector: null
                                  podAntiAffinity: null
                                properties:
                                  podAffinity:
                                    type: object
                                    nullable: true
                                    description: Same as the `spec.affinity.podAffinity` field on the Pod, see the
                                      [Kubernetes
                                      docs](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node)
                                    x-kubernetes-preserve-unknown-fields: true
                                  nodeAffinity:
                                    type: object
                                    nullable: true
                                    description: Same as the `spec.affinity.nodeAffinity` field on the Pod, see the
                                      [Kubernetes
                                      docs](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node)
                                    x-kubernetes-preserve-unknown-fields: true
                                  nodeSelector:
                                    type: object
                                    nullable: true
                                    description: Simple key-value pairs forming a nodeSelector, see the [Kubernetes
                                      docs](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node)
                                    additionalProperties:
                                      type: string
                                  podAntiAffinity:
                                    type: object
                                    nullable: true
                                    description: Same as the `spec.affinity.podAntiAffinity` field on the Pod, see
                                      the [Kubernetes
                                      docs](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node)
                                    x-kubernetes-preserve-unknown-fields: true
                                description: |-
                                  These configuration settings control
                                  [Pod placement](https://docs.stackable.tech/home/nightly/concepts/operations/pod_placement).
                              rowLimit:
                                type: integer
                                format: int32
                                nullable: true
                                description: Row limit when requesting chart data. Corresponds to ROW_LIMIT.
                              resources:
                                type: object
                                default:
                                  cpu:
                                    max: null
                                    min: null
                                  memory:
                                    limit: null
                                    runtimeLimits: {}
                                  storage: {}
                                properties:
                                  cpu:
                                    type: object
                                    default:
                                      max: null
                                      min: null
                                    properties:
                                      max:
                                        nullable: true
                                        description: >-
                                          The maximum amount of CPU cores that
                                          can be requested by Pods.

                                          Equivalent to the `limit` for Pod
                                          resource configuration.

                                          Cores are specified either as a
                                          decimal point number or as milli
                                          units.

                                          For example:`1.5` will be 1.5 cores,
                                          also written as `1500m`.
                                        x-kubernetes-int-or-string: true
                                      min:
                                        nullable: true
                                        description: >-
                                          The minimal amount of CPU cores that
                                          Pods need to run.

                                          Equivalent to the `request` for Pod
                                          resource configuration.

                                          Cores are specified either as a
                                          decimal point number or as milli
                                          units.

                                          For example:`1.5` will be 1.5 cores,
                                          also written as `1500m`.
                                        x-kubernetes-int-or-string: true
                                  memory:
                                    type: object
                                    properties:
                                      limit:
                                        nullable: true
                                        description: |-
                                          The maximum amount of memory that should be available to the Pod.
                                          Specified as a byte [Quantity](https://kubernetes.io/docs/reference/kubernetes-api/common-definitions/quantity/),
                                          which means these suffixes are supported: E, P, T, G, M, k.
                                          You can also use the power-of-two equivalents: Ei, Pi, Ti, Gi, Mi, Ki.
                                          For example, the following represent roughly the same value:
                                          `128974848, 129e6, 129M,  128974848000m, 123Mi`
                                        x-kubernetes-int-or-string: true
                                      runtimeLimits:
                                        type: object
                                        description: Additional options that can be specified.
                                  storage:
                                    type: object
                                description: CPU and memory limits for Superset pods
                              webserverTimeout:
                                type: integer
                                format: uint32
                                minimum: 0
                                nullable: true
                                description: >-
                                  Maximum time period a Superset request can
                                  take before timing out. This

                                  setting affects the maximum duration a query
                                  to an underlying datasource

                                  can take. If you get timeout errors before
                                  your query returns the result

                                  you may need to increase this timeout.
                                  Corresponds to

                                  SUPERSET_WEBSERVER_TIMEOUT.
                              gracefulShutdownTimeout:
                                type: string
                                nullable: true
                                description: Time period Pods have to gracefully shut down, e.g. `30m`, `1h` or
                                  `2d`. Consult the operator documentation for
                                  details.
                          replicas:
                            type: integer
                            format: uint16
                            maximum: 65535
                            minimum: 0
                            nullable: true
                          cliOverrides:
                            type: object
                            default: {}
                            additionalProperties:
                              type: string
                          envOverrides:
                            type: object
                            default: {}
                            description: |-
                              `envOverrides` configure environment variables to be set in the Pods.
                              It is a map from strings to strings - environment variables and the value to set.
                              Read the
                              [environment variable overrides documentation](https://docs.stackable.tech/home/nightly/concepts/overrides#env-overrides)
                              for more information and consult the operator specific usage guide to find out about
                              the product specific environment variables that are available.
                            additionalProperties:
                              type: string
                          podOverrides:
                            type: object
                            default: {}
                            description: |-
                              In the `podOverrides` property you can define a
                              [PodTemplateSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.34/#podtemplatespec-v1-core)
                              to override any property that can be set on a Kubernetes Pod.
                              Read the
                              [Pod overrides documentation](https://docs.stackable.tech/home/nightly/concepts/overrides#pod-overrides)
                              for more information.
                            x-kubernetes-preserve-unknown-fields: true
                          configOverrides:
                            type: object
                            properties:
                              superset_config.py:
                                type: object
                                default: {}
                                description: Flat key-value overrides for `*.properties`, Hadoop XML, etc.
                                additionalProperties:
                                  type: string
                            description: |-
                              The `configOverrides` can be used to configure properties in product config files
                              that are not exposed in the CRD. Read the
                              [config overrides documentation](https://docs.stackable.tech/home/nightly/concepts/overrides#config-overrides)
                              and consult the operator specific usage guide documentation for details on the
                              available config files and settings for the specific product.
                    cliOverrides:
                      type: object
                      default: {}
                      additionalProperties:
                        type: string
                    envOverrides:
                      type: object
                      default: {}
                      description: |-
                        `envOverrides` configure environment variables to be set in the Pods.
                        It is a map from strings to strings - environment variables and the value to set.
                        Read the
                        [environment variable overrides documentation](https://docs.stackable.tech/home/nightly/concepts/overrides#env-overrides)
                        for more information and consult the operator specific usage guide to find out about
                        the product specific environment variables that are available.
                      additionalProperties:
                        type: string
                    podOverrides:
                      type: object
                      default: {}
                      description: |-
                        In the `podOverrides` property you can define a
                        [PodTemplateSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.34/#podtemplatespec-v1-core)
                        to override any property that can be set on a Kubernetes Pod.
                        Read the
                        [Pod overrides documentation](https://docs.stackable.tech/home/nightly/concepts/overrides#pod-overrides)
                        for more information.
                      x-kubernetes-preserve-unknown-fields: true
                    configOverrides:
                      type: object
                      properties:
                        superset_config.py:
                          type: object
                          default: {}
                          description: Flat key-value overrides for `*.properties`, Hadoop XML, etc.
                          additionalProperties:
                            type: string
                      description: |-
                        The `configOverrides` can be used to configure properties in product config files
                        that are not exposed in the CRD. Read the
                        [config overrides documentation](https://docs.stackable.tech/home/nightly/concepts/overrides#config-overrides)
                        and consult the operator specific usage guide documentation for details on the
                        available config files and settings for the specific product.
                  description: |-
                    This struct represents a role - e.g. HDFS datanodes or Trino workers. It has a key-value-map containing
                    all the roleGroups that are part of this role. Additionally, there is a `config`, which is configurable
                    at the role *and* roleGroup level. Everything at roleGroup level is merged on top of what is configured
                    on role level. There is also a second form of config, which can only be configured
                    at role level, the `roleConfig`.
                    You can learn more about this in the
                    [Roles and role group concept documentation](https://docs.stackable.tech/home/nightly/concepts/roles-and-role-groups).
                clusterConfig:
                  type: object
                  required:
                    - credentialsSecret
                    - metadataDatabase
                  properties:
                    celeryBroker:
                      type: object
                      oneOf:
                        - required:
                            - redis
                        - required:
                            - generic
                      nullable: true
                      properties:
                        redis:
                          type: object
                          required:
                            - credentialsSecretName
                            - host
                          properties:
                            host:
                              type: string
                              description: Hostname or IP address of the Redis server.
                            port:
                              type: integer
                              format: uint16
                              default: 6379
                              maximum: 65535
                              minimum: 0
                              description: Port the Redis server is listening on. Defaults to `6379`.
                            databaseId:
                              type: integer
                              format: uint16
                              default: 0
                              maximum: 65535
                              minimum: 0
                              description: >-
                                Numeric index of the Redis logical database to
                                use. Defaults to `0`.


                                Redis supports multiple logical databases within
                                a single instance, identified by an

                                integer index. Database `0` is the default.
                            credentialsSecretName:
                              type: string
                              description: >-
                                Name of a Secret containing the `username` and
                                `password` keys used to authenticate

                                against the Redis server.
                          description: >-
                            Connection settings for a [Redis](https://redis.io/)
                            instance.


                            Redis is commonly used as a Celery message broker or
                            result backend (e.g. for Apache Airflow).
                        generic:
                          type: object
                          required:
                            - connectionUrlSecretName
                          properties:
                            connectionUrlSecretName:
                              type: string
                              description: The name of the Secret that contains an `connectionUrl` key with
                                the complete Celery URL.
                          description: >-
                            A generic Celery database connection for broker or
                            result backend types not covered by a

                            dedicated variant.


                            Use this when you need a Celery-compatible
                            connection that does not have a first-class

                            connection type. The complete connection URL is read
                            from a Secret, giving the user full

                            control over the connection string.
                      description: |-
                        Connection information for the celery broker queue.

                        Only works if `workers` (and `beat`) roles are set.
                        Ignored otherwise.
                    mapboxSecret:
                      type: string
                      nullable: true
                      description: >-
                        The name of a Secret object.

                        The Secret should contain a key
                        `connections.mapboxApiKey`.

                        This is the API key required for map charts to work that
                        use mapbox.

                        The token should be in the JWT format.
                    authorization:
                      type: object
                      nullable: true
                      required:
                        - roleMappingFromOpa
                      properties:
                        roleMappingFromOpa:
                          type: object
                          required:
                            - configMapName
                          properties:
                            cache:
                              type: object
                              default:
                                maxEntries: 10000
                                entryTimeToLive: 30s
                              properties:
                                maxEntries:
                                  type: integer
                                  format: uint32
                                  default: 10000
                                  minimum: 0
                                  description: >-
                                    Maximum number of entries in the cache; If
                                    this threshold is reached then the least

                                    recently used item is removed.
                                entryTimeToLive:
                                  type: string
                                  default: 30s
                                  description: Time to live per entry
                              description: Configuration for an Superset internal cache for calls to OPA
                            package:
                              type: string
                              nullable: true
                              description: The name of the Rego package containing the Rego rules for the
                                product.
                            configMapName:
                              type: string
                              description: |-
                                The [discovery ConfigMap](https://docs.stackable.tech/home/nightly/concepts/service_discovery)
                                for the OPA stacklet that should be used for authorization requests.
                          description: |-
                            Configure the OPA stacklet [discovery ConfigMap](https://docs.stackable.tech/home/nightly/concepts/service_discovery)
                            and the name of the Rego package containing your authorization rules.
                            Consult the [OPA authorization documentation](https://docs.stackable.tech/home/nightly/concepts/opa)
                            to learn how to deploy Rego authorization rules with OPA.
                      description: >-
                        Authorization options for Superset.


                        Currently only role assignment is supported. This means
                        that roles are assigned to users in

                        OPA but, due to the way Superset is implemented, the
                        database also needs to be updated

                        to reflect these assignments.

                        Therefore, user roles and permissions must already exist
                        in the Superset database before

                        they can be assigned to a user.

                        Warning: Any user roles assigned with the Superset UI
                        are discarded.
                    authentication:
                      type: array
                      items:
                        type: object
                        required:
                          - authenticationClass
                        properties:
                          oidc:
                            type: object
                            nullable: true
                            required:
                              - clientCredentialsSecret
                            properties:
                              extraScopes:
                                type: array
                                items:
                                  type: string
                                default: []
                                description: An optional list of extra scopes which get merged with the scopes
                                  defined in the AuthenticationClass
                              clientCredentialsSecret:
                                type: string
                                description: >-
                                  A reference to the OIDC client credentials
                                  secret. The secret contains

                                  the client id and secret.
                              clientAuthenticationMethod:
                                enum:
                                  - client_secret_basic
                                  - client_secret_post
                                  - client_secret_jwt
                                  - private_key_jwt
                                  - none
                                type: string
                                default: client_secret_basic
                                description: "The client authentication method used when communicating with the
                                  token endpoint. Defaults to
                                  `client_secret_basic`. The required contents
                                  of `clientCredentialsSecret` depend on the
                                  chosen method: secret-based methods
                                  (`client_secret_basic`, `client_secret_post`,
                                  `client_secret_jwt`) expect a client secret,
                                  while `private_key_jwt` expects a private
                                  key."
                            description: This field contains OIDC-specific configuration. It is only
                              required in case OIDC is used.
                          syncRolesAt:
                            enum:
                              - Registration
                              - Login
                            type: string
                            default: Registration
                            description: >-
                              If we should replace ALL the user's roles each
                              login, or only on registration.

                              Gets mapped to `AUTH_ROLES_SYNC_AT_LOGIN`
                          userRegistration:
                            type: boolean
                            default: true
                            description: |-
                              Allow users who are not already in the FAB DB.
                              Gets mapped to `AUTH_USER_REGISTRATION`
                          authenticationClass:
                            type: string
                            description: Name of the
                              [AuthenticationClass](https://docs.stackable.tech/home/nightly/concepts/authentication)
                              used to authenticate users
                          userRegistrationRole:
                            type: string
                            default: Public
                            description: >-
                              This role will be given in addition to any
                              AUTH_ROLES_MAPPING.

                              Gets mapped to `AUTH_USER_REGISTRATION_ROLE`
                      default: []
                      description: List of AuthenticationClasses used to authenticate users.
                    clusterOperation:
                      type: object
                      default:
                        stopped: false
                        reconciliationPaused: false
                      properties:
                        stopped:
                          type: boolean
                          default: false
                          description: >-
                            Flag to stop the cluster. This means all deployed
                            resources (e.g. Services, StatefulSets,

                            ConfigMaps) are kept but all deployed Pods (e.g.
                            replicas from a StatefulSet) are scaled to 0

                            and therefore stopped and removed.

                            If applied at the same time with
                            `reconciliationPaused`, the latter will pause
                            reconciliation

                            and `stopped` will take no effect until
                            `reconciliationPaused` is set to false or removed.
                        reconciliationPaused:
                          type: boolean
                          default: false
                          description: >-
                            Flag to stop cluster reconciliation by the operator.
                            This means that all changes in the

                            custom resource spec are ignored until this flag is
                            set to false or removed. The operator

                            will however still watch the deployed resources at
                            the time and update the custom resource

                            status field.

                            If applied at the same time with `stopped`,
                            `reconciliationPaused` will take precedence over

                            `stopped` and stop the reconciliation immediately.
                      description: Cluster operations like pause reconciliation or cluster stop.
                    metadataDatabase:
                      type: object
                      oneOf:
                        - required:
                            - postgresql
                        - required:
                            - generic
                      properties:
                        generic:
                          type: object
                          required:
                            - connectionUrlSecretName
                          properties:
                            connectionUrlSecretName:
                              type: string
                              description: The name of the Secret that contains an `connectionUrl` key with
                                the complete SQLAlchemy URL.
                          description: >-
                            A generic SQLAlchemy database connection for
                            database types not covered by a dedicated variant.


                            Use this when you need to connect to a
                            SQLAlchemy-compatible database that does not have a

                            first-class connection type. The complete connection
                            URL is read from a Secret, giving the user

                            full control over the connection string including
                            any driver-specific options.
                        postgresql:
                          type: object
                          required:
                            - credentialsSecretName
                            - database
                            - host
                          properties:
                            host:
                              type: string
                              description: Hostname or IP address of the PostgreSQL server.
                            port:
                              type: integer
                              format: uint16
                              default: 5432
                              maximum: 65535
                              minimum: 0
                              description: Port the PostgreSQL server is listening on. Defaults to `5432`.
                            database:
                              type: string
                              description: Name of the database (schema) to connect to.
                            parameters:
                              type: object
                              default: {}
                              description: >-
                                Additional map of JDBC connection parameters to
                                append to the connection URL. The given

                                `HashMap<String, String>` will be converted to
                                query parameters in the form of

                                `?param1=value1&param2=value2`.
                              additionalProperties:
                                type: string
                            credentialsSecretName:
                              type: string
                              description: >-
                                Name of a Secret containing the `username` and
                                `password` keys used to authenticate

                                against the PostgreSQL server.
                          description: Connection settings for a [PostgreSQL](https://www.postgresql.org/)
                            database.
                      description: Configure the database where Superset stores all its internal
                        metadata.
                    credentialsSecret:
                      type: string
                      description: |-
                        The name of the Secret object containing the admin user credentials.
                        Read the
                        [getting started guide first steps](https://docs.stackable.tech/home/nightly/superset/getting_started/first_steps)
                        to find out more.
                    celeryResultsBackend:
                      type: object
                      oneOf:
                        - required:
                            - redis
                      nullable: true
                      properties:
                        redis:
                          type: object
                          required:
                            - credentialsSecretName
                            - host
                          properties:
                            host:
                              type: string
                              description: Hostname or IP address of the Redis server.
                            port:
                              type: integer
                              format: uint16
                              default: 6379
                              maximum: 65535
                              minimum: 0
                              description: Port the Redis server is listening on. Defaults to `6379`.
                            databaseId:
                              type: integer
                              format: uint16
                              default: 0
                              maximum: 65535
                              minimum: 0
                              description: >-
                                Numeric index of the Redis logical database to
                                use. Defaults to `0`.


                                Redis supports multiple logical databases within
                                a single instance, identified by an

                                integer index. Database `0` is the default.
                            credentialsSecretName:
                              type: string
                              description: >-
                                Name of a Secret containing the `username` and
                                `password` keys used to authenticate

                                against the Redis server.
                          description: >-
                            Connection settings for a [Redis](https://redis.io/)
                            instance.


                            Redis is commonly used as a Celery message broker or
                            result backend (e.g. for Apache Airflow).
                      description: |-
                        Connection information for the celery backend database.
                        Only works if `workers` (and `beat`) roles are set.

                        Ignored otherwise.
                    vectorAggregatorConfigMapName:
                      type: string
                      pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$
                      nullable: true
                      maxLength: 253
                      minLength: 1
                      description: |-
                        Name of the Vector aggregator [discovery ConfigMap](https://docs.stackable.tech/home/nightly/concepts/service_discovery).
                        It must contain the key `ADDRESS` with the address of the Vector aggregator.
                        Follow the [logging tutorial](https://docs.stackable.tech/home/nightly/tutorials/logging-vector-aggregator)
                        to learn how to configure log aggregation with Vector.
                  description: >-
                    Settings that affect all roles and role groups.

                    The settings in the `clusterConfig` are cluster wide
                    settings that do not need to be configurable at role or role
                    group level.
                objectOverrides:
                  type: array
                  items:
                    type: object
                    x-kubernetes-preserve-unknown-fields: true
                  default: []
                  description: |-
                    A list of generic Kubernetes objects, which are merged into the objects that the operator
                    creates.

                    List entries are arbitrary YAML objects, which need to be valid Kubernetes objects.

                    Read the [Object overrides documentation](https://docs.stackable.tech/home/nightly/concepts/overrides#object-overrides)
                    for more information.
              description: |-
                A Superset cluster stacklet. This resource is managed by the Stackable operator for Apache Superset.
                Find more information on how to use it and the resources that the operator generates in the
                [operator documentation](https://docs.stackable.tech/home/nightly/superset/).
            status:
              type: object
              nullable: true
              properties:
                conditions:
                  type: array
                  items:
                    type: object
                    required:
                      - status
                      - type
                    properties:
                      type:
                        enum:
                          - Available
                          - Degraded
                          - Progressing
                          - ReconciliationPaused
                          - Stopped
                        type: string
                        description: Type of deployment condition.
                      reason:
                        type: string
                        nullable: true
                        description: The reason for the condition's last transition.
                      status:
                        enum:
                          - "True"
                          - "False"
                          - Unknown
                        type: string
                        description: Status of the condition, one of True, False, Unknown.
                      message:
                        type: string
                        nullable: true
                        description: A human readable message indicating details about the transition.
                      lastTransitionTime:
                        type: string
                        format: date-time
                        nullable: true
                        description: Last time the condition transitioned from one status to another.
                  default: []
          description: A Superset cluster stacklet. This resource is managed by the
            Stackable operator for Apache Superset.
      served: true
      storage: true
      subresources:
        status: {}
      additionalPrinterColumns: []
metadata:
  name: supersetclusters.superset.stackable.tech
apiVersion: apiextensions.k8s.io/v1
