WADL
URL
http://hostname:8888/opennaas/resources?_wadl
Description
<?xml version="1.0" encoding="UTF-8"?>
<application xmlns="http://wadl.dev.java.net/2009/02" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<grammars>
<xs:schema xmlns="http://www.science.uva.nl/research/sne/ndl#" attributeFormDefault="unqualified" elementFormDefault="unqualified" targetNamespace="http://www.science.uva.nl/research/sne/ndl#">
<xs:import namespace="" />
<xs:element name="Device" type="device" />
<xs:element name="Interface" type="interface" />
<xs:element name="Layer" type="layer" />
<xs:element name="atLayer" type="layerId" />
<xs:element name="capacity" type="xs:string" />
<xs:element name="hasInterface" type="interfaceId" />
<xs:element name="linkTo" type="link" />
<xs:element name="name" type="xs:string" />
</xs:schema>
<xs:schema xmlns="http://www.science.uva.nl/research/sne/ndl/domain#" attributeFormDefault="unqualified" elementFormDefault="unqualified" targetNamespace="http://www.science.uva.nl/research/sne/ndl/domain#">
<xs:import namespace="" />
<xs:element name="NetworkDomain" type="networkDomain" />
<xs:element name="hasDevice" type="deviceId" />
</xs:schema>
<xs:schema xmlns:ns1="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:ns2="http://www.science.uva.nl/research/sne/ndl#" xmlns:ns3="http://www.science.uva.nl/research/sne/ndl/domain#" xmlns:ns4="org.opennaas.core.resources.descriptor.vcpe" attributeFormDefault="unqualified" elementFormDefault="unqualified" targetNamespace="org.opennaas.core.resources.descriptor.vcpe">
<xs:import namespace="http://www.w3.org/1999/02/22-rdf-syntax-ns#" />
<xs:import namespace="http://www.science.uva.nl/research/sne/ndl#" />
<xs:import namespace="http://www.science.uva.nl/research/sne/ndl/domain#" />
<xs:import namespace="org.opennaas.core.resources.descriptor.vcpe" />
<xs:element name="resourceDescriptor" type="resourceDescriptor" />
<xs:element name="vcpeNetworkDescriptor" type="vcpeNetworkDescriptor" />
<xs:complexType name="resourceDescriptor">
<xs:sequence>
<xs:element maxOccurs="unbounded" minOccurs="0" name="capabilityDescriptors" type="capabilityDescriptor" />
<xs:element minOccurs="0" name="fileTopology" type="xs:string" />
<xs:element minOccurs="0" name="id" type="xs:string" />
<xs:element minOccurs="0" name="information" type="information" />
<xs:element minOccurs="0" name="networkTopology" type="networkTopology" />
<xs:element minOccurs="0" name="profileId" type="xs:string" />
<xs:element name="properties">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" minOccurs="0" name="entry">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" name="key" type="xs:string" />
<xs:element minOccurs="0" name="value" type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="resourceReferences">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" minOccurs="0" name="entry">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" name="key" type="xs:string" />
<xs:element minOccurs="0" name="value" type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
<xs:complexType name="capabilityDescriptor">
<xs:sequence>
<xs:element minOccurs="0" name="information" type="information" />
<xs:element maxOccurs="unbounded" minOccurs="0" name="capabilityProperty" type="capabilityProperty" />
<xs:element minOccurs="0" name="enabled" type="xs:boolean" />
<xs:element name="id" type="xs:long" />
</xs:sequence>
</xs:complexType>
<xs:complexType name="information">
<xs:sequence>
<xs:element minOccurs="0" name="description" type="xs:string" />
<xs:element minOccurs="0" name="name" type="xs:string" />
<xs:element minOccurs="0" name="type" type="xs:string" />
<xs:element minOccurs="0" name="version" type="xs:string" />
</xs:sequence>
</xs:complexType>
<xs:complexType name="capabilityProperty">
<xs:sequence>
<xs:element name="id" type="xs:long" />
</xs:sequence>
<xs:attribute name="name" type="xs:string" />
<xs:attribute name="value" type="xs:string" />
</xs:complexType>
<xs:complexType name="networkTopology">
<xs:sequence>
<xs:element maxOccurs="unbounded" minOccurs="0" ref="ns2:Device" />
<xs:element maxOccurs="unbounded" minOccurs="0" ref="ns2:Interface" />
<xs:element maxOccurs="unbounded" minOccurs="0" ref="ns2:Layer" />
<xs:element minOccurs="0" name="location" type="xs:string" />
<xs:element maxOccurs="unbounded" minOccurs="0" ref="ns3:NetworkDomain" />
</xs:sequence>
</xs:complexType>
<xs:complexType name="device">
<xs:sequence>
<xs:element maxOccurs="unbounded" minOccurs="0" ref="ns2:hasInterface" />
<xs:element minOccurs="0" ref="ns2:name" />
</xs:sequence>
</xs:complexType>
<xs:complexType name="interfaceId">
<xs:sequence />
<xs:attribute ref="ns1:resource" />
</xs:complexType>
<xs:complexType name="interface">
<xs:sequence>
<xs:element minOccurs="0" ref="ns2:atLayer" />
<xs:element minOccurs="0" ref="ns2:capacity" />
<xs:element minOccurs="0" ref="ns2:linkTo" />
<xs:element minOccurs="0" ref="ns2:name" />
</xs:sequence>
</xs:complexType>
<xs:complexType name="layerId">
<xs:sequence />
<xs:attribute ref="ns1:resource" />
</xs:complexType>
<xs:complexType name="link">
<xs:sequence />
<xs:attribute ref="ns1:resource" />
</xs:complexType>
<xs:complexType name="layer">
<xs:sequence>
<xs:element minOccurs="0" ref="ns2:name" />
</xs:sequence>
</xs:complexType>
<xs:complexType name="networkDomain">
<xs:sequence>
<xs:element maxOccurs="unbounded" minOccurs="0" ref="ns3:hasDevice" />
<xs:element minOccurs="0" ref="ns2:name" />
</xs:sequence>
</xs:complexType>
<xs:complexType name="deviceId">
<xs:sequence />
<xs:attribute ref="ns1:resource" />
</xs:complexType>
<xs:complexType name="vcpeNetworkDescriptor">
<xs:complexContent>
<xs:extension base="resourceDescriptor">
<xs:sequence>
<xs:element minOccurs="0" ref="ns4:vCPEModel" />
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:schema>
<xs:schema xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" attributeFormDefault="unqualified" elementFormDefault="unqualified" targetNamespace="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<xs:import namespace="" />
<xs:element name="RDF" type="networkTopology" />
<xs:attribute name="resource" type="xs:string" />
</xs:schema>
<xs:schema xmlns="org.opennaas.core.resources.descriptor.vcpe" attributeFormDefault="unqualified" elementFormDefault="unqualified" targetNamespace="org.opennaas.core.resources.descriptor.vcpe">
<xs:element name="vCPEModel" type="xs:string" />
</xs:schema>
</grammars>
<resources base="http://localhost:8888/opennaas/resources/">
<resource path="/">
<resource path="create">
<method name="POST">
<request>
<representation mediaType="application/xml" />
</request>
<response>
<representation mediaType="application/xml">
<param name="result" style="plain" type="xs:string" />
</representation>
</response>
</method>
</resource>
<resource path="getDescriptor/{resourceId}">
<param name="resourceId" style="template" type="xs:string" />
<method name="GET">
<request />
<response>
<representation mediaType="application/xml" />
</response>
</method>
</resource>
<resource path="getName/{resourceId}/">
<param name="resourceId" style="template" type="xs:string" />
<method name="GET">
<request />
<response>
<representation mediaType="application/octet-stream">
<param name="result" style="plain" type="xs:string" />
</representation>
</response>
</method>
</resource>
<resource path="getResourceTypes">
<method name="GET">
<response>
<representation mediaType="application/xml" />
</response>
</method>
</resource>
<resource path="modify/{resourceId}">
<param name="resourceId" style="template" type="xs:string" />
<method name="POST">
<request>
<representation mediaType="application/xml" />
</request>
<response>
<representation mediaType="application/xml">
<param name="result" style="plain" type="xs:string" />
</representation>
</response>
</method>
</resource>
<resource path="remove/{resourceId}">
<param name="resourceId" style="template" type="xs:string" />
<method name="POST">
<request />
<response status="204" />
</method>
</resource>
<resource path="start/{resourceId}">
<param name="resourceId" style="template" type="xs:string" />
<method name="POST">
<request />
<response status="204" />
</method>
</resource>
<resource path="stop/{resourceId}">
<param name="resourceId" style="template" type="xs:string" />
<method name="POST">
<request />
<response status="204" />
</method>
</resource>
</resource>
</resources>
</application>
Methods
CreateResource
The CreateResource method creates a new resource in OpenNaaS from the resource descriptor given by the user. If the method ends successfully, the id of the new resource is returned to he user.
| Value | Description |
---|
URL | http://hostname:8888/opennaas/resources/create | |
Method | POST | |
Body Parameter | ResourceDescriptor | Resource descriptor containing the resource info (type, name, description) and its list of capabilities. |
Return | String | Resource id of the created resource. |
The following example creates a router resource called "myre" with BGP and Chassis capabilities, both of them using the "Junos 10.10" driver.
Body Example
<?xml version="1.0" encoding="UTF-8"?>
<resourceDescriptor xmlns:ns2="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:ns3="http://www.science.uva.nl/research/sne/ndl#" xmlns:ns4="http://www.science.uva.nl/research/sne/ndl/domain#" xmlns:ns5="org.opennaas.core.resources.descriptor.vcpe">
<capabilityDescriptors>
<information>
<name>bgp capability</name>
<type>bgp</type>
</information>
<capabilityProperty name="actionset.name" value="junos">
</capabilityProperty>
<capabilityProperty name="actionset.version" value="10.10">
</capabilityProperty>
</capabilityDescriptors>
<capabilityDescriptors>
<information>
<name>chassis capability</name>
<type>chassis</type>
</information>
<capabilityProperty name="actionset.name" value="junos">
</capabilityProperty>
<capabilityProperty name="actionset.version" value="10.10">
</capabilityProperty>
</capabilityDescriptors>
<information>
<name>myre</name>
<type>router</type>
</information>
<properties />
</resourceDescriptor>
Response Example
ModifyResource
The ModifyResource method updated the information of an existing resource of OpenNaaS. The resourceDescriptor will be replaced by the new one, but the resourceId will be manteined.
| Value | Description |
---|
URL | http://hostname:8888/opennaas/resources/modify/{resourceId} | |
Method | POST | |
Path Parameter | resourceId | Id of the resource to be modified. |
Body Parameter | ResourceDescriptor | Resource descriptor containing the new resource information. |
Return | String | Resource id of the modified resource. It matches the path parameter "resourceId" |
The following example modifies the previous created router by adding a new capability: the IP capability using the "Junos 10.10" router.
Body Example
<?xml version="1.0" encoding="UTF-8"?>
<resourceDescriptor xmlns:ns2="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:ns3="http://www.science.uva.nl/research/sne/ndl#" xmlns:ns4="http://www.science.uva.nl/research/sne/ndl/domain#" xmlns:ns5="org.opennaas.core.resources.descriptor.vcpe">
<capabilityDescriptors>
<information>
<name>bgp capability</name>
<type>bgp</type>
</information>
<capabilityProperty name="actionset.name" value="junos">
</capabilityProperty>
<capabilityProperty name="actionset.version" value="10.10">
</capabilityProperty>
</capabilityDescriptors>
<capabilityDescriptors>
<information>
<name>chassis capability</name>
<type>chassis</type>
</information>
<capabilityProperty name="actionset.name" value="junos">
</capabilityProperty>
<capabilityProperty name="actionset.version" value="10.10">
</capabilityProperty>
<id>0</id>
</capabilityDescriptors>
<capabilityDescriptors>
<information>
<name>ip capability</name>
<type>ip</type>
</information>
<capabilityProperty name="actionset.name" value="junos">
</capabilityProperty>
<capabilityProperty name="actionset.version" value="10.10">
</capabilityProperty>
</capabilityDescriptors>
<information>
<name>myre</name>
<type>router</type>
</information>
<properties />
</resourceDescriptor>
Response Example
StartResource
The StartResource method starts a resource, only if it's in INITIALIZED state.
StopResource
The StopResource method stops a resource, only if it's in STARTED state.
RemoveResource
The RemoveResource method removes a resource from OpenNaaS, only if it's in INITIALIZED state. It the resource is in STARTED state, it must be stopped before calling this method.
GetResourceTypes
List all the types of resources supported by the OpenNaaS instance.
GetNameFromResourceID
Given the resourceId of an existing resource, this method return its name.
GetResourceDescriptor
Given the resourceId of an existing resource, this method returns its whole resource descriptor.