Jump to: navigation, search

Difference between revisions of "Neutron/API/WADL"

(Resources)
Line 6: Line 6:
 
* http://www.w3.org/Submission/wadl/
 
* http://www.w3.org/Submission/wadl/
 
* http://code.w3.org/unicorn/attachment/wiki/how_to_write_new_contract/css-validator.wadl
 
* http://code.w3.org/unicorn/attachment/wiki/how_to_write_new_contract/css-validator.wadl
* https://github.com/mnot/wadl_stylesheets
 
  
 
== Scope ==
 
== Scope ==
Line 36: Line 35:
 
Write a python script ''quantum/tools/wadl/generate_wadl.py''
 
Write a python script ''quantum/tools/wadl/generate_wadl.py''
  
* Traverse modules in quantum.api and quantum.extension and finds RESOURCE_ATTRIBUTE_MAP definitions in each module.
+
* Traverse modules in quantum.api and quantum.extension and find all subclasses of quantum.extension.[[ExtensionDescriptor]] in each module.
 +
* Use the methods of the class to get informatio
 +
* List of public methods
 +
** def get_name(self):
 +
** def get_alias(self):
 +
** def get_description(self):
 +
** def get_namespace(self):
 +
** def get_updated(self):
 +
** def get_resources(self):
 +
** def get_actions(self):
 +
** def get_request_extensions(self):
 +
** def get_extended_resources(self, version):
 +
** def get_plugin_interface(self)
 
* Automatically generate WADL documents (core.wadl, [extention].wadl, etc.) files in ''quantum/doc/wadl/''
 
* Automatically generate WADL documents (core.wadl, [extention].wadl, etc.) files in ''quantum/doc/wadl/''
 
** All '''param''' components will be populated according to the RESOURCE_ATTRIBUTE_MAP dictionary
 
** All '''param''' components will be populated according to the RESOURCE_ATTRIBUTE_MAP dictionary

Revision as of 09:55, 14 January 2013

Quantum API WADL Specification

blueprint link

Resources

Scope

Provide WADL documents for the Quantum APIs.

WADL document scope

  • Core APIs will have a WADL document
  • All extension APIs will have its own WADL document
  • Each WADL document will have one application component
  • An application component will have one resources component
  • A resources component will have resource components for each resource entity
    • eg) network, subnet, port, etc.
  • Each resource component will have method components for GET, POST, PUT, and DELETE.
  • Each method component will have a request component and WILL NOT HAVE a response component
  • A request component will have param components based on the API spec

Use Cases

These are some of the use cases borrowed from the W3 WADL specification.

  • Application Modelling and Visualization
    • Support for development of resource modelling tools for resource relationship and choreography analysis and manipulation.
  • Code Generation
    • Automated generation of stub and skeleton code and code for manipulation of resource representations.
  • Configuration
    • Configuration of client and server using a portable format.

Implementation Overview

Write a python script quantum/tools/wadl/generate_wadl.py

  • Traverse modules in quantum.api and quantum.extension and find all subclasses of quantum.extension.ExtensionDescriptor in each module.
  • Use the methods of the class to get informatio
  • List of public methods
    • def get_name(self):
    • def get_alias(self):
    • def get_description(self):
    • def get_namespace(self):
    • def get_updated(self):
    • def get_resources(self):
    • def get_actions(self):
    • def get_request_extensions(self):
    • def get_extended_resources(self, version):
    • def get_plugin_interface(self)
  • Automatically generate WADL documents (core.wadl, [extention].wadl, etc.) files in quantum/doc/wadl/
    • All param components will be populated according to the RESOURCE_ATTRIBUTE_MAP dictionary

Data Model Changes

N/A

Configuration variables

N/A

API's

N/A

Plugin Interface

N/A

Required Plugin support

N/A

Dependencies

None

CLI Requirements

N/A

Horizon Requirements

N/A

Usage Example

After changing an API or API Extension specification in the source code, the developer will run python quantum/tools/wadl/generate_wadl.py to update the WADL documents in quantum/doc/wadl/

Test Cases

No plans of test cases. However need to check if RESOURCE_ATTRIBUTE_MAP is used consistently across extentions beforehand.