--- apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: controller-gen.kubebuilder.io/version: v0.18.0 creationTimestamp: "2025-10-11T10:50:42Z" generation: 1 labels: openstack.openstack.org/crd: "" managedFields: - apiVersion: apiextensions.k8s.io/v1 fieldsType: FieldsV1 fieldsV1: f:status: f:acceptedNames: f:kind: {} f:listKind: {} f:plural: {} f:shortNames: {} f:singular: {} f:conditions: k:{"type":"Established"}: .: {} f:lastTransitionTime: {} f:message: {} f:reason: {} f:status: {} f:type: {} k:{"type":"NamesAccepted"}: .: {} f:lastTransitionTime: {} f:message: {} f:reason: {} f:status: {} f:type: {} manager: kube-apiserver operation: Update subresource: status time: "2025-10-11T10:50:42Z" - apiVersion: apiextensions.k8s.io/v1 fieldsType: FieldsV1 fieldsV1: f:metadata: f:annotations: .: {} f:controller-gen.kubebuilder.io/version: {} f:labels: .: {} f:openstack.openstack.org/crd: {} f:spec: f:conversion: .: {} f:strategy: {} f:group: {} f:names: f:kind: {} f:listKind: {} f:plural: {} f:shortNames: {} f:singular: {} f:scope: {} f:versions: {} manager: operator operation: Update time: "2025-10-11T10:51:45Z" name: openstackbaremetalsets.baremetal.openstack.org resourceVersion: "31957" uid: 98ba9c07-675a-43ee-9ac9-12779ffab041 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 type: string apacheImageUrl: description: ApacheImageURL - Container image URL for the main container that serves the downloaded OS qcow2 image (osImage) 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 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 - Container image URL for init with the OS qcow2 image (osImage) type: string osImage: default: edpm-hardened-uefi.qcow2 description: OSImage - OS qcow2 image Name type: string passwordSecret: description: |- PasswordSecret the name of the secret used to optionally set the root pwd by adding NodeRootPassword: 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. type: string provisionServerNodeSelector: additionalProperties: type: string description: ProvisonServerNodeSelector to target subset of worker nodes running provision server 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. 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: "2025-10-11T10:50:42Z" message: no conflicts found reason: NoConflicts status: "True" type: NamesAccepted - lastTransitionTime: "2025-10-11T10:50:42Z" message: the initial names have been accepted reason: InitialNamesAccepted status: "True" type: Established storedVersions: - v1beta1