Ironic virt driver is hardcoding Ironic API microversion

Bug #1739440 reported by Dmitry Tantsur on 2017-12-20
This bug affects 1 person
Affects Status Importance Assigned to Milestone
OpenStack Compute (nova)
Julia Kreger

Bug Description

Doing this imposes a minimum cap on the Ironic version Nova can work with, even if potentially it can use older version (with somewhat reduced functionality, for example, booting from volume is optional).

This complicates upgrades by enforcing a strict ordering between Ironic API and Nova compute. It also makes using mixed versions impossible.

We should make the virt driver negotiated a version, and then gracefully downgrade the feature set. See some thoughts at

If time allows in the Queens release, we would like to make the already merged configdrive change backward compatible with Pike.

Dmitry Tantsur (divius) on 2017-12-21
description: updated
Matt Riedemann (mriedem) wrote :

Let's see what the change looks like and then we'll decide if this is more of a bug fix or a feature.

Changed in nova:
status: New → Triaged
importance: Undecided → Medium
importance: Medium → Wishlist
Changed in nova:
assignee: nobody → Jim Rollenhagen (jim-rollenhagen)
status: Triaged → In Progress
Ruby Loo (rloo) wrote :

Jim submitted "Ironic: negotiate microversion to allow downgrade to Pike":

Ruby Loo (rloo) wrote :

Ironic's multinode, multitenant, grenade job (to test rolling upgrades) fails (see Bug 1744139) due to the constraint that ironic has to be upgraded before nova.

In the ironic test, keystone, glance, neutron is upgraded but nova is not upgraded. That is causing nova compute to fail/die due to (According to TheJulia):

08:59 TheJulia: rloo: basically, during the upgrade, a bunch of pip libraries with their chared c code are getting deleted
08:59 TheJulia: or moved
08:59 TheJulia: and then deleted
08:59 TheJulia: so.... bad things happen afterwards

This patch will help fix this grenade test.

Change abandoned by Jim Rollenhagen (<email address hidden>) on branch: master
Reason: Can just do this the right way if we have to wait for queens anyway

Changed in nova:
assignee: Jim Rollenhagen (jim-rollenhagen) → Julia Kreger (juliaashleykreger)

Change abandoned by Hironori Shiina (<email address hidden>) on branch: master
Reason: This fix will get started once the previous patch[1] is merged.


Submitter: Zuul
Branch: master

commit 4acbf4fee389129611541b6d7db999dd5ddb45ad
Author: Julia Kreger <email address hidden>
Date: Thu Jul 12 15:43:15 2018 -0700

    ironic: provide facilities to gracefully navigate versions

    For quite some time, the nova virt driver has invoked the ironic
    python client library with a static microversion pin which causes
    operators to have a failed nova-compute process upon out of order
    upgrades, as well as causes ironic's grenade CI jobs to break every
    cycle when the pin is changed to a version released in the current
    cycle due to established community agreement as well as the grenade
    testing framework limitations.

    In order to gracefully navigate this, python-ironicclient has
    accepted a list of possible versions to negotiate since 2.2.0.

    This patch provies a mechanism to validate if we are able to
    send a request that was added at a specific version, allowing for
    minimal code changes and for logic to only be centered around newer
    features being added.

    Change-Id: I440689a246538fbc8200687e40480d837b87eb7b
    Closes-Bug: #1739440

Changed in nova:
status: In Progress → Fix Released

This issue was fixed in the openstack/nova development milestone.

To post a comment you must log in.
This report contains Public information  Edit
Everyone can see this information.

Other bug subscribers