[openstack-dev] [quantum][LBaas] Add members to the pool

Youcef Laribi Youcef.Laribi at eu.citrix.com
Tue Nov 20 03:57:42 UTC 2012


Yes good point Leon, I’ll update the API to make it optional.

Thanks
Youcef

From: Leon Cui [mailto:lcui at vmware.com]
Sent: Monday, November 19, 2012 7:04 PM
To: Youcef Laribi
Cc: openstack-dev at lists.openstack.org
Subject: 答复: [quantum][LBaas] Add members to the pool

Hi Youcef,
Thanks for the clarification!  It makes more sense to me now.

As you mentioned, a member should already have been created before create the pool.  The last question in my mind is that as per the API spec, when create a member, the pool_id is a mandatory attribute, where in this sample, the pool_id is unknown yet.  This sounds like a “egg or chicken came first” question:)

Shall we make the pool_id of a member as an optional attribute?

Thanks
Leon
发件人: Youcef Laribi [mailto:Youcef.Laribi at eu.citrix.com]
发送时间: 2012年11月20日 10:53
收件人: Leon Cui
抄送: openstack-dev at lists.openstack.org<mailto:openstack-dev at lists.openstack.org>
主题: RE: [quantum][LBaas] Add members to the pool

Hi Leon,

Let me clarify one thing. User doesn’t have to provide members when she creates the pool, it is an optional attribute. User can create it an empty pool and then add members to it later.

But if user wants to create the pool *and* populate it with members at the same time, then this is possible by providing the “members” attribute when creating a pool. In this case, the members should already have been created (see “create member” section) because user will be using their IDs to populate the pool.

So, if you are implementing this API, you should consider 2 use cases:

1.       Whether user has provided a members attribute in the request or not. If she hasn’t, you create an empty pool (user can add members to it later).

2.       If user specified the members attribute, then you:

a.        Create the pool in the DB first and get the pool ID

b.      For each member ID in the members attribute, update that member in the DB by updating its “pool_id” attribute from step a.

We can always remove the option of “creating a pool and populating it at the same time” to simplify implementation.

Thanks
Youcef


From: Leon Cui [mailto:lcui at vmware.com]
Sent: Monday, November 19, 2012 6:27 PM
To: Youcef Laribi
Cc: openstack-dev at lists.openstack.org<mailto:openstack-dev at lists.openstack.org>
Subject: 答复: [quantum][LBaas] Add members to the pool

Hi Youcef,
The problem is “create the member rows” in this call (create a pool) will insert new members which has only <member_id, pool_id> attributes. The other mandatory attributes for the member, such as address and port, are basically None at the end of this call. Do you mean that user has to update those members by providing those attributes later?

In addition, how do you know the member id (which I suppose it’s auto-generated) in this call before create the member?

Thanks
Leon
发件人: Youcef Laribi [mailto:Youcef.Laribi at eu.citrix.com]
发送时间: 2012年11月20日 2:51
收件人: Leon Cui
抄送: openstack-dev at lists.openstack.org<mailto:openstack-dev at lists.openstack.org>
主题: RE: [quantum][LBaas] Add members to the pool

Hi Leon,

You don’t have to map the API operations one-to-one to SQLAlchemy operations. For this call (create a pool), you can in SQLAlchemy first create the “pool” row in a pool table, then create the members rows in the member table (and set their pool_id to the pool you created).

If you are worried about updating the DB transactionally, then you can start a transaction before updating both tables and commit it only when both tables have been updated successfully. There will be a lot of operations in the API that will require updating more than one table in the DB, so we have to support transactions anyway.

Thanks
Youcef



From: Leon Cui [mailto:lcui at vmware.com]
Sent: Monday, November 19, 2012 2:34 AM
To: Youcef Laribi
Cc: openstack-dev at lists.openstack.org<mailto:openstack-dev at lists.openstack.org>
Subject: [quantum][LBaas] Add members to the pool

Hi Youcef,
While I’m coding on SQLAlchemy data model for pool, I found that there is no way to create a pool and specifying its members in a single rest call. The members will only be added to a pool by using member creation/update methods.

Therefore, the sample given in API spec in “Creating a pool” should be corrected as below, where “members” is removed.
POST /v1.0/pools
Host: lbaas-service.cloudX.com:8651
Accept: application/json
Content-Type: application/json
X-Auth-Token:887665443383838
Content-Length: 194

{
  "pool" : {
            "name": "web_pool",
            "vip_id": "db902c0c-d5ff-4753-b465-668ad9656918",
            "protocol": "HTTP",
            "network_id" : "e2a7a228-8fd1-4aa8-8d0c-4023a68e1c92",
}

What do you think?  Correct me if I’m wrong.

Thanks
Leon
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openstack.org/pipermail/openstack-dev/attachments/20121120/78916644/attachment-0001.html>


More information about the OpenStack-dev mailing list