Table of Contents | ||
---|---|---|
|
WADL
URL
http://hostname:8888/opennaas/resources?_wadl
Description
Code Block | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
<?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
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
<?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
No Format |
---|
584c96d5-2221-47d0-8c51-c5d4d45f3ff4 |
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
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
<?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
No Format |
---|
584c96d5-2221-47d0-8c51-c5d4d45f3ff4 |
StartResource
The StartResource method starts a resource, only if it's in INITIALIZED state.
Value | Description | |
---|---|---|
URL | http://hostname:8888/opennaas/resources/start/{resourceId} | |
Method | POST | |
Path Parameter | resourceId | Id of the resource to be started. |
Return | - |
StopResource
The StopResource method stops a resource, only if it's in STARTED state.
Value | Description | |
---|---|---|
URL | http://hostname:8888/opennaas/resources/stop/{resourceId} | |
Method | POST | |
Path Parameter | resourceId | Id of the resource to be stopped. |
Return | - |
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.
Value | Description | |
---|---|---|
URL | http://hostname:8888/opennaas/resources/remove/{resourceId} | |
Method | POST | |
Path Parameter | resourceId | Id of the resource to be removed. |
Return | - |
GetResourceTypes
List all the types of resources supported by the OpenNaaS instance.
Value | Description | |
---|---|---|
URL | http://hostname:8888/opennaas/getResourceTypes/ | |
Method | GET | |
Return | List<String> | Name of the resources types supported by OpenNaaS. |
Response Example
Code Block | ||
---|---|---|
| ||
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <elements> <element xsi:type="xs:string">bod</element> <element xsi:type="xs:string">roadm</element> <element xsi:type="xs:string">MACBridgeIOS</element> <element xsi:type="xs:string">pdu</element> <element xsi:type="xs:string">sampleresource</element> <element xsi:type="xs:string">quantumresource</element> <element xsi:type="xs:string">network</element> <element xsi:type="xs:string">powernet</element> <element xsi:type="xs:string">vnmapper</element> <element xsi:type="xs:string">router</element> <element xsi:type="xs:string">openflowswitch</element> <element xsi:type="xs:string">vcpenet</element> <element xsi:type="xs:string">ofnetwork</element> </elements> |
GetNameFromResourceID
Given the resourceId of an existing resource, this method return its name.
Value | Description | |
---|---|---|
URL | http://hostname:8888/opennaas/resources/getName/{resourceId} | |
Method | GET | |
Path Parameter | resourceId | Id of the resource which name we want to retrieve. |
Return | String | Name of the resource identified by the given resourceId. |
Response Example
No Format |
---|
myre |
GetResourceDescriptor
Given the resourceId of an existing resource, this method returns its whole resource descriptor.
Value | Description | |
---|---|---|
URL | http://hostname:8888/opennaas/resources/getDescriptor/{resourceId} | |
Method | GET | |
Path Parameter | resourceId | Id of the resource which descriptor we want to retrieve |
Return | ResourceDescriptor | Name of the resource identified by the given resourceId. |
Response Example
Code Block | ||||
---|---|---|---|---|
| ||||
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <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> <id>584c96d5-2221-47d0-8c51-c5d4d45f3ff4</id> <information> <description>Junos v10 Router</description> <name>myre</name> <type>router</type> </information> <properties/> </resourceDescriptor> |
GetIdentifierFromResourceTypeName
Given the name and the type of an existing resource, this method returns its id.
Value | Description | |
---|---|---|
URL | http://hostname:8888/opennaas/resources/getId/{resourceType}/{resourceName} | |
Method | GET | |
Path Parameter | resourceType | Type of the resource which id we want to retrieve. |
Path Parameter | resourceName | Name of the resource which id we want to retrieve. |
Return | ResourceDescriptor | Name of the resource identified by the given resourceId. |
Response Example
No Format |
---|
584c96d5-2221-47d0-8c51-c5d4d45f3ff4 |
GetStatus
Returns the current lifecycle state of the resource.
Value | Description | |
---|---|---|
URL | http://hostname:8888/opennaas/resources/getStatus/{resourceId} | |
Method | GET | |
Path Parameter | resourceId | Id of the resource which status we want to retrieve |
Return | String | Current status of the resource. |
Response Example
No Format |
---|
INITIALIZED |
ListResourcesNameByType
Returns the list of all existing resources of a specific type.
Value | Description | |
---|---|---|
URL | http://hostname:8888/opennaas/resources/listResourcesNameByType/{resourceType} | |
Method | GET | |
Path Parameter | resourceType | Type of the list of resources we want to retrieve. |
Return | List<String> | Name of the resources which type matches the one given by the user. |
Response Example
Code Block | ||||
---|---|---|---|---|
| ||||
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <elements> <element xsi:type="xs:string">myre</element> <element xsi:type="xs:string">gsn</element> </elements> |