Most Powerful Open Source ERP

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 🛑        
getFullComputerInformation  
useComputer  
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 🛑     🛑 🛑
getHostingSubscriptionIpList  
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.