{
  "description": "BareMetalHost is the Schema for the baremetalhosts API",
  "properties": {
    "apiVersion": {
      "description": "APIVersion defines the versioned schema of this representation of an object.\nServers should convert recognized schemas to the latest internal value, and\nmay reject unrecognized values.\nMore 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.\nServers may infer this from the endpoint the client submits requests to.\nCannot be updated.\nIn CamelCase.\nMore 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": {
        "architecture": {
          "description": "CPU architecture of the host, e.g. \"x86_64\" or \"aarch64\". If unset,\neventually populated by inspection.",
          "type": "string"
        },
        "automatedCleaningMode": {
          "default": "metadata",
          "description": "When set to disabled, automated cleaning will be skipped\nduring provisioning and deprovisioning.",
          "enum": [
            "metadata",
            "disabled"
          ],
          "type": "string"
        },
        "bmc": {
          "description": "How do we connect to the BMC (Baseboard Management Controller) on\nthe host?",
          "properties": {
            "address": {
              "description": "Address holds the URL for accessing the controller on the network.\nThe scheme part designates the driver to use with the host.",
              "type": "string"
            },
            "credentialsName": {
              "description": "The name of the secret containing the BMC credentials (requires\nkeys \"username\" and \"password\").",
              "type": "string"
            },
            "disableCertificateVerification": {
              "description": "DisableCertificateVerification disables verification of server\ncertificates when using HTTPS to connect to the BMC. This is\nrequired when the server certificate is self-signed, but is\ninsecure because it allows a man-in-the-middle to intercept the\nconnection.",
              "type": "boolean"
            }
          },
          "required": [
            "address",
            "credentialsName"
          ],
          "type": "object",
          "additionalProperties": false
        },
        "bootMACAddress": {
          "description": "The MAC address of the NIC used for provisioning the host. In case\nof network boot, this is the MAC address of the PXE booting\ninterface. The MAC address of the BMC must never be used here!",
          "pattern": "[0-9a-fA-F]{2}(:[0-9a-fA-F]{2}){5}",
          "type": "string"
        },
        "bootMode": {
          "description": "Select the method of initializing the hardware during boot.\nDefaults to UEFI. Legacy boot should only be used for hardware that\ndoes not support UEFI correctly. Set to UEFISecureBoot to turn\nsecure boot on automatically after provisioning.",
          "enum": [
            "UEFI",
            "UEFISecureBoot",
            "legacy"
          ],
          "type": "string"
        },
        "consumerRef": {
          "description": "ConsumerRef can be used to store information about something\nthat is using a host. When it is not empty, the host is\nconsidered \"in use\". The common use case is a link to a Machine\nresource when the host is used by Cluster API.",
          "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\nshould contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2].\nFor example, if the object reference is to a container within a pod, this would take on a value like:\n\"spec.containers{name}\" (where \"name\" refers to the name of the container that triggered\nthe event) or if no container name is specified \"spec.containers[2]\" (container with\nindex 2 in this pod). This syntax is chosen only to have some well-defined way of\nreferencing a part of an object.",
              "type": "string"
            },
            "kind": {
              "description": "Kind of the referent.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds",
              "type": "string"
            },
            "name": {
              "description": "Name of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
              "type": "string"
            },
            "namespace": {
              "description": "Namespace of the referent.\nMore 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.\nMore 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.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids",
              "type": "string"
            }
          },
          "type": "object",
          "x-kubernetes-map-type": "atomic",
          "additionalProperties": false
        },
        "customDeploy": {
          "description": "A custom deploy procedure. This is an advanced feature that allows\nusing a custom deploy step provided by a site-specific deployment\nramdisk. Most users will want to use \"image\" instead. Setting this\nfield triggers provisioning.",
          "properties": {
            "method": {
              "description": "Custom deploy method name.\nThis name is specific to the deploy ramdisk used. If you don't have\na custom deploy ramdisk, you shouldn't use CustomDeploy.",
              "type": "string"
            }
          },
          "required": [
            "method"
          ],
          "type": "object",
          "additionalProperties": false
        },
        "description": {
          "description": "Description is a human-entered text used to help identify the host.",
          "type": "string"
        },
        "disablePowerOff": {
          "description": "When set to true, power off of the node will be disabled,\ninstead, a reboot will be used in place of power on/off",
          "type": "boolean"
        },
        "externallyProvisioned": {
          "description": "ExternallyProvisioned means something else has provisioned the\nimage running on the host, and the operator should only manage\nthe power status. This field is used for integration with already\nprovisioned hosts and when pivoting hosts between clusters. If\nunsure, leave this field as false.",
          "type": "boolean"
        },
        "firmware": {
          "description": "Firmware (BIOS) configuration for bare metal server. If set, the\nrequested settings will be applied before the host is provisioned.\nOnly some vendor drivers support this field. An alternative is to\nuse HostFirmwareSettings resources that allow changing arbitrary\nvalues and support the generic Redfish-based drivers.",
          "properties": {
            "simultaneousMultithreadingEnabled": {
              "description": "Allows a single physical processor core to appear as several logical processors.",
              "enum": [
                true,
                false
              ],
              "type": "boolean"
            },
            "sriovEnabled": {
              "description": "SR-IOV support enables a hypervisor to create virtual instances of a PCI-express device, potentially increasing performance.",
              "enum": [
                true,
                false
              ],
              "type": "boolean"
            },
            "virtualizationEnabled": {
              "description": "Supports the virtualization of platform hardware.",
              "enum": [
                true,
                false
              ],
              "type": "boolean"
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "hardwareProfile": {
          "description": "What is the name of the hardware profile for this host?\nHardware profiles are deprecated and should not be used.\nUse the separate fields Architecture and RootDeviceHints instead.\nSet to \"empty\" to prepare for the future version of the API\nwithout hardware profiles.",
          "type": "string"
        },
        "image": {
          "description": "Image holds the details of the image to be provisioned. Populating\nthe image will cause the host to start provisioning.",
          "properties": {
            "checksum": {
              "description": "Checksum is the checksum for the image. Required for all formats\nexcept for \"live-iso\".",
              "type": "string"
            },
            "checksumType": {
              "description": "ChecksumType is the checksum algorithm for the image, e.g md5, sha256 or sha512.\nThe special value \"auto\" can be used to detect the algorithm from the checksum.\nIf missing, MD5 is used. If in doubt, use \"auto\".",
              "enum": [
                "md5",
                "sha256",
                "sha512",
                "auto"
              ],
              "type": "string"
            },
            "format": {
              "description": "Format contains the format of the image (raw, qcow2, ...).\nWhen set to \"live-iso\", an ISO 9660 image referenced by the url will\nbe live-booted and not deployed to disk.",
              "enum": [
                "raw",
                "qcow2",
                "vdi",
                "vmdk",
                "live-iso"
              ],
              "type": "string"
            },
            "url": {
              "description": "URL is a location of an image to deploy.",
              "type": "string"
            }
          },
          "required": [
            "url"
          ],
          "type": "object",
          "additionalProperties": false
        },
        "metaData": {
          "description": "MetaData holds the reference to the Secret containing host metadata\nwhich is passed to the Config Drive. By default, metadata will be\ngenerated for the host, so most users do not need to set this field.",
          "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",
          "additionalProperties": false
        },
        "networkData": {
          "description": "NetworkData holds the reference to the Secret containing network\nconfiguration which is passed to the Config Drive and interpreted\nby the first boot software such as cloud-init.",
          "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",
          "additionalProperties": false
        },
        "online": {
          "description": "Should the host be powered on? If the host is currently in a stable\nstate (e.g. provisioned), its power state will be forced to match\nthis value.",
          "type": "boolean"
        },
        "preprovisioningNetworkDataName": {
          "description": "PreprovisioningNetworkDataName is the name of the Secret in the\nlocal namespace containing network configuration which is passed to\nthe preprovisioning image, and to the Config Drive if not overridden\nby specifying NetworkData.",
          "type": "string"
        },
        "raid": {
          "description": "RAID configuration for bare metal server. If set, the RAID settings\nwill be applied before the host is provisioned. If not, the current\nsettings will not be modified. Only one of the sub-fields\nhardwareRAIDVolumes and softwareRAIDVolumes can be set at the same\ntime.",
          "properties": {
            "hardwareRAIDVolumes": {
              "description": "The list of logical disks for hardware RAID, if rootDeviceHints isn't used, first volume is root volume.\nYou can set the value of this field to `[]` to clear all the hardware RAID configurations.",
              "items": {
                "description": "HardwareRAIDVolume defines the desired configuration of volume in hardware RAID.",
                "properties": {
                  "controller": {
                    "description": "The name of the RAID controller to use.",
                    "type": "string"
                  },
                  "level": {
                    "description": "RAID level for the logical disk. The following levels are supported:\n0, 1, 2, 5, 6, 1+0, 5+0, 6+0 (drivers may support only some of them).",
                    "enum": [
                      "0",
                      "1",
                      "2",
                      "5",
                      "6",
                      "1+0",
                      "5+0",
                      "6+0"
                    ],
                    "type": "string"
                  },
                  "name": {
                    "description": "Name of the volume. Should be unique within the Node. If not\nspecified, the name will be auto-generated.",
                    "maxLength": 64,
                    "type": "string"
                  },
                  "numberOfPhysicalDisks": {
                    "description": "Integer, number of physical disks to use for the logical disk.\nDefaults to minimum number of disks required for the particular RAID\nlevel.",
                    "minimum": 1,
                    "type": "integer"
                  },
                  "physicalDisks": {
                    "description": "Optional list of physical disk names to be used for the hardware RAID volumes. The disk names are interpreted\nby the hardware RAID controller, and the format is hardware specific.",
                    "items": {
                      "type": "string"
                    },
                    "type": "array"
                  },
                  "rotational": {
                    "description": "Select disks with only rotational (if set to true) or solid-state\n(if set to false) storage. By default, any disks can be picked.",
                    "type": "boolean"
                  },
                  "sizeGibibytes": {
                    "description": "Size of the logical disk to be created in GiB. If unspecified or\nset be 0, the maximum capacity of disk will be used for logical\ndisk.",
                    "minimum": 0,
                    "type": "integer"
                  }
                },
                "required": [
                  "level"
                ],
                "type": "object",
                "additionalProperties": false
              },
              "nullable": true,
              "type": "array"
            },
            "softwareRAIDVolumes": {
              "description": "The list of logical disks for software RAID, if rootDeviceHints isn't used, first volume is root volume.\nIf HardwareRAIDVolumes is set this item will be invalid.\nThe number of created Software RAID devices must be 1 or 2.\nIf there is only one Software RAID device, it has to be a RAID-1.\nIf there are two, the first one has to be a RAID-1, while the RAID level for the second one can be 0, 1, or 1+0.\nAs the first RAID device will be the deployment device,\nenforcing a RAID-1 reduces the risk of ending up with a non-booting host in case of a disk failure.\nSoftware RAID will always be deleted.",
              "items": {
                "description": "SoftwareRAIDVolume defines the desired configuration of volume in software RAID.",
                "properties": {
                  "level": {
                    "description": "RAID level for the logical disk. The following levels are supported:\n0, 1 and 1+0.",
                    "enum": [
                      "0",
                      "1",
                      "1+0"
                    ],
                    "type": "string"
                  },
                  "physicalDisks": {
                    "description": "A list of device hints, the number of items should be greater than or equal to 2.",
                    "items": {
                      "description": "RootDeviceHints holds the hints for specifying the storage location\nfor the root filesystem for the image.",
                      "properties": {
                        "deviceName": {
                          "description": "A Linux device name like \"/dev/vda\", or a by-path link to it like\n\"/dev/disk/by-path/pci-0000:01:00.0-scsi-0:2:0:0\". The hint must match\nthe actual value exactly.",
                          "type": "string"
                        },
                        "hctl": {
                          "description": "A SCSI bus address like 0:0:0:0. The hint must match the actual\nvalue exactly.",
                          "type": "string"
                        },
                        "minSizeGigabytes": {
                          "description": "The minimum size of the device in Gigabytes.",
                          "minimum": 0,
                          "type": "integer"
                        },
                        "model": {
                          "description": "A vendor-specific device identifier. The hint can be a\nsubstring of the actual value.",
                          "type": "string"
                        },
                        "rotational": {
                          "description": "True if the device should use spinning media, false otherwise.",
                          "type": "boolean"
                        },
                        "serialNumber": {
                          "description": "Device serial number. The hint must match the actual value\nexactly.",
                          "type": "string"
                        },
                        "vendor": {
                          "description": "The name of the vendor or manufacturer of the device. The hint\ncan be a substring of the actual value.",
                          "type": "string"
                        },
                        "wwn": {
                          "description": "Unique storage identifier. The hint must match the actual value\nexactly.",
                          "type": "string"
                        },
                        "wwnVendorExtension": {
                          "description": "Unique vendor storage identifier. The hint must match the\nactual value exactly.",
                          "type": "string"
                        },
                        "wwnWithExtension": {
                          "description": "Unique storage identifier with the vendor extension\nappended. The hint must match the actual value exactly.",
                          "type": "string"
                        }
                      },
                      "type": "object",
                      "additionalProperties": false
                    },
                    "minItems": 2,
                    "type": "array"
                  },
                  "sizeGibibytes": {
                    "description": "Size of the logical disk to be created in GiB.\nIf unspecified or set be 0, the maximum capacity of disk will be used for logical disk.",
                    "minimum": 0,
                    "type": "integer"
                  }
                },
                "required": [
                  "level"
                ],
                "type": "object",
                "additionalProperties": false
              },
              "maxItems": 2,
              "nullable": true,
              "type": "array"
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "rootDeviceHints": {
          "description": "Provide guidance about how to choose the device for the image\nbeing provisioned. The default is currently to use /dev/sda as\nthe root device.",
          "properties": {
            "deviceName": {
              "description": "A Linux device name like \"/dev/vda\", or a by-path link to it like\n\"/dev/disk/by-path/pci-0000:01:00.0-scsi-0:2:0:0\". The hint must match\nthe actual value exactly.",
              "type": "string"
            },
            "hctl": {
              "description": "A SCSI bus address like 0:0:0:0. The hint must match the actual\nvalue exactly.",
              "type": "string"
            },
            "minSizeGigabytes": {
              "description": "The minimum size of the device in Gigabytes.",
              "minimum": 0,
              "type": "integer"
            },
            "model": {
              "description": "A vendor-specific device identifier. The hint can be a\nsubstring of the actual value.",
              "type": "string"
            },
            "rotational": {
              "description": "True if the device should use spinning media, false otherwise.",
              "type": "boolean"
            },
            "serialNumber": {
              "description": "Device serial number. The hint must match the actual value\nexactly.",
              "type": "string"
            },
            "vendor": {
              "description": "The name of the vendor or manufacturer of the device. The hint\ncan be a substring of the actual value.",
              "type": "string"
            },
            "wwn": {
              "description": "Unique storage identifier. The hint must match the actual value\nexactly.",
              "type": "string"
            },
            "wwnVendorExtension": {
              "description": "Unique vendor storage identifier. The hint must match the\nactual value exactly.",
              "type": "string"
            },
            "wwnWithExtension": {
              "description": "Unique storage identifier with the vendor extension\nappended. The hint must match the actual value exactly.",
              "type": "string"
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "taints": {
          "description": "Taints is the full, authoritative list of taints to apply to\nthe corresponding Machine. This list will overwrite any\nmodifications made to the Machine on an ongoing basis.",
          "items": {
            "description": "The node this Taint is attached to has the \"effect\" on\nany pod that does not tolerate the Taint.",
            "properties": {
              "effect": {
                "description": "Required. The effect of the taint on pods\nthat do not tolerate the taint.\nValid 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.\nIt is only written for NoExecute taints.",
                "format": "date-time",
                "type": "string"
              },
              "value": {
                "description": "The taint value corresponding to the taint key.",
                "type": "string"
              }
            },
            "required": [
              "effect",
              "key"
            ],
            "type": "object",
            "additionalProperties": false
          },
          "type": "array"
        },
        "userData": {
          "description": "UserData holds the reference to the Secret containing the user data\nwhich is passed to the Config Drive and interpreted by the\nfirst-boot software such as cloud-init. The format of user data is\nspecific to the first-boot software.",
          "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",
          "additionalProperties": false
        }
      },
      "required": [
        "online"
      ],
      "type": "object",
      "additionalProperties": false
    },
    "status": {
      "description": "BareMetalHostStatus defines the observed state of BareMetalHost.",
      "properties": {
        "errorCount": {
          "default": 0,
          "description": "ErrorCount records how many times the host has encoutered an error since the last successful operation",
          "type": "integer"
        },
        "errorMessage": {
          "description": "The last error message reported by the provisioning subsystem.",
          "type": "string"
        },
        "errorType": {
          "description": "ErrorType indicates the type of failure encountered when the\nOperationalStatus is OperationalStatusError",
          "enum": [
            "provisioned registration error",
            "registration error",
            "inspection error",
            "preparation error",
            "provisioning error",
            "power management error",
            "servicing 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\nin 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",
              "x-kubernetes-map-type": "atomic",
              "additionalProperties": false
            },
            "credentialsVersion": {
              "type": "string"
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "hardware": {
          "description": "The hardware discovered to exist on the host.\nThis field will be removed in the next API version in favour of the\nseparate HardwareData resource.",
          "properties": {
            "cpu": {
              "description": "Details of the CPU(s) in the system.",
              "properties": {
                "arch": {
                  "type": "string"
                },
                "clockMegahertz": {
                  "description": "ClockSpeed is a clock speed in MHz",
                  "format": "double",
                  "type": "number"
                },
                "count": {
                  "type": "integer"
                },
                "flags": {
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "model": {
                  "type": "string"
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "firmware": {
              "description": "System firmware information.",
              "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"
                    }
                  },
                  "type": "object",
                  "additionalProperties": false
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "hostname": {
              "type": "string"
            },
            "nics": {
              "description": "List of network interfaces for the host.",
              "items": {
                "description": "NIC describes one network interface on the host.",
                "properties": {
                  "ip": {
                    "description": "The IP address of the interface. This will be an IPv4 or IPv6 address\nif one is present.  If both IPv4 and IPv6 addresses are present in a\ndual-stack environment, two nics will be output, one with each IP.",
                    "type": "string"
                  },
                  "mac": {
                    "description": "The device MAC address",
                    "pattern": "[0-9a-fA-F]{2}(:[0-9a-fA-F]{2}){5}",
                    "type": "string"
                  },
                  "model": {
                    "description": "The vendor and product IDs of the NIC, e.g. \"0x8086 0x1572\"",
                    "type": "string"
                  },
                  "name": {
                    "description": "The name of the network interface, e.g. \"en0\"",
                    "type": "string"
                  },
                  "pxe": {
                    "description": "Whether the NIC is PXE Bootable",
                    "type": "boolean"
                  },
                  "speedGbps": {
                    "description": "The speed of the device in Gigabits per second",
                    "type": "integer"
                  },
                  "vlanId": {
                    "description": "The untagged VLAN ID",
                    "format": "int32",
                    "maximum": 4094,
                    "minimum": 0,
                    "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",
                          "maximum": 4094,
                          "minimum": 0,
                          "type": "integer"
                        },
                        "name": {
                          "type": "string"
                        }
                      },
                      "type": "object",
                      "additionalProperties": false
                    },
                    "type": "array"
                  }
                },
                "type": "object",
                "additionalProperties": false
              },
              "type": "array"
            },
            "ramMebibytes": {
              "description": "The host's amount of memory in Mebibytes.",
              "type": "integer"
            },
            "storage": {
              "description": "List of storage (disk, SSD, etc.) available to the host.",
              "items": {
                "description": "Storage describes one storage device (disk, SSD, etc.) on the host.",
                "properties": {
                  "alternateNames": {
                    "description": "A list of alternate Linux device names of the disk, e.g. \"/dev/sda\".\nNote that this list is not exhaustive, and names may not be stable\nacross reboots.",
                    "items": {
                      "type": "string"
                    },
                    "type": "array"
                  },
                  "hctl": {
                    "description": "The SCSI location of the device",
                    "type": "string"
                  },
                  "model": {
                    "description": "Hardware model",
                    "type": "string"
                  },
                  "name": {
                    "description": "A Linux device name of the disk, e.g.\n\"/dev/disk/by-path/pci-0000:01:00.0-scsi-0:2:0:0\". This will be a name\nthat is stable across reboots if one is available.",
                    "type": "string"
                  },
                  "rotational": {
                    "description": "Whether this disk represents rotational storage.\nThis field is not recommended for usage, please\nprefer using 'Type' field instead, this field\nwill be deprecated eventually.",
                    "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"
                  },
                  "type": {
                    "description": "Device type, one of: HDD, SSD, NVME.",
                    "enum": [
                      "HDD",
                      "SSD",
                      "NVME"
                    ],
                    "type": "string"
                  },
                  "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"
                  }
                },
                "type": "object",
                "additionalProperties": false
              },
              "type": "array"
            },
            "systemVendor": {
              "description": "System vendor information.",
              "properties": {
                "manufacturer": {
                  "type": "string"
                },
                "productName": {
                  "type": "string"
                },
                "serialNumber": {
                  "type": "string"
                }
              },
              "type": "object",
              "additionalProperties": false
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "hardwareProfile": {
          "description": "The name of the profile matching the hardware details.\nHardware profiles are deprecated and should not be relied on.",
          "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\non this host.",
          "properties": {
            "deprovision": {
              "description": "OperationMetric contains metadata about an operation (inspection,\nprovisioning, etc.) used for tracking metrics.",
              "properties": {
                "end": {
                  "format": "date-time",
                  "nullable": true,
                  "type": "string"
                },
                "start": {
                  "format": "date-time",
                  "nullable": true,
                  "type": "string"
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "inspect": {
              "description": "OperationMetric contains metadata about an operation (inspection,\nprovisioning, etc.) used for tracking metrics.",
              "properties": {
                "end": {
                  "format": "date-time",
                  "nullable": true,
                  "type": "string"
                },
                "start": {
                  "format": "date-time",
                  "nullable": true,
                  "type": "string"
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "provision": {
              "description": "OperationMetric contains metadata about an operation (inspection,\nprovisioning, etc.) used for tracking metrics.",
              "properties": {
                "end": {
                  "format": "date-time",
                  "nullable": true,
                  "type": "string"
                },
                "start": {
                  "format": "date-time",
                  "nullable": true,
                  "type": "string"
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "register": {
              "description": "OperationMetric contains metadata about an operation (inspection,\nprovisioning, etc.) used for tracking metrics.",
              "properties": {
                "end": {
                  "format": "date-time",
                  "nullable": true,
                  "type": "string"
                },
                "start": {
                  "format": "date-time",
                  "nullable": true,
                  "type": "string"
                }
              },
              "type": "object",
              "additionalProperties": false
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "operationalStatus": {
          "description": "OperationalStatus holds the status of the host",
          "enum": [
            "",
            "OK",
            "discovered",
            "error",
            "delayed",
            "detached",
            "servicing"
          ],
          "type": "string"
        },
        "poweredOn": {
          "description": "The currently detected power state of the host. This field may get\nbriefly out of sync with the actual state of the hardware while\nprovisioning processes are running.",
          "type": "boolean"
        },
        "provisioning": {
          "description": "Information tracked by the provisioner.",
          "properties": {
            "ID": {
              "description": "The hosts's ID from the underlying provisioning tool (e.g. the\nIronic node UUID).",
              "type": "string"
            },
            "bootMode": {
              "description": "BootMode indicates the boot mode used to provision the host.",
              "enum": [
                "UEFI",
                "UEFISecureBoot",
                "legacy"
              ],
              "type": "string"
            },
            "customDeploy": {
              "description": "Custom deploy procedure applied to the host.",
              "properties": {
                "method": {
                  "description": "Custom deploy method name.\nThis name is specific to the deploy ramdisk used. If you don't have\na custom deploy ramdisk, you shouldn't use CustomDeploy.",
                  "type": "string"
                }
              },
              "required": [
                "method"
              ],
              "type": "object",
              "additionalProperties": false
            },
            "firmware": {
              "description": "The firmware settings that have been applied.",
              "properties": {
                "simultaneousMultithreadingEnabled": {
                  "description": "Allows a single physical processor core to appear as several logical processors.",
                  "enum": [
                    true,
                    false
                  ],
                  "type": "boolean"
                },
                "sriovEnabled": {
                  "description": "SR-IOV support enables a hypervisor to create virtual instances of a PCI-express device, potentially increasing performance.",
                  "enum": [
                    true,
                    false
                  ],
                  "type": "boolean"
                },
                "virtualizationEnabled": {
                  "description": "Supports the virtualization of platform hardware.",
                  "enum": [
                    true,
                    false
                  ],
                  "type": "boolean"
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "image": {
              "description": "Image holds the details of the last image successfully\nprovisioned to the host.",
              "properties": {
                "checksum": {
                  "description": "Checksum is the checksum for the image. Required for all formats\nexcept for \"live-iso\".",
                  "type": "string"
                },
                "checksumType": {
                  "description": "ChecksumType is the checksum algorithm for the image, e.g md5, sha256 or sha512.\nThe special value \"auto\" can be used to detect the algorithm from the checksum.\nIf missing, MD5 is used. If in doubt, use \"auto\".",
                  "enum": [
                    "md5",
                    "sha256",
                    "sha512",
                    "auto"
                  ],
                  "type": "string"
                },
                "format": {
                  "description": "Format contains the format of the image (raw, qcow2, ...).\nWhen set to \"live-iso\", an ISO 9660 image referenced by the url will\nbe live-booted and not deployed to disk.",
                  "enum": [
                    "raw",
                    "qcow2",
                    "vdi",
                    "vmdk",
                    "live-iso"
                  ],
                  "type": "string"
                },
                "url": {
                  "description": "URL is a location of an image to deploy.",
                  "type": "string"
                }
              },
              "required": [
                "url"
              ],
              "type": "object",
              "additionalProperties": false
            },
            "raid": {
              "description": "The RAID configuration that has been applied.",
              "properties": {
                "hardwareRAIDVolumes": {
                  "description": "The list of logical disks for hardware RAID, if rootDeviceHints isn't used, first volume is root volume.\nYou can set the value of this field to `[]` to clear all the hardware RAID configurations.",
                  "items": {
                    "description": "HardwareRAIDVolume defines the desired configuration of volume in hardware RAID.",
                    "properties": {
                      "controller": {
                        "description": "The name of the RAID controller to use.",
                        "type": "string"
                      },
                      "level": {
                        "description": "RAID level for the logical disk. The following levels are supported:\n0, 1, 2, 5, 6, 1+0, 5+0, 6+0 (drivers may support only some of them).",
                        "enum": [
                          "0",
                          "1",
                          "2",
                          "5",
                          "6",
                          "1+0",
                          "5+0",
                          "6+0"
                        ],
                        "type": "string"
                      },
                      "name": {
                        "description": "Name of the volume. Should be unique within the Node. If not\nspecified, the name will be auto-generated.",
                        "maxLength": 64,
                        "type": "string"
                      },
                      "numberOfPhysicalDisks": {
                        "description": "Integer, number of physical disks to use for the logical disk.\nDefaults to minimum number of disks required for the particular RAID\nlevel.",
                        "minimum": 1,
                        "type": "integer"
                      },
                      "physicalDisks": {
                        "description": "Optional list of physical disk names to be used for the hardware RAID volumes. The disk names are interpreted\nby the hardware RAID controller, and the format is hardware specific.",
                        "items": {
                          "type": "string"
                        },
                        "type": "array"
                      },
                      "rotational": {
                        "description": "Select disks with only rotational (if set to true) or solid-state\n(if set to false) storage. By default, any disks can be picked.",
                        "type": "boolean"
                      },
                      "sizeGibibytes": {
                        "description": "Size of the logical disk to be created in GiB. If unspecified or\nset be 0, the maximum capacity of disk will be used for logical\ndisk.",
                        "minimum": 0,
                        "type": "integer"
                      }
                    },
                    "required": [
                      "level"
                    ],
                    "type": "object",
                    "additionalProperties": false
                  },
                  "nullable": true,
                  "type": "array"
                },
                "softwareRAIDVolumes": {
                  "description": "The list of logical disks for software RAID, if rootDeviceHints isn't used, first volume is root volume.\nIf HardwareRAIDVolumes is set this item will be invalid.\nThe number of created Software RAID devices must be 1 or 2.\nIf there is only one Software RAID device, it has to be a RAID-1.\nIf there are two, the first one has to be a RAID-1, while the RAID level for the second one can be 0, 1, or 1+0.\nAs the first RAID device will be the deployment device,\nenforcing a RAID-1 reduces the risk of ending up with a non-booting host in case of a disk failure.\nSoftware RAID will always be deleted.",
                  "items": {
                    "description": "SoftwareRAIDVolume defines the desired configuration of volume in software RAID.",
                    "properties": {
                      "level": {
                        "description": "RAID level for the logical disk. The following levels are supported:\n0, 1 and 1+0.",
                        "enum": [
                          "0",
                          "1",
                          "1+0"
                        ],
                        "type": "string"
                      },
                      "physicalDisks": {
                        "description": "A list of device hints, the number of items should be greater than or equal to 2.",
                        "items": {
                          "description": "RootDeviceHints holds the hints for specifying the storage location\nfor the root filesystem for the image.",
                          "properties": {
                            "deviceName": {
                              "description": "A Linux device name like \"/dev/vda\", or a by-path link to it like\n\"/dev/disk/by-path/pci-0000:01:00.0-scsi-0:2:0:0\". The hint must match\nthe actual value exactly.",
                              "type": "string"
                            },
                            "hctl": {
                              "description": "A SCSI bus address like 0:0:0:0. The hint must match the actual\nvalue exactly.",
                              "type": "string"
                            },
                            "minSizeGigabytes": {
                              "description": "The minimum size of the device in Gigabytes.",
                              "minimum": 0,
                              "type": "integer"
                            },
                            "model": {
                              "description": "A vendor-specific device identifier. The hint can be a\nsubstring of the actual value.",
                              "type": "string"
                            },
                            "rotational": {
                              "description": "True if the device should use spinning media, false otherwise.",
                              "type": "boolean"
                            },
                            "serialNumber": {
                              "description": "Device serial number. The hint must match the actual value\nexactly.",
                              "type": "string"
                            },
                            "vendor": {
                              "description": "The name of the vendor or manufacturer of the device. The hint\ncan be a substring of the actual value.",
                              "type": "string"
                            },
                            "wwn": {
                              "description": "Unique storage identifier. The hint must match the actual value\nexactly.",
                              "type": "string"
                            },
                            "wwnVendorExtension": {
                              "description": "Unique vendor storage identifier. The hint must match the\nactual value exactly.",
                              "type": "string"
                            },
                            "wwnWithExtension": {
                              "description": "Unique storage identifier with the vendor extension\nappended. The hint must match the actual value exactly.",
                              "type": "string"
                            }
                          },
                          "type": "object",
                          "additionalProperties": false
                        },
                        "minItems": 2,
                        "type": "array"
                      },
                      "sizeGibibytes": {
                        "description": "Size of the logical disk to be created in GiB.\nIf unspecified or set be 0, the maximum capacity of disk will be used for logical disk.",
                        "minimum": 0,
                        "type": "integer"
                      }
                    },
                    "required": [
                      "level"
                    ],
                    "type": "object",
                    "additionalProperties": false
                  },
                  "maxItems": 2,
                  "nullable": true,
                  "type": "array"
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "rootDeviceHints": {
              "description": "The root device hints used to provision the host.",
              "properties": {
                "deviceName": {
                  "description": "A Linux device name like \"/dev/vda\", or a by-path link to it like\n\"/dev/disk/by-path/pci-0000:01:00.0-scsi-0:2:0:0\". The hint must match\nthe actual value exactly.",
                  "type": "string"
                },
                "hctl": {
                  "description": "A SCSI bus address like 0:0:0:0. The hint must match the actual\nvalue exactly.",
                  "type": "string"
                },
                "minSizeGigabytes": {
                  "description": "The minimum size of the device in Gigabytes.",
                  "minimum": 0,
                  "type": "integer"
                },
                "model": {
                  "description": "A vendor-specific device identifier. The hint can be a\nsubstring of the actual value.",
                  "type": "string"
                },
                "rotational": {
                  "description": "True if the device should use spinning media, false otherwise.",
                  "type": "boolean"
                },
                "serialNumber": {
                  "description": "Device serial number. The hint must match the actual value\nexactly.",
                  "type": "string"
                },
                "vendor": {
                  "description": "The name of the vendor or manufacturer of the device. The hint\ncan be a substring of the actual value.",
                  "type": "string"
                },
                "wwn": {
                  "description": "Unique storage identifier. The hint must match the actual value\nexactly.",
                  "type": "string"
                },
                "wwnVendorExtension": {
                  "description": "Unique vendor storage identifier. The hint must match the\nactual value exactly.",
                  "type": "string"
                },
                "wwnWithExtension": {
                  "description": "Unique storage identifier with the vendor extension\nappended. The hint must match the actual value exactly.",
                  "type": "string"
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "state": {
              "description": "An indicator for what the provisioner is doing with the host.",
              "type": "string"
            }
          },
          "required": [
            "ID",
            "state"
          ],
          "type": "object",
          "additionalProperties": false
        },
        "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\nin 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",
              "x-kubernetes-map-type": "atomic",
              "additionalProperties": false
            },
            "credentialsVersion": {
              "type": "string"
            }
          },
          "type": "object",
          "additionalProperties": false
        }
      },
      "required": [
        "errorCount",
        "errorMessage",
        "operationalStatus",
        "poweredOn",
        "provisioning"
      ],
      "type": "object",
      "additionalProperties": false
    }
  },
  "type": "object"
}
