apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  annotations:
    controller-gen.kubebuilder.io/version: v0.18.0
  creationTimestamp: "2026-04-02T13:56:56Z"
  generation: 1
  name: openstackbaremetalsets.baremetal.openstack.org
  resourceVersion: "36886"
  uid: 01f20960-1e9e-40de-b9b3-3173a3b8a2ed
spec:
  conversion:
    strategy: None
  group: baremetal.openstack.org
  names:
    kind: OpenStackBaremetalSet
    listKind: OpenStackBaremetalSetList
    plural: openstackbaremetalsets
    shortNames:
    - osbmset
    - osbmsets
    - osbms
    singular: openstackbaremetalset
  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: OpenStackBaremetalSet is the Schema for the openstackbaremetalsets
          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: OpenStackBaremetalSetSpec defines the desired state of OpenStackBaremetalSet
            properties:
              agentImageUrl:
                description: AgentImageURL - Container image URL for the sidecar container
                  that discovers provisioning network IPs. Ignored when osImageDeploymentType
                  is PassThrough.
                type: string
              apacheImageUrl:
                description: ApacheImageURL - Container image URL for the main container
                  that serves the downloaded OS qcow2 image (osImage). Ignored when
                  osImageDeploymentType is PassThrough.
                type: string
              automatedCleaningMode:
                default: metadata
                description: |-
                  When set to disabled, automated cleaning will be avoided
                  during provisioning and deprovisioning.
                enum:
                - metadata
                - disabled
                type: string
              baremetalHosts:
                additionalProperties:
                  description: InstanceSpec Instance specific attributes
                  properties:
                    bmhLabelSelector:
                      additionalProperties:
                        type: string
                      description: BmhLabelSelector allows for the selection of a
                        particular BaremetalHost based on arbitrary labels
                      type: object
                    ctlPlaneIP:
                      description: CtlPlaneIP - Control Plane IP in CIDR notation
                      type: string
                    ctlplaneGateway:
                      description: 'CtlplaneGateway - IP of gateway for ctrlplane
                        network (TODO: acquire this is another manner?)'
                      type: string
                    ctlplaneInterface:
                      description: CtlplaneInterface - Interface on the provisioned
                        nodes to use for ctlplane network
                      type: string
                    ctlplaneVlan:
                      description: CtlplaneVlan - Vlan for ctlplane network
                      type: integer
                    networkData:
                      description: NetworkData - Host Network Data
                      properties:
                        name:
                          description: name is unique within a namespace to reference
                            a secret resource.
                          type: string
                        namespace:
                          description: namespace defines the space within which the
                            secret name must be unique.
                          type: string
                      type: object
                      x-kubernetes-map-type: atomic
                    userData:
                      description: UserData - Host User Data
                      properties:
                        name:
                          description: name is unique within a namespace to reference
                            a secret resource.
                          type: string
                        namespace:
                          description: namespace defines the space within which the
                            secret name must be unique.
                          type: string
                      type: object
                      x-kubernetes-map-type: atomic
                  type: object
                description: BaremetalHosts - Map of hostname to Instance Spec for
                  all nodes to provision
                type: object
              bmhLabelSelector:
                additionalProperties:
                  type: string
                description: BmhLabelSelector allows for a sub-selection of BaremetalHosts
                  based on arbitrary labels
                type: object
              bmhNamespace:
                default: openshift-machine-api
                description: 'BmhNamespace Namespace to look for BaremetalHosts(default:
                  openshift-machine-api)'
                type: string
              bootstrapDns:
                description: |-
                  BootstrapDNS - initial DNS nameserver values to set on the BaremetalHosts when they are provisioned.
                  Note that subsequent deployment will overwrite these values
                items:
                  type: string
                type: array
              cloudUserName:
                default: cloud-admin
                description: CloudUser to be configured for remote access
                type: string
              ctlplaneBond:
                description: CtlplaneBond - Bonding configuration for ctlplane network
                properties:
                  bondInterfaces:
                    description: BondInterfaces - List of physical interfaces to bond
                    items:
                      type: string
                    minItems: 2
                    type: array
                  bondMode:
                    default: active-backup
                    description: BondMode - Bonding mode (e.g., active-backup, 802.3ad)
                    type: string
                  bondOptions:
                    additionalProperties:
                      type: string
                    description: BondOptions - Additional bonding options as key-value
                      pairs
                    type: object
                required:
                - bondInterfaces
                type: object
              ctlplaneGateway:
                description: 'CtlplaneGateway - IP of gateway for ctrlplane network
                  (TODO: acquire this is another manner?)'
                type: string
              ctlplaneInterface:
                description: CtlplaneInterface - Interface on the provisioned nodes
                  to use for ctlplane network
                type: string
              ctlplaneVlan:
                description: CtlplaneVlan - Vlan for ctlplane network
                type: integer
              deploymentSSHSecret:
                description: DeploymentSSHSecret - Name of secret holding the cloud-admin
                  ssh keys
                type: string
              dnsSearchDomains:
                description: |-
                  DNSSearchDomains - initial DNS nameserver values to set on the BaremetalHosts when they are provisioned.
                  Note that subsequent deployment will overwrite these values
                items:
                  type: string
                type: array
              domainName:
                description: 'DomainName is the domain name that will be set on the
                  underlying Metal3 BaremetalHosts (TODO: acquire this is another
                  manner?)'
                type: string
              hardwareReqs:
                description: Hardware requests for sub-selection of BaremetalHosts
                  with certain hardware specs
                properties:
                  cpuReqs:
                    description: CPUReqs defines specific CPU hardware requests
                    properties:
                      arch:
                        description: |-
                          Arch is a scalar (string) because it wouldn't make sense to give it an "exact-match" option
                          Can be either "x86_64" or "ppc64le" if included
                        enum:
                        - x86_64
                        - ppc64le
                        type: string
                      countReq:
                        description: CPUCountReq defines a specific hardware request
                          for CPU core count
                        properties:
                          count:
                            minimum: 1
                            type: integer
                          exactMatch:
                            description: If ExactMatch == false, actual count > Count
                              will match
                            type: boolean
                        type: object
                      mhzReq:
                        description: CPUMhzReq defines a specific hardware request
                          for CPU clock speed
                        properties:
                          exactMatch:
                            description: If ExactMatch == false, actual mhz > Mhz
                              will match
                            type: boolean
                          mhz:
                            minimum: 1
                            type: integer
                        type: object
                    type: object
                  diskReqs:
                    description: DiskReqs defines specific disk hardware requests
                    properties:
                      gbReq:
                        description: DiskGbReq defines a specific hardware request
                          for disk size
                        properties:
                          exactMatch:
                            description: If ExactMatch == false, actual GB > Gb will
                              match
                            type: boolean
                          gb:
                            minimum: 1
                            type: integer
                        type: object
                      ssdReq:
                        description: SSD is scalar (bool) because it wouldn't make
                          sense to give it an "exact-match" option
                        properties:
                          exactMatch:
                            description: |-
                              We only actually care about SSD flag if it is true or ExactMatch is set to true.
                              This second flag is necessary as SSD's bool zero-value (false) is indistinguishable
                              from it being explicitly set to false
                            type: boolean
                          ssd:
                            type: boolean
                        type: object
                    type: object
                  memReqs:
                    description: MemReqs defines specific memory hardware requests
                    properties:
                      gbReq:
                        description: MemGbReq defines a specific hardware request
                          for memory size
                        properties:
                          exactMatch:
                            description: If ExactMatch == false, actual GB > Gb will
                              match
                            type: boolean
                          gb:
                            minimum: 1
                            type: integer
                        type: object
                    type: object
                type: object
              osContainerImageUrl:
                description: OSContainerImageURL - When osImageDeploymentType is SelfExtracting,
                  container image URL for init with the OS qcow2 image (osImage).
                  When osImageDeploymentType is PassThrough this can be any image
                  URL which the underlying Metal3 instance supports.
                type: string
              osImage:
                default: edpm-hardened-uefi.qcow2
                description: OSImage - OS qcow2 image Name. Ignored when osImageDeploymentType
                  is PassThrough.
                type: string
              osImageDeploymentType:
                default: SelfExtracting
                description: OSImageDeploymentType - Whether the OS image deployment
                  is self-extracting or pass-through based
                enum:
                - SelfExtracting
                - PassThrough
                type: string
              passwordSecret:
                description: |-
                  PasswordSecret the name of the secret used to optionally set the root pwd by adding
                  NodeRootPassword: <b**********64 enc pwd>
                  to the secret data
                properties:
                  name:
                    description: name is unique within a namespace to reference a
                      secret resource.
                    type: string
                  namespace:
                    description: namespace defines the space within which the secret
                      name must be unique.
                    type: string
                type: object
                x-kubernetes-map-type: atomic
              provisionServerName:
                description: ProvisionServerName - Optional. Existing OpenStackProvisionServer
                  to use, else one would be created. Ignored when osImageDeploymentType
                  is PassThrough.
                type: string
              provisionServerNodeSelector:
                additionalProperties:
                  type: string
                description: ProvisonServerNodeSelector to target subset of worker
                  nodes running provision server, ignored when osImageDeploymentType
                  is PassThrough.
                type: object
              provisioningInterface:
                description: ProvisioningInterface - Optional. If not provided along
                  with ProvisionServerName, it would be discovered from CBO.  This
                  is the provisioning interface on the OCP masters/workers. Ignored
                  when osImageDeploymentType is PassThrough.
                type: string
            required:
            - cloudUserName
            - ctlplaneInterface
            - deploymentSSHSecret
            type: object
          status:
            description: OpenStackBaremetalSetStatus defines the observed state of
              OpenStackBaremetalSet
            properties:
              baremetalHosts:
                additionalProperties:
                  description: HostStatus represents the IPStatus and provisioning
                    state + deployment information
                  properties:
                    annotatedForDeletion:
                      default: false
                      description: Host annotated for deletion
                      type: boolean
                    bmhRef:
                      default: unassigned
                      type: string
                    hostname:
                      type: string
                    ipAddresses:
                      additionalProperties:
                        type: string
                      type: object
                    networkDataSecretName:
                      type: string
                    provisioningState:
                      description: ProvisioningState - the overall state of a BMH
                      type: string
                    userDataSecretName:
                      type: string
                  required:
                  - annotatedForDeletion
                  - bmhRef
                  - hostname
                  - networkDataSecretName
                  - provisioningState
                  - userDataSecretName
                  type: object
                description: BaremetalHosts that are being processed or have been
                  processed for this OpenStackBaremetalSet
                type: object
              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
              hash:
                additionalProperties:
                  type: string
                description: Map of hashes to track e.g. job status
                type: object
              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
            type: object
        type: object
    served: true
    storage: true
    subresources:
      status: {}
status:
  acceptedNames:
    kind: OpenStackBaremetalSet
    listKind: OpenStackBaremetalSetList
    plural: openstackbaremetalsets
    shortNames:
    - osbmset
    - osbmsets
    - osbms
    singular: openstackbaremetalset
  conditions:
  - lastTransitionTime: "2026-04-02T13:56:56Z"
    message: no conflicts found
    reason: NoConflicts
    status: "True"
    type: NamesAccepted
  - lastTransitionTime: "2026-04-02T13:56:56Z"
    message: the initial names have been accepted
    reason: InitialNamesAccepted
    status: "True"
    type: Established
  storedVersions:
  - v1beta1
