HOME

TheInfoList



OR:

The RESTful Service Description Language (RSDL) is a machine- and human-readable
XML Extensible Markup Language (XML) is a markup language and file format for storing, transmitting, and reconstructing data. It defines a set of rules for encoding electronic document, documents in a format that is both human-readable and Machine-r ...
description of
HTTP HTTP (Hypertext Transfer Protocol) is an application layer protocol in the Internet protocol suite model for distributed, collaborative, hypermedia information systems. HTTP is the foundation of data communication for the World Wide Web, wher ...
-based web applications (typically
REST REST (Representational State Transfer) is a software architectural style that was created to describe the design and guide the development of the architecture for the World Wide Web. REST defines a set of constraints for how the architecture of ...
web services). The language (defined by Michael Pasternak during his work on
oVirt oVirt is a free, open-source virtualization management platform. It was founded by Red Hat as a community project on which Red Hat Virtualization is based. It allows centralized management of virtual machines, compute, storage and networking ...
RESTful API) allows documenting the ''model'' of the resource(s) provided by a service, the relationships between them, and operations and the parameters that must be supplied for the operations. It specifies if parameters are mandated; and describes possible overloads as parameters sets. RSDL is intended to simplify the reuse of web services that are based on the HTTP architecture of the web. It is platform- and language-independent and aims to promote reuse of applications beyond the basic use in a web browser by both humans and machines. Unlike WADL, it concentrates on describing
URI Uri may refer to: Places * Canton of Uri, a canton in Switzerland * Úri, a village and commune in Hungary * Uri, Iran, a village in East Azerbaijan Province * Uri, Jammu and Kashmir, a town in India * Uri (island), off Malakula Island in V ...
s as stand-alone entry points in to the application which can be invoked in different ways, does not require traversing over URI components to figure out URI structure, and supports URI/Headers/body parameters overloads. This makes it human-readable and easily consumed by both humans and machines.


Properties

*Self descriptive: RSDL represents different URIs as stand-alone entry points into the application. Following resource URIs, one can figure out which methods are available for the given resources and how those resources can be consumed. *Machine-readable: Each URI in RSDL contains all the necessary information to generate an HTTP request from it, which can be easily consumed by accessing the URI internals. *Human-readable: Each URI in RSDL contains "rel" and "description" attributes describing the meaning of the given operation on that URI. Humans can easily fetch all available operations for a given collection/resource simply by locating different descriptors within the same URI.


Format

api.xsd
GET, POST, PUT, DELETE, ...
... FQ-name-to-parameter


Components


URI


Request

GET, POST, PUT, DELETE, ...
...
... ... ... FQ-name-to-parameter ... ...


Response

...


XML schema


Examples


List resources

GET
Filter true, false
search search query case_sensitive true, false max max results
Clusters


Get resource

GET
Filter true, false
Cluster


Update resource

PUT
Content-Type application/xml, json
Correlation-Id any string
Cluster cluster.name cluster.description cluster.cpu.id cluster.version.major cluster.version.minor cluster.memory_policy.overcommit.percent cluster.memory_policy.transparent_hugepages.enabled cluster.scheduling_policy.policy cluster.scheduling_policy.thresholds.low cluster.scheduling_policy.thresholds.high cluster.scheduling_policy.thresholds.duration cluster.error_handling.on_error cluster.virt_service cluster.gluster_service cluster.threads_as_cores cluster.tunnel_migration
Cluster


Create resource

POST
Content-Type application/xml, json
Expect 201-created
Correlation-Id any string
Cluster cluster.data_center.id, name cluster.name cluster.version.major cluster.version.minor cluster.cpu.id cluster.description cluster.memory_policy.overcommit.percent cluster.memory_policy.transparent_hugepages.enabled cluster.scheduling_policy.policy cluster.scheduling_policy.thresholds.low cluster.scheduling_policy.thresholds.high cluster.scheduling_policy.thresholds.duration cluster.error_handling.on_error cluster.virt_service cluster.gluster_service cluster.threads_as_cores cluster.tunnel_migration
Cluster


Delete resource

DELETE
Correlation-Id any string
async true, false


Code generation


RSDL URI descriptor

POST
Content-Type application/xml, json
Expect 201-created
Correlation-Id any string
Cluster cluster.data_center.id, name cluster.name cluster.version.major cluster.version.minor cluster.cpu.id cluster.description cluster.memory_policy.overcommit.percent cluster.memory_policy.transparent_hugepages.enabled cluster.scheduling_policy.policy cluster.scheduling_policy.thresholds.low cluster.scheduling_policy.thresholds.high cluster.scheduling_policy.thresholds.duration cluster.error_handling.on_error cluster.virt_service cluster.gluster_service cluster.threads_as_cores cluster.tunnel_migration
Cluster


Generated code signature(s)

/** * Adds Cluster object. * @param cluster * cluster.data_center.id, name * cluster.name * cluster.version.major * cluster.version.minor * cluster.cpu.id * luster.description * luster.memory_policy.overcommit.percent * luster.memory_policy.transparent_hugepages.enabled * luster.scheduling_policy.policy * luster.scheduling_policy.thresholds.low * luster.scheduling_policy.thresholds.high * luster.scheduling_policy.thresholds.duration * luster.error_handling.on_error * luster.virt_service * luster.gluster_service * luster.threads_as_cores * luster.tunnel_migration * @return * * @throws ClientProtocolException * Signals that HTTP/S protocol error has occurred. * @throws ServerException * Signals that an oVirt api error has occurred. * @throws IOException * Signals that an I/O exception of some sort has occurred. */ public Cluster add(org.ovirt.engine.sdk.entities.Cluster cluster) throws ClientProtocolException, ServerException, IOException /** * Adds Cluster object. * @param cluster * cluster.data_center.id, name * cluster.name * cluster.version.major * cluster.version.minor * cluster.cpu.id * luster.description * luster.memory_policy.overcommit.percent * luster.memory_policy.transparent_hugepages.enabled * luster.scheduling_policy.policy * luster.scheduling_policy.thresholds.low * luster.scheduling_policy.thresholds.high * luster.scheduling_policy.thresholds.duration * luster.error_handling.on_error * luster.virt_service * luster.gluster_service * luster.threads_as_cores * luster.tunnel_migration * @param expect * 01-created * @param correlationId * ny string * @return * * @throws ClientProtocolException * Signals that HTTP/S protocol error has occurred. * @throws ServerException * Signals that an oVirt api error has occurred. * @throws IOException * Signals that an I/O exception of some sort has occurred. */ public Cluster add(org.ovirt.engine.sdk.entities.Cluster cluster, String expect, String correlationId) throws ClientProtocolException, ServerException, IOException


References

{{Reflist Web services