You are viewing an old version of this page. View the current version.
Compare with Current
View Page History
« Previous
Version 5
Next »
Introduction
This document explains what conventions and coding guidelines to follow when writing new API(s) for CloudStack or updating the existing ones.
References
Instructions
When you need to introduce a new API command to the CS, you will need to create a Request Class and a Response class (or re-use existing API Response class, if you are extending CS API functionality for which API response is already defined)
Writing CS API Request class
TBD
Writing CS API Response class
TBD
API placement and registration
Command placement depends on whether is command is coming as a part of plugin that can be enabled/disabled, or CloudStack core base.
When command comes as a part of CS core base
- Location: The request/response code should be placed in cloud-api package (src/org/apache/cloudstack/api)
- Access permissions: The command's access control permissions (who is eligible to call should be registered in commands.properties.in file
- Command registration: The command should be added to the list of all APIs CS supports, returned by ManagementServerImpl. getCommands()
Note that the calls done from the command, should reference only interfaces from cloud-api or cloud-util packages
![](/confluence/download/attachments/39622334/Relations.png?version=2&modificationDate=1394570795000&api=v2)
When command comes as a part of plugin/service
- Location: Define the command (request/response) in the plugin package
- Access Permissions: Define the permissions in the Cmd file, @APICommand annotation, "authorized" field. Example: authorized = {RoleType.Admin})
- Command Registration: Make your plugin manager to extent PluggableService interface. Add new API command to the list of commands returned by
getCommands()
The commands defined in the plugin, should reference only interfaces located in cloud-api/cloud-utils/<your plugin> packages
![](/confluence/download/attachments/39622334/relations_plugin.png?version=1&modificationDate=1394570807000&api=v2)