...
- Project: A named configuration that relates an administrative user to a set of resource allocations (quotas), and resources (namespace, pods/services, volumes, configurations).
- StackApplication (aka stack): A set of services that are administratively related (i.e., started and stopped together). For example, "clowder" or "dataverse"
- Service definitionspecification: 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 Application 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 mount: A named, allocated storage resource that counts against the project quota and can be mounted by one or more services.
...
Using the CLI for simplicity: a project administrator wants to add a set of services to their project configuration:
Command | What it does | Response |
---|---|---|
list services | Lists the services in the service library that can be added to this project. |
|
get service clowder | Gets the service specification | <spec> |
add service clowder | Adds the specified service to the project | OK |
set |
env smtp-host smtp.ncsa.illinois.edu | Sets a configuration option for the named services |
OK | ||
start clowder | Starts the service | <status> |
status clowder | Returns the service status | <status> |
add service image-preview | Adds the specified service to the project |
OK | ||
start image-preview | Starts the image preview service and updates the clowder service? | <status> |
stop services | Stops everything | <status> |
Entities
The following is a simple entity-relationship diagram intended to capture the entities, attributes, and relationships for the NDSLabs API.
...
For actor definitions, see NDS Labs Use Cases.
Base path: /api/
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:
...