Return-Path: X-Original-To: apmail-incubator-cloudstack-dev-archive@minotaur.apache.org Delivered-To: apmail-incubator-cloudstack-dev-archive@minotaur.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 12C6FD4DA for ; Tue, 15 Jan 2013 23:54:15 +0000 (UTC) Received: (qmail 7452 invoked by uid 500); 15 Jan 2013 23:54:13 -0000 Delivered-To: apmail-incubator-cloudstack-dev-archive@incubator.apache.org Received: (qmail 7410 invoked by uid 500); 15 Jan 2013 23:54:13 -0000 Mailing-List: contact cloudstack-dev-help@incubator.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: cloudstack-dev@incubator.apache.org Delivered-To: mailing list cloudstack-dev@incubator.apache.org Received: (qmail 7206 invoked by uid 99); 15 Jan 2013 23:54:13 -0000 Received: from arcas.apache.org (HELO arcas.apache.org) (140.211.11.28) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 15 Jan 2013 23:54:13 +0000 Date: Tue, 15 Jan 2013 23:54:13 +0000 (UTC) From: "Rohit Yadav (JIRA)" To: cloudstack-dev@incubator.apache.org Message-ID: In-Reply-To: References: Subject: [jira] [Commented] (CLOUDSTACK-926) ApiDiscoverService: Implement a plugin mechanism that exposes the list of APIs through a discovery service on the management server MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-JIRA-FingerPrint: 30527f35849b9dde25b450d4833f0394 [ https://issues.apache.org/jira/browse/CLOUDSTACK-926?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13554538#comment-13554538 ] Rohit Yadav commented on CLOUDSTACK-926: ---------------------------------------- Will do that soon. > 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