stormflash

stormflash provides remote application lifecycle management on any arbitrary endpoint

cloudflash

CloudFlash is a web framework for cloud based automation of modules, services, and firmware

CloudFlash supports JSON data serialization format. The format for both the request and the response should be specified by using the Content-Type header, the Accept header.

List of APIs

VerbURIDescription
GET/modulesList summary of modules installed in VCG/CPEs identified by service ID
POST/modulesCreate a new module in VCG/CPE
GET/modules/module-idDescribes an installed module in VCG/CPEs by module ID
PUT/modules/module-idUpdate existing module configuration in VCG/CPEs by module-id
DELETE/modules/module-idDelete an installed module in VCG/CPEs by module ID
POST/modules/module-id/actionExecute command on the VCG/CPEs

Authentication

Current implementation of cloudflash in VCG/CPEs does not require that each request will include the credentials of the user submiting the request. Plan is to have Oauth scheme of authentication.

Modules API

Verb	URI	        Description
GET	     /modules	     Lists summary of modules configured in VCG/CPEs identified by module ID.

Note: The request does not require a message body. Success: Returns JSON data with list of modules installed on VCG/CPEs. Each module is identified by module ID

The module ID is generated is a UUID.

Example Request and Response

Request

GET /modules HTTP/1.1

Response

{
       "modules":
       [
           {
               "id": "d56467f6-2b53-467e-978a-c17039770353",
               "description":
               {
                   "name": "cloudflash-uproxy",                   
                   "version": "1.1.0"
               },
               "status":
               {
                   "installed": true
               }
           }
       ]
}
 
Verb	URI	        Description
POST	/modules	Create a new module in VCG/CPEs.

On success it returns JSON data with the UUID for the module created. If module not installed return error To restrict multiple entry for same module, Return error on POST if entry already exists in DB.

Example Request and Response

Request

{
    "name": "cloudflash-uproxy",
    "version": "1.1.0"
}
 

Response JSON

{
       "id": "d56467f6-2b53-467e-978a-c17039770353",
       "description":
       {
           "name": "cloudflash-uproxy",           
           "version": "1.1.0"
       },
       "status":
       {
           "installed": true
       }
}
 
Verb	URI	                 Description
GET	    /modules/module-id	 Show a module in VCG/CPEs specified by module-ID

Example Request and Response

GET /modules/d56467f6-2b53-467e-978a-c17039770353
{
   "id": "d56467f6-2b53-467e-978a-c17039770353",
   "description":
   {
       "name": "cloudflash-uproxy",           "
       "version": "1.1.0"
   },
   "status":
   {
       "installed": true,
       "initialized": false,
       "enabled": false,
       "running": false,
       "result": "Error: Command failed: "
   }
}
Verb	URI	                 Description
PUT	    /modules/module-id	 Show a module in VCG/CPEs specified by module-ID

Example Request and Response

Request

{
    "name": "cloudflash-uproxy",
    "version":"1.1.0"
 
}

Response JSON

{
       "id": "d56467f6-2b53-467e-978a-c17039770353",
       "description":
       {
           "name": "cloudflash-uproxy",
           "version":"1.1.0"
       },
       "status":
       {
           "installed": true
       }
}
 
Verb	URI	                  Description
DELETE	/modules/module-id	  Delete a module in VCG/CPEs specified by module-ID

On Success returns 200 with JSON data

TODO: Return appropriate error code and description in case of failure.

Example Request and Response

DELETE modules/2ccc8dc8-62c5-491b-b305-3c029bde6f64 
{
   "deleted": true
}

This API is used to perform the action like start, stop, restart and sync on the installed modules as identified by module-id

Verb	URI	                 Description
POST	/modules/module-id/action	  Execute an action command

Example Request and Response

POST /modules/2ccc8dc8-62c5-491b-b305-3c029bde6f64/action  HTTP/1.1
{
   "command":"start"
}
{
   "result": true
}