resource tracking is incorrect for ironic
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
OpenStack Compute (nova) |
Expired
|
Undecided
|
Unassigned |
Bug Description
Ironic nodes can only be assigned to a single instances. So resource allocation is "all or nothing" - i.e. if an instance is spawned on a node all the resources become unavailable no mater how much was stated in the flavor used. The view of the resource tracker does not match this behavior, leading to attempts to spawn instances that can not be accommodated.
More specifically, when an instance is sent to a host manager to build (in ComputeManager.
If there is a subsequent instance sent for that node, the resource tracker will accept it if the amount of resource it requests is less than the remaining amount available.
In ironic, spawning an instance will result in no resources left available on that host. So the resource tracker has the wrong view of how much resource is available at the node.
Note that the ironic driver is complemented by an ironic version of the host manager at the scheduler that does do the right thing for ironic in its consume method. However, its values are overridden by those retrieved from the resource tracker, so it is overridden by the values provided by the resource tracker.
Also note that the get_available_
Resource tracking can only work with ironic if the exact match filters are used. In which case it works by coincidence. The resource tracker resource consumption should be specialised to deal with ironic nodes correctly.
description: | updated |
tags: | added: ironic |
Changed in nova: | |
assignee: | nobody → Alex Xu (xuhj) |
Changed in nova: | |
importance: | Undecided → Low |
tags: | added: scheduler |
Changed in nova: | |
status: | Triaged → Confirmed |
I saw some problem, and I test it, this problem can reproduce.