← Back to team overview

yahoo-eng-team team mailing list archive

[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