Adds a new feature to the ironic virt driver, which allows
multiple nova-compute services to be run simultaneously. This uses
consistent hashing to divide the ironic nodes between the nova-compute
services, with the hash ring being refreshed each time the resource tracker
Note that instances will still be owned by the same nova-compute service
for the entire life of the instance, and so the ironic node that instance
is on will also be managed by the same nova-compute service until the node
is deleted. This also means that removing a nova-compute service will
leave instances managed by that service orphaned, and as such most
instance actions will not work until a nova-compute service with the same
hostname is brought (back) online.
When nova-compute services are brought up or down, the ring will eventually
re-balance (when the resource tracker runs on each compute). This may
result in duplicate compute_node entries for ironic nodes while the
nova-compute service pool is re-balancing. However, because any
nova-compute service running the ironic virt driver can manage any ironic
node, if a build request goes to the compute service not currently managing
the node the build request is for, it will still succeed.
There is no configuration to do to enable this feature; it is always
enabled. There are no major changes when only one compute service is
running. If more compute services are brought online, the bigger changes
come into play.
Note that this is tested when running with only one nova-compute service,
but not more than one. As such, this should be used with caution for
multiple compute hosts until it is properly tested in CI.