[ 
https://issues.apache.org/jira/browse/CLOUDSTACK-926?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13554086#comment-13554086
 ] 

Sudha Ponnaganti commented on CLOUDSTACK-926:
---------------------------------------------

No specific QA required. Need unit test results to close the task. 
                
> ApiDiscoverService: Implement a plugin mechanism that exposes the list of 
> APIs through a discovery service on the management server
> -----------------------------------------------------------------------------------------------------------------------------------
>
>                 Key: CLOUDSTACK-926
>                 URL: https://issues.apache.org/jira/browse/CLOUDSTACK-926
>             Project: CloudStack
>          Issue Type: New Feature
>      Security Level: Public(Anyone can view this level - this is the 
> default.) 
>          Components: API
>    Affects Versions: 4.0.0
>            Reporter: Prasanna Santhanam
>            Assignee: Rohit Yadav
>             Fix For: 4.1.0
>
>
> The  API discovery service will allow and end point to list of its supported 
> APIs and their details. Consumers can be CLI clients and wrappers that build 
> on top of the available list of APIs exposed by a Cloudstack instance.
> The response structure is an array of apis with:
> name (name of the api command), description (or docstring), since (version 
> since the api was introduced, empty suggests it was pre 3.x), isasync (true 
> if api is asynchronous), array of dictionary of params.
> The structure for list of params is:
> name (name of the parameter), description (or doctoring for the parameter), 
> type (kind of parameter, bool, long, map, uuid etc.), length (allowed max 
> length for the param, default is 255), required (if param is
> +necessary for making an api request), since (CloudStack versions no. in 
> which param was introduced, empty suggests it was introduced when the api was 
> introduced).
> Example response:
> { "listapisresponse" : { "count":301 ,"apis" : [ 
> {"name":"listAsyncJobs","description":"Lists all pending asynchronous jobs 
> for the
> +account.","since":"","isasync":false,"param":[{"name":"pagesize","description":"","type":"INTEGER","length":255,"required":false,"since":""},{"name":"domainid","description":"list
>  only resources belonging to
> +the domain 
> specified","type":"UUID","length":255,"required":false,"since":""},{"name":"listall","description":"If
>  set to false, list only resources belonging to the command's caller; if set 
> to true - list
> +resources that the caller is authorized to see. Default value is 
> false","type":"BOOLEAN","length":255,"required":false,"since":""},{"name":"account","description":"List
>  resources by account. Must be used with
> +the domainId 
> parameter.","type":"STRING","length":255,"required":false,"since":""},{"name":"startdate","description":"the
>  start date of the async
> +job","type":"TZDATE","length":255,"required":false,"since":""},{"name":"page","description":"","type":"INTEGER","length":255,"required":false,"since":""},{"name":"isrecursive","description":"defaults
>  to false,
> +but if true, lists all resources from the parent specified by the domainId 
> till 
> leaves.","type":"BOOLEAN","length":255,"required":false,"since":""},{"name":"keyword","description":"List
>  by
> +keyword","type":"STRING","length":255,"required":false,"since":""}]}
> This information is pre-cached during load time (when mgmt server starts) as 
> a list of response by the plugin and it takes about 677 milliseconds to 
> generate mapping of apiname and cmd class and 89 milliseconds
> +to pre cache the response object:
> INFO  [cloudstack.discovery.ApiDiscoveryServiceImpl] (main:) Generated 
> apiname, cmd class mapping in 677 ms
> INFO  [cloudstack.discovery.ApiDiscoveryServiceImpl] (main:) Discovered api, 
> precached response in 89 ms
> The plugin is an adapter, also a pluggable service and provides an api cmd 
> class with apiname listApis (suggest a better name, listApis made sense as 
> the response is list of Apis + docs available on the CS mgmt
> +server to the user).
> Based on parameter annotation, we can also return information of related apis 
> for a particular apis (based on response class, say all vm related apis have 
> same response class) and also suggest apis to get the
> +parameter (wherever applicable, we know entityType, so we know the response 
> class). Do we want such a feature?
> Since, this is a plugin and has its own commands.properties, one can 
> blacklist or change role based acl (in commands.properties) or disable plugin 
> (from components.xml) to controls or use this plugin as a
> +starting point to make their own discovery service (not just apis, think 
> discovery of resources etc.).

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to