Lets say you have RESTful Web Service. For any given URL, you might support one or more of the HTTP verbs: GET, PUT, POST, DELETE and so on. A user might wonder what they mean, and which you actually support. One way of reporting that is by using the OPTION Verb. While this is a relatively unusual verb, using it to describe a resource is a fairly well known mechanism. I want to take it one step further.
Of all the principals of REST, perhaps the most overlooked it Hypermedia as the Engine of Application State, or HATEOAS. This term tries to encapsulate several concepts together, but the primary is the principal of discoverability.
All future actions the client may take are discovered within resource representations returned from the server.
What does this mean for Keystone?
A recent discussion on the Openstack mailing list brought to light the high load that the Keystone server has due to each server having to authenticate each and every request against Keystone.
Chatting with co-worker Emily on the bus last night about REST, Git, and IPA lead to an epiphany of sorts. First, a little background.