Summary

This is a proposal to refactor current API commands in CloudStack to:

- facilitate better document generation

- parameter validation

- command packaging

- ACL code cleanup and doing existing access checks at API layer

- UUID annotation in all commands

- ID to UUID conversion in all response objects

- List API optimization using DB views

Please check out the proposal here.

Project progress for access check and validation

For milestone 1, the main goal is to make the access control and the validation flow into the API layer.

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.