yahoo-eng-team team mailing list archive
-
yahoo-eng-team team
-
Mailing list archive
-
Message #57553
[Bug 1626496] Re: when placement API sends a 405 the header value is in the incorrect format
Reviewed: https://review.openstack.org/374800
Committed: https://git.openstack.org/cgit/openstack/nova/commit/?id=5fdb9226d269af069bfcbd42cff401c9d089b7dd
Submitter: Jenkins
Branch: master
commit 5fdb9226d269af069bfcbd42cff401c9d089b7dd
Author: Chris Dent <cdent@xxxxxxxxxxxxx>
Date: Thu Sep 22 12:58:41 2016 +0000
[placement] ensure that allow headers are native strings
mod-wsgi checks that response header values are what's described
as "native strings". This means whatever `str` is in either
python 2 or 3, but never `unicode`. When they are not mod-wsgi
will 500. For the most part this is taken care of by webob, but in
the case of the 405 handling, the webob response is not being
fully massaged.
mod-wsgi is doing this because it supposed to. Python WSGI server
gateways have different expectations of headers depending on whether
the Python is 2 or 3. See
https://www.python.org/dev/peps/pep-3333/#a-note-on-string-types
In addition to the unit test, the gabbi tests are now using a
version of wsgi-intercept that will raise a TypeError when the
application response headers are not using the correct form. This
check needs to be done in wsgi-intercept rather than the gabbi tests
because both wsgi-intercept and the http client makes requests
transform the headers for their own purposes.
This fix ensures that instead of a 500 the correct 405 response
happens.
Closes-Bug: #1626496
Depends-On: I3b8aabda929fe39b60e645abb6fabb9769554829
Change-Id: Ifa436e11e79adc2e159b4c5e7d3623d9a792b5f7
** Changed in: nova
Status: In Progress => Fix Released
--
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/1626496
Title:
when placement API sends a 405 the header value is in the incorrect
format
Status in OpenStack Compute (nova):
Fix Released
Bug description:
When the placement handlers raise an HTTPMethodNotAllowed response,
the headers are set with those methods that are allowed. These need to
be not unicode (it's not clear how they get to be unicode (in 2.7) in
the first place, but something is doing it, and that's not right)
otherwise we get:
```
2016-09-22 11:03:01.875 22919 ERROR nova.api.openstack.placement.handler HTTPMethodNotAllowed: The method specified is not allowed for this resource.
2016-09-22 11:03:01.875 22919 ERROR nova.api.openstack.placement.handler
2016-09-22 11:03:01.877 22919 INFO nova.api.openstack.placement.requestlog [req-524fdd42-0f19-4eb3-827f-99ae22fc6dd9 admin admin] 10.0.2.15 "DELETE /placement/resource_providers" status: 405 len: 133
mod_wsgi (pid=22919): Exception occurred processing WSGI script '/usr/local/bin/nova-placement-api'.
TypeError: expected byte string object for header value, value of type unicode found
```
wherein the service correctly tries to send a 405 but then the
mod_wsgi server blows up on the data it is getting.
To manage notifications about this bug go to:
https://bugs.launchpad.net/nova/+bug/1626496/+subscriptions
References