[openstack-dev] [api][nova][ironic] Microversion API HTTP header
Dmitry Tantsur
dtantsur at redhat.com
Thu Jun 25 15:55:30 UTC 2015
On 06/25/2015 05:33 PM, Anne Gentle wrote:
>
>
> On Thu, Jun 25, 2015 at 7:10 AM, Sean Dague <sean at dague.net
> <mailto:sean at dague.net>> wrote:
>
> On 06/25/2015 04:42 AM, Ken'ichi Ohmichi wrote:
> > 2015-06-25 17:25 GMT+09:00 Lucas Alvares Gomes
> <lucasagomes at gmail.com <mailto:lucasagomes at gmail.com>>:
> >> Hi,
> >>
> >>> If renaming "Ironic" to the other, is it still necessary to
> keep the
> >>> name in the header?
> >>> There are some projects which are already renamed like Neutron,
> Zaqar
> >>> and the others.
> >>> So "OpenStack-API-Version" which doesn't contain project name seems
> >>> reasonable for me.
> >>
> >> I don't think we should make decisions base on those cases,
> these are
> >> exceptions.
> >
> > I don't think so.
> > Renames of projects have already happened too many time even if
> we can
> > say "they are exceptions".
> > In big tent, the renames will happen more.
> >
> >> But even if it happens the name in the header is the least
> >> problematic thing. When a project is renamed, apart from the massive
> >> refactor in the code other things have to change, packaging, service
> >> files, etc...
> >
> > Internal implementation(like packaging, service files, directory
> > structures, etc) is not matter for end users at all.
> > API header is an interface between services to end users.
> > The area of influence of API header is much bigger than the
> implementation.
> >
> > Now I can see the first Jay's point.
> > Yeah, Nova and Ironic are implementations, and we cannot say "The
> > implementation rename never happens." because Neutron has happened.
> >
> >> For the headers you could have both, one with the old
> >> name and one with the new name for a while to give people time to
> >> migrate and then remove the old name. Just like deprecating other
> >> stuff, e.g a configuration option.
> >
> > That seems painful to end users.
> > So what is disagreeing point against "OpenStack-API-Version" here?
>
> My concern remains that there is no such thing as an
> OpenStack-API-Version. There is no place to look it up. It's like asking
> for the OpenStack Database Version. This is a construct which is project
> scoped, and makes no sense outside of that project.
>
> For someone that's extremely familiar with what they are doing, they'll
> understand that http://service.provider/compute is Nova, and can find
> their way to Nova docs on the API. But for new folks, I can only see
> this adding to confusion.
>
> Being extra, and possibly redundantly, explicit here eliminates
> confusion. Our API is communication to our users, and I feel like at
> every point we should err on the side of what's going to be the most
> clear under the largest number of scenarios.
>
>
> We already have X-OpenStack-Request-ID as a header in the Compute v2.1
> API for helping to track requests and troubleshoot.
>
> So I agree with Sean that we need to think across more APIs but there is
> precedence set for "OpenStack-" as a keyword to look for in responses.
>
> Also I hadn't discovered X-OpenStack-Nova-API-Version until now -- and I
> don't think that we should use project names in end-user-facing
> messaging, ever. They then have to do a look up for "nova" among over 20
> project names. [1] Since that got unmarked experimental can it be
> re-marked experimental?
I'm not sure where the assumption comes from that people will know
"compute" better than "nova". In my experience I've never seen *users*
referring to "the baremetal service", which is not surprising for people
installing `openstack-ironic-*` packages, then using `ironic` utility or
`ironicclient` python module to access the API, while using
http://docs.openstack.org/developer/ironic/ as documentation. We
probably should change all of these before we can safely assume that
users would prefer "the baremetal service".
>
> My suggestion:
>
> X-OpenStack-Compute-API-Version
> X-OpenStack-Containers-API-Version
> X-OpenStack-Baremetal-API-Version
> X-OpenStack-Blockstorage-API-Version
> X-OpenStack-Image-API-Version
> X-OpenStack-Identity-API-Version
The same question as above: what to do with services that do not have a
blessed name (e.g. my ironic-inspector)?
>
> I'm going to get VERY specific about how we name projects and the
> service they provide in projects.yaml. We simply cannot put users
> through the hell of "what's the boomstick project and why does it not
> have a version I need?"
>
> Anne
>
> 1.
> https://wiki.openstack.org/wiki/Documentation/Conventions#Service_and_project_names
> 2.
> https://git.openstack.org/cgit/openstack/governance/tree/reference/projects.yaml
>
>
>
> -Sean
>
> --
> Sean Dague
> http://dague.net
>
> __________________________________________________________________________
> OpenStack Development Mailing List (not for usage questions)
> Unsubscribe:
> OpenStack-dev-request at lists.openstack.org?subject:unsubscribe
> <http://OpenStack-dev-request@lists.openstack.org?subject:unsubscribe>
> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
>
>
>
>
> --
> Anne Gentle
> Rackspace
> Principal Engineer
> www.justwriteclick.com <http://www.justwriteclick.com>
>
>
> __________________________________________________________________________
> OpenStack Development Mailing List (not for usage questions)
> Unsubscribe: OpenStack-dev-request at lists.openstack.org?subject:unsubscribe
> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
>
More information about the OpenStack-dev
mailing list