apiVersion: apiextensions.k8s.io/v1beta1 kind: CustomResourceDefinition metadata: name: baremetalhosts.metal3.io spec: additionalPrinterColumns: - JSONPath: .status.operationalStatus description: Operational status name: Status type: string - JSONPath: .status.provisioning.state description: Provisioning status name: Provisioning Status type: string - JSONPath: .spec.consumerRef.name description: Consumer using this host name: Consumer type: string - JSONPath: .spec.bmc.address description: Address of management controller name: BMC type: string - JSONPath: .status.hardwareProfile description: The type of hardware detected name: Hardware Profile type: string - JSONPath: .spec.online description: Whether the host is online or not name: Online type: string - JSONPath: .status.errorMessage description: Most recent error name: Error type: string group: metal3.io names: kind: BareMetalHost listKind: BareMetalHostList plural: baremetalhosts shortNames: - bmh - bmhost singular: baremetalhost scope: Namespaced subresources: status: {} validation: openAPIV3Schema: description: BareMetalHost is the Schema for the baremetalhosts 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: BareMetalHostSpec defines the desired state of BareMetalHost properties: bmc: description: How do we connect to the BMC? properties: address: description: Address holds the URL for accessing the controller on the network. type: string credentialsName: description: The name of the secret containing the BMC credentials (requires keys "username" and "password"). type: string disableCertificateVerification: description: DisableCertificateVerification disables verification of server certificates when using HTTPS to connect to the BMC. This is required when the server certificate is self-signed, but is insecure because it allows a man-in-the-middle to intercept the connection. type: boolean required: - address - credentialsName type: object bootMACAddress: description: Which MAC address will PXE boot? This is optional for some types, but required for libvirt VMs driven by vbmc. pattern: '[0-9a-fA-F]{2}(:[0-9a-fA-F]{2}){5}' type: string consumerRef: description: ConsumerRef can be used to store information about something that is using a host. When it is not empty, the host is considered "in use". properties: apiVersion: description: API version of the referent. type: string fieldPath: description: 'If referring to a piece of an object instead of an entire object, this string should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2]. For example, if the object reference is to a container within a pod, this would take on a value like: "spec.containers{name}" (where "name" refers to the name of the container that triggered the event) or if no container name is specified "spec.containers[2]" (container with index 2 in this pod). This syntax is chosen only to have some well-defined way of referencing a part of an object. TODO: this design is not final and this field is subject to change in the future.' type: string kind: description: 'Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' type: string name: description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names' type: string namespace: description: 'Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/' type: string resourceVersion: description: 'Specific resourceVersion to which this reference is made, if any. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency' type: string uid: description: 'UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids' type: string type: object description: description: Description is a human-entered text used to help identify the host type: string externallyProvisioned: description: ExternallyProvisioned means something else is managing the image running on the host and the operator should only manage the power status and hardware inventory inspection. If the Image field is filled in, this field is ignored. type: boolean hardwareProfile: description: What is the name of the hardware profile for this host? It should only be necessary to set this when inspection cannot automatically determine the profile. type: string image: description: Image holds the details of the image to be provisioned. properties: checksum: description: Checksum is the checksum for the image. type: string url: description: URL is a location of an image to deploy. type: string required: - checksum - url type: object networkData: description: NetworkData holds the reference to the Secret containing content of network_data.json which is passed to Config Drive 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 online: description: Should the server be online? type: boolean taints: description: Taints is the full, authoritative list of taints to apply to the corresponding Machine. This list will overwrite any modifications made to the Machine on an ongoing basis. items: description: The node this Taint is attached to has the "effect" on any pod that does not tolerate the Taint. properties: effect: description: Required. The effect of the taint on pods that do not tolerate the taint. Valid effects are NoSchedule, PreferNoSchedule and NoExecute. type: string key: description: Required. The taint key to be applied to a node. type: string timeAdded: description: TimeAdded represents the time at which the taint was added. It is only written for NoExecute taints. format: date-time type: string value: description: Required. The taint value corresponding to the taint key. type: string required: - effect - key type: object type: array userData: description: UserData holds the reference to the Secret containing the user data to be passed to the host before it boots. 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 required: - online type: object status: description: BareMetalHostStatus defines the observed state of BareMetalHost properties: errorMessage: description: the last error message reported by the provisioning subsystem type: string errorType: description: ErrorType indicates the type of failure encountered when the OperationalStatus is OperationalStatusError enum: - registration error - inspection error - provisioning error - power management error type: string goodCredentials: description: the last credentials we were able to validate as working properties: credentials: description: SecretReference represents a Secret Reference. It has enough information to retrieve secret in any namespace 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 credentialsVersion: type: string type: object hardware: description: The hardware discovered to exist on the host. properties: cpu: description: CPU describes one processor on the host. properties: arch: type: string clockMegahertz: description: ClockSpeed is a clock speed in MHz count: type: integer flags: items: type: string type: array model: type: string required: - arch - clockMegahertz - count - flags - model type: object firmware: description: Firmware describes the firmware on the host. properties: bios: description: The BIOS for this firmware properties: date: description: The release/build date for this BIOS type: string vendor: description: The vendor name for this BIOS type: string version: description: The version of the BIOS type: string required: - date - vendor - version type: object required: - bios type: object hostname: type: string nics: items: description: NIC describes one network interface on the host. properties: ip: description: The IP address of the device type: string mac: description: The device MAC addr pattern: '[0-9a-fA-F]{2}(:[0-9a-fA-F]{2}){5}' type: string model: description: The name of the model, e.g. "virt-io" type: string name: description: The name of the NIC, e.g. "nic-1" type: string pxe: description: Whether the NIC is PXE Bootable type: boolean speedGbps: description: The speed of the device type: integer vlanId: description: The untagged VLAN ID format: int32 type: integer vlans: description: The VLANs available items: description: VLAN represents the name and ID of a VLAN properties: id: description: VLANID is a 12-bit 802.1Q VLAN identifier format: int32 type: integer name: type: string required: - id type: object type: array required: - ip - mac - model - name - pxe - speedGbps - vlanId type: object type: array ramMebibytes: type: integer storage: items: description: Storage describes one storage device (disk, SSD, etc.) on the host. properties: hctl: description: The SCSI location of the device type: string model: description: Hardware model type: string name: description: A name for the disk, e.g. "disk 1 (boot)" type: string rotational: description: Whether this disk represents rotational storage type: boolean serialNumber: description: The serial number of the device type: string sizeBytes: description: The size of the disk in Bytes format: int64 type: integer vendor: description: The name of the vendor of the device type: string wwn: description: The WWN of the device type: string wwnVendorExtension: description: The WWN Vendor extension of the device type: string wwnWithExtension: description: The WWN with the extension type: string required: - name - rotational - serialNumber - sizeBytes type: object type: array systemVendor: description: HardwareSystemVendor stores details about the whole hardware system. properties: manufacturer: type: string productName: type: string serialNumber: type: string required: - manufacturer - productName - serialNumber type: object required: - cpu - firmware - hostname - nics - ramMebibytes - storage - systemVendor type: object hardwareProfile: description: The name of the profile matching the hardware details. type: string lastUpdated: description: LastUpdated identifies when this status was last observed. format: date-time type: string operationHistory: description: OperationHistory holds information about operations performed on this host. properties: deprovision: description: OperationMetric contains metadata about an operation (inspection, provisioning, etc.) used for tracking metrics. properties: end: format: date-time nullable: true type: string start: format: date-time nullable: true type: string type: object inspect: description: OperationMetric contains metadata about an operation (inspection, provisioning, etc.) used for tracking metrics. properties: end: format: date-time nullable: true type: string start: format: date-time nullable: true type: string type: object provision: description: OperationMetric contains metadata about an operation (inspection, provisioning, etc.) used for tracking metrics. properties: end: format: date-time nullable: true type: string start: format: date-time nullable: true type: string type: object register: description: OperationMetric contains metadata about an operation (inspection, provisioning, etc.) used for tracking metrics. properties: end: format: date-time nullable: true type: string start: format: date-time nullable: true type: string type: object type: object operationalStatus: description: OperationalStatus holds the status of the host enum: - "" - OK - discovered - error type: string poweredOn: description: indicator for whether or not the host is powered on type: boolean provisioning: description: Information tracked by the provisioner. properties: ID: description: The machine's UUID from the underlying provisioning tool type: string image: description: Image holds the details of the last image successfully provisioned to the host. properties: checksum: description: Checksum is the checksum for the image. type: string url: description: URL is a location of an image to deploy. type: string required: - checksum - url type: object state: description: An indiciator for what the provisioner is doing with the host. type: string required: - ID - state type: object triedCredentials: description: the last credentials we sent to the provisioning backend properties: credentials: description: SecretReference represents a Secret Reference. It has enough information to retrieve secret in any namespace 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 credentialsVersion: type: string type: object required: - errorMessage - hardwareProfile - operationHistory - operationalStatus - poweredOn - provisioning type: object type: object version: v1alpha1 versions: - name: v1alpha1 served: true storage: true