You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 8 Next »

WADL

URL

http://hostname:8888/opennaas/resources?_wadl

Description

ResourceManager.wadl
<?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.

 ValueDescription
URLhttp://hostname:8888/opennaas/resources/create 
Method

POST

 
Body ParameterResourceDescriptorResource descriptor containing the resource info (type, name, description) and its list of capabilities.
ReturnStringResource 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
CreateResource Body
<?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
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. 

 ValueDescription
URLhttp://hostname:8888/opennaas/resources/modify/{resourceId} 
Method

POST

 
Path ParameterresourceIdId of the resource to be modified.
Body ParameterResourceDescriptorResource descriptor containing the new resource information.
ReturnStringResource 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
CreateResource Body
<?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
584c96d5-2221-47d0-8c51-c5d4d45f3ff4

StartResource

The StartResource method starts a resource, only if it's in INITIALIZED state.

 ValueDescription
URLhttp://hostname:8888/opennaas/resources/start/{resourceId} 
Method

POST

 
Path ParameterresourceIdId of the resource to be started.
Return- 

StopResource

The StopResource method stops a resource, only if it's in STARTED state.

 ValueDescription
URLhttp://hostname:8888/opennaas/resources/stop/{resourceId} 
Method

POST

 
Path ParameterresourceIdId 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.

 ValueDescription
URLhttp://hostname:8888/opennaas/resources/remove/{resourceId} 
Method

POST

 
Path ParameterresourceIdId of the resource to be removed.
Return- 

GetResourceTypes

List all the types of resources supported by the OpenNaaS instance.

 ValueDescription
URLhttp://hostname:8888/opennaas/getResourceTypes/ 
Method

GET

 
ReturnList<String>Name of the resources types supported by OpenNaaS.

GetNameFromResourceID

Given the resourceId of an existing resource, this method return its name.

 ValueDescription
URLhttp://hostname:8888/opennaas/resources/getName/{resourceId} 
Method

GET

 
Path ParameterresourceIdId of the resource which name we want to retrieve.
ReturnStringName of the resource identified by the given resourceId.

GetResourceDescriptor

Given the resourceId of an existing resource, this method returns its whole resource descriptor.

 ValueDescription
URLhttp://hostname:8888/opennaas/resources/getDescriptor/{resourceId} 
Method

GET

 
Path ParameterresourceIdId of the resource which descriptor we want to retrieve
ReturnResourceDescriptorName of the resource identified by the given resourceId.
  • No labels