OGF OCCI-WG Deliverables

May 2009


URL Namespace

A single URL entry point (and optionally, suitable credentials for HTTP based authentication schemes) is all a client requires. Each resource type or "noun" (e.g. compute, network, storage) is visible as a collection at the root level (e.g. http://example.com/compute)Perhaps we should consider allowing them anywhere/everywhere as is the case today and the resources themselves appear under these collections (e.g. http://example.com/compute/123). Implementors should also expose an AtomPub service document at the root to enable enumeration of resource types, supported formats and categories.

Nouns, Verbs and Attributes

Interfaces expose "nouns" which have "attributes" and on which "verbs" can be performed. The attributes are exposed as key-value pairs and appropriate verbs as links, following HATEOAS principles.

CRUD Operations

Create, Retrieve, Update and Delete (CRUD) operations map to the POST, GET, PUT and DELETE HTTP verbs respectively. HEAD and OPTIONS verbs may be used to retrieve metadata and valid operations without the entity body to improve performance. Additionally, all existing HTTP functionality is available for caching, proxying, gatewaying and other advanced functionality.

Web Linking

Linked cloud resources extend the World Wide Web (WWW) of linked hypertext (e.g. HTML) documents, only the links themselves are expressed out-of-band rather than inline.

Collections

Operations that return multiple resources (e.g. categories, searches) are rendered as an Atom feed with an Atom entry per resource. Metadata that would normally appear in the HTTP headers appears in standard Atom elements with the entity-body itself being passed by reference or by value in the Atom content element.

Versioning

Clients and servers should expose the protocol version (e.g. OCCI/1.0) via the User-Agent and Server HTTP headers respectively. Should second or subsequent versions of the descriptor format be required the version will be added to the Internet media type (e.g. application/occi2+xml).

OCCI Infrastructure defines three nouns and various extensions relating to management of cloud infrastructure services (IaaS).

Table 1. HTTP Status Codes

CodeDescriptionExample
200 OKRequest completed successfullyResponse is returned
201 CreatedRequest completed successfully, resource was createdPointer to new resource returned
202 AcceptedRequest accepted, processing not completedWorkload starting but not yet active
301 Moved PermanentlyResource has been assigned a new permanent URIWorkload migrated to another installation
302 FoundResource resides temporarily under a different URIAlias pointing to UUID can be updated
304 Not ModifiedConditional GET on resource that is unchangedClient already has the latest version of the resource
400 Bad RequestRequest could not be understood by the server due to malformed syntaxClient sent a representation that was unable to be understood
401 UnauthorizedThe request requires user authenticationClient must retry with authentication
402 Payment RequiredThe server has refused to fulfill the requestCredit limit exceeded
403 ForbiddenThe server understood the request, but is refusing to fulfill itAttempt to access resource without permission
404 Not FoundThe server has not found the resourceFeed or entry unknown
405 Method Not AllowedThe method specified is not allowed for the resourceAttempt to delete an immutable resource
406 Not AcceptableThe resource is not capable of requested content characteristicsUnsupported output format requested
409 ConflictRequest is in conflict with the current state of the resourceResource updated by a third-party in the interim
410 GoneResource is gone, no forwarding addressResource was deleted
500 Internal Server ErrorServer encountered an unexpected conditionAn unknown failure has occurred (e.g. out of memory)
501 Not ImplementedFunctionality required to fulfill request is not implementedA missing extension was called
502 Bad GatewayAn invalid response was received from an upstream serverThe gateway received a malformed response from a node
503 Service UnavailableServer is temporarily unable to handle the requestServer may be overloaded or down for maintenance
504 Gateway TimeoutNo response was received from an upstream serverThe gateway did not receive a response within the timeout period