Here is the list of patches pending to resolve this issue (Keystone Master, Keystone Stable/Icehouse, and Tempest)
https://review.openstack.org/#/q/status:open+topic:bug/1334368,n,z — Morgan Fainberg ------------------------------------------------------ From: Nathan Kinder nkin...@redhat.com Reply: OpenStack Development Mailing List (not for usage questions) openstack-dev@lists.openstack.org Date: July 1, 2014 at 20:02:45 To: openstack-dev@lists.openstack.org openstack-dev@lists.openstack.org Subject: Re: [openstack-dev] [Keystone] HTTP Get and HEAD requests mismatch on resulting HTTP status (proposed REST API Response Status Changes) > > > On 07/01/2014 07:48 PM, Robert Collins wrote: > > Wearing my HTTP fanatic hat - I think this is actually an important > > change to do. Skew like this can cause all sorts of odd behaviours in > > client libraries. > > +1. The current behavior of inconsistent response codes between the two > recommended methods of deploying Keystone should definitely be > considered as a bug IMHO. Consistency in responses is important > regardless of how Keystone is deployed, and it seems obvious that we > should modify the responses that are out of spec to achieve consistency. > > -NGK > > > > -Rob > > > > On 2 July 2014 13:13, Morgan Fainberg wrote: > >> In the endeavor to move from the default deployment of Keystone being > >> eventlet (in > devstack) to Apache + mod_wsgi, I noticed that there was an odd mis-match on > a single set > of tempest tests relating to trusts. Under eventlet a HTTP 204 No Content was > being returned, > but under mod_wsgi an HTTP 200 OK was being returned. After some > investigation it turned > out that in some cases mod_wsgi will rewrite HEAD requests to GET requests > under the hood; > this is to ensure that the response from Apache is properly built when > dealing with filtering. > A number of wsgi applications just return nothing on a HEAD request, which is > incorrect, > so mod_wsgi tries to compensate. > >> > >> The HTTP spec states: "The HEAD method is identical to GET except that the > >> server must > not return any Entity-Body in the response. The metainformation contained in > the HTTP > headers in response to a HEAD request should be identical to the information > sent in response > to a GET request. This method can be used for obtaining metainformation about > the resource > identified by the Request-URI without transferring the Entity-Body itself. > This method > is often used for testing hypertext links for validity, accessibility, and > recent modification.” > >> > >> Keystone has 3 Routes where HEAD will result in a 204 and GET will result > >> in a 200. > >> > >> * /v3/auth/tokens > >> * /v2.0/tokens/{token_id} > >> * /OS-TRUST/trusts/{trust_id}/roles/{role_id} <--- This is the only one > >> tested > by Tempest. > >> > >> The easiest solution is to correct the case where we are out of line with > >> the HTTP spec > and ensure these cases return the same status code for GET and HEAD methods. > This however > changes the response status of a public REST API. Before we do this, I wanted > to ensure > the community, developers, and TC did not have an issue with this correction. > We are not > changing the class of status (e.g. 2xx to 4xx or vice-versa). This would > simply be returning > the same response between GET and HEAD requests. The fix for this would be to > modify the > 3 tempest tests in question to expect HTTP 200 instead of 204. > >> > >> There are a couple of other cases where Keystone registers a HEAD route > >> but no GET route > (these would be corrected at the same time, to ensure compatibility). The > final correction > is to enforce that Keystone would not send any data on HEAD requests (it is > possible to > do so, but we have not had it happen). > >> > >> You can see a proof-of-concept review that shows the tempest failures > >> here: https://review.openstack.org/#/c/104026 > >> > >> If this change (even though it is in violation of > >> https://wiki.openstack.org/wiki/APIChangeGuidelines#Generally_Not_Acceptable > >> > is acceptable, it will unblock the last of a very few things to have Keystone > default deploy > via devstack under Apache (and gate upon it). Please let me know if anyone > has significant > issues with this change / concerns as I would like to finish up this road to > mod_wsgi based > Keystone as early in the Juno cycle as possible. > >> > >> Cheers, > >> Morgan Fainberg > >> > >> > >> — > >> Morgan Fainberg > >> > >> > >> > >> _______________________________________________ > >> OpenStack-dev mailing list > >> OpenStack-dev@lists.openstack.org > >> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev > > > > > > > > _______________________________________________ > OpenStack-dev mailing list > OpenStack-dev@lists.openstack.org > http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev > _______________________________________________ OpenStack-dev mailing list OpenStack-dev@lists.openstack.org http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev