Hi all,

I updated the API refactoring wiki page with the list. 
The page 
https://cwiki.apache.org/confluence/display/CLOUDSTACK/CloudStack+API+refactoring
 
It also contains the link to the FS (in doc), where you can find more info 
regarding this project. 

A clarification about the UUID.  This is not new in 4.1, we used UUID instead 
of internal DB id since 3.0.0. 
We added special handling for pre3.0.0 release where DB id is used, and for 
post-3.0.0 where UUID is used,
So as not to break users with 2.x releases. 

For each item in the list, I used one example to illustrate it. 

Thanks,
-Fang

-----Original Message-----
From: Fang Wang [mailto:fang.w...@citrix.com] 
Sent: Thursday, January 03, 2013 2:11 PM
To: cloudstack-dev@incubator.apache.org
Subject: RE: API Updates: Tracking progress, changes

Couple of things we changed  for the API refactoring, the goal is to make the 
overall code  more Modular and fit the new orchestration architecture, in the 
mean time, it does not require the client to change their existing API to 
access Cloudstack. 

Item 1.  For each API command, the original @Implementation is replaced by 
@APICommand,
     New field "name" is added for the APICommand:
        
 Existing one in 4.0 master:                                                    
        @Implementation(description = "Adds Swift.", responseObject = 
HostResponse.class, since="3.0.0")  New 4.1 with API refactoring:
        @APICommand(name = " addSwift", description ="Adds swift", 
responseObject = HostResponse.class, since = "3.0.0")

Item 2.   @IdentityMapper is removed, @IdentityMapper is used to point to the 
DB table directly.  e.g., 
Existing in 4.0 master:
        @IdentityMapper(entityTableName="data_center")

 A New entityType is added to the @Parameter annotation. This new entityType  
replaces the previous @IdentityMapper.
Instead of accessing the DB table directly, it uses the new DB views from the 
response class. 
This new DB views optimize the list commands.  
 
New 4.1 with API refactoring:
        @Parameter(name=ApiConstants.ZONE_ID, type=CommandType.UUID,  
entityType=ZoneResponse.class, ....)

Item 3.         In the @Parameter annotation, some type fields have changed 
from long to UUID (because we will use UUID instead of Internal ID). 
Existing in 4.0 master:
        @Parameter(name=ApiConstants.ZONE_ID, type=CommandType.long, 
                         required=true, description="availability zone for the 
virtual machine")
 
New 4.1 with refactoring: 
        @Parameter(name=ApiConstants.ZONE_ID, type=CommandType.UUID, 
entityType=ZoneResponse.class,
                         required=true, description="availability zone for the 
virtual machine")
 
Item 4.  Regoup of the commands. In existing master, all api commands are flat 
in one directory. Now they are grouped according to Their functionality into 
several groups under:  org.apache.cloudstack.api.command

Item 5. Add the new @ACL annotation for the access control check. 

I will add them to the wiki page. 
Thanks,
-Fang

-----Original Message-----
From: David Nalley [mailto:da...@gnsa.us]
Sent: Friday, December 28, 2012 2:22 PM
To: cloudstack-dev@incubator.apache.org
Cc: sebgoa
Subject: Re: API Updates: Tracking progress, changes

On Fri, Dec 28, 2012 at 4:28 PM, Rohit Yadav <rohit.ya...@citrix.com> wrote:
> Hi Sebastien,
>
> On 28-Dec-2012, at 2:15 AM, sebgoa <run...@gmail.com> wrote:
>
>> Hi Rohit,
>>
>> I have been following the thread but I have a silly question, maybe 
>> you can help clear my confusion :)
>>
>> Does your work impact the client side API ?
>
> Yes and no. Because the way queries were processed is slightly difference 
> inside API server, but as far as over the wire aka client requests are 
> concerned there is no change in that. There is only enforcement on apis that 
> were introduced since 3.x (all of them have an annotation @Implementation 
> which is now @APICommand which has a "since=" field which holds the version 
> no. they were introduced) to accept only uuids as params wherever applicable.
>
>> Meaning if I am using jclouds, boto, python-cloudstack etc....as clients. 
>> Will my client codes break with this API changes ?
>
> With the recent vote and fixes after that, the client code *should not 
> break*. If it does it's a bug.
> Behaviour and functionality wise the clients and users should not feel any 
> difference.
>
> There will be few changes in the response, which Min would be in a better 
> position to explain.
>

Can we get a canonical list of what all of the changes will be?

--David

Reply via email to