yahoo-eng-team team mailing list archive
-
yahoo-eng-team team
-
Mailing list archive
-
Message #29692
[Bug 1433805] [NEW] Absence of python-ironicclient in nova requirements.txt making upgrades awkward, python-ironicclient features diffucult
Public bug reported:
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
** Affects: ironic
Importance: Undecided
Status: New
** Affects: nova
Importance: Undecided
Status: New
** Affects: nova/juno
Importance: Undecided
Status: New
** Also affects: nova
Importance: Undecided
Status: New
** Also affects: nova/juno
Importance: Undecided
Status: New
--
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):
New
Status in OpenStack Compute (Nova):
New
Status in OpenStack Compute (nova) juno series:
New
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
Follow ups
References