Quantum API WADL Specification
Provide WADL documents for the Quantum core API and API extensions.
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(list, show), POST(create, bulk create), PUT(update), and DELETE(delete).
- Each method component will have a request component and a optional response component
- A request or response component will have representation components composed with param components based on the attribute resource map of the API
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 of client and server using a portable format.
Write a python script quantum/tools/wadl/generate_docs.sh and quantum/tools/wadl/extract_attrs.py
- Process core APIs
- Retrieve the RESOURCE_ATTR_MAP in quantum.api.v2.attributes
- Create document quantum/doc/wadl/core.wadl based on the RESOURCE_ATTR_MAP dict.
- Process API extensions
- Traverse modules in quantum/quantum/extension and find all subclasses of quantum.extension.ExtensionDescriptor in each module.
- Retrieve the attr_map property in each ResourceExtension object returned by the get_resources() method of ExtensionDescriptior.
- Automatically generate WADL document files
- All data will be populated according to the attr_map for each API extension module
Data Model Changes
Required Plugin support
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/
No plans of test cases. However need to check if RESOURCE_ATTRIBUTE_MAP is used consistently across extentions beforehand.