Excerpts from Ian Cordasco's message of 2015-07-24 11:22:33 -0700:
> 
> On 7/24/15, 13:16, "Clint Byrum" <cl...@fewbar.com> wrote:
> 
> >Excerpts from Ian Cordasco's message of 2015-07-24 08:58:06 -0700:
> >> 
> >> On 7/23/15, 19:38, "michael mccune" <m...@redhat.com> wrote:
> >> 
> >> >On 07/23/2015 12:43 PM, Ryan Brown wrote:
> >> >> On 07/23/2015 12:13 PM, Jay Pipes wrote:
> >> >>> On 07/23/2015 10:53 AM, Bunting, Niall wrote:
> >> >>>> Hi,
> >> >>>>
> >> >>>> Currently when a body is passed to an API operation that explicitly
> >> >>>> does not allow bodies Glance throws a 500.
> >> >>>>
> >> >>>> Such as in this bug report:
> >> >>>> https://bugs.launchpad.net/glance/+bug/1475647 This is an example
> >>of
> >> >>>> a GET however this also applies to other requests.
> >> >>>>
> >> >>>> What should Glance do rather than throwing a 500, should it return
> >>a
> >> >>>> 400 as the user provided an illegal body
> >> >>>
> >> >>> Yep, this.
> >> >>
> >> >> +1, this should be a 400. It would also be acceptable (though less
> >> >> preferable) to ignore any body on GET requests and execute the
> >>request
> >> >> as normal.
> >> >>
> >> >>> Best,
> >> >>> -jay
> >> >
> >> >i'm also +1 on the 400 band wagon
> >> 
> >> 400 feels right for when Glance is operating without anything in front
> >>of
> >> it. However, let me present a hypothetical situation:
> >> 
> >> Company X is operating Glance behind a load-balancing proxy. Most users
> >> talk to Glance behind the LB. If someone writes a quick script to send a
> >> GET and (for whatever reason) includes a body, they'll get a 200 with
> >>the
> >> data that would otherwise have been sent if they didn't include a body.
> >> This is because most such proxies will strip the body on a GET (even
> >> though RFC 7231 allows for bodies on a GET and explicitly refuses to
> >> define semantic meaning for them). If later that script is updated to
> >>work
> >> behind the load balancer it will be broken, because Glance is choosing
> >>to
> >> error instead of ignoring it.
> >> 
> >> Note: I'm not arguing that the user is correct in sending a body when
> >> there shouldn't be one sent, just that we're going to confuse a lot of
> >> people with this.
> >> 
> >> I'm also fine with either a 400 or a 200.
> >> 
> >
> >Nice succinct description of an interesting corner case.
> >
> >This is indeed one of those scenarios that should be defended against
> >at the edges, but it's worth considering what will make things simplest
> >for users.
> >
> >If we believe in Postel's robustness principle[1], then Glance would
> >probably just drop the body as something we liberally accept because
> >it doesn't harm anything to do so. If we don't believe thats a good
> >principle, then 400 or maybe 413 would be the right codes I think.
> >
> >So the real question is, do we follow Postel's principle or not? That
> >might even be something to add to OpenStack's design principles... which
> >I seem to remember at one time we had written down somewhere.
> >
> >[1] https://en.wikipedia.org/wiki/Robustness_principle
> 
> Just to throw a monkey-wrench in,
> https://tools.ietf.org/html/draft-thomson-postel-was-wrong-00

To be clear, I agree with Thomson, and think that's the way to go.

However, I believe we haven't stated either in our principles (and if
somebody has a link to those principles, or a clear assertion that we
do not have them and why we don't have them, that would be helpful).

Adding tc to bump the people most likely to respond to that.

__________________________________________________________________________
OpenStack Development Mailing List (not for usage questions)
Unsubscribe: openstack-dev-requ...@lists.openstack.org?subject:unsubscribe
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev

Reply via email to