Switch undercloud from using Nova capabilities

Bug #1793134 reported by Dmitry Tantsur on 2018-09-18
This bug affects 1 person
Affects Status Importance Assigned to Milestone
Dmitry Tantsur

Bug Description

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: https://review.openstack.org/616585

Changed in tripleo:
status: Triaged → In Progress

Change abandoned by Juan Antonio Osorio Robles (<email address hidden>) on branch: master
Review: https://review.openstack.org/616585
Reason: clearing the gate

Reviewed: https://review.openstack.org/616585
Committed: https://git.openstack.org/cgit/openstack/tripleo-common/commit/?id=e3a410f699efb3fbdc34f95299c68c75bbc2de0a
Submitter: Zuul
Branch: master

commit e3a410f699efb3fbdc34f95299c68c75bbc2de0a
Author: Dmitry Tantsur <email address hidden>
Date: Thu Nov 8 15:52:19 2018 +0100

    Supports specifying profile explicitly in instackenv.json

    One day Nova will deprecate capabilities, and we'll have to use
    something else for profiles. As a preparational steps, start
    accepting profile as a separate instackenv.json field, thus decoupling
    it from the underlying implementation.

    Partial-Bug: #1793134
    Change-Id: Ife97a0955a480bcc41b3453d58ef7fe6488b476c

Changed in tripleo:
milestone: stein-2 → stein-3
Changed in tripleo:
milestone: stein-3 → stein-rc1
Changed in tripleo:
milestone: stein-rc1 → train-1
Changed in tripleo:
milestone: train-1 → train-2
Changed in tripleo:
milestone: train-2 → train-3
Changed in tripleo:
milestone: train-3 → ussuri-1
To post a comment you must log in.
This report contains Public information  Edit
Everyone can see this information.

Other bug subscribers