Ironic flavor migration and default resource classes
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
OpenStack Compute (nova) |
Triaged
|
Medium
|
Unassigned | ||
Rocky |
Triaged
|
High
|
Unassigned | ||
Stein |
New
|
Undecided
|
Unassigned | ||
Train |
New
|
Undecided
|
Unassigned |
Bug Description
The Ironic flavor migration to use resource classes happened in Pike/Queens.
The flavors and the instances needed to be upgraded with the correct resource class.
This was done by an online data migration.
Looking into Rocky code: ironic.
There is also an offline data migration using nova-manage.
These migrations added the node resource class into instance_
Looking into Rocky code there is also a TODO in _pike_flavor_
"This code can be removed in Queens, and will need to be updated to also alter extra_specs to zero-out the old-style standard resource classes of VCPU, MEMORY_MB, and DISK_GB."
Currently all my Ironic instances have the correct node resource class defined, but "old" instances (created before the flavor migration) don't have VCPU, MEMORY_MB, DISK_GB set to 0, in instance_
In Rocky the resource tracker raises the following message:
"There was a conflict when trying to complete your request.\n\n Unable to allocate inventory: Inventory for 'VCPU' on resource provider XXXX invalid. ", "title": "Conflict"
because it tries to update the allocation but the inventory doesn't have vcpu resources.
---
As mitigation we now have: "requires_
tags: | added: compute ironic resource-tracker |
Changed in nova: | |
importance: | Undecided → High |
Changed in nova: | |
importance: | High → Medium |
Changed in nova: | |
assignee: | Matt Riedemann (mriedem) → nobody |
status: | In Progress → Triaged |
Are you setting [workarounds] /report_ ironic_ standard_ resource_ class_inventory =False? I assume so since you said you migrated your flavors and nodes so that scheduling for those baremetal nodes should only use the custom resource class from the ironic node (and flavor).
If so, then the IronicDriver. requires_ allocation_ refresh variable should probably be changed to:
IronicDriver. requires_ allocation_ refresh = not CONF.workaround s.report_ ironic_ standard_ resource_ class_inventory