← Back to team overview

openstack team mailing list archive

Re: OpenStack Compute API 1.1

 

Additional comments inline:

On Feb 14, 2011, at 6:47 PM, Paul Voccio wrote:

Thoughts below

From: Justin Santa Barbara <justin@xxxxxxxxxxxx<mailto:justin@xxxxxxxxxxxx>>
Date: Mon, 14 Feb 2011 15:40:04 -0800
To: Paul Voccio <paul.voccio@xxxxxxxxxxxxx<mailto:paul.voccio@xxxxxxxxxxxxx>>
Cc: "openstack@xxxxxxxxxxxxxxxxxxx<mailto:openstack@xxxxxxxxxxxxxxxxxxx>" <openstack@xxxxxxxxxxxxxxxxxxx<mailto:openstack@xxxxxxxxxxxxxxxxxxx>>
Subject: Re: [Openstack] OpenStack Compute API 1.1

Ah - well, I was sort of expecting that we'd all go the other way and agree some core functionality, and I thought that volumes should definitely be part of that.  I'd hope that the core functionality would always be part of the core API, and I'd include images & volumes in that list.

I'm all for having the discussion. How would this work if someone didn't run  a volume service or glance? Should the api listen for that? I don't disagree that there should be core apis for each service, but that in the long run, there may not be a single api. Glance already doesn't have an api in the openstack 1.1 spec. What about Swift?


Right.




I think that building an extensible API is an ambitious proposition.  AWS seems to have some pretty rough edges in their API because they've built everything incrementally, and I would hope that we could do better, even if it does mean 'big design up front'.

I think the block storage / volumes, networking, images and compute should all be part of the core API and should work well together.

Of course they all have to work well together. I do think we need to discuss how it works when someone isn't using these services. It is an OS API implementation then?


 We shouldn't be relying on extensions for Cactus.  In fact, I'd rather leave out extensions until we have a solid use case.  You may be saying that volumes will be our test-use case, but I think that will yield a sub-optimal API.


I see extensions doing a few things. First, it gives a way for other developers to work on and promote additions to the api without fighting to get them into core at first.  Can you explain how it would yield a sub-optimal api?


I also don't understand what you mean by sub-optimal API.

As PVO mentioned, extensions allow the core to be a well defined standard while giving operators the ability to add features that may distinguish them for one another. If an extension is particularly useful it can eventually be promoted to the core.  That means that the API grows bottom up rather than top down.  I see this as a very positive thing, it's hard to develop a core API in a vacuum, and extensions allow us to try things out -- maybe in different ways before we make it to the core.

I don't think that anyone is proposing that a volume API be entirely defined as an extension to OpenStack compute. The volume extension servers simply as an example and it  covers the case for mounting and un-mounting  a volume.  If we can figure out a way of doing this in a general way we can always promote the functionality to the core.





With regards to the difference between the CloudServers API and the OpenStack API, I really do think there should be separate documents.  I'd like for the OpenStack API to basically just have the JSON & XML interfaces in there, and none of the operational stuff that Rackspace needs to do to operate a public cloud (such as caching)  That is important stuff, but we need to divide and conquer.  I'd also like to see a third document, by NASA/Anso, which describes a deployment profile for a private cloud (probably no caching or rate limits).  I think the division will actually help us here

I think we would want to have the same operational aspects in both public and private clouds. It gives consistent experience between what is deployed in a smaller implementation between what is deployed in large implementations. What we should do is make these levers very easy to find and tune. Maybe the default is they are tuned to high defaults when deployed, but the functionality should ship in the api.



Right.  We need to have consistent ways of handling those problems. Nothing in the spec says you must support caching, but if you do support caching  you will do so as described in the spec. I'll clear that up in the text.   Likewise, you could deploy OpenStack with 0 rate and 0 absolute limits.  A query to /limits may return an empty set, but you must have the ability to support limits in a consistent manner between deployments -- this is especially important when we consider language bindings etc.



- I don't think anyone will argue with Rackspace's expertise on their deployment needs, nor with NASA's on theirs, and we can just have the core behavior in the OpenStack API spec.

Justin





On Mon, Feb 14, 2011 at 3:18 PM, Paul Voccio <paul.voccio@xxxxxxxxxxxxx<mailto:paul.voccio@xxxxxxxxxxxxx>> wrote:
Justin -

Thought some more on your comments wrt images being in the 1.1 api spec. I agree with you that it doesn't make sense in the long term to have them in the compute api since the service will delegate to glance in the long term. I would propose that in the 1.2 or other future spec that /images move to an action on /compute since that’s really what is happening. I don't know that it makes sense to do so in 1.1 as changes are contentious enough without being a total rewrite.

Looking forward to your feedback,
pvo

From: Justin Santa Barbara <justin@xxxxxxxxxxxx<mailto:justin@xxxxxxxxxxxx>>
Date: Mon, 14 Feb 2011 14:32:52 -0800
To: <openstack@xxxxxxxxxxxxxxxxxxx<mailto:openstack@xxxxxxxxxxxxxxxxxxx>>
Subject: Re: [Openstack] OpenStack Compute API 1.1

Some thoughts...

General:


  *   Are we writing the OpenStack API, or are we writing the document for the next version of Cloud Servers?  In my opinion, the two need to be separate.  For example, specifications of resource limits and rate limits, supported compression encodings, timeout on persistent connections, pagination, caching, polling and resize confirmation windows don't belong in the core OpenStack API.  These should be put in the CloudServers v1.1 documentation, but a different OpenStack provider will not impose the same limitations that Rackspace will.

