RequirementsSolicitation

Requirements Solicitation
Live notes may be taken for this topic at: http://etherpad.openstack.org/Requirements

Requirements solicitation for this Summit will focus on those areas of immediate interest for imminent development. In particular, the API and Image Caching, as these somewhat define the bounds of our system (customer interface and storage interface).

Note that these requirements are merely suggested at this point, and are meant as a centerpiece for discussion. Your involvement, edits, additions, and corrections are welcome and needed.

General Requirements

 * 1) The system shall support the capability to run multiple APIs.
 * 2) * a) The system shall support the capability for each API to run in it's own URL namespace. (e.g., Rackspace vs. EC2)
 * 3) The system shall support fully asynchronous API design.
 * 4) * a) The system shall support the option for synchronous APIs (e.g., IP Address)
 * 5) The system shall be secure
 * 6) * a) if components fail, they shall fail closed
 * 7) * b) a compromised component shall not lead to cascading compromising of entire system
 * 8) The system shall be transparent
 * 9) * a) failure of components/operations shall be recorded for both cloud operators and users
 * 10) * b) health of individual components shall be accessible for operations

API candidate functions

 * 1) The system shall support the capability to ...
 * 2) * a) ... retrieve a list of servers.
 * 3) * b) ... create a server.
 * 4) * c) ... get details of a server.
 * 5) * d) ... update the name of a server.
 * 6) * e) ... update the administrative password of a server.
 * 7) * f) ... delete a server.
 * 8) * g) ... retrieve a list of addresses.
 * 9) * h) ... retrieve a list of public addresses.
 * 10) * i) ... retrieve a list of private addresses.
 * 11) * j) ... share an IP address.
 * 12) * k) ... unshare an IP address.
 * 13) * l) ... reboot a server.
 * 14) * m) ... rebuild a server.
 * 15) * n) ... resize a server.
 * 16) *# ... confirm a resized server.
 * 17) *# ... revert a resized server.
 * 18) ... retrieve a list of available configurations (flavors).
 * 19) * a) ... retrieve details of a selected configuration.
 * 20) * b) ... retrieve a list of available images.
 * 21) * c) ... create an image from an existing server.
 * 22) * d) ... retrieve details of an image.
 * 23) * e) ... delete a stored image.
 * 24) * f) ... enable/disable scheduled back-ups of a server.
 * 25) *# indicate schedule for back-ups of a server.
 * 26) *# indicate retention policy for scheduled back-ups of a server.
 * 27) ... retrieve a list of shared IP groups.
 * 28) * a) ... create shared IP groups.
 * 29) * b) ... retrieve details on a shared IP group.
 * 30) * c) ... delete a shared IP group.
 * 31) use webhooks (http callbacks) to send information on state change?

Projects/Groups & Users

 * Access to resources should facility existing social structures (groups, roles)
 * User can belong to many projects
 * Users have roles
 * API calls can be restricted to only users with proper roles
 * Quotas on resource usage at project level (system wide default for all projects, with override)
 * Audit logs of who did what to cloud resources
 * User provided naming and descriptions facilitate groups

Running a cloud: Security / Management

 * APIs / web interface for IT Security group (to deal with compromised guests)
 * APIs for user / projects / roles / ...
 * Basic reporting of statistics of utilization
 * Tools to check cloud health (scheduled and on demand for specific hosts)

Image Caching

 * 1) The system shall provide the capability to cache images.
 * 2) * a) The system shall provide the option not to cache images.
 * 3) * b) The system shall provide the capability to configure expiration policy for an image (e.g., base images)
 * 4) The system shall provide the capability to interface with multiple image stores.
 * 5) * a) The image store interface shall provide support for multiple sources/back-ends.
 * 6) * b) The image store interface shall provide support for RS-CF, http, nfs.
 * 7) * c) The image store interface shall be modular.
 * 8) The system shall provide support for OVF.
 * 9) * a) Question: should we be supporting multiple VMs in a single OVF manifest?
 * 10) * b) Question: what (other) portions of OVF should we be supporting?
 * 11) Question: What back-up approach should we be supporting (e.g., deltas? full back-ups, etc.)?