← Back to team overview

openstack team mailing list archive

Re: Proposal to defer existing OS API v1.1 to Diablo, for greater stability in Cactus


On Wednesday, March 30, 2011 6:16pm, "Rick Clark" <rick@xxxxxxxxxxxxx> said:

> _______________________________________________
> Mailing list: https://launchpad.net/~openstack
> Post to     : openstack@xxxxxxxxxxxxxxxxxxx
> Unsubscribe : https://launchpad.net/~openstack
> More help   : https://help.launchpad.net/ListHelp
> On 03/30/2011 04:54 PM, Justin Santa Barbara wrote:
>> I would like to propose a fallback scenario for Cactus release management
>> purposes, which would free up Titan resources and get us a better, more
>> stable API with greater client support:
>>    - We defer any non-essential changes in the V1.1 API to post-Cactus.
>>    - We can then discuss these thoroughly at the design summit (I do not
>>    believe we had a design summit discussion on these API changes, for timing
>>    reasons)
>>    - We make the V1.1 API a minimal extension to V1.0, to support the Cactus
>>    features we're going to ship.  For example, Brian Waldon pointed out that we
>>    would need a new element for the changePassword action, and for extensions
>>    also.
>>    - These minimal differences would be driven by the people that need them
>>    (primarily the Titan team)  I am confident they're not going to be
>>    introducing things that are not strictly necessary at this stage of the game
>>    :-)
>>    - We may have to postpone extensions that inject additional content into
>>    existing elements, and stick to extensions that extend the URI space, so
>>    that the XML schema for V1.1 is minimal.  Extension of existing elements
>>    probably warrants a Design Summit discussion anyway.  We do not yet have any
>>    (non-test) extensions that inject content.
>>    - We would rename the current V1.1 API to V1.2 or V2.0 - we are just
>>    deferring it to Diablo, not abandoning it.
>>    - We could still ship the renamed API as "experimental", even in Cactus
>>    - The goal is to focus resources on one API that will then work 100%.
>>    - Yes, it's still sort of going to be two APIs, but if we're really lucky
>>    we might get away with almost no 'switching' code.  For example, if we _add_
>>    a URI or an action, a V1.0 client will never discover it.
>>    - In particular, we want to avoid the output format changing between
>>    versions wherever we can.
>>    - I hope by virtue of this approach that Cactus will be 100% compatible
>>    with existing v1.0 (CloudServers) clients
>>    - I hope also that V1.0 clients can just switch to use the V1.1 endpoint
>>    when they're ready, and need make code changes only for things which have
>>    actually changed.
>> I believe this is entirely in line with our goals for Cactus.  I am less
>> confident that the current V1.1 API is in line with our Cactus goals.
>> Thoughts?  Anyone from the Titan team want to comment on how they feel about
>> the timetable for delivering the APIs in Cactus?  ttx?
> I 100% agree.
> The 1.1 specs were handed over far too late for it to be reasonable to
> get the work done in Cactus.  I am amazed at what the titan team has
> accomplished.
> I think that rackspace feels *very* strongly about getting the 1.1 done,
> though.  John Purrier can answer that.
>> Justin
>> _______________________________________________
>> Mailing list: https://launchpad.net/~openstack
>> Post to     : openstack@xxxxxxxxxxxxxxxxxxx
>> Unsubscribe : https://launchpad.net/~openstack
>> More help   : https://help.launchpad.net/ListHelp

So first, I apologize that it hasn't been easy to see the exact state of the 1.0 and 1.1 APIs in an easy way.  I'd start by giving an update on where those two versions of the APIs stand.

API v1.0:
The guys on titan and ozone did a lot of work to bring this very close to spec this release, and it is much more usable than it was prior to cactus.  There are already some bugs filed on this (the largest one I know of off the top of my head is that rebuild is not supported - Brians Lamar and Waldon are close to completing this).

Missing Features:
 - Shared IP Groups
 - Scheduled Backups

I think these are relatively minor in the scheme of things, but I leave that to you to decide.  The biggest gap in my mind is the difference between the spec and implementation in terms of the XML format.  We have discussed a few ways to deal with this in IRC and locally, but by and large I think this is something too big to make it into cactus, whichever route we take.  The fix is in coming up with a sane serialization mechanism; someone on titan will file a blueprint about this very soon.

API v1.1:
Again, we got pretty close on this as well.

Missing Features
 - Affinity ID
 - IPv6 Support at the OS API level

Again, the format of data is the big gap.  In this case, the json is closer to the 1.0 style rather than the 1.1 style.  In addition, the XML data still suffers the same problems that 1.0 suffers from.

Given this, what makes the most sense to me is to focus on stability for version 1.0 API excluding XML support.  The bindings that are out there have strong support for the JSON data formats in v1.0.  As suggested, I think we call the current mostly implemented 1.1 API experimental so as to give access to any features that we need that are only in 1.1.

One point I would like to ask about is how important is XML to the 1.0 implementation?  We can potentially come up with some short term fixes for the currently off-spec XML, but they aren't anything that I would be happy keeping long term.  My preference is to not worry about it now and fix it with a well thought-out long term solution around serialization in Diablo, but wanted input on this.  I'd like to go with a lazy consensus model on this, if there are no objections in the next 24 hours, we will assume we aren't focusing on XML for Cactus.

Then, I think we should talk about the API at the design conference and then very quickly after that act on decisions we make at that conference.

I'd also like to take a minute to say why Rackspace cares about the 1.1 spec being relatively close to where it is now, and why I think its good for the OpenStack community.

Our goal, which I hope is in alignment with the community's goals, is for us to deploy OpenStack as soon as possible.  In order to do that, an API that is not drastically different from the current spec will be extremely helpful as we will be porting that spec over to the current API deployed at Rackspace.  This work has not yet started, but it would still be very helpful for it to be close to what we have so that we can put as many people on Nova instead of the old code base as possible.

Once we have an API that we are confident we can move to quickly and that we can support for a while before deprecating it, the API can evolve much more quickly without affecting the rackspace deployment, and we would be able to expose those new features to our customers.

Having said that, I definitely understand that Rackspace is not the only player here.  If this is not the right approach, we should fix that sooner rather than later with the understanding that it will absolutely affect the rate at which we can deploy OpenStack here.



Follow ups