COOJA and Testbed Federation/TWIST growing together

Two COOJA plugins and manuals have been published to integrate the TWIST testbed in COOJA and to take checkpoints and perform rollbacks both in TWIST and COOJA.

Call for Papers: CONET/UBICITEC 2013

The 4th International Workshop on Networks of Cooperating Objects for Smart Cities 2013 (CONET/UBICITEC 2013), colocated with CPSWeek 2013, accepts submissions until January 28th, 2013.

Newsletter issue #19

The 19th CONET newsletter has been published. You can read on Virtual Organizations for Multi-Model Based Embedded Systems and on the UvA Bird Tracking System.


In this phase of the task, the work is concentrated on prototyping and refining the two core interfaces of the CONET testbed federation platform: Testbed Adaptation API (TA API) as common abstraction over the existing capabilities of the participating testbeds; and a Testbed Federation API (TF API) that leverages the services of the individual testbeds, exported through the TA API, to build a higher level abstraction over the federation aggregate.

  • The complete code for the CONET testbed federation prototype is released as open source and available at the public repository 
  • The front-end for the CONET Testbed Federation prototype is reachable at




Testbed Adaptation API

The prototyping of the TA API is performed on top of TWIST due to its mature remote access architecture and large popularity in the WSN community. To facilitate easy porting of the TA API prototype on other testbeds, the prototype has been further decomposed in two parts: a generic web server implemented in Python using the Django web framework, and a thin TWIST-specific wrapper that interfaces with the native TWIST API. The two parts of the TA API prototype currently interact using a generic XML-RPC bridge.


Implementation of the TA API for the TWIST testbed

Testbed Adaptation Prototype for TWIST

The following table describes the mapping between the common testbed operations exposed in the Testbed Adaptation API and their implementation in the native TWIST API, via the XML-RPC bridge.



DescriptionContent-TypeTAA Req MethodsTAA Req URIXML-RPC API ( (
how to get the information about the testbedapplication/jsonGET/
how to get a list of all imagesapplication/jsonGET/images/
how to upload (not burn) a new imageapplication/x-www-form-urlencodedPOST/images/
how to get the representation of a given imageapplication/jsonGET/images/ID
how to edit information about a given imageapplication/jsonPUT/images/ID
how to delete a given image-DELETE/images/ID
how to get a list of all reserved jobs by all usersapplication/jsonGET/jobs/xmlrpc_getAllJobs()getAllJobs()
how to create a new jobapplication/jsonPOST/jobs/xmlrpc_createJob()addSingleJob()
how to get the representation of a given jobapplication/jsonGET/jobs/IDxmlrpc_getJobById()getSingleJob()
how to edit information about a given jobapplication/jsonPUT/jobs/IDxmlrpc_updateJobById()updateSingleJob()
how to cancel the reservation of a given job-DELETE/jobs/IDxmlrpc_deleteJobById()deleteListJobs()
how to get the list of logs related to a given jobapplication/jsonGET/jobs/ID/logs/
how to get the representation of a logapplication/jsonGET/jobs/ID/logs/ID
how to delete a given log (TBC)-DELETE/jobs/ID/logs/ID
how to get the list of traces related to a given jobapplication/jsonGET/jobs/ID/traces/
how to get a given trace related to a given jobapplication/jsonGET/jobs/ID/traces/ID
how to delete a given trace (TBC)-DELETE/jobs/ID/traces/ID
how to get the list of nodesgroups involved in the jobapplication/jsonGET/nodegroups/
how to create a new nodegroupapplication/jsonPOST/nodegroups/
how to get information about a given nodegroupapplication/jsonGET/nodegroups/ID
hot to update information about a nodegroupapplication/jsonPUT/nodegroups/ID
how to delete a nodegroup-DELETE/nodegroups/ID
how to install an image on a given nodegroupapplication/jsonPUT/nodegroups/ID/image/IDxmlrpc_burnImageToNodeList()executeOldBurnAction
how to erase an image from a nodegroup"-DELETE/nodegroups/ID/image/IDxmlrpc_burnImageToNodeList()executeOldBurnAction
how to get the list of nodes for a given nodegroupapplication/jsonGET/nodegroups/ID/nodes/
how to check whether a node is part of a nodegroupapplication/jsonGET/nodegroups/ID/nodes/ID
how to add a node to a given nodegroup-PUT/nodegroups/ID/nodes/ID
how to delete a node from a given nodegroup-DELETE/nodegroups/ID/nodes/ID
how to get all nodes of the testbedapplication/jsonGET/nodes/xmlrpc_getAllNodes()getAllNodes() - getAllBindedNodes()
how to get the representation of a given nodeapplication/jsonGET/nodes/IDxmlrpc_getNodeById()getNodeById()
how to install an image on a given node-PUT/nodes/ID/image/IDxmlrpc_burnImageToNodeList()executeOldBurnAction
how to erase an image from a node"-DELETE/nodes/ID/image/IDxmlrpc_burnImageToNodeList()executeOldBurnAction
how to get the list of all platforms supported by a testbedapplication/jsonGET/platforms/xmlrpc_getAllPlatforms()getAllPlatforms()
how to get information about a give platformapplication/jsonGET/platforms/IDxmlrpc_getPlatformById()getPlatformById()
how to get the list of the usersapplication/jsonGET/users/[1]
how to get the representation of a given userapplication/jsonGET/users/ID


Testbed Federation API

In parallel, we have continued with the prototyping of the CONET Testbed Federation Server (CTFS) and its TF API on top of the Google App Engine (GAE) platform. Using the Django-Nonrel framework, the prototype implementation hides the complexity of the native GAE data store behind a convenient SQL-like API that increases the portability of the implementation and allows more easy migration to alternative cloud service providers.



GAE Data Store entities containing the TF API resources




Technology stacks used in the TF prototype


The existing frontend server and TF API prototype support the concept of federated authentication using the OpenID protocol. Further development of the common authentication support is postponed for Y4, pending a final adoption of the new OAuth 2.0 standard that matches our requirements much better than the OAuth 1.0 version, leveraged in the original design of the CTF architecture.





User authentication on the CONET Testbed Federation using OpenID