Hardware can have a wide range of capabiltiies and potential configurations. Ironic should expose these capabilities in a declarative way, and allow deployers to configure custom Nova flavors that map to specific types of hardware or hardware configurations. Ironic should then ensure these assertions about the hardware are made valid during the deploy process.
For instance, a machine booted with capabilities [“vt:on”, “turbo_mode:off”] would have Ironic properly configure those tenant-specific BIOS settings before deploying an image onto the node.
Deployers of Ironic currently must configure machines exactly as they would like them to be configured when deployed to. For instance, a deployer who wanted two different configurations of a given node to be mapped to two different nova flavors, that deployer would have to split their capacity, configure one half differently than the other, and manually add a capability string to node.properties.capabilities diffierentiating them that Nova could then schedule against.
Possible use cases include:
Nova scheduler would pass through the capabilities used to scheduled to a node, then Ironic would use that information to configure the node as desired in the flavor.