tl;dr we fail to save free_disk_gb to the compute node, but later create the resource provider with inventory, so the scheduler gets the provider from placement but the node doesn't have free_disk_gb so the HostState isn't updated and gets run through the filters/weighers anyway and blows up in CPUWeigher.
I've done debugging to figure out the root cause of this and those notes are here:
https:/ /review. opendev. org/#/c/ 668252/ 1/nova/ scheduler/ host_manager. py@626
tl;dr we fail to save free_disk_gb to the compute node, but later create the resource provider with inventory, so the scheduler gets the provider from placement but the node doesn't have free_disk_gb so the HostState isn't updated and gets run through the filters/weighers anyway and blows up in CPUWeigher.