MachineInventory [elemental.cattle.io/v1beta1]
MachineInventory is the long-lived identity object for a physical host. It is created by elemental-register after a host boots the seed ISO, and it survives reprovisioning — BaremetalMachine only borrows it for the lifetime of one Kubernetes node. Inventory-owned managed data volumes also survive deletion of that temporary Machine.
The bare-metal provider and its host-side observer use these parts of the resource:
metadata.name— must appear in aMachineInventoryPool.spec.machineInventories[].nameentry for the host to be allocatable.spec.observedNetwork— an Alauda-fork-only field captured during registration; the provider replays it as cloud-initnetwork-configv2 on every reprovision, so the host comes back with the same interface/bond/VLAN/IP layout as when it was first inventoried.spec.storage— optional operator-authored desired state for up to 32 inventory-owned data volumes. It selects devices by stable IDs, definesAdoptorInitializeIfBlank, XFS or ext4, mount paths, required behavior, and a retry nonce.status.observedStorage— objective devices, identities, signatures, filesystems, mounts, multipath health, and observation watermark reported byelemental-storage-observer.service.status.storage— provider-owned lifecycle state and journal for Prepare, Activate, Deactivate, and Release, including applied volume identities andStoragePrepared/StorageActiveconditions.
The provider also writes metadata.annotations (baremetal.alauda.io/owner-* and storage plan-claim metadata), updates status.plan / status.conditions, and serializes storage-prepare, reprovision, clean, and storage-release work through the inventory's default plan Secret.
InitializeIfBlank is destructive when its target is blank. Admission requires an approval bound to the current Inventory UID, normalized storage hash, and a monotonically increasing counter, plus update authorization on the virtual machineinventories/storageinitialize subresource. Use the matching storagectl binary to create the atomic patch; do not calculate or edit this approval by hand.
For device-selection rules, lifecycle semantics, compatibility boundaries, and a complete example, see Manage Data Disks on Bare-Metal Hosts.
- Type
object
Specification
.spec
- Type
object
.spec.ipAddressClaims
- Description
- IPAddressClaims is a map of IPAddressClaim associated to this machine. The map key is the ipAddressPool.name.
- Type
object
.spec.ipAddressPools
- Description
- IPAddressPools is a list of IPAddressPool associated to this machine.
- Type
object
.spec.network
- Description
- NetworkConfig is the final NetworkConfig.
- Type
object
.spec.network.ipAddresses
- Description
- IPAddresses contains a map of claimed IPAddresses
- Type
object
.spec.observedNetwork
- Description
- ObservedNetwork is a live-ISO-side snapshot of the host's actual network configuration uploaded by elemental-register during initial registration (Alauda fork). It is informational only and is intentionally kept separate from Network (the target/template network). Consumers such as baremetal providers can read this to know what the host looked like before install-time network reconfiguration.
- Type
object
.spec.observedNetwork.dnsServers
- Description
- DNSServers observed (typically from /etc/resolv.conf).
- Type
array
.spec.observedNetwork.dnsServers[]
- Type
string
.spec.observedNetwork.interfaces
- Description
- Interfaces observed on the host.
- Type
array
.spec.observedNetwork.interfaces[]
- Description
- ObservedInterface describes a single network interface on the host.
- Type
object- Required
name
.spec.observedNetwork.interfaces[].addresses
- Description
- Addresses assigned to the interface, in CIDR form (e.g. 10.0.0.5/24, fe80::1/64). Both IPv4 and IPv6 may appear.
- Type
array
.spec.observedNetwork.interfaces[].addresses[]
- Type
string
.spec.observedNetwork.routes
- Description
- Routes observed in the host's routing table.
- Type
array
.spec.observedNetwork.routes[]
- Description
- ObservedRoute describes a single routing table entry.
- Type
object- Required
destination
.spec.observedNetwork.searchDomains
- Description
- SearchDomains observed.
- Type
array
.spec.observedNetwork.searchDomains[]
- Type
string
.spec.storage
- Description
- Storage is the explicit desired state for Inventory-owned data volumes. Devices omitted from this list remain unmanaged.
- Type
object
.spec.storage.volumes
- Description
- Volumes are the only block devices the platform may manage.
- Type
array
.spec.storage.volumes[]
- Description
- MachineInventoryStorageVolume declares one filesystem and its business mount point on this Inventory.
- Type
object- Required
filesystemmountnamesource
.spec.storage.volumes[].filesystem
- Description
- StorageVolumeFilesystem declares filesystem adoption/initialization intent.
- Type
object- Required
policytype
.spec.storage.volumes[].mount
- Description
- StorageVolumeMount declares the business mount path and readiness policy.
- Type
object- Required
path
.spec.storage.volumes[].mount.options
- Description
- Options contains individual, admission-whitelisted mount options.
- Type
array
.spec.storage.volumes[].mount.options[]
- Type
string
.spec.storage.volumes[].source
- Description
- StorageVolumeSource selects one observer-reported logical block device.
- Type
object- Required
deviceID
.spec.storage.volumes[].source.multipath
- Description
- Multipath is valid only for a wwid: aggregate map.
- Type
object
.status
- Type
object
.status.conditions
- Description
- Conditions describe the state of the machine inventory object.
- Type
array
.status.conditions[]
- Description
- Condition contains details for one aspect of the current state of this API Resource.
- Type
object- Required
lastTransitionTimemessagereasonstatustype
.status.observedStorage
- Description
- ObservedStorage is objective host state written only by the authenticated periodic observer channel.
- Type
object
.status.observedStorage.devices
- Description
- Devices contains facts for all discovered logical block devices.
- Type
array
.status.observedStorage.devices[]
- Description
- ObservedStorageDevice describes one logical block device and its topology.
- Type
object- Required
idkindsystemRole
.status.observedStorage.devices[].consumers
- Description
- Consumers contains descendant block devices layered on this logical device (for example partitions, dm-crypt, LVM or RAID). These are objective topology facts; provider policy decides whether they make the device ineligible for management.
- Type
array
.status.observedStorage.devices[].consumers[]
- Description
- ObservedStorageConsumer describes one descendant block consumer. Path is diagnostic only; Type and FilesystemType are the kernel/util-linux facts.
- Type
object- Required
pathtype
.status.observedStorage.devices[].consumers[].mounts
- Type
array
.status.observedStorage.devices[].consumers[].mounts[]
- Type
string
.status.observedStorage.devices[].filesystem
- Description
- ObservedStorageFilesystem describes an existing filesystem.
- Type
object- Required
type
.status.observedStorage.devices[].health
- Description
- ObservedStorageMultipathHealth reports aggregate path health.
- Type
object
.status.observedStorage.devices[].memberIDs
- Description
- MemberIDs lists Multipath member-path diagnostic identities. Members are never valid desired device IDs.
- Type
array
.status.observedStorage.devices[].memberIDs[]
- Type
string
.status.observedStorage.devices[].mounts
- Type
array
.status.observedStorage.devices[].mounts[]
- Description
- ObservedStorageMount describes a current mount of this exact logical device.
- Type
object- Required
path
.status.observedStorage.devices[].mounts[].options
- Type
array
.status.observedStorage.devices[].mounts[].options[]
- Type
string
.status.observedStorage.devices[].signatures
- Type
array
.status.observedStorage.devices[].signatures[]
- Description
- ObservedStorageSignature is one wipefs/lsblk signature fact.
- Type
object- Required
typevalue
.status.observedStorage.devices[].stablePaths
- Description
- StablePaths are current udev aliases for diagnostics/resolution.
- Type
array
.status.observedStorage.devices[].stablePaths[]
- Type
string
.status.observedStorage.devices[].systemEvidence
- Type
array
.status.observedStorage.devices[].systemEvidence[]
- Type
string
.status.plan
- Description
- PlanStatus reflect the status of the plan owned by the machine inventory object.
- Type
object
.status.plan.secretRef
- Description
- PlanSecretRef a reference to the created plan secret.
- Type
object
.status.storage
- Description
- Storage is desired-state convergence written only by the baremetal provider Inventory Storage Reconciler.
- Type
object
.status.storage.appliedVolumes
- Type
array
.status.storage.appliedVolumes[]
- Description
- ManagedStorageVolumeStatus is a complete cleanup-capable snapshot of one managed volume, not merely a diagnostic summary.
- Type
object- Required
deviceIDeffectiveRequiredfilesystemPolicyfilesystemTypemountPathnamerequired
.status.storage.appliedVolumes[].mountOptions
- Type
array
.status.storage.appliedVolumes[].mountOptions[]
- Type
string
.status.storage.conditions
- Type
array
.status.storage.conditions[]
- Description
- Condition contains details for one aspect of the current state of this API Resource.
- Type
object- Required
lastTransitionTimemessagereasonstatustype
.status.storage.operation
- Description
- StorageOperationStatus is the durable controller journal projection for a logical operation and its current execution attempt.
- Type
object- Required
attemptIDmutationStateoperationIDphaseplanOwnerKindplanOwnerUIDretryNoncestartedAttargetSpecHashtypeupdatedAt
.status.storage.operation.volumes
- Type
array
.status.storage.operation.volumes[]
- Description
- ManagedStorageVolumeStatus is a complete cleanup-capable snapshot of one managed volume, not merely a diagnostic summary.
- Type
object- Required
deviceIDeffectiveRequiredfilesystemPolicyfilesystemTypemountPathnamerequired
.status.storage.operation.volumes[].mountOptions
- Type
array
.status.storage.operation.volumes[].mountOptions[]
- Type
string
API Endpoints
The following API endpoints are available:
/apis/elemental.cattle.io/v1beta1/namespaces/{namespace}/machineinventoriesDELETE: delete collection of MachineInventoryGET: list objects of kind MachineInventoryPOST: create a new MachineInventory
/apis/elemental.cattle.io/v1beta1/namespaces/{namespace}/machineinventories/{name}DELETE: delete the specified MachineInventoryGET: read the specified MachineInventoryPATCH: partially update the specified MachineInventoryPUT: replace the specified MachineInventory
/apis/elemental.cattle.io/v1beta1/namespaces/{namespace}/machineinventories/{name}/statusGET: read status of the specified MachineInventoryPATCH: partially update status of the specified MachineInventoryPUT: replace status of the specified MachineInventory
/apis/elemental.cattle.io/v1beta1/namespaces/{namespace}/machineinventories
- HTTP method
DELETE- Description
- delete collection of MachineInventory
- HTTP responses
- HTTP method
GET- Description
- list objects of kind MachineInventory
- HTTP responses
- HTTP method
POST- Description
- create a new MachineInventory
- Query parameters
- Body parameters
- HTTP responses
/apis/elemental.cattle.io/v1beta1/namespaces/{namespace}/machineinventories/{name}
- HTTP method
DELETE- Description
- delete the specified MachineInventory
- Query parameters
- HTTP responses
- HTTP method
GET- Description
- read the specified MachineInventory
- HTTP responses
- HTTP method
PATCH- Description
- partially update the specified MachineInventory
- Query parameters
- HTTP responses
- HTTP method
PUT- Description
- replace the specified MachineInventory
- Query parameters
- Body parameters
- HTTP responses
/apis/elemental.cattle.io/v1beta1/namespaces/{namespace}/machineinventories/{name}/status
- HTTP method
GET- Description
- read status of the specified MachineInventory
- HTTP responses
- HTTP method
PATCH- Description
- partially update status of the specified MachineInventory
- Query parameters
- HTTP responses
- HTTP method
PUT- Description
- replace status of the specified MachineInventory
- Query parameters
- Body parameters
- HTTP responses