DUE TO SPAM, SIGN-UP IS DISABLED. Goto Selfserve wiki signup and request an account.

DUE TO SPAM, SIGN-UP IS DISABLED. Goto Selfserve wiki signup and request an account.
...
3. In original FS document, the annotation of entityType in @Parameter points to a resource class, this is replaced by a response class. So entityType points to a response object, and the response class has a one-to-one mapping from the response to the physical entity itself. This translation work is done by the API layer and the entityManagerImpl.
4. The packages for the new API commands are all moved from the current com.cloud.api.commands to new location: org.apache.cloudstack.api.commands.user.\[group name\]
Wiki Markup
org.apache.cloudstack.api.commands.admin.\[group_name\]
The responses are also moved to new location at
org.apache.cloudstack.api.response
...
Our goal is that current clients do not need to change their existing API to access Cloudstack.
(I used an example to show the difference for each item in the list. )
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")
...
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 their functionality into several groups under: org.apache.cloudstack.api.command
Item 5. Add the new @ACL annotation for the access control check.
...
There are three files handling the API layer checks and validation: apiServet, apiServer and apiDispatcher.
apiSevlet checks the web access is valid;
If it passes, it goes to the apiServer;
apiServer parses the command annotation, and checks access to the adapter and check if cmd exists;
apiDispatcher has the logic to check the ACL access, the parameter valication, the DB access validation.
...
...