Fwd, +Min, +cs-dev

Begin forwarded message:

From: Rohit Yadav <rohit.ya...@citrix.com<mailto:rohit.ya...@citrix.com>>
Subject: RE: [MERGE] Merge request: api_refactoring on master
Date: 9 January 2013 11:36:47 AM PST
To: Marcus Sorensen <shadow...@gmail.com<mailto:shadow...@gmail.com>>

No, so this change will first of all check the kind of input param we got as 
part of the api request and call getUuid() for:

1. If the API is Pre 3.x (since tag is empty), first we try to convert the 
string to long int (only after checking against the uuid regex), if that 
succeeds we getById( this accepts long int id we just parsed), else if regex 
suggests that it's uuid, we getByUuid(). In both cases a search query is built 
by GenericDaoBase (see methods by same names) and we expect only one row or 
result as uuid and id is unique.

2. For API introduced in 3.x and above using the since tag in the @APICommand 
(previously @Implementation), we only check getUuid() and do the same as above.

In the change we don't get the table info from the @IdentityMapper (this 
annotation had previously defined the table name as string within the cmd api 
class), we get it through links via the response and the entity referred which 
end up to a VO class which has the @Table name.

Coming back to your question, so the above change applies only when a id is 
passed, when just listing vms or for any list apis, we are actually performing 
well now, due to db views you don't have 10 or n queries for n entities, Min 
can talk more about the implementation and how it speeds up the listing apis.

Regards.
________________________________________
From: Marcus Sorensen [shadow...@gmail.com<mailto:shadow...@gmail.com>]
Sent: Wednesday, January 09, 2013 10:56 PM
To: Rohit Yadav
Subject: Re: [MERGE] Merge request: api_refactoring on master

- Remove IdentityMapper and IdentityProxy
- Fix api param processing and uuid/id translation. Pre 3.x apis (all apis 
except those which has their @APICommand annotation's "since" field set to 3.xx 
or 4.xx) accept both uuids (string) and internal (long int) ids. 3.x and later 
apis are enforced to send uuids for api request to succeed.

Does this mean we won't see 10 "SELECT uuid FROM `vm_instance` WHERE id=3079 OR 
uuid='3079'" type calls for every VM we have when doing listVirtualMachines and 
such?

Min and community, the above question and answer, just fyi.

Reply via email to