Metadata:


  *   The 5 item limit will probably need to be raised if we start using the metadata for hints etc, but this is no big deal
  *   What is the behaviour of the metadata collection update when metadata is already present (merge or replace)?  Can this return the new metadata values instead of no-return-value?
  *   Should we allow custom metadata on all items?  Should we replace some properties with well-known metadata?  e.g. on flavors, should the disk property move to openstack:disk metadata?  This way we don't need to define the exact set of metadata on all items for eternity (e.g. authors on extensions)
  *   Are duplicate metadata keys allowed?
  *   Can we please reserve the openstack: prefix, just like AWS reserves the aws: prefix

IP Addresses:


  *   Instead of just supporting a public and private network, how about specifying <network id="public"> and <network id="private">.  This way we can also support more networks e.g. SAN, private VPN networks, HPC interconnects etc
  *   Is it useful to know which IPV4 addresses and IPV6 addresses map to network cards?  Right now if there are multiple addresses on the same network, the correspondence is undefined.
  *   What happens when a machine has a block of addresses?  Is each address listed individually?  What happens in IPv6 land where a machine could well have a huge block?  I think we need a netmask.

Extensions:


  *   How are the XML schemas going to work with extension elements?  Right now, it's very free-form, which can cause problems with useful schemas.  Are the proposed schemas available?

Volumes:


  *   Volume support is core to OpenStack (and has been since launch).  This needs therefore to be in the core API, not in an extension.  Or if it is an extension then compute, images and flavors should all be in extensions also (which would be cool, if a little complicated.)



Justin





On Mon, Feb 14, 2011 at 11:30 AM, John Purrier <john@xxxxxxxxxxxxx<mailto:john@xxxxxxxxxxxxx>> wrote:
Bumping this to the top of the list. One of the key deliverables for Cactus is a complete and usable OpenStack Compute API. This means that using only the API and tools that interact with the OpenStack Compute API Nova can be installed and configured; once running all of the Nova features and functions for VM, Network, and Volume provisioning and management are accessible and operable through the API.

We need your eyes on this, to ensure that the spec is correct. Please take the time to review and comment, the more up-front work we do here the better the implementation will be.

Thanks,

John

-----Original Message-----
From: openstack-bounces+john=openstack.org<http://openstack.org/>@lists.launchpad.net<http://lists.launchpad.net/> [mailto:openstack-bounces+john<mailto:openstack-bounces%2Bjohn>=openstack.org<http://openstack.org/>@lists.launchpad.net<http://lists.launchpad.net/>] On Behalf Of Gabe Westmaas
Sent: Wednesday, February 09, 2011 3:03 PM
To: openstack@xxxxxxxxxxxxxxxxxxx<mailto:openstack@xxxxxxxxxxxxxxxxxxx>
Subject: [Openstack] OpenStack API 1.1

A blueprint and proposed spec for OpenStack API 1.1 has been posted and I would love to get feedback on the specification.

Blueprint:
https://blueprints.launchpad.net/nova/+spec/openstack-api-1-1

Spec wiki:
http://wiki.openstack.org/OpenStackAPI_1-1

Detailed Spec:
http://wiki.openstack.org/OpenStackAPI_1-1?action=AttachFile&do=view&target=c11-devguide-20110209.pdf

We'd like to finish up as much of the API implementation for cactus as possible, and in particular we want to make sure that we get API extensions correct as early as possible.  Other new features in the 1.1 spec include the ability to view both IPv4 and v6 addresses, migration to the OpenStack namespace and moving from image IDs in responses to URIs (imageRef) for the image.  There may be some additional changes as well, please jump in if I missed some.

I will add details to the wiki page as needed based on discussions on the mailing list.

Thanks, and let me know if you have questions.

Gabe


_______________________________________________
Mailing list: https://launchpad.net/~openstack
Post to     : openstack@xxxxxxxxxxxxxxxxxxx<mailto:openstack@xxxxxxxxxxxxxxxxxxx>
Unsubscribe : https://launchpad.net/~openstack
More help   : https://help.launchpad.net/ListHelp

_______________________________________________
Mailing list: https://launchpad.net/~openstack
Post to     : openstack@xxxxxxxxxxxxxxxxxxx<mailto:openstack@xxxxxxxxxxxxxxxxxxx>
Unsubscribe : https://launchpad.net/~openstack
More help   : https://help.launchpad.net/ListHelp


_______________________________________________ Mailing list: https://launchpad.net/~openstack Post to : openstack@xxxxxxxxxxxxxxxxxxx<mailto:openstack@xxxxxxxxxxxxxxxxxxx> Unsubscribe : https://launchpad.net/~openstack More help : https://help.launchpad.net/ListHelp

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<mailto: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<mailto:abuse@xxxxxxxxxxxxx>, and delete the original message.
Your cooperation is appreciated.


_______________________________________________
Mailing list: https://launchpad.net/~openstack
Post to     : openstack@xxxxxxxxxxxxxxxxxxx<mailto:openstack@xxxxxxxxxxxxxxxxxxx>
Unsubscribe : https://launchpad.net/~openstack
More help   : https://help.launchpad.net/ListHelp


Follow ups

References