Version 2.32.0 doesn't work against rackspace nor cloudwatt

Bug #1508244 reported by Clark Boylan
56
This bug affects 11 people
Affects Status Importance Assigned to Milestone
python-novaclient
Fix Released
Critical
Alex Xu

Bug Description

When using novaclient 2.32.0 against rackspace the following error is emitted (and the traceback if using the --debug flag):

DEBUG (shell:914) Server doesn't support microversions
Traceback (most recent call last):
  File "/usr/local/lib/python2.7/dist-packages/novaclient/shell.py", line 912, in main
    OpenStackComputeShell().main(argv)
  File "/usr/local/lib/python2.7/dist-packages/novaclient/shell.py", line 746, in main
    api_version = api_versions.discover_version(self.cs, api_version)
  File "/usr/local/lib/python2.7/dist-packages/novaclient/api_versions.py", line 259, in discover_version
    _("Server doesn't support microversions"))
UnsupportedVersion: Server doesn't support microversions
ERROR (UnsupportedVersion): Server doesn't support microversions

I think rackspace has a firewall/load balancer of some sort preventing the client from reading necessary version info which results in the error. Version 2.31.0 has been confirmed to work.

Revision history for this message
melanie witt (melwitt) wrote :

This issue was introduced when we changed the default compute api version requested from "server latest" to "client supported latest" [1].

In the version discovery code, UnsupportedVersion is being raised because requested_version has changed from "latest" to an actual version. The current code interprets a specific version to mean that the user is asking for a particular version and if the server can't support it, raise an error. In the rackspace case, we have code that handles clouds that don't expose the version list api, and a "null" server version is used. Then the combination of "user specified a microversion" and "server doesn't support microversions" results in the error. The version "latest" is bypassed as it's not considered to be "user specified".

There is more work needed in the logic for version discovery to go along with changing the default compute api version.

[1] https://review.openstack.org/#/c/230024/

Changed in python-novaclient:
importance: Undecided → High
status: New → Confirmed
Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix proposed to python-novaclient (master)

Fix proposed to branch: master
Review: https://review.openstack.org/237850

Changed in python-novaclient:
assignee: nobody → Alex Xu (xuhj)
status: Confirmed → In Progress
Revision history for this message
Alex Xu (xuhj) wrote : Re: Version 2.32.0 doesn't work against rackspace

This isn't not only break the rackspace, this break all novaclient running with nova legacy v2 api.

Changed in python-novaclient:
importance: High → Critical
Revision history for this message
Yves-Gwenael Bourhis (yves-gwenael-bourhis) wrote :

It brakes for us in Cloudwatt Too.

Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix merged to python-novaclient (master)

Reviewed: https://review.openstack.org/237850
Committed: https://git.openstack.org/cgit/openstack/python-novaclient/commit/?id=28bf8ddb06a618bec280c9fbc21b4be6af2c1787
Submitter: Jenkins
Branch: master

commit 28bf8ddb06a618bec280c9fbc21b4be6af2c1787
Author: He Jie Xu <email address hidden>
Date: Wed Oct 21 10:36:53 2015 +0800

    Correct usage of API_MAX_VERSION and DEFAULT_OS_COMPUTE_API_VERSION

    Commit d045019f0f2d28f26730b3617f7d7b993506b6e8 use the variables
    API_MAX_VERSION and DEFAULT_OS_COMPUTE_API_VERSION with wrong way.

    API_MAX_VERSION means the max version of client supported. This
    variable only be changed when client support the new version. And
    it's must bumped sequentially.

    DEFAULT_OS_COMPUTE_API_VERSION is default value of option
    '--os-compute-api-version', this value decided the default behaviour
    of nova client. The nova client CLI behaviour should be that client
    negotiate with server side to find out most recent version betweeyn
    client and server. So the value should be '2.latest'. And it won't
    be changed except we decided to change the default behaviour of nova
    client CLI.

    Change-Id: Iba9bfa136245bd2899c427ac0c231a30c00bd7f3
    Closes-Bug: #1508244

Changed in python-novaclient:
status: In Progress → Fix Committed
summary: - Version 2.32.0 doesn't work against rackspace
+ Version 2.32.0 doesn't work against rackspace nor cloudwatt
Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix proposed to python-novaclient (stable/liberty)

Fix proposed to branch: stable/liberty
Review: https://review.openstack.org/239277

Changed in python-novaclient:
milestone: none → 2.33.0
status: Fix Committed → Fix Released
Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix merged to python-novaclient (stable/liberty)

Reviewed: https://review.openstack.org/239277
Committed: https://git.openstack.org/cgit/openstack/python-novaclient/commit/?id=dc4970728bae71f9745506190cc87b2edb36b0b8
Submitter: Jenkins
Branch: stable/liberty

commit dc4970728bae71f9745506190cc87b2edb36b0b8
Author: Matt Riedemann <email address hidden>
Date: Thu Oct 1 09:19:14 2015 -0700

    Set DEFAULT_OS_COMPUTE_API_VERSION to 2.5

    The client currently implements support for microversions 2.2, 2.4 and
    2.11.

    According the nova API microversion history:

    http://docs.openstack.org/developer/nova/api_microversion_history.html

    2.3 just returns extra attributes in the response so it's not a problem
    for the client. We should expose those at some point but it's not a
    breaking change.

    2.5 is a server-side only change since the client allows filtering
    servers by IPv6 address but the server wasn't honoring that until 2.5.
    There are no client side changes for that microversion.

    2.6 is the first backwards incompatible microversion since it replaces
    the old specific console APIs (RDP/serial/SPICE/VNC) with a new generic
    remote-consoles API. The client must be updated to handle this since
    requesting any microversion >=2.6 for consoles will fail right now. This
    is exposed on the CLI right now because the CLI defaults to the 2.latest
    microversion.

    So even though the client actually supports the 2.11 microversion, we
    shouldn't default to higher than 2.5 because we have gaps in handling
    2.6->2.10.

    This change fixes the default for the CLI by setting
    DEFAULT_OS_COMPUTE_API_VERSION=2.5.

    Partial-Bug: #1500688

    Change-Id: I52074f9a3e7faa6a7a51c3fa9766100acf25dee2
    (cherry picked from commit d045019f0f2d28f26730b3617f7d7b993506b6e8)

    ------------------------------------------------------------------------
    The first change introduced a regression which is fixed in the following
    squashed change to make the complete fix.
    ------------------------------------------------------------------------

    Correct usage of API_MAX_VERSION and DEFAULT_OS_COMPUTE_API_VERSION

    Commit d045019f0f2d28f26730b3617f7d7b993506b6e8 use the variables
    API_MAX_VERSION and DEFAULT_OS_COMPUTE_API_VERSION with wrong way.

    API_MAX_VERSION means the max version of client supported. This
    variable only be changed when client support the new version. And
    it's must bumped sequentially.

    DEFAULT_OS_COMPUTE_API_VERSION is default value of option
    '--os-compute-api-version', this value decided the default behaviour
    of nova client. The nova client CLI behaviour should be that client
    negotiate with server side to find out most recent version betweeyn
    client and server. So the value should be '2.latest'. And it won't
    be changed except we decided to change the default behaviour of nova
    client CLI.

    Change-Id: Iba9bfa136245bd2899c427ac0c231a30c00bd7f3
    Closes-Bug: #1508244
    (cherry picked from commit 28bf8ddb06a618bec280c9fbc21b4be6af2c1787)

tags: added: in-stable-liberty
Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix included in openstack/python-novaclient 2.30.2

This issue was fixed in the openstack/python-novaclient 2.30.2 release.

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

Duplicates of this bug

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.