Requesting an out of range microversion without an accept header in placement results in a KeyError

Bug #1724065 reported by Chris Dent
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
OpenStack Compute (nova)
Fix Released
Medium
Chris Dent

Bug Description

If the placement service (as of microversion 1.10) if you request a microversion that is outside the acceptable range of VERSIONS and do _not_ include an 'Accept' header in the request, there is a 500 and a KeyError while webob tries to look up the Accept header.

The issue is in FaultWrapper, so the problem can be dealt with elsewhere in placement WSGI stack.

Tags: placement
Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix proposed to nova (master)

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

Changed in nova:
assignee: nobody → Chris Dent (cdent)
status: Triaged → In Progress
Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix merged to nova (master)

Reviewed: https://review.openstack.org/518223
Committed: https://git.openstack.org/cgit/openstack/nova/commit/?id=f269023c49dcf24fd42a4933fc7d31f3aaa2e64d
Submitter: Zuul
Branch: master

commit f269023c49dcf24fd42a4933fc7d31f3aaa2e64d
Author: Chris Dent <email address hidden>
Date: Tue Nov 7 15:25:31 2017 +1100

    [placement] set accept to application/json if accept not set

    If an incoming request to placement does not set the accept header
    force it to 'application/json'. This not only ensures that error
    responses are in JSON but also that errors early in the middleware
    stack do not cause a key error (see the #1724065 bug).

    This fix is done by checking headers early in the middleware stack
    using the requestlog middleware as a convenient place to do the
    check. This overloads requestlog's purpose, but avoids adding yet
    more middleware (doing so has some small impact per request).

    Fixing bug 1724065 fixes a 500. Fixing bug 1674694 changes (for some
    requests) the content type of the bodies of 400-499 responses. This
    creates a bit of quandry for microversion handling. If a microversion
    is considered required here then it's not clear the global fix is
    worth doing and the 500 fix should be limited the microversion
    middleware. The intent all along has been that responses should
    strive to align with the API-WG errors guideline [1], which assumes
    application/json.

    [1] http://specs.openstack.org/openstack/api-wg/guidelines/errors.html

    Change-Id: Ice27c7080fc2df097cb387f7438c0aaf32b4c63d
    Closes-Bug: #1724065
    Closes-Bug: #1674694

Changed in nova:
status: In Progress → Fix Released
Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix included in openstack/nova 17.0.0.0b2

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

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

Other bug subscribers

Remote bug watches

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