...
The NDSLabs API is a RESTful interface to the NDSLabs system. The API is implemented via the NDSLabs API Server.
Key Concepts
- Project: A named configuration that relates an administrative user , likely represented by a client certificate, to a set of resource allocations (quotas), and resources (namespace, pods/services, volumes, configurations).
- Stack: A set of services that are administratively related (i.e., started and stopped together). For example, "clowder" or "dataverse"
- Service definition: A specification of a logical "service" that includes a name, description, storage requirements, configuration options, and relationships to other services. An NDSLabs "service" may be composed of multiple related containers.
- Service library: A collection of service definitions and procedures for adding official/trusted as well as local/development services.
- Service instance: An instance of a service configured and running in a project namespace.
- Resource quota: A set of soft and hard limits assigned to a project (storage and compute).
- Volume: A named, allocated storage resource that counts against the project quota and can be mounted by one or more services.
...
Gliffy Diagram | ||||||
---|---|---|---|---|---|---|
|
...
REST API
For actor definitions, see NDS Labs Use Cases.
Base path: /api/{version}/
Path | Action | Project Admin | Cluster Admin | Notes |
---|---|---|---|---|
/ | List available paths | GET | GET | |
/authenticate | PUT | PUT | returns token | |
/services | List, add site-wide and project-specific services | GET, PUT | PUT | |
/services/{service-id} | Get, update, delete site-wide services | GET | PUT, DELETE | |
/services/templates/{service-id}/{service|controller} | Put, get, delete service templates | GET | PUT, DELETE | |
/projects | List, add projects | GET, PUT | ||
/projects/{project-id} | Get, update, delete project | GET, PUT | DELETE | |
/projects/{project-id}/serviceInstances | List, add project services | GET, PUT | ||
/projects/{project-id}/serviceInstances/{instance-id} | Get, update, delete project service | GET, PUT, DELETE | ||
/projects/{project-id}/serviceInstances/{instance-id}/status | Get, update, delete project services status | GET, PUT, DELETE | start, stop, restart | |
/projects/{project-id}/serviceInstance/{instance-id}/config | Get, update, delete service configurations | GET, PUT, DELETE | ||
/projects/{project-id}/volumes | List, add project volumes | GET, PUT | ||
/projects/{project-id}/volumes/{volume-id} | Get, update, delete project volumes | GET, PUT, DELETE | ||
/projects/{project-id}/{stack-id} | Get, update, delete service stack | GET, PUT, DELETE | ||
/projects/{project-id}/{stack-id}/actions/{action} | Start/Stop a stack | GET,PUT | ||
/projects/{project-id}/{stack-id}/services/{service-id} | Get, update, delete services in a stack | GET, PUT, DELETE | ||
/version | Get server version | GET | GET | |
/refresh_token | Get a new token | GET | GET | |
/register |
Post a new project | POST | |||
/console | Get a Websocket connection to a console | GET |
The latest version of the API specification is available in Github:A first draft of the spec is available via git on the NDS-108 branch
https://github.com/nds-org/nds-labsndslabs/blob/NDS-108/apiserver/apimaster/apis/swagger-spec/ndslabs.yaml
This can be opened using the Swagger editor demo http://editor.swagger.io/, if desired.
...