ComputeCapabilitiesFilter is going to be deprecated in favour of traits. Traits are similar to capabilities, but they are binary. A capability has a value (profile=compute), but a trait is either present (CUSTOM_PROFILE_COMPUTE) or not. The reasons for this decision are outside of this bug, but we have to get ready to Nova stopping using capabilities for scheduling.
Our options are:
1. Switch to traits ourselves.
2. Keep support for capabilities in our custom TripleOCapabilitiesFilter.
3. Speed up switch to metalsmith, as it still supports capabilities.
I think the only reasonable option currently is #1 - use traits. We are not ready to switch to metalsmith yet, and I'd highly avoid relying more on the TripleO-specific scheduling code.
The rough list of actions items for this is:
1. Update instackenv.json with support for "profile" field. It will be used to transparently set capabilities and/or traits. Deprecate setting "capabilities" via instackenv.json.
1.1. Provide conversion between capabilities and traits during the deprecation period.
2. On undercloud upgrade:
2.1. Add a trait CUSTOM_PROFILE_<PROFILE> for each node that has a profile already.
2.2. Change each flavor that refer to a profile to refer to a trait.
3. Update validations to look at traits (if needed).
4. Update profile matching commands to look at traits.
Updating profile matching requires ironic-inspector to support traits in the introspection rules. It is tracked in https://storyboard.openstack.org/#!/story/2003788.
Fix proposed to branch: master /review. openstack. org/616585
Review: https:/