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 | ||
Design
- Use Swagger editor to define API (running on some dev VM)
- Use Swagger codegen to generate JAX-RS server bindings and ? client bindings
- API server will run under Jetty (default)
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