apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  annotations:
    controller-gen.kubebuilder.io/version: v0.18.0
  creationTimestamp: "2026-04-04T02:16:58Z"
  generation: 1
  name: heats.heat.openstack.org
  resourceVersion: "38609"
  uid: 6e97faf0-808e-46b2-8156-d06c800d40e6
spec:
  conversion:
    strategy: None
  group: heat.openstack.org
  names:
    kind: Heat
    listKind: HeatList
    plural: heats
    singular: heat
  scope: Namespaced
  versions:
  - additionalPrinterColumns:
    - description: Status
      jsonPath: .status.conditions[0].status
      name: Status
      type: string
    - description: Message
      jsonPath: .status.conditions[0].message
      name: Message
      type: string
    name: v1beta1
    schema:
      openAPIV3Schema:
        description: Heat is the Schema for the heats API
        properties:
          apiVersion:
            description: |-
              APIVersion defines the versioned schema of this representation of an object.
              Servers should convert recognized schemas to the latest internal value, and
              may reject unrecognized values.
              More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
            type: string
          kind:
            description: |-
              Kind is a string value representing the REST resource this object represents.
              Servers may infer this from the endpoint the client submits requests to.
              Cannot be updated.
              In CamelCase.
              More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
            type: string
          metadata:
            type: object
          spec:
            description: HeatSpec defines the desired state of Heat
            properties:
              apiTimeout:
                default: 600
                description: APITimeout for Route and Apache
                minimum: 60
                type: integer
              auth:
                description: Auth - Parameters related to authentication
                properties:
                  applicationCredentialSecret:
                    description: ApplicationCredentialSecret - Secret containing Application
                      Credential ID and Secret
                    type: string
                type: object
              customServiceConfig:
                description: |-
                  CustomServiceConfig - customize the service config using this parameter to change service defaults,
                  or overwrite rendered information using raw OpenStack config format. The content gets added to
                  to /etc/heat/heat.conf.d directory as 01-custom.conf file.
                type: string
              customServiceConfigSecrets:
                description: |-
                  CustomServiceConfigSecrets - customize the service config using this parameter to specify Secrets
                  that contain sensitive service config data. The content of each Secret gets added to the
                  /etc/heat/heat.conf.d directory as a custom config file.
                items:
                  type: string
                type: array
              databaseAccount:
                default: heat
                description: DatabaseAccount - optional MariaDBAccount used for heat
                  DB, defaults to heat.
                type: string
              databaseInstance:
                default: openstack
                description: |-
                  MariaDB instance name.
                  Right now required by the maridb-operator to get the credentials from the instance to create the DB.
                  Might not be required in future.
                type: string
              dbPurge:
                description: DBPurge defines parameters for the database purge CronJob
                properties:
                  age:
                    default: 30
                    description: Age is the DBPurgeAge parameter and indicates the
                      number of days of purging DB records
                    minimum: 1
                    type: integer
                  schedule:
                    default: 1 0 * * *
                    description: Schedule defines the crontab format string to schedule
                      the DBPurge cronJob
                    type: string
                type: object
              defaultConfigOverwrite:
                additionalProperties:
                  type: string
                description: |-
                  ConfigOverwrite - interface to overwrite default config files like e.g. policy.json.
                  But can also be used to add additional files. Those get added to the service config dir in /etc/<service> .
                type: object
              extraMounts:
                description: ExtraMounts containing files and plugins
                items:
                  description: |-
                    HeatExtraVolMounts exposes additional parameters processed by the heat-operator
                    and defines the common VolMounts structure provided by the main storage module
                  properties:
                    extraVol:
                      items:
                        description: |-
                          VolMounts is the data structure used to expose Volumes and Mounts that can
                          be added to a pod according to the defined Propagation policy
                        properties:
                          extraVolType:
                            description: Label associated to a given extraMount
                            type: string
                          mounts:
                            items:
                              description: VolumeMount describes a mounting of a Volume
                                within a container.
                              properties:
                                mountPath:
                                  description: |-
                                    Path within the container at which the volume should be mounted.  Must
                                    not contain ':'.
                                  type: string
                                mountPropagation:
                                  description: |-
                                    mountPropagation determines how mounts are propagated from the host
                                    to container and the other way around.
                                    When not set, MountPropagationNone is used.
                                    This field is beta in 1.10.
                                    When RecursiveReadOnly is set to IfPossible or to Enabled, MountPropagation must be None or unspecified
                                    (which defaults to None).
                                  type: string
                                name:
                                  description: This must match the Name of a Volume.
                                  type: string
                                readOnly:
                                  description: |-
                                    Mounted read-only if true, read-write otherwise (false or unspecified).
                                    Defaults to false.
                                  type: boolean
                                recursiveReadOnly:
                                  description: |-
                                    RecursiveReadOnly specifies whether read-only mounts should be handled
                                    recursively.

                                    If ReadOnly is false, this field has no meaning and must be unspecified.

                                    If ReadOnly is true, and this field is set to Disabled, the mount is not made
                                    recursively read-only.  If this field is set to IfPossible, the mount is made
                                    recursively read-only, if it is supported by the container runtime.  If this
                                    field is set to Enabled, the mount is made recursively read-only if it is
                                    supported by the container runtime, otherwise the pod will not be started and
                                    an error will be generated to indicate the reason.

                                    If this field is set to IfPossible or Enabled, MountPropagation must be set to
                                    None (or be unspecified, which defaults to None).

                                    If this field is not specified, it is treated as an equivalent of Disabled.
                                  type: string
                                subPath:
                                  description: |-
                                    Path within the volume from which the container's volume should be mounted.
                                    Defaults to "" (volume's root).
                                  type: string
                                subPathExpr:
                                  description: |-
                                    Expanded path within the volume from which the container's volume should be mounted.
                                    Behaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container's environment.
                                    Defaults to "" (volume's root).
                                    SubPathExpr and SubPath are mutually exclusive.
                                  type: string
                              required:
                              - mountPath
                              - name
                              type: object
                            type: array
                          propagation:
                            description: Propagation defines which pod should mount
                              the volume
                            items:
                              description: |-
                                PropagationType identifies the Service, Group or instance (e.g. the backend) that
                                receives an Extra Volume that can potentially be mounted
                              type: string
                            type: array
                          volumes:
                            items:
                              description: Volume our slimmed down version of Volume
                              properties:
                                cephfs:
                                  description: cephFS represents a Ceph FS mount on
                                    the host that shares a pod's lifetime
                                  properties:
                                    monitors:
                                      description: |-
                                        monitors is Required: Monitors is a collection of Ceph monitors
                                        More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it
                                      items:
                                        type: string
                                      type: array
                                      x-kubernetes-list-type: atomic
                                    path:
                                      description: 'path is Optional: Used as the
                                        mounted root, rather than the full Ceph tree,
                                        default is /'
                                      type: string
                                    readOnly:
                                      description: |-
                                        readOnly is Optional: Defaults to false (read/write). ReadOnly here will force
                                        the ReadOnly setting in VolumeMounts.
                                        More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it
                                      type: boolean
                                    secretFile:
                                      description: |-
                                        secretFile is Optional: SecretFile is the path to key ring for User, default is /etc/ceph/user.secret
                                        More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it
                                      type: string
                                    secretRef:
                                      description: |-
                                        secretRef is Optional: SecretRef is reference to the authentication secret for User, default is empty.
                                        More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it
                                      properties:
                                        name:
                                          default: ""
                                          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/working-with-objects/names/#names
                                          type: string
                                      type: object
                                      x-kubernetes-map-type: atomic
                                    user:
                                      description: |-
                                        user is optional: User is the rados user name, default is admin
                                        More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it
                                      type: string
                                  required:
                                  - monitors
                                  type: object
                                configMap:
                                  description: configMap represents a configMap that
                                    should populate this volume
                                  properties:
                                    defaultMode:
                                      description: |-
                                        defaultMode is optional: mode bits used to set permissions on created files by default.
                                        Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511.
                                        YAML accepts both octal and decimal values, JSON requires decimal values for mode bits.
                                        Defaults to 0644.
                                        Directories within the path are not affected by this setting.
                                        This might be in conflict with other options that affect the file
                                        mode, like fsGroup, and the result can be other mode bits set.
                                      format: int32
                                      type: integer
                                    items:
                                      description: |-
                                        items if unspecified, each key-value pair in the Data field of the referenced
                                        ConfigMap will be projected into the volume as a file whose name is the
                                        key and content is the value. If specified, the listed keys will be
                                        projected into the specified paths, and unlisted keys will not be
                                        present. If a key is specified which is not present in the ConfigMap,
                                        the volume setup will error unless it is marked optional. Paths must be
                                        relative and may not contain the '..' path or start with '..'.
                                      items:
                                        description: Maps a string key to a path within
                                          a volume.
                                        properties:
                                          key:
                                            description: key is the key to project.
                                            type: string
                                          mode:
                                            description: |-
                                              mode is Optional: mode bits used to set permissions on this file.
                                              Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511.
                                              YAML accepts both octal and decimal values, JSON requires decimal values for mode bits.
                                              If not specified, the volume defaultMode will be used.
                                              This might be in conflict with other options that affect the file
                                              mode, like fsGroup, and the result can be other mode bits set.
                                            format: int32
                                            type: integer
                                          path:
                                            description: |-
                                              path is the relative path of the file to map the key to.
                                              May not be an absolute path.
                                              May not contain the path element '..'.
                                              May not start with the string '..'.
                                            type: string
                                        required:
                                        - key
                                        - path
                                        type: object
                                      type: array
                                      x-kubernetes-list-type: atomic
                                    name:
                                      default: ""
                                      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/working-with-objects/names/#names
                                      type: string
                                    optional:
                                      description: optional specify whether the ConfigMap
                                        or its keys must be defined
                                      type: boolean
                                  type: object
                                  x-kubernetes-map-type: atomic
                                csi:
                                  description: csi (Container Storage Interface) represents
                                    ephemeral storage that is handled by certain external
                                    CSI drivers (Beta feature).
                                  properties:
                                    driver:
                                      description: |-
                                        driver is the name of the CSI driver that handles this volume.
                                        Consult with your admin for the correct name as registered in the cluster.
                                      type: string
                                    fsType:
                                      description: |-
                                        fsType to mount. Ex. "ext4", "xfs", "ntfs".
                                        If not provided, the empty value is passed to the associated CSI driver
                                        which will determine the default filesystem to apply.
                                      type: string
                                    nodePublishSecretRef:
                                      description: |-
                                        nodePublishSecretRef is a reference to the secret object containing
                                        sensitive information to pass to the CSI driver to complete the CSI
                                        NodePublishVolume and NodeUnpublishVolume calls.
                                        This field is optional, and  may be empty if no secret is required. If the
                                        secret object contains more than one secret, all secret references are passed.
                                      properties:
                                        name:
                                          default: ""
                                          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/working-with-objects/names/#names
                                          type: string
                                      type: object
                                      x-kubernetes-map-type: atomic
                                    readOnly:
                                      description: |-
                                        readOnly specifies a read-only configuration for the volume.
                                        Defaults to false (read/write).
                                      type: boolean
                                    volumeAttributes:
                                      additionalProperties:
                                        type: string
                                      description: |-
                                        volumeAttributes stores driver-specific properties that are passed to the CSI
                                        driver. Consult your driver's documentation for supported values.
                                      type: object
                                  required:
                                  - driver
                                  type: object
                                downwardAPI:
                                  description: downwardAPI represents downward API
                                    about the pod that should populate this volume
                                  properties:
                                    defaultMode:
                                      description: |-
                                        Optional: mode bits to use on created files by default. Must be a
                                        Optional: mode bits used to set permissions on created files by default.
                                        Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511.
                                        YAML accepts both octal and decimal values, JSON requires decimal values for mode bits.
                                        Defaults to 0644.
                                        Directories within the path are not affected by this setting.
                                        This might be in conflict with other options that affect the file
                                        mode, like fsGroup, and the result can be other mode bits set.
                                      format: int32
                                      type: integer
                                    items:
                                      description: Items is a list of downward API
                                        volume file
                                      items:
                                        description: DownwardAPIVolumeFile represents
                                          information to create the file containing
                                          the pod field
                                        properties:
                                          fieldRef:
                                            description: 'Required: Selects a field
                                              of the pod: only annotations, labels,
                                              name, namespace and uid are supported.'
                                            properties:
                                              apiVersion:
                                                description: Version of the schema
                                                  the FieldPath is written in terms
                                                  of, defaults to "v1".
                                                type: string
                                              fieldPath:
                                                description: Path of the field to
                                                  select in the specified API version.
                                                type: string
                                            required:
                                            - fieldPath
                                            type: object
                                            x-kubernetes-map-type: atomic
                                          mode:
                                            description: |-
                                              Optional: mode bits used to set permissions on this file, must be an octal value
                                              between 0000 and 0777 or a decimal value between 0 and 511.
                                              YAML accepts both octal and decimal values, JSON requires decimal values for mode bits.
                                              If not specified, the volume defaultMode will be used.
                                              This might be in conflict with other options that affect the file
                                              mode, like fsGroup, and the result can be other mode bits set.
                                            format: int32
                                            type: integer
                                          path:
                                            description: 'Required: Path is  the relative
                                              path name of the file to be created.
                                              Must not be absolute or contain the
                                              ''..'' path. Must be utf-8 encoded.
                                              The first item of the relative path
                                              must not start with ''..'''
                                            type: string
                                          resourceFieldRef:
                                            description: |-
                                              Selects a resource of the container: only resources limits and requests
                                              (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.
                                            properties:
                                              containerName:
                                                description: 'Container name: required
                                                  for volumes, optional for env vars'
                                                type: string
                                              divisor:
                                                anyOf:
                                                - type: integer
                                                - type: string
                                                description: Specifies the output
                                                  format of the exposed resources,
                                                  defaults to "1"
                                                pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                                                x-kubernetes-int-or-string: true
                                              resource:
                                                description: 'Required: resource to
                                                  select'
                                                type: string
                                            required:
                                            - resource
                                            type: object
                                            x-kubernetes-map-type: atomic
                                        required:
                                        - path
                                        type: object
                                      type: array
                                      x-kubernetes-list-type: atomic
                                  type: object
                                emptyDir:
                                  description: |-
                                    emptyDir represents a temporary directory that shares a pod's lifetime.
                                    More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir
                                  properties:
                                    medium:
                                      description: |-
                                        medium represents what type of storage medium should back this directory.
                                        The default is "" which means to use the node's default medium.
                                        Must be an empty string (default) or Memory.
                                        More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir
                                      type: string
                                    sizeLimit:
                                      anyOf:
                                      - type: integer
                                      - type: string
                                      description: |-
                                        sizeLimit is the total amount of local storage required for this EmptyDir volume.
                                        The size limit is also applicable for memory medium.
                                        The maximum usage on memory medium EmptyDir would be the minimum value between
                                        the SizeLimit specified here and the sum of memory limits of all containers in a pod.
                                        The default is nil which means that the limit is undefined.
                                        More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir
                                      pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                                      x-kubernetes-int-or-string: true
                                  type: object
                                fc:
                                  description: fc represents a Fibre Channel resource
                                    that is attached to a kubelet's host machine and
                                    then exposed to the pod.
                                  properties:
                                    fsType:
                                      description: |-
                                        fsType is the filesystem type to mount.
                                        Must be a filesystem type supported by the host operating system.
                                        Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
                                      type: string
                                    lun:
                                      description: 'lun is Optional: FC target lun
                                        number'
                                      format: int32
                                      type: integer
                                    readOnly:
                                      description: |-
                                        readOnly is Optional: Defaults to false (read/write). ReadOnly here will force
                                        the ReadOnly setting in VolumeMounts.
                                      type: boolean
                                    targetWWNs:
                                      description: 'targetWWNs is Optional: FC target
                                        worldwide names (WWNs)'
                                      items:
                                        type: string
                                      type: array
                                      x-kubernetes-list-type: atomic
                                    wwids:
                                      description: |-
                                        wwids Optional: FC volume world wide identifiers (wwids)
                                        Either wwids or combination of targetWWNs and lun must be set, but not both simultaneously.
                                      items:
                                        type: string
                                      type: array
                                      x-kubernetes-list-type: atomic
                                  type: object
                                hostPath:
                                  description: |-
                                    Represents a host path mapped into a pod.
                                    Host path volumes do not support ownership management or SELinux relabeling.
                                  properties:
                                    path:
                                      description: |-
                                        path of the directory on the host.
                                        If the path is a symlink, it will follow the link to the real path.
                                        More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath
                                      type: string
                                    type:
                                      description: |-
                                        type for HostPath Volume
                                        Defaults to ""
                                        More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath
                                      type: string
                                  required:
                                  - path
                                  type: object
                                iscsi:
                                  description: |-
                                    iscsi represents an ISCSI Disk resource that is attached to a
                                    kubelet's host machine and then exposed to the pod.
                                    More info: https://examples.k8s.io/volumes/iscsi/README.md
                                  properties:
                                    chapAuthDiscovery:
                                      description: chapAuthDiscovery defines whether
                                        support iSCSI Discovery CHAP authentication
                                      type: boolean
                                    chapAuthSession:
                                      description: chapAuthSession defines whether
                                        support iSCSI Session CHAP authentication
                                      type: boolean
                                    fsType:
                                      description: |-
                                        fsType is the filesystem type of the volume that you want to mount.
                                        Tip: Ensure that the filesystem type is supported by the host operating system.
                                        Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
                                        More info: https://kubernetes.io/docs/concepts/storage/volumes#iscsi
                                      type: string
                                    initiatorName:
                                      description: |-
                                        initiatorName is the custom iSCSI Initiator Name.
                                        If initiatorName is specified with iscsiInterface simultaneously, new iSCSI interface
                                        <target portal>:<volume name> will be created for the connection.
                                      type: string
                                    iqn:
                                      description: iqn is the target iSCSI Qualified
                                        Name.
                                      type: string
                                    iscsiInterface:
                                      default: default
                                      description: |-
                                        iscsiInterface is the interface Name that uses an iSCSI transport.
                                        Defaults to 'default' (tcp).
                                      type: string
                                    lun:
                                      description: lun represents iSCSI Target Lun
                                        number.
                                      format: int32
                                      type: integer
                                    portals:
                                      description: |-
                                        portals is the iSCSI Target Portal List. The portal is either an IP or ip_addr:port if the port
                                        is other than default (typically TCP ports 860 and 3260).
                                      items:
                                        type: string
                                      type: array
                                      x-kubernetes-list-type: atomic
                                    readOnly:
                                      description: |-
                                        readOnly here will force the ReadOnly setting in VolumeMounts.
                                        Defaults to false.
                                      type: boolean
                                    secretRef:
                                      description: secretRef is the CHAP Secret for
                                        iSCSI target and initiator authentication
                                      properties:
                                        name:
                                          default: ""
                                          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/working-with-objects/names/#names
                                          type: string
                                      type: object
                                      x-kubernetes-map-type: atomic
                                    targetPortal:
                                      description: |-
                                        targetPortal is iSCSI Target Portal. The Portal is either an IP or ip_addr:port if the port
                                        is other than default (typically TCP ports 860 and 3260).
                                      type: string
                                  required:
                                  - iqn
                                  - lun
                                  - targetPortal
                                  type: object
                                name:
                                  description: Name of the volume
                                  type: string
                                nfs:
                                  description: |-
                                    nfs represents an NFS mount on the host that shares a pod's lifetime
                                    More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs
                                  properties:
                                    path:
                                      description: |-
                                        path that is exported by the NFS server.
                                        More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs
                                      type: string
                                    readOnly:
                                      description: |-
                                        readOnly here will force the NFS export to be mounted with read-only permissions.
                                        Defaults to false.
                                        More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs
                                      type: boolean
                                    server:
                                      description: |-
                                        server is the hostname or IP address of the NFS server.
                                        More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs
                                      type: string
                                  required:
                                  - path
                                  - server
                                  type: object
                                persistentVolumeClaim:
                                  description: |-
                                    persistentVolumeClaimVolumeSource represents a reference to a
                                    PersistentVolumeClaim in the same namespace.
                                    More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims
                                  properties:
                                    claimName:
                                      description: |-
                                        claimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume.
                                        More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims
                                      type: string
                                    readOnly:
                                      description: |-
                                        readOnly Will force the ReadOnly setting in VolumeMounts.
                                        Default false.
                                      type: boolean
                                  required:
                                  - claimName
                                  type: object
                                projected:
                                  description: projected items for all in one resources
                                    secrets, configmaps, and downward API
                                  properties:
                                    defaultMode:
                                      description: |-
                                        defaultMode are the mode bits used to set permissions on created files by default.
                                        Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511.
                                        YAML accepts both octal and decimal values, JSON requires decimal values for mode bits.
                                        Directories within the path are not affected by this setting.
                                        This might be in conflict with other options that affect the file
                                        mode, like fsGroup, and the result can be other mode bits set.
                                      format: int32
                                      type: integer
                                    sources:
                                      description: |-
                                        sources is the list of volume projections. Each entry in this list
                                        handles one source.
                                      items:
                                        description: |-
                                          Projection that may be projected along with other supported volume types.
                                          Exactly one of these fields must be set.
                                        properties:
                                          clusterTrustBundle:
                                            description: |-
                                              ClusterTrustBundle allows a pod to access the `.spec.trustBundle` field
                                              of ClusterTrustBundle objects in an auto-updating file.

                                              Alpha, gated by the ClusterTrustBundleProjection feature gate.

                                              ClusterTrustBundle objects can either be selected by name, or by the
                                              combination of signer name and a label selector.

                                              Kubelet performs aggressive normalization of the PEM contents written
                                              into the pod filesystem.  Esoteric PEM features such as inter-block
                                              comments and block headers are stripped.  Certificates are deduplicated.
                                              The ordering of certificates within the file is arbitrary, and Kubelet
                                              may change the order over time.
                                            properties:
                                              labelSelector:
                                                description: |-
                                                  Select all ClusterTrustBundles that match this label selector.  Only has
                                                  effect if signerName is set.  Mutually-exclusive with name.  If unset,
                                                  interpreted as "match nothing".  If set but empty, interpreted as "match
                                                  everything".
                                                properties:
                                                  matchExpressions:
                                                    description: matchExpressions
                                                      is a list of label selector
                                                      requirements. The requirements
                                                      are ANDed.
                                                    items:
                                                      description: |-
                                                        A label selector requirement is a selector that contains values, a key, and an operator that
                                                        relates the key and values.
                                                      properties:
                                                        key:
                                                          description: key is the
                                                            label key that the selector
                                                            applies to.
                                                          type: string
                                                        operator:
                                                          description: |-
                                                            operator represents a key's relationship to a set of values.
                                                            Valid operators are In, NotIn, Exists and DoesNotExist.
                                                          type: string
                                                        values:
                                                          description: |-
                                                            values is an array of string values. If the operator is In or NotIn,
                                                            the values array must be non-empty. If the operator is Exists or DoesNotExist,
                                                            the values array must be empty. This array is replaced during a strategic
                                                            merge patch.
                                                          items:
                                                            type: string
                                                          type: array
                                                          x-kubernetes-list-type: atomic
                                                      required:
                                                      - key
                                                      - operator
                                                      type: object
                                                    type: array
                                                    x-kubernetes-list-type: atomic
                                                  matchLabels:
                                                    additionalProperties:
                                                      type: string
                                                    description: |-
                                                      matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
                                                      map is equivalent to an element of matchExpressions, whose key field is "key", the
                                                      operator is "In", and the values array contains only "value". The requirements are ANDed.
                                                    type: object
                                                type: object
                                                x-kubernetes-map-type: atomic
                                              name:
                                                description: |-
                                                  Select a single ClusterTrustBundle by object name.  Mutually-exclusive
                                                  with signerName and labelSelector.
                                                type: string
                                              optional:
                                                description: |-
                                                  If true, don't block pod startup if the referenced ClusterTrustBundle(s)
                                                  aren't available.  If using name, then the named ClusterTrustBundle is
                                                  allowed not to exist.  If using signerName, then the combination of
                                                  signerName and labelSelector is allowed to match zero
                                                  ClusterTrustBundles.
                                                type: boolean
                                              path:
                                                description: Relative path from the
                                                  volume root to write the bundle.
                                                type: string
                                              signerName:
                                                description: |-
                                                  Select all ClusterTrustBundles that match this signer name.
                                                  Mutually-exclusive with name.  The contents of all selected
                                                  ClusterTrustBundles will be unified and deduplicated.
                                                type: string
                                            required:
                                            - path
                                            type: object
                                          configMap:
                                            description: configMap information about
                                              the configMap data to project
                                            properties:
                                              items:
                                                description: |-
                                                  items if unspecified, each key-value pair in the Data field of the referenced
                                                  ConfigMap will be projected into the volume as a file whose name is the
                                                  key and content is the value. If specified, the listed keys will be
                                                  projected into the specified paths, and unlisted keys will not be
                                                  present. If a key is specified which is not present in the ConfigMap,
                                                  the volume setup will error unless it is marked optional. Paths must be
                                                  relative and may not contain the '..' path or start with '..'.
                                                items:
                                                  description: Maps a string key to
                                                    a path within a volume.
                                                  properties:
                                                    key:
                                                      description: key is the key
                                                        to project.
                                                      type: string
                                                    mode:
                                                      description: |-
                                                        mode is Optional: mode bits used to set permissions on this file.
                                                        Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511.
                                                        YAML accepts both octal and decimal values, JSON requires decimal values for mode bits.
                                                        If not specified, the volume defaultMode will be used.
                                                        This might be in conflict with other options that affect the file
                                                        mode, like fsGroup, and the result can be other mode bits set.
                                                      format: int32
                                                      type: integer
                                                    path:
                                                      description: |-
                                                        path is the relative path of the file to map the key to.
                                                        May not be an absolute path.
                                                        May not contain the path element '..'.
                                                        May not start with the string '..'.
                                                      type: string
                                                  required:
                                                  - key
                                                  - path
                                                  type: object
                                                type: array
                                                x-kubernetes-list-type: atomic
                                              name:
                                                default: ""
                                                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/working-with-objects/names/#names
                                                type: string
                                              optional:
                                                description: optional specify whether
                                                  the ConfigMap or its keys must be
                                                  defined
                                                type: boolean
                                            type: object
                                            x-kubernetes-map-type: atomic
                                          downwardAPI:
                                            description: downwardAPI information about
                                              the downwardAPI data to project
                                            properties:
                                              items:
                                                description: Items is a list of DownwardAPIVolume
                                                  file
                                                items:
                                                  description: DownwardAPIVolumeFile
                                                    represents information to create
                                                    the file containing the pod field
                                                  properties:
                                                    fieldRef:
                                                      description: 'Required: Selects
                                                        a field of the pod: only annotations,
                                                        labels, name, namespace and
                                                        uid are supported.'
                                                      properties:
                                                        apiVersion:
                                                          description: Version of
                                                            the schema the FieldPath
                                                            is written in terms of,
                                                            defaults to "v1".
                                                          type: string
                                                        fieldPath:
                                                          description: Path of the
                                                            field to select in the
                                                            specified API version.
                                                          type: string
                                                      required:
                                                      - fieldPath
                                                      type: object
                                                      x-kubernetes-map-type: atomic
                                                    mode:
                                                      description: |-
                                                        Optional: mode bits used to set permissions on this file, must be an octal value
                                                        between 0000 and 0777 or a decimal value between 0 and 511.
                                                        YAML accepts both octal and decimal values, JSON requires decimal values for mode bits.
                                                        If not specified, the volume defaultMode will be used.
                                                        This might be in conflict with other options that affect the file
                                                        mode, like fsGroup, and the result can be other mode bits set.
                                                      format: int32
                                                      type: integer
                                                    path:
                                                      description: 'Required: Path
                                                        is  the relative path name
                                                        of the file to be created.
                                                        Must not be absolute or contain
                                                        the ''..'' path. Must be utf-8
                                                        encoded. The first item of
                                                        the relative path must not
                                                        start with ''..'''
                                                      type: string
                                                    resourceFieldRef:
                                                      description: |-
                                                        Selects a resource of the container: only resources limits and requests
                                                        (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.
                                                      properties:
                                                        containerName:
                                                          description: 'Container
                                                            name: required for volumes,
                                                            optional for env vars'
                                                          type: string
                                                        divisor:
                                                          anyOf:
                                                          - type: integer
                                                          - type: string
                                                          description: Specifies the
                                                            output format of the exposed
                                                            resources, defaults to
                                                            "1"
                                                          pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                                                          x-kubernetes-int-or-string: true
                                                        resource:
                                                          description: 'Required:
                                                            resource to select'
                                                          type: string
                                                      required:
                                                      - resource
                                                      type: object
                                                      x-kubernetes-map-type: atomic
                                                  required:
                                                  - path
                                                  type: object
                                                type: array
                                                x-kubernetes-list-type: atomic
                                            type: object
                                          secret:
                                            description: secret information about
                                              the secret data to project
                                            properties:
                                              items:
                                                description: |-
                                                  items if unspecified, each key-value pair in the Data field of the referenced
                                                  Secret will be projected into the volume as a file whose name is the
                                                  key and content is the value. If specified, the listed keys will be
                                                  projected into the specified paths, and unlisted keys will not be
                                                  present. If a key is specified which is not present in the Secret,
                                                  the volume setup will error unless it is marked optional. Paths must be
                                                  relative and may not contain the '..' path or start with '..'.
                                                items:
                                                  description: Maps a string key to
                                                    a path within a volume.
                                                  properties:
                                                    key:
                                                      description: key is the key
                                                        to project.
                                                      type: string
                                                    mode:
                                                      description: |-
                                                        mode is Optional: mode bits used to set permissions on this file.
                                                        Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511.
                                                        YAML accepts both octal and decimal values, JSON requires decimal values for mode bits.
                                                        If not specified, the volume defaultMode will be used.
                                                        This might be in conflict with other options that affect the file
                                                        mode, like fsGroup, and the result can be other mode bits set.
                                                      format: int32
                                                      type: integer
                                                    path:
                                                      description: |-
                                                        path is the relative path of the file to map the key to.
                                                        May not be an absolute path.
                                                        May not contain the path element '..'.
                                                        May not start with the string '..'.
                                                      type: string
                                                  required:
                                                  - key
                                                  - path
                                                  type: object
                                                type: array
                                                x-kubernetes-list-type: atomic
                                              name:
                                                default: ""
                                                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/working-with-objects/names/#names
                                                type: string
                                              optional:
                                                description: optional field specify
                                                  whether the Secret or its key must
                                                  be defined
                                                type: boolean
                                            type: object
                                            x-kubernetes-map-type: atomic
                                          serviceAccountToken:
                                            description: serviceAccountToken is information
                                              about the serviceAccountToken data to
                                              project
                                            properties:
                                              audience:
                                                description: |-
                                                  audience is the intended audience of the token. A recipient of a token
                                                  must identify itself with an identifier specified in the audience of the
                                                  token, and otherwise should reject the token. The audience defaults to the
                                                  identifier of the apiserver.
                                                type: string
                                              expirationSeconds:
                                                description: |-
                                                  expirationSeconds is the requested duration of validity of the service
                                                  account token. As the token approaches expiration, the kubelet volume
                                                  plugin will proactively rotate the service account token. The kubelet will
                                                  start trying to rotate the token if the token is older than 80 percent of
                                                  its time to live or if the token is older than 24 hours.Defaults to 1 hour
                                                  and must be at least 10 minutes.
                                                format: int64
                                                type: integer
                                              path:
                                                description: |-
                                                  path is the path relative to the mount point of the file to project the
                                                  token into.
                                                type: string
                                            required:
                                            - path
                                            type: object
                                        type: object
                                      type: array
                                      x-kubernetes-list-type: atomic
                                  type: object
                                scaleIO:
                                  description: scaleIO represents a ScaleIO persistent
                                    volume attached and mounted on Kubernetes nodes.
                                  properties:
                                    fsType:
                                      default: xfs
                                      description: |-
                                        fsType is the filesystem type to mount.
                                        Must be a filesystem type supported by the host operating system.
                                        Ex. "ext4", "xfs", "ntfs".
                                        Default is "xfs".
                                      type: string
                                    gateway:
                                      description: gateway is the host address of
                                        the ScaleIO API Gateway.
                                      type: string
                                    protectionDomain:
                                      description: protectionDomain is the name of
                                        the ScaleIO Protection Domain for the configured
                                        storage.
                                      type: string
                                    readOnly:
                                      description: |-
                                        readOnly Defaults to false (read/write). ReadOnly here will force
                                        the ReadOnly setting in VolumeMounts.
                                      type: boolean
                                    secretRef:
                                      description: |-
                                        secretRef references to the secret for ScaleIO user and other
                                        sensitive information. If this is not provided, Login operation will fail.
                                      properties:
                                        name:
                                          default: ""
                                          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/working-with-objects/names/#names
                                          type: string
                                      type: object
                                      x-kubernetes-map-type: atomic
                                    sslEnabled:
                                      description: sslEnabled Flag enable/disable
                                        SSL communication with Gateway, default false
                                      type: boolean
                                    storageMode:
                                      default: ThinProvisioned
                                      description: |-
                                        storageMode indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned.
                                        Default is ThinProvisioned.
                                      type: string
                                    storagePool:
                                      description: storagePool is the ScaleIO Storage
                                        Pool associated with the protection domain.
                                      type: string
                                    system:
                                      description: system is the name of the storage
                                        system as configured in ScaleIO.
                                      type: string
                                    volumeName:
                                      description: |-
                                        volumeName is the name of a volume already created in the ScaleIO system
                                        that is associated with this volume source.
                                      type: string
                                  required:
                                  - gateway
                                  - secretRef
                                  - system
                                  type: object
                                secret:
                                  description: |-
                                    secret represents a secret that should populate this volume.
                                    More info: https://kubernetes.io/docs/concepts/storage/volumes#secret
                                  properties:
                                    defaultMode:
                                      description: |-
                                        defaultMode is Optional: mode bits used to set permissions on created files by default.
                                        Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511.
                                        YAML accepts both octal and decimal values, JSON requires decimal values
                                        for mode bits. Defaults to 0644.
                                        Directories within the path are not affected by this setting.
                                        This might be in conflict with other options that affect the file
                                        mode, like fsGroup, and the result can be other mode bits set.
                                      format: int32
                                      type: integer
                                    items:
                                      description: |-
                                        items If unspecified, each key-value pair in the Data field of the referenced
                                        Secret will be projected into the volume as a file whose name is the
                                        key and content is the value. If specified, the listed keys will be
                                        projected into the specified paths, and unlisted keys will not be
                                        present. If a key is specified which is not present in the Secret,
                                        the volume setup will error unless it is marked optional. Paths must be
                                        relative and may not contain the '..' path or start with '..'.
                                      items:
                                        description: Maps a string key to a path within
                                          a volume.
                                        properties:
                                          key:
                                            description: key is the key to project.
                                            type: string
                                          mode:
                                            description: |-
                                              mode is Optional: mode bits used to set permissions on this file.
                                              Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511.
                                              YAML accepts both octal and decimal values, JSON requires decimal values for mode bits.
                                              If not specified, the volume defaultMode will be used.
                                              This might be in conflict with other options that affect the file
                                              mode, like fsGroup, and the result can be other mode bits set.
                                            format: int32
                                            type: integer
                                          path:
                                            description: |-
                                              path is the relative path of the file to map the key to.
                                              May not be an absolute path.
                                              May not contain the path element '..'.
                                              May not start with the string '..'.
                                            type: string
                                        required:
                                        - key
                                        - path
                                        type: object
                                      type: array
                                      x-kubernetes-list-type: atomic
                                    optional:
                                      description: optional field specify whether
                                        the Secret or its keys must be defined
                                      type: boolean
                                    secretName:
                                      description: |-
                                        secretName is the name of the secret in the pod's namespace to use.
                                        More info: https://kubernetes.io/docs/concepts/storage/volumes#secret
                                      type: string
                                  type: object
                                storageos:
                                  description: storageOS represents a StorageOS volume
                                    attached and mounted on Kubernetes nodes.
                                  properties:
                                    fsType:
                                      description: |-
                                        fsType is the filesystem type to mount.
                                        Must be a filesystem type supported by the host operating system.
                                        Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
                                      type: string
                                    readOnly:
                                      description: |-
                                        readOnly defaults to false (read/write). ReadOnly here will force
                                        the ReadOnly setting in VolumeMounts.
                                      type: boolean
                                    secretRef:
                                      description: |-
                                        secretRef specifies the secret to use for obtaining the StorageOS API
                                        credentials.  If not specified, default values will be attempted.
                                      properties:
                                        name:
                                          default: ""
                                          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/working-with-objects/names/#names
                                          type: string
                                      type: object
                                      x-kubernetes-map-type: atomic
                                    volumeName:
                                      description: |-
                                        volumeName is the human-readable name of the StorageOS volume.  Volume
                                        names are only unique within a namespace.
                                      type: string
                                    volumeNamespace:
                                      description: |-
                                        volumeNamespace specifies the scope of the volume within StorageOS.  If no
                                        namespace is specified then the Pod's namespace will be used.  This allows the
                                        Kubernetes name scoping to be mirrored within StorageOS for tighter integration.
                                        Set VolumeName to any name to override the default behaviour.
                                        Set to "default" if you are not using namespaces within StorageOS.
                                        Namespaces that do not pre-exist within StorageOS will be created.
                                      type: string
                                  type: object
                              required:
                              - name
                              type: object
                            type: array
                        required:
                        - mounts
                        - volumes
                        type: object
                      type: array
                    name:
                      type: string
                    region:
                      type: string
                  required:
                  - extraVol
                  type: object
                type: array
              heatAPI:
                description: HeatAPI - Spec definition for the API service of this
                  Heat deployment
                properties:
                  containerImage:
                    description: ContainerImage - Container Image URL
                    type: string
                  customServiceConfig:
                    description: |-
                      CustomServiceConfig - customize the service config using this parameter to change service defaults,
                      or overwrite rendered information using raw OpenStack config format. The content gets added to
                      to /etc/heat/heat.conf.d directory as 02-custom-service.conf file.
                    type: string
                  customServiceConfigSecrets:
                    description: |-
                      CustomServiceConfigSecrets - customize the service config using this parameter to specify Secrets
                      that contain sensitive service config data. The content of each Secret gets added to the
                      /etc/heat/heat.conf.d directory as a custom config file.
                    items:
                      type: string
                    type: array
                  defaultConfigOverwrite:
                    additionalProperties:
                      type: string
                    description: |-
                      ConfigOverwrite - interface to overwrite default config files like e.g. policy.json.
                      But can also be used to add additional files. Those get added to the service config dir in /etc/<service> .
                    type: object
                  nodeSelector:
                    additionalProperties:
                      type: string
                    description: NodeSelector to target subset of worker nodes for
                      running the service
                    type: object
                  override:
                    description: Override, provides the ability to override the generated
                      manifest of several child resources.
                    properties:
                      service:
                        additionalProperties:
                          description: |-
                            RoutedOverrideSpec - a routed service override configuration for the Service created to serve traffic
                            to the cluster. Allows for the manifest of the created Service to be overwritten with custom configuration.
                          properties:
                            endpointURL:
                              type: string
                            metadata:
                              description: |-
                                EmbeddedLabelsAnnotations is an embedded subset of the fields included in k8s.io/apimachinery/pkg/apis/meta/v1.ObjectMeta.
                                Only labels and annotations are included.
                              properties:
                                annotations:
                                  additionalProperties:
                                    type: string
                                  description: |-
                                    Annotations is an unstructured key value map stored with a resource that may be
                                    set by external tools to store and retrieve arbitrary metadata. They are not
                                    queryable and should be preserved when modifying objects.
                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/
                                  type: object
                                labels:
                                  additionalProperties:
                                    type: string
                                  description: |-
                                    Map of string keys and values that can be used to organize and categorize
                                    (scope and select) objects. May match selectors of replication controllers
                                    and services.
                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/
                                  type: object
                              type: object
                            spec:
                              description: |-
                                OverrideServiceSpec is a subset of the fields included in https://pkg.go.dev/k8s.io/api@v0.26.6/core/v1#ServiceSpec
                                Limited to Type, SessionAffinity, LoadBalancerSourceRanges, ExternalName, ExternalTrafficPolicy, SessionAffinityConfig,
                                IPFamilyPolicy, LoadBalancerClass and InternalTrafficPolicy
                              properties:
                                externalName:
                                  description: |-
                                    externalName is the external reference that discovery mechanisms will
                                    return as an alias for this service (e.g. a DNS CNAME record). No
                                    proxying will be involved.  Must be a lowercase RFC-1123 hostname
                                    (https://tools.ietf.org/html/rfc1123) and requires `type` to be "ExternalName".
                                  type: string
                                externalTrafficPolicy:
                                  description: |-
                                    externalTrafficPolicy describes how nodes distribute service traffic they
                                    receive on one of the Service's "externally-facing" addresses (NodePorts,
                                    ExternalIPs, and LoadBalancer IPs). If set to "Local", the proxy will configure
                                    the service in a way that assumes that external load balancers will take care
                                    of balancing the service traffic between nodes, and so each node will deliver
                                    traffic only to the node-local endpoints of the service, without masquerading
                                    the client source IP. (Traffic mistakenly sent to a node with no endpoints will
                                    be dropped.) The default value, "Cluster", uses the standard behavior of
                                    routing to all endpoints evenly (possibly modified by topology and other
                                    features). Note that traffic sent to an External IP or LoadBalancer IP from
                                    within the cluster will always get "Cluster" semantics, but clients sending to
                                    a NodePort from within the cluster may need to take traffic policy into account
                                    when picking a node.
                                  type: string
                                internalTrafficPolicy:
                                  description: |-
                                    InternalTrafficPolicy describes how nodes distribute service traffic they
                                    receive on the ClusterIP. If set to "Local", the proxy will assume that pods
                                    only want to talk to endpoints of the service on the same node as the pod,
                                    dropping the traffic if there are no local endpoints. The default value,
                                    "Cluster", uses the standard behavior of routing to all endpoints evenly
                                    (possibly modified by topology and other features).
                                  type: string
                                ipFamilyPolicy:
                                  description: |-
                                    IPFamilyPolicy represents the dual-stack-ness requested or required by
                                    this Service. If there is no value provided, then this field will be set
                                    to SingleStack. Services can be "SingleStack" (a single IP family),
                                    "PreferDualStack" (two IP families on dual-stack configured clusters or
                                    a single IP family on single-stack clusters), or "RequireDualStack"
                                    (two IP families on dual-stack configured clusters, otherwise fail). The
                                    ipFamilies and clusterIPs fields depend on the value of this field. This
                                    field will be wiped when updating a service to type ExternalName.
                                  type: string
                                loadBalancerClass:
                                  description: |-
                                    loadBalancerClass is the class of the load balancer implementation this Service belongs to.
                                    If specified, the value of this field must be a label-style identifier, with an optional prefix,
                                    e.g. "internal-vip" or "example.com/internal-vip". Unprefixed names are reserved for end-users.
                                    This field can only be set when the Service type is 'LoadBalancer'. If not set, the default load
                                    balancer implementation is used, today this is typically done through the cloud provider integration,
                                    but should apply for any default implementation. If set, it is assumed that a load balancer
                                    implementation is watching for Services with a matching class. Any default load balancer
                                    implementation (e.g. cloud providers) should ignore Services that set this field.
                                    This field can only be set when creating or updating a Service to type 'LoadBalancer'.
                                    Once set, it can not be changed. This field will be wiped when a service is updated to a non 'LoadBalancer' type.
                                  type: string
                                loadBalancerSourceRanges:
                                  description: |-
                                    If specified and supported by the platform, this will restrict traffic through the cloud-provider
                                    load-balancer will be restricted to the specified client IPs. This field will be ignored if the
                                    cloud-provider does not support the feature."
                                    More info: https://kubernetes.io/docs/tasks/access-application-cluster/create-external-load-balancer/
                                  items:
                                    type: string
                                  type: array
                                  x-kubernetes-list-type: atomic
                                sessionAffinity:
                                  description: |-
                                    Supports "ClientIP" and "None". Used to maintain session affinity.
                                    Enable client IP based session affinity.
                                    Must be ClientIP or None.
                                    Defaults to None.
                                    More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies
                                  type: string
                                sessionAffinityConfig:
                                  description: sessionAffinityConfig contains the
                                    configurations of session affinity.
                                  properties:
                                    clientIP:
                                      description: clientIP contains the configurations
                                        of Client IP based session affinity.
                                      properties:
                                        timeoutSeconds:
                                          description: |-
                                            timeoutSeconds specifies the seconds of ClientIP type session sticky time.
                                            The value must be >0 && <=86400(for 1 day) if ServiceAffinity == "ClientIP".
                                            Default value is 10800(for 3 hours).
                                          format: int32
                                          type: integer
                                      type: object
                                  type: object
                                type:
                                  description: |-
                                    type determines how the Service is exposed. Defaults to ClusterIP. Valid
                                    options are ExternalName, ClusterIP, NodePort, and LoadBalancer.
                                    "ClusterIP" allocates a cluster-internal IP address for load-balancing
                                    to endpoints. Endpoints are determined by the selector or if that is not
                                    specified, by manual construction of an Endpoints object or
                                    EndpointSlice objects. If clusterIP is "None", no virtual IP is
                                    allocated and the endpoints are published as a set of endpoints rather
                                    than a virtual IP.
                                    "NodePort" builds on ClusterIP and allocates a port on every node which
                                    routes to the same endpoints as the clusterIP.
                                    "LoadBalancer" builds on NodePort and creates an external load-balancer
                                    (if supported in the current cloud) which routes to the same endpoints
                                    as the clusterIP.
                                    "ExternalName" aliases this service to the specified externalName.
                                    Several other fields do not apply to ExternalName services.
                                    More info: https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types
                                  type: string
                              type: object
                          type: object
                        description: |-
                          Override configuration for the Service created to serve traffic to the cluster.
                          The key must be the endpoint type (public, internal)
                        type: object
                    type: object
                  replicas:
                    default: 1
                    description: Replicas -
                    format: int32
                    maximum: 32
                    minimum: 0
                    type: integer
                  resources:
                    description: |-
                      Resources - Compute Resources required by this service (Limits/Requests).
                      https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
                    properties:
                      claims:
                        description: |-
                          Claims lists the names of resources, defined in spec.resourceClaims,
                          that are used by this container.

                          This is an alpha field and requires enabling the
                          DynamicResourceAllocation feature gate.

                          This field is immutable. It can only be set for containers.
                        items:
                          description: ResourceClaim references one entry in PodSpec.ResourceClaims.
                          properties:
                            name:
                              description: |-
                                Name must match the name of one entry in pod.spec.resourceClaims of
                                the Pod where this field is used. It makes that resource available
                                inside a container.
                              type: string
                            request:
                              description: |-
                                Request is the name chosen for a request in the referenced claim.
                                If empty, everything from the claim is made available, otherwise
                                only the result of this request.
                              type: string
                          required:
                          - name
                          type: object
                        type: array
                        x-kubernetes-list-map-keys:
                        - name
                        x-kubernetes-list-type: map
                      limits:
                        additionalProperties:
                          anyOf:
                          - type: integer
                          - type: string
                          pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                          x-kubernetes-int-or-string: true
                        description: |-
                          Limits describes the maximum amount of compute resources allowed.
                          More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
                        type: object
                      requests:
                        additionalProperties:
                          anyOf:
                          - type: integer
                          - type: string
                          pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                          x-kubernetes-int-or-string: true
                        description: |-
                          Requests describes the minimum amount of compute resources required.
                          If Requests is omitted for a container, it defaults to Limits if that is explicitly specified,
                          otherwise to an implementation-defined value. Requests cannot exceed Limits.
                          More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
                        type: object
                    type: object
                  tls:
                    description: TLS - Parameters related to the TLS
                    properties:
                      api:
                        description: API tls type which encapsulates for API services
                        properties:
                          internal:
                            description: Internal GenericService - holds the secret
                              for the internal endpoint
                            properties:
                              secretName:
                                description: SecretName - holding the cert, key for
                                  the service
                                type: string
                            type: object
                          public:
                            description: Public GenericService - holds the secret
                              for the public endpoint
                            properties:
                              secretName:
                                description: SecretName - holding the cert, key for
                                  the service
                                type: string
                            type: object
                        type: object
                      caBundleSecretName:
                        description: CaBundleSecretName - holding the CA certs in
                          a pre-created bundle file
                        type: string
                    type: object
                  topologyRef:
                    description: |-
                      TopologyRef to apply the Topology defined by the associated CR referenced
                      by name
                    properties:
                      name:
                        description: Name - The Topology CR name that the Service
                          references
                        type: string
                      namespace:
                        description: |-
                          Namespace - The Namespace to fetch the Topology CR referenced
                          NOTE: Namespace currently points by default to the same namespace where
                          the Service is deployed. Customizing the namespace is not supported and
                          webhooks prevent editing this field to a value different from the
                          current project
                        type: string
                    type: object
                required:
                - containerImage
                type: object
              heatCfnAPI:
                description: HeatCfnAPI - Spec definition for the CfnAPI service of
                  this Heat deployment
                properties:
                  containerImage:
                    description: ContainerImage - Container Image URL
                    type: string
                  customServiceConfig:
                    description: |-
                      CustomServiceConfig - customize the service config using this parameter to change service defaults,
                      or overwrite rendered information using raw OpenStack config format. The content gets added to
                      to /etc/heat/heat.conf.d directory as 02-custom-service.conf file.
                    type: string
                  customServiceConfigSecrets:
                    description: |-
                      CustomServiceConfigSecrets - customize the service config using this parameter to specify Secrets
                      that contain sensitive service config data. The content of each Secret gets added to the
                      /etc/heat/heat.conf.d directory as a custom config file.
                    items:
                      type: string
                    type: array
                  defaultConfigOverwrite:
                    additionalProperties:
                      type: string
                    description: |-
                      ConfigOverwrite - interface to overwrite default config files like e.g. policy.json.
                      But can also be used to add additional files. Those get added to the service config dir in /etc/<service> .
                    type: object
                  nodeSelector:
                    additionalProperties:
                      type: string
                    description: NodeSelector to target subset of worker nodes for
                      running the service
                    type: object
                  override:
                    description: Override, provides the ability to override the generated
                      manifest of several child resources.
                    properties:
                      service:
                        additionalProperties:
                          description: |-
                            RoutedOverrideSpec - a routed service override configuration for the Service created to serve traffic
                            to the cluster. Allows for the manifest of the created Service to be overwritten with custom configuration.
                          properties:
                            endpointURL:
                              type: string
                            metadata:
                              description: |-
                                EmbeddedLabelsAnnotations is an embedded subset of the fields included in k8s.io/apimachinery/pkg/apis/meta/v1.ObjectMeta.
                                Only labels and annotations are included.
                              properties:
                                annotations:
                                  additionalProperties:
                                    type: string
                                  description: |-
                                    Annotations is an unstructured key value map stored with a resource that may be
                                    set by external tools to store and retrieve arbitrary metadata. They are not
                                    queryable and should be preserved when modifying objects.
                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/
                                  type: object
                                labels:
                                  additionalProperties:
                                    type: string
                                  description: |-
                                    Map of string keys and values that can be used to organize and categorize
                                    (scope and select) objects. May match selectors of replication controllers
                                    and services.
                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/
                                  type: object
                              type: object
                            spec:
                              description: |-
                                OverrideServiceSpec is a subset of the fields included in https://pkg.go.dev/k8s.io/api@v0.26.6/core/v1#ServiceSpec
                                Limited to Type, SessionAffinity, LoadBalancerSourceRanges, ExternalName, ExternalTrafficPolicy, SessionAffinityConfig,
                                IPFamilyPolicy, LoadBalancerClass and InternalTrafficPolicy
                              properties:
                                externalName:
                                  description: |-
                                    externalName is the external reference that discovery mechanisms will
                                    return as an alias for this service (e.g. a DNS CNAME record). No
                                    proxying will be involved.  Must be a lowercase RFC-1123 hostname
                                    (https://tools.ietf.org/html/rfc1123) and requires `type` to be "ExternalName".
                                  type: string
                                externalTrafficPolicy:
                                  description: |-
                                    externalTrafficPolicy describes how nodes distribute service traffic they
                                    receive on one of the Service's "externally-facing" addresses (NodePorts,
                                    ExternalIPs, and LoadBalancer IPs). If set to "Local", the proxy will configure
                                    the service in a way that assumes that external load balancers will take care
                                    of balancing the service traffic between nodes, and so each node will deliver
                                    traffic only to the node-local endpoints of the service, without masquerading
                                    the client source IP. (Traffic mistakenly sent to a node with no endpoints will
                                    be dropped.) The default value, "Cluster", uses the standard behavior of
                                    routing to all endpoints evenly (possibly modified by topology and other
                                    features). Note that traffic sent to an External IP or LoadBalancer IP from
                                    within the cluster will always get "Cluster" semantics, but clients sending to
                                    a NodePort from within the cluster may need to take traffic policy into account
                                    when picking a node.
                                  type: string
                                internalTrafficPolicy:
                                  description: |-
                                    InternalTrafficPolicy describes how nodes distribute service traffic they
                                    receive on the ClusterIP. If set to "Local", the proxy will assume that pods
                                    only want to talk to endpoints of the service on the same node as the pod,
                                    dropping the traffic if there are no local endpoints. The default value,
                                    "Cluster", uses the standard behavior of routing to all endpoints evenly
                                    (possibly modified by topology and other features).
                                  type: string
                                ipFamilyPolicy:
                                  description: |-
                                    IPFamilyPolicy represents the dual-stack-ness requested or required by
                                    this Service. If there is no value provided, then this field will be set
                                    to SingleStack. Services can be "SingleStack" (a single IP family),
                                    "PreferDualStack" (two IP families on dual-stack configured clusters or
                                    a single IP family on single-stack clusters), or "RequireDualStack"
                                    (two IP families on dual-stack configured clusters, otherwise fail). The
                                    ipFamilies and clusterIPs fields depend on the value of this field. This
                                    field will be wiped when updating a service to type ExternalName.
                                  type: string
                                loadBalancerClass:
                                  description: |-
                                    loadBalancerClass is the class of the load balancer implementation this Service belongs to.
                                    If specified, the value of this field must be a label-style identifier, with an optional prefix,
                                    e.g. "internal-vip" or "example.com/internal-vip". Unprefixed names are reserved for end-users.
                                    This field can only be set when the Service type is 'LoadBalancer'. If not set, the default load
                                    balancer implementation is used, today this is typically done through the cloud provider integration,
                                    but should apply for any default implementation. If set, it is assumed that a load balancer
                                    implementation is watching for Services with a matching class. Any default load balancer
                                    implementation (e.g. cloud providers) should ignore Services that set this field.
                                    This field can only be set when creating or updating a Service to type 'LoadBalancer'.
                                    Once set, it can not be changed. This field will be wiped when a service is updated to a non 'LoadBalancer' type.
                                  type: string
                                loadBalancerSourceRanges:
                                  description: |-
                                    If specified and supported by the platform, this will restrict traffic through the cloud-provider
                                    load-balancer will be restricted to the specified client IPs. This field will be ignored if the
                                    cloud-provider does not support the feature."
                                    More info: https://kubernetes.io/docs/tasks/access-application-cluster/create-external-load-balancer/
                                  items:
                                    type: string
                                  type: array
                                  x-kubernetes-list-type: atomic
                                sessionAffinity:
                                  description: |-
                                    Supports "ClientIP" and "None". Used to maintain session affinity.
                                    Enable client IP based session affinity.
                                    Must be ClientIP or None.
                                    Defaults to None.
                                    More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies
                                  type: string
                                sessionAffinityConfig:
                                  description: sessionAffinityConfig contains the
                                    configurations of session affinity.
                                  properties:
                                    clientIP:
                                      description: clientIP contains the configurations
                                        of Client IP based session affinity.
                                      properties:
                                        timeoutSeconds:
                                          description: |-
                                            timeoutSeconds specifies the seconds of ClientIP type session sticky time.
                                            The value must be >0 && <=86400(for 1 day) if ServiceAffinity == "ClientIP".
                                            Default value is 10800(for 3 hours).
                                          format: int32
                                          type: integer
                                      type: object
                                  type: object
                                type:
                                  description: |-
                                    type determines how the Service is exposed. Defaults to ClusterIP. Valid
                                    options are ExternalName, ClusterIP, NodePort, and LoadBalancer.
                                    "ClusterIP" allocates a cluster-internal IP address for load-balancing
                                    to endpoints. Endpoints are determined by the selector or if that is not
                                    specified, by manual construction of an Endpoints object or
                                    EndpointSlice objects. If clusterIP is "None", no virtual IP is
                                    allocated and the endpoints are published as a set of endpoints rather
                                    than a virtual IP.
                                    "NodePort" builds on ClusterIP and allocates a port on every node which
                                    routes to the same endpoints as the clusterIP.
                                    "LoadBalancer" builds on NodePort and creates an external load-balancer
                                    (if supported in the current cloud) which routes to the same endpoints
                                    as the clusterIP.
                                    "ExternalName" aliases this service to the specified externalName.
                                    Several other fields do not apply to ExternalName services.
                                    More info: https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types
                                  type: string
                              type: object
                          type: object
                        description: |-
                          Override configuration for the Service created to serve traffic to the cluster.
                          The key must be the endpoint type (public, internal)
                        type: object
                    type: object
                  replicas:
                    default: 1
                    description: Replicas -
                    format: int32
                    maximum: 32
                    minimum: 0
                    type: integer
                  resources:
                    description: |-
                      Resources - Compute Resources required by this service (Limits/Requests).
                      https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
                    properties:
                      claims:
                        description: |-
                          Claims lists the names of resources, defined in spec.resourceClaims,
                          that are used by this container.

                          This is an alpha field and requires enabling the
                          DynamicResourceAllocation feature gate.

                          This field is immutable. It can only be set for containers.
                        items:
                          description: ResourceClaim references one entry in PodSpec.ResourceClaims.
                          properties:
                            name:
                              description: |-
                                Name must match the name of one entry in pod.spec.resourceClaims of
                                the Pod where this field is used. It makes that resource available
                                inside a container.
                              type: string
                            request:
                              description: |-
                                Request is the name chosen for a request in the referenced claim.
                                If empty, everything from the claim is made available, otherwise
                                only the result of this request.
                              type: string
                          required:
                          - name
                          type: object
                        type: array
                        x-kubernetes-list-map-keys:
                        - name
                        x-kubernetes-list-type: map
                      limits:
                        additionalProperties:
                          anyOf:
                          - type: integer
                          - type: string
                          pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                          x-kubernetes-int-or-string: true
                        description: |-
                          Limits describes the maximum amount of compute resources allowed.
                          More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
                        type: object
                      requests:
                        additionalProperties:
                          anyOf:
                          - type: integer
                          - type: string
                          pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                          x-kubernetes-int-or-string: true
                        description: |-
                          Requests describes the minimum amount of compute resources required.
                          If Requests is omitted for a container, it defaults to Limits if that is explicitly specified,
                          otherwise to an implementation-defined value. Requests cannot exceed Limits.
                          More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
                        type: object
                    type: object
                  tls:
                    description: TLS - Parameters related to the TLS
                    properties:
                      api:
                        description: API tls type which encapsulates for API services
                        properties:
                          internal:
                            description: Internal GenericService - holds the secret
                              for the internal endpoint
                            properties:
                              secretName:
                                description: SecretName - holding the cert, key for
                                  the service
                                type: string
                            type: object
                          public:
                            description: Public GenericService - holds the secret
                              for the public endpoint
                            properties:
                              secretName:
                                description: SecretName - holding the cert, key for
                                  the service
                                type: string
                            type: object
                        type: object
                      caBundleSecretName:
                        description: CaBundleSecretName - holding the CA certs in
                          a pre-created bundle file
                        type: string
                    type: object
                  topologyRef:
                    description: |-
                      TopologyRef to apply the Topology defined by the associated CR referenced
                      by name
                    properties:
                      name:
                        description: Name - The Topology CR name that the Service
                          references
                        type: string
                      namespace:
                        description: |-
                          Namespace - The Namespace to fetch the Topology CR referenced
                          NOTE: Namespace currently points by default to the same namespace where
                          the Service is deployed. Customizing the namespace is not supported and
                          webhooks prevent editing this field to a value different from the
                          current project
                        type: string
                    type: object
                required:
                - containerImage
                type: object
              heatEngine:
                description: HeatEngine - Spec definition for the Engine service of
                  this Heat deployment
                properties:
                  containerImage:
                    description: ContainerImage - Container Image URL
                    type: string
                  customServiceConfig:
                    description: |-
                      CustomServiceConfig - customize the service config using this parameter to change service defaults,
                      or overwrite rendered information using raw OpenStack config format. The content gets added to
                      to /etc/heat/heat.conf.d directory as 02-custom-service.conf file.
                    type: string
                  customServiceConfigSecrets:
                    description: |-
                      CustomServiceConfigSecrets - customize the service config using this parameter to specify Secrets
                      that contain sensitive service config data. The content of each Secret gets added to the
                      /etc/heat/heat.conf.d directory as a custom config file.
                    items:
                      type: string
                    type: array
                  defaultConfigOverwrite:
                    additionalProperties:
                      type: string
                    description: |-
                      ConfigOverwrite - interface to overwrite default config files like e.g. policy.json.
                      But can also be used to add additional files. Those get added to the service config dir in /etc/<service> .
                    type: object
                  nodeSelector:
                    additionalProperties:
                      type: string
                    description: NodeSelector to target subset of worker nodes for
                      running the service
                    type: object
                  replicas:
                    default: 1
                    description: Replicas -
                    format: int32
                    maximum: 32
                    minimum: 0
                    type: integer
                  resources:
                    description: |-
                      Resources - Compute Resources required by this service (Limits/Requests).
                      https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
                    properties:
                      claims:
                        description: |-
                          Claims lists the names of resources, defined in spec.resourceClaims,
                          that are used by this container.

                          This is an alpha field and requires enabling the
                          DynamicResourceAllocation feature gate.

                          This field is immutable. It can only be set for containers.
                        items:
                          description: ResourceClaim references one entry in PodSpec.ResourceClaims.
                          properties:
                            name:
                              description: |-
                                Name must match the name of one entry in pod.spec.resourceClaims of
                                the Pod where this field is used. It makes that resource available
                                inside a container.
                              type: string
                            request:
                              description: |-
                                Request is the name chosen for a request in the referenced claim.
                                If empty, everything from the claim is made available, otherwise
                                only the result of this request.
                              type: string
                          required:
                          - name
                          type: object
                        type: array
                        x-kubernetes-list-map-keys:
                        - name
                        x-kubernetes-list-type: map
                      limits:
                        additionalProperties:
                          anyOf:
                          - type: integer
                          - type: string
                          pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                          x-kubernetes-int-or-string: true
                        description: |-
                          Limits describes the maximum amount of compute resources allowed.
                          More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
                        type: object
                      requests:
                        additionalProperties:
                          anyOf:
                          - type: integer
                          - type: string
                          pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                          x-kubernetes-int-or-string: true
                        description: |-
                          Requests describes the minimum amount of compute resources required.
                          If Requests is omitted for a container, it defaults to Limits if that is explicitly specified,
                          otherwise to an implementation-defined value. Requests cannot exceed Limits.
                          More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
                        type: object
                    type: object
                  topologyRef:
                    description: |-
                      TopologyRef to apply the Topology defined by the associated CR referenced
                      by name
                    properties:
                      name:
                        description: Name - The Topology CR name that the Service
                          references
                        type: string
                      namespace:
                        description: |-
                          Namespace - The Namespace to fetch the Topology CR referenced
                          NOTE: Namespace currently points by default to the same namespace where
                          the Service is deployed. Customizing the namespace is not supported and
                          webhooks prevent editing this field to a value different from the
                          current project
                        type: string
                    type: object
                required:
                - containerImage
                type: object
              memcachedInstance:
                default: memcached
                description: Memcached instance name.
                type: string
              messagingBus:
                description: MessagingBus - Messaging Bus configuration
                properties:
                  cluster:
                    description: Name of the cluster
                    minLength: 1
                    type: string
                  user:
                    description: User - RabbitMQ username
                    type: string
                  vhost:
                    description: Vhost - RabbitMQ vhost name
                    type: string
                required:
                - cluster
                type: object
              nodeSelector:
                additionalProperties:
                  type: string
                description: NodeSelector to target subset of worker nodes for running
                  the Heat services
                type: object
              notificationsBus:
                description: NotificationsBus - Notifications Bus configuration (optional,
                  separate from MessagingBus)
                properties:
                  cluster:
                    description: Name of the cluster
                    minLength: 1
                    type: string
                  user:
                    description: User - RabbitMQ username
                    type: string
                  vhost:
                    description: Vhost - RabbitMQ vhost name
                    type: string
                required:
                - cluster
                type: object
              passwordSelectors:
                default:
                  authEncryptionKey: HeatAuthEncryptionKey
                  service: HeatPassword
                description: PasswordSelectors - Selectors to identify the DB and
                  ServiceUser password from the Secret
                properties:
                  authEncryptionKey:
                    default: HeatAuthEncryptionKey
                    description: AuthEncryptionKey - Selector to get the heat auth
                      encryption key from the Secret
                    type: string
                  service:
                    default: HeatPassword
                    description: Service - Selector to get the heat service password
                      from the Secret
                    type: string
                  stackDomainAdminPassword:
                    default: HeatStackDomainAdminPassword
                    description: StackDomainAdminPassword - Selector to get the heat
                      stack domain admin password from the Secret
                    type: string
                type: object
              preserveJobs:
                default: false
                description: PreserveJobs - do not delete jobs after they finished
                  e.g. to check logs
                type: boolean
              rabbitMqClusterName:
                description: |-
                  RabbitMQ instance name
                  Needed to request a transportURL that is created and used in Heat
                  Deprecated: Use MessagingBus.Cluster instead
                type: string
              secret:
                description: |-
                  Secret containing OpenStack password information for heat HeatDatabasePassword, HeatPassword
                  and HeatAuthEncryptionKey
                type: string
              serviceUser:
                default: heat
                description: ServiceUser - optional username used for this service
                  to register in heat
                type: string
              topologyRef:
                description: |-
                  TopologyRef to apply the Topology defined by the associated CR referenced
                  by name
                properties:
                  name:
                    description: Name - The Topology CR name that the Service references
                    type: string
                  namespace:
                    description: |-
                      Namespace - The Namespace to fetch the Topology CR referenced
                      NOTE: Namespace currently points by default to the same namespace where
                      the Service is deployed. Customizing the namespace is not supported and
                      webhooks prevent editing this field to a value different from the
                      current project
                    type: string
                type: object
            required:
            - databaseInstance
            - heatAPI
            - heatCfnAPI
            - heatEngine
            - memcachedInstance
            - secret
            type: object
          status:
            description: HeatStatus defines the observed state of Heat
            properties:
              conditions:
                description: Conditions
                items:
                  description: Condition defines an observation of a API resource
                    operational state.
                  properties:
                    lastTransitionTime:
                      description: |-
                        Last time the condition transitioned from one status to another.
                        This should be when the underlying condition changed. If that is not known, then using the time when
                        the API field changed is acceptable.
                      format: date-time
                      type: string
                    message:
                      description: A human readable message indicating details about
                        the transition.
                      type: string
                    reason:
                      description: The reason for the condition's last transition
                        in CamelCase.
                      type: string
                    severity:
                      description: |-
                        Severity provides a classification of Reason code, so the current situation is immediately
                        understandable and could act accordingly.
                        It is meant for situations where Status=False and it should be indicated if it is just
                        informational, warning (next reconciliation might fix it) or an error (e.g. DB create issue
                        and no actions to automatically resolve the issue can/should be done).
                        For conditions where Status=Unknown or Status=True the Severity should be SeverityNone.
                      type: string
                    status:
                      description: Status of the condition, one of True, False, Unknown.
                      type: string
                    type:
                      description: Type of condition in CamelCase.
                      type: string
                  required:
                  - lastTransitionTime
                  - status
                  - type
                  type: object
                type: array
              databaseHostname:
                description: Heat Database Hostname
                type: string
              hash:
                additionalProperties:
                  type: string
                description: Map of hashes to track e.g. job status
                type: object
              heatApiReadyCount:
                description: ReadyCount of Heat API instance
                format: int32
                type: integer
              heatCfnApiReadyCount:
                description: ReadyCount of Heat CfnAPI instance
                format: int32
                type: integer
              heatEngineReadyCount:
                description: ReadyCount of Heat Engine instance
                format: int32
                type: integer
              notificationsTransportURLSecret:
                description: NotificationsTransportURLSecret - Secret containing Notifications
                  RabbitMQ transportURL
                type: string
              observedGeneration:
                description: |-
                  ObservedGeneration - the most recent generation observed for this
                  service. If the observed generation is less than the spec generation,
                  then the controller has not processed the latest changes injected by
                  the opentack-operator in the top-level CR (e.g. the ContainerImage)
                format: int64
                type: integer
              transportURLSecret:
                description: TransportURLSecret - Secret containing RabbitMQ transportURL
                type: string
            type: object
        type: object
    served: true
    storage: true
    subresources:
      status: {}
status:
  acceptedNames:
    kind: Heat
    listKind: HeatList
    plural: heats
    singular: heat
  conditions:
  - lastTransitionTime: "2026-04-04T02:16:58Z"
    message: no conflicts found
    reason: NoConflicts
    status: "True"
    type: NamesAccepted
  - lastTransitionTime: "2026-04-04T02:16:59Z"
    message: the initial names have been accepted
    reason: InitialNamesAccepted
    status: "True"
    type: Established
  storedVersions:
  - v1beta1
