← Back to team overview

openstack team mailing list archive

Re: OpenStack API, Reservation ID's and Num Instances ...


Comments inline:

On May 23, 2011, at 8:59 AM, Jay Pipes wrote:

> Hi Jorge! Comments inline :)
> On Mon, May 23, 2011 at 9:42 AM, Jorge Williams
> <jorge.williams@xxxxxxxxxxxxx> wrote:
>> Hi Sandy,
>> My understanding (Correct me if i'm wrong here guys) is that creating
>> multiple instances with a single call is not in scope for the 1.1 API.
> Actually, I don't think we *could* do this without issuing a 2.0 API.
> The reason is because changing POST /servers to return a reservation
> ID instead of the instance ID would break existing clients, and
> therefore a new major API version would be needed.

Why?  Clients just see an ID.  I'm suggesting that for single instances, the instanceID == the reservationID.
In the API you query based on Some ID.

http://my.openstack-compute.net/v1.1/2233/servers/{Some unique ID}

>> Same
>> thing for changing the way in which flavors work.  Both features can be
>> brought in as extensions though.
> Sorry, I'm not quite sure I understand what you mean by "changing the
> way flavours work". Could you elaborate a bit on that?

Sandy was suggesting we employ a method "richer than Flavors".  I'll let him elaborate.

>> I should note that when creating single instances the instance id should
>> really be equivalent to a reservation id.  That is, the create should be
>> asynchronous and the instance id can be used to poll for changes.
> Hmm, it's actually a bit different. In one case, you need to actually
> get an identifier for the instance from whatever database (zone db?)
> would be responsible for creating the instance. In the other case, you
> merely create a token/task that can then be queried for a status of
> the operation. In the former case, you unfortunately make the
> scheduler's work synchronous, since the instance identifier would need
> to be determined from the zone the instance would be created in. :(

If we make the instance ID a unique ID -- which we probably should.   Why not also treat it as a reservation id and generate/assign it up front?

>> Because
>> of this, a user can create multiple instances in very rapid succession.
> Not really the same as issuing a request to create 100 instances. Not
> only would the user interface implications be different, but you can
> also do all-or-nothing scheduling with a request for 100 instances
> versus 100 requests for a single instance. All-or-nothing allows a
> provider to pin a request to a specific SLA or policy. For example, if
> a client requests 100 instances be created with requirements X, Y, and
> Z, and you create 88 instances and 12 instances don't get created
> because there is no more available room that meets requirements X, Y,
> and Z, then you have failed to service the entire request...

I totally understand this.  I'm just suggesting that since this is not is scope for 1.1 -- you should be able to launch individual instances as an alternative.

Also, keep in mind that the all-or-nothing requires a compensation when something fails.

>> Additionally, the changes-since feature in the API allows a user to
>> efficiently monitor the creation of multiple instances simultaneously.
> Agreed, but I think that is tangential to the above discussion.
> Cheers!
> jay
>> -jOrGe W.
>> On May 23, 2011, at 7:19 AM, Sandy Walsh wrote:
>> Hi everyone,
>> We're deep into the Zone / Distributed Scheduler merges and stumbling onto
>> an interesting problem.
>> EC2 API has two important concepts that I don't see in OS API (1.0 or 1.1):
>> - Reservation ID
>> - Number of Instances to create
>> Typical use case: "Create 1000 instances". The API allocates a Reservation
>> ID and all the instances are created until this ID. The ID is immediately
>> returned to the user who can later query on this ID to check status.
>> From what I can see, the OS API only deals with single instance creation and
>> returns the Instance ID from the call. Both of these need to change to
>> support Reservation ID's and creating N instances. The value of the
>> distributed scheduler comes from being able to create N instances load
>> balanced across zones.
>> Anyone have any suggestions how we can support this?
>> Additionally, and less important at this stage, users at the summit
>> expressed an interest in being able to specify instances with something
>> richer than Flavors. We have some mockups in the current host-filter code
>> for doing this using a primitive little JSON grammar. So, let's assume the
>> Flavor-like query would just be a string. Thoughts?
>> -S
>> 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@xxxxxxxxxxxxxxxxxxx
>> Unsubscribe : https://launchpad.net/~openstack
>> More help   : https://help.launchpad.net/ListHelp
>> _______________________________________________
>> Mailing list: https://launchpad.net/~openstack
>> Post to     : openstack@xxxxxxxxxxxxxxxxxxx
>> Unsubscribe : https://launchpad.net/~openstack
>> More help   : https://help.launchpad.net/ListHelp

Follow ups