yahoo-eng-team team mailing list archive
-
yahoo-eng-team team
-
Mailing list archive
-
Message #30615
[Bug 1433805] Re: Absence of python-ironicclient in nova requirements.txt making upgrades awkward, python-ironicclient features diffucult
Can this just be handled with changing the required upgrade order? Just
make ironic go first?
** Changed in: nova
Status: New => Opinion
--
You received this bug notification because you are a member of Yahoo!
Engineering Team, which is subscribed to OpenStack Compute (nova).
https://bugs.launchpad.net/bugs/1433805
Title:
Absence of python-ironicclient in nova requirements.txt making
upgrades awkward, python-ironicclient features diffucult
Status in OpenStack Bare Metal Provisioning Service (Ironic):
Won't Fix
Status in OpenStack Compute (Nova):
Opinion
Status in OpenStack Compute (nova) juno series:
In Progress
Bug description:
Nova's requirements.txt does not list python-ironicclient, meaning a
stable/juno nova deployment (at least in our gate) will be running
with the most recent release of python-ironicclient.
Many new features have been added to Ironic since juno and have been
introduced incrementally via API micro-versions. The client library
released at the time of stable/juno did not send any API version
header. The current (kilo) server recognizes this and defaults to the
lowest API version (v1.1) it supports. The desired behavior of python-
ironicclient is for it to request the greatest API version it
understands (presently 1.6) [3].
The nova.virt.ironic driver in juno/stable depends on node states only
available in the corresponding version [1] of Ironic. These have
changed since then and the new node states are exposed via new API
micro-versions [2]. Using a new client library with a new server
release will result in the new states being returned to Nova. In
particular, the state of a node that is available for use, as returned
by the v1.1 API is "NOSTATE", and as returned by the current Kilo API,
is "AVAILABLE".
The goal is to make the client transparently negotiate which version
to use with the Ironic server if the latest version is not supported.
This is a feature that would be introduced in a future python-
ironicclient release.
However, since Nova is not listing python-ironicclient in its
requirements, during upgrades we can end up with a stable/juno Nova
using this new client version to speak to a Kilo Ironic server via the
most recent API micro versions. This would result in nova driver
errors as the Ironic server would be returning node states that
stable/juno driver [1] does not understand [2].
We either need to introduce python-ironicclient as a listed
requirement of Nova (at least in stable), or explicitly declare that
the driver use the older API version in its client interactions, or
require that operators upgrade Nova (and python-ironicclient) to Kilo
before upgrading Ironic.
[1] https://git.openstack.org/cgit/openstack/nova/tree/nova/virt/ironic/ironic_states.py?h=stable%2Fjuno
[2] https://git.openstack.org/cgit/openstack/nova/tree/nova/virt/ironic/ironic_states.py
[3] http://specs.openstack.org/openstack/ironic-specs/specs/kilo/api-microversions.html
To manage notifications about this bug go to:
https://bugs.launchpad.net/ironic/+bug/1433805/+subscriptions
References