[openstack-dev] HTTP response code for not implemented features
Mark McLoughlin
markmc at redhat.com
Thu Dec 6 11:58:53 UTC 2012
Hey,
Kevin raised a good point here:
https://review.openstack.org/17565
Currently attempting to set a host's status to disabled will fail with
400 Bad Request (without any explanatory error message) if you're using
the libvirt driver.
To be clear, this is a PUT request containing a representation of the
desired status for the host and we don't support changing its status.
I proposed changing this to return a 501 Not Implemented with an
explanatory message, but it's not clear that's correct either.
Things to consider:
- 4xx codes are for client errors - is this a client error? There is
no way for a client to know that a cloud supports this without
trying it, so it's obviously something we expect clients to do.
- 400 explicitly states that clients should not retry the request
without modifications. That does apply here.
- 405 Method Not Allowed is only appropriate where a request method
isn't allowed. We do support PUT requests on host resources, just
not this particular request.
- 5xx codes "indicate cases in which the server is aware that it has
erred or is incapable of performing the request". The latter part
seems appropriate here.
- The 501 docs say:
The server does not support the functionality required to
fulfill the request. This is the appropriate response when the
server does not recognize the request method and is not capable
of supporting it for any resource.
The first sentence makes it seem like 501 is a good fit here. I
take the second sentence to be an example of one of cases where 501
is appropriate, rather than the only case.
I think I'm still leaning towards 501. Any thoughts?
Cheers,
Mark.
More information about the OpenStack-dev
mailing list