Draft API
Base path: /api/{version}/
Path | Action | Project Admin | Site Admin | Notes |
---|---|---|---|---|
/services | List, add site-wide services | GET | PUT | |
/services/{service-id} | Get, update, delete site-wide services | GET | PUT, DELETE | |
/storageResources | List, add site-wide storage resources | GET | PUT | |
/storageResources/{resource-id} | Get, update, delete site-wide storage | 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 | ||
/projects/{project-id}/volumes | List, add project volumes | GET, PUT | ||
/projects/{project-id}/volumes/{volume-id} | Get, update, delete project volumes | GET, PUT, DELETE | ||
Swagger
The API will be generated using the Swagger tools. The Swagger editor is currently running in a local docker instance, but could be hosted on a VM someplace. Swagger-codegen JAX-RS appears to be a pretty straightforward method for generating a quick API server and client.
Components
The NDSLabs API consists of one or more CLI applications, and API server (initially running under Jetty), using etcd for storage.
Kubernetes provides some client libraries. http://kubernetes.io/v1.1/docs/devel/client-libraries.html