← Back to team overview

openstack team mailing list archive

Re: OpenStack Compute API 1.1

 

I find this even more confusing than before.  On the one hand, we talk about
a suite of independent APIs, and on the other hand we talk about binding
them together using extensions.  We talk about standardizing around one API,
and we talk about letting a thousand flowers bloom as extensions.

I'm going to wait till there's concrete code here before commenting further,
I think, so that we can talk in specifics.

Justin


On Fri, Feb 18, 2011 at 2:32 PM, Erik Carlin <erik.carlin@xxxxxxxxxxxxx>wrote:

>  The way I see it, there isn't a singular OpenStack API (even today there
> is swift, nova, and glance).  OpenStack is a suite of IaaS each with their
> own API – so there is a SUITE of standard OS APIs.  And each OS service
> should strive to define the canonical API for automating that particular
> service.  If I just want to run an image repo, I deploy glance.  If my SAN
> guy can't get storage provisioned fast enough, I deploy the OS block storage
> service (once we have it).  And if I want a full cloud suite, I deploy all
> the services.  They are loosely coupled and (ideally) independent building
> blocks.  Whether one chooses to front the different service endpoints with a
> proxy to unify them or have separate service endpoints is purely a
> deployment decision.  Either way, there are no competing OS APIs.  Support
> for 3rd party APIs (e.g. EC2) is secondary IMO, and to some degree,
> detrimental.  Standards are defined largely in part by ubiquity.  We want OS
> to become ubiquitous and we want the OS APIs to become defacto.  Supporting
> additional APIs (or even variations of the same API like AMQP per the other
> thread) doesn't help us here.  I would love to see the community rally
> behind a per service standard OS REST API that we can own and drive.
>
>  To that end, the goal as I see it is to launch canonical OpenStack
> Compute (nova) and Image (glance) APIs with Cactus.  In Diablo, we would
> then work to introduce separate network and block storage services with REST
> APIs as well.  All APIs would be independently versioned and stable.  I'm
> ALL for per language OpenStack bindings that implement support for the
> entire suite of services.
>
>  Re: extensions, it's actually the technical aspects that are driving it.
>  There is a tension between standards and innovation that needs to be
> resolved.  In addition, we need to be able to support niche functionality
> (e.g. Rackspace may want to support API operations related to managed
> services) without imposing it on everyone.  These problems are not new.
>  We've seen the same exact thing with OpenGL and they have a very successful
> extension model that has solved this.  Jorge studied this when did his PhD
> and has designed extensions with that in mind.  He has a presentation on
> extensions here if you haven't seen it.  I think extensions are critically
> important and would encourage dialog amongst the community to come to a
> consensus on this.  Per my points above, I would prefer to avoid separate
> APIs for the same service.  Let's see if we can get behind a per service API
> that becomes THE defacto standard way for automating that service.
>
>  Erik
>
>   From: Justin Santa Barbara <justin@xxxxxxxxxxxx>
> Date: Fri, 18 Feb 2011 09:57:12 -0800
>
> To: Paul Voccio <paul.voccio@xxxxxxxxxxxxx>
> Cc: "openstack@xxxxxxxxxxxxxxxxxxx" <openstack@xxxxxxxxxxxxxxxxxxx>
>
> Subject: Re: [Openstack] OpenStack Compute API 1.1
>
>  > How is the 1.1 api proposal breaking this?
>
>  Because if we launch an OpenStack API, the expectation is that this will
> be the OpenStack API :-)
>
>  If we support a third-party API (CloudServers or EC2), then people will
> continue to use their existing wrappers (e.g. jclouds)  Once there's an
> OpenStack API, then end-users will want to find a library for that, and we
> don't want that to be a poor experience.  To maintain a good experience, we
> either can't break the API, or we need to write and maintain a lot of
> proxying code to maintain compatibility.  We know we're not ready for the
> first commitment, and I don't think we get enough to justify the second.
>
>  > I think the proxy would make sense if you wanted to have a single api.
> Not all service providers will but I see this as entirely optional, not
> required to use the services.
>
>  But then we have two OpenStack APIs?  Our ultimate end users don't use
> the API, they use a wrapper library.  They want a stable library that works
> and is kept up to date with recent changes and don't care about what's going
> on under the covers.  Wrapper library authors want an API that is (1) one
> API and (2) stable with reasonable evolution, otherwise they'll abandon
> their wrapper or not update it.
>
>  > The extensions mechanism is the biggest change, iirc.
>
>  I'm not a big fan of the extensions idea, because it feels more like a
> reflection of a management goal, rather than a technical decision
> ("OpenStack is open to extensions")  Supporting separate APIs feels like a
> better way to do that.  I'm very open to be corrected here, but I think we
> need to see code that wants to use the extension API and isn't better done
> as a separate API.  Right now I haven't seen any patches, and that makes me
> uneasy.
>
>
>
>
>
> On Fri, Feb 18, 2011 at 9:29 AM, Paul Voccio <paul.voccio@xxxxxxxxxxxxx>wrote:
>
>>  The spec for 1.0 and 1.1 are pretty close. The extensions mechanism is
>> the biggest change, iirc.
>>
>>  I think the proxy would make sense if you wanted to have a single api.
>> Not all service providers will but I see this as entirely optional, not
>> required to use the services.
>>
>>  The push to get a completed compute api is the desire move away from the
>> ec2 api to something that we can guide, extend and vote on as a community.
>> The sooner we do the the better.
>>
>>  How is the 1.1 api proposal breaking this?
>>
>>   From: Justin Santa Barbara <justin@xxxxxxxxxxxx>
>> Date: Fri, 18 Feb 2011 09:10:19 -0800
>> To: Paul Voccio <paul.voccio@xxxxxxxxxxxxx>
>> Cc: Jay Pipes <jaypipes@xxxxxxxxx>, "openstack@xxxxxxxxxxxxxxxxxxx" <
>> openstack@xxxxxxxxxxxxxxxxxxx>
>>
>> Subject: Re: [Openstack] OpenStack Compute API 1.1
>>
>>  Jay: The AMQP->REST was the re-architecting I was referring to, which
>> would not be customer-facing (other than likely introducing new bugs.)
>>  Spinning off the services, if this is visible at the API level, is much
>> more concerning to me.
>>
>>  So Paul, I think the proxy is good because it acknowledges the
>> importance of keeping a consistent API.  But - if our API isn't finalized -
>> why push it out at all, particularly if we're then going to have the
>> overhead of maintaining another translation layer?  For Cactus, let's just
>> support EC2 and/or CloudServers 1.0 API compatibility (again a translation
>> layer, but one we probably have to support anyway.)  Then we can design the
>> right OpenStack API at our leisure and meet all of our goals: a stable
>> Cactus and stable APIs.  If anyone ends up coding to a Cactus OpenStack API,
>> we shouldn't have them become second-class citizens 3 months later.
>>
>> Justin
>>
>>
>>
>>
>>
>> On Fri, Feb 18, 2011 at 6:31 AM, Paul Voccio <paul.voccio@xxxxxxxxxxxxx>wrote:
>>
>>> Jay,
>>>
>>> I understand Justin's concern if we move /network and /images and /volume
>>> to their own endpoints then it would be a change to the customer. I think
>>> this could be solved by putting a proxy in front of each endpoint and
>>> routing back to the appropriate service endpoint.
>>>
>>> I added another image on the wiki page to describe what I'm trying to
>>> say.
>>> http://wiki.openstack.org/api_transition
>>>
>>>  I think might not be as bad of a transition since the compute worker
>>> would
>>> receive a request for a new compute node then it would proxy over to the
>>> admin or public api of the network or volume node to request information.
>>> It would work very similar to how the queues work now.
>>>
>>> pvo
>>>
>>> On 2/17/11 8:33 PM, "Jay Pipes" <jaypipes@xxxxxxxxx> wrote:
>>>
>>> >Sorry, I don't view the proposed changes from AMQP to REST as being
>>> >"customer facing API changes". Could you explain? These are internal
>>> >interfaces, no?
>>> >
>>> >-jay
>>> >
>>> >On Thu, Feb 17, 2011 at 8:13 PM, Justin Santa Barbara
>>> ><justin@xxxxxxxxxxxx> wrote:
>>> >> An API is for life, not just for Cactus.
>>> >> I agree that stability is important.  I don't see how we can claim to
>>> >> deliver 'stability' when the plan is then immediately to destablize
>>> >> everything with a very disruptive change soon after, including
>>> customer
>>> >> facing API changes and massive internal re-architecting.
>>> >>
>>> >>
>>> >> On Thu, Feb 17, 2011 at 4:18 PM, Jay Pipes <jaypipes@xxxxxxxxx>
>>> wrote:
>>> >>>
>>> >>> On Thu, Feb 17, 2011 at 6:57 PM, Justin Santa Barbara
>>> >>> <justin@xxxxxxxxxxxx> wrote:
>>> >>> > Pulling volumes & images out into separate services (and moving
>>> from
>>> >>> > AMQP to
>>> >>> > REST) sounds like a huge breaking change, so if that is indeed the
>>> >>>plan,
>>> >>> > let's do that asap (i.e. Cactus).
>>> >>>
>>> >>> Sorry, I have to disagree with you here, Justin :)  The Cactus
>>> release
>>> >>> is supposed to be about stability and the only features going into
>>> >>> Cactus should be to achieve API parity of the OpenStack Compute API
>>> >>> with the Rackspace Cloud Servers API. Doing such a huge change like
>>> >>> moving communication from AMQP to HTTP for volume and network would
>>> be
>>> >>> a change that would likely undermine the stability of the Cactus
>>> >>> release severely.
>>> >>>
>>> >>> -jay
>>> >>
>>> >>
>>>
>>>
>>>
>>>   Confidentiality Notice: This e-mail message (including any attached or
>>> embedded documents) is intended for the exclusive and confidential use of
>>> the
>>> individual or entity to which this message is addressed, and unless
>>> otherwise
>>> expressly indicated, is confidential and privileged information of
>>> Rackspace.
>>> Any dissemination, distribution or copying of the enclosed material is
>>> prohibited.
>>> If you receive this transmission in error, please notify us immediately
>>> by e-mail
>>> at abuse@xxxxxxxxxxxxx, and delete the original message.
>>> Your cooperation is appreciated.
>>>
>>>
>>     Confidentiality Notice: This e-mail message (including any attached or
>> embedded documents) is intended for the exclusive and confidential use of the
>> individual or entity to which this message is addressed, and unless otherwise
>> expressly indicated, is confidential and privileged information of Rackspace.
>> Any dissemination, distribution or copying of the enclosed material is prohibited.
>> If you receive this transmission in error, please notify us immediately by e-mail
>> at abuse@xxxxxxxxxxxxx, and delete the original message.
>> Your cooperation is appreciated.
>>
>>
>  _______________________________________________ Mailing list:
> https://launchpad.net/~openstack Post to : openstack@lists.launchpad.netUnsubscribe :
> https://launchpad.net/~openstack More help :
> https://help.launchpad.net/ListHelp
>

Follow ups

References