A new test suite for SlapOS REST API

SlapOS new REST API is now validated by a complete test suite which demonstrates the relevance of a content-based approach.
  • Last Update:2023-12-22
  • Version:001
  • Language:en

SlapOS is currently based on an API which relies on remote procedure calls in XML (XML-RPC). Although it is very reliable and can be used easily with slapos console, some users have been requesting a pure REST API.

This new API is now closer than ever to be released. It is based on a CRUD (Create Read Update Delete) approach similar to JIO. Rather than a procedural approach, the new SLAP API is content-based. A user creates content (ex. a compute node registration) and tracks the progress of the registration process by looking up how the original content evolves with new properties added as part of this process.

The procedural XML-RPC API of SlapOS has mostly been translated into content-based API:

✔ Done, ❌ Not Done,🛑 Not used and not planned

SlapTool Action (XMP-RPC API) REST API side REST API Portal Type API Tested Client Side Client Tested
softwareReleaseError ✔ PUT Software Installation
availableSoftwareRelease ✔ PUT Software Installation
buildingSoftwareRelease ✔ PUT Software Installation
destroyedSoftwareRelease ✔ PUT Software Installation
supplySupply ✔ POST Software Installation
requestComputer 🛑        
loadComputerConfigurationFromXML ✔ PUT Compute Node
computerBang ✔ PUT Compute Node
getComputerStatus 🛑   🛑 🛑 🛑
revokeComputerCertificate 🛑   🛑 🛑 🛑
generateComputerCertificate 🛑   🛑 🛑 🛑
destroyedComputerPartition ✔ PUT Software Instance
startedComputerPartition ✔ PUT Software Instance
stoppedComputerPartition ✔ PUT Software Instance
softwareInstanceError ✔ PUT Software Instance
softwareInstanceBang ✔ PUT Software Instance
softwareInstanceRename ✔ PUT Software Instance
setComputerPartitionConnectionXml ✔ PUT Software Instance 🛑 🛑
getInstanceParameterDict ✔ GET Software Instance
getComputerPartitionCertificate ✔ GET Software Instance
getComputerPartitionStatus 🛑     🛑 🛑
updateComputerPartitionRelatedInstanceList PUT ✔ Software Instance
registerComputerPartition ✔ POST Software Instance    
getSoftwareReleaseListFromSoftwareProduct N/A N/A N/A N/A N/A

As we can observe, only three types of contents (Compute Node, Software Installation and Software Instance) are sufficient to describe the whole process of managing a distributed architecture such as a cloud platform, an edge platform or a vRAN. A fourth portal type (Software Product) might be necessary to cover service catalogs and support introspection on software release (ex. equivalence). This remains to be discussed though since it could also be implemented as part of Software Instance additional properties.

The new API is now fully tested with automated tests (see also here and here).

Moving from procedural API to content-based API was actually a challenge posing certains risks and uncertainties. The current state of the ongoing implementation demonstrates that content-based API works well and can actually simplify a lot the description of the SLAP protocol. Content-based API might also simplify disaster recovery procedure whenever a single instance has to handle millions of shared instances (ex. CDN, SDN, etc.). This topic will be discussed in future blog.


  • Photo Jean-Paul Smets
  • Logo Nexedi
  • Jean-Paul Smets
  • jp (at) rapid (dot) space
  • Jean-Paul Smets is the founder and CEO of Nexedi. After graduating in mathematics and computer science at ENS (Paris), he started his career as a civil servant at the French Ministry of Economy. He then left government to start a small company called “Nexedi” where he developed his first Free Software, an Enterprise Resource Planning (ERP) designed to manage the production of swimsuits in the not-so-warm but friendly north of France. ERP5 was born. In parallel, he led with Hartmut Pilch (FFII) the successful campaign to protect software innovation against the dangers of software patents. The campaign eventually succeeeded by rallying more than 100.000 supporters and thousands of CEOs of European software companies (both open source and proprietary). The Proposed directive on the patentability of computer-implemented inventions was rejected on 6 July 2005 by the European Parliament by an overwhelming majority of 648 to 14 votes, showing how small companies can together in Europe defeat the powerful lobbying of large corporations. Since then, he has helped Nexedi to grow either organically or by investing in new ventures led by bright entrepreneurs.