The compute node calls the libvirt API `getCapabilities' to get the CPU features for the compute node. Unfortunately, this API doesn't return all of the CPU features, it returns a CPU model name and any extra features that are not part of that model. This makes it extremely difficult for anything that wants to check for specific CPU featurs (like a ComputeCapabilities scheduler filter) to know what's available on that compute node.
libvirt has been enhanced to add a new flag, VIR_CONNECT_BASELINE_CPU_EXPAND_FEATURES, to the `baselineCPU' API that will cause that API to return all CPU features, explicitly listing the ones that are part of the CPU model. Need to fix the `nova/virt/libvirt/driver.py' code to call this API to get all the CPU features.
Fix proposed to branch: master /review. openstack. org/43984
Review: https:/