[occi-wg] OCCI Latest Draft
Gary Mazz
garymazzaferro at gmail.com
Mon Jul 6 22:36:42 CDT 2009
Great doc Sam !!!
-gary
Sam Johnston wrote:
> Morning all,
>
> I've been doing some more work on the draft over the weekend and today
> as I hope to have it in good condition in time for the various cloud
> interop events next week. It's finally starting to take shape now that
> extensions (e.g. state machines), attributes and registries (e.g. HTTP
> status codes) have been added, even if they're a long way from finished.
>
> The OCCI Core profile is generic and can be used with any resource,
> while OCCI Infrastructure defines compute, network and storage nouns
> (with attributes that are designed to be both extensible and trivially
> mapped to txt, json and xml formats) as well as extensions for
> relevant functionality like state machines.
>
> Anyway the GridForge subversion repository just blew up and my local
> version doesn't build any more so given it's after 4am already I'm
> going to call it a day and send what I have so far by mail (attached).
> The master's DocBook v5 but there's HTML, XML-FO and PDF renderings
> too... I'll fix the subversion repository tomorrow so others can get
> in on the action.
>
> If you do plan to contribute though, please bear in mind that I am
> making personal contributions available under CC-BY-SA in addition to
> the standard OGF terms which I consider far too restrictive. I'd very
> much rather other editors follow my example so as the spec is not
> inextricably bound to any single organisation, as is customary for
> other cloud APIs (e.g. GoGrid, Sun Cloud API).
>
> Thanks,
>
> Sam
>
>
> ------------------------------------------------------------------------
>
>
> OGF OCCI-WG Deliverables
>
>
> OCCI-WG
>
> May 2009
>
> ------------------------------------------------------------------------
>
>
> OCCI Core
>
> ------------------------------------------------------------------------
>
>
> Introduction
>
> The Open Cloud Computing Interface is an open community consensus API,
> initially targeting cloud infrastructure services or "Infrastructure
> as a Service (IaaS)". A "Resource Oriented Architecture (ROA)", it is
> as close as possible to the underlying HyperText Transfer Protocol
> (HTTP), deviating only where absolutely necessary. Each resource
> (identified by a canonical URL) can have multiple representations
> which may or may not be hypertext (e.g. HTML). Metadata including
> associations between resources is exposed via HTTP headers (e.g. the
> Link: header), except in the case of collections where Atom is used as
> the meta-model.
>
>
> Basics
>
>
> 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.
>
> POST (Create)
>
> POSTing a representation (e.g. OVF) to a collection (e.g.
> /compute) will result in a new resource being created (e.g.
> /compute/123) and returned in the Location: header. POST is also
> used with HTML form data to trigger verbs (e.g. restart)
>
> GET (Retrieve)
>
> GETting a resource (e.g. /compute/123) will return a
> representation of that resource in the most appropriate supported
> format specified by the client in the Accept header. Otherwise
> "406 Not Acceptable" will be returned.
>
> PUT (Update)
>
> PUTting a representation (e.g. OVF) to a URL (e.g. /compute/123)
> will result in the resource being created or updated. The URL is
> known or selected by the client (in which case UUIDs should be
> used), in contrast to POSTs where the URL is selected by the server.
>
> DELETE (Delete)
>
> DELETE results in the deletion of the resource (and everything
> "under" it, as appropriate).
>
>
> 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).
>
>
> References
>
> The following standards are referenced by this implementation.
>
> *
>
> RFC 2616 Hypertext Transfer Protocol -- HTTP/1.1
>
> *
>
> RFC 4287 The Atom Syndication Format
>
> *
>
> RFC 5023 The Atom Publishing Protocol
>
> Additionally RFC 2119 Requirement Levels are used throughout.
>
>
> OCCI Infrastructure
>
> ------------------------------------------------------------------------
>
> OCCI Infrastructure defines three nouns and various extensions
> relating to management of cloud infrastructure services (IaaS).
>
>
> Nouns
>
> Cloud infrastructure can be modeled using three primary nouns:
> compute, network and storage.
>
>
> Compute
>
> A compute resource is capable of conducting computations (e.g. a
> virtual machine).
>
> *Table 1. Compute Attributes*
>
> Attribute Type Description
> occi.compute.arch Enum (x86, x64) CPU Architecture (e.g. x64)
> occi.compute.cores Integer Number of CPU cores (e.g. 1, 2)
> occi.compute.memory Float (2^20 bytes) RAM in megabytes (e.g. 2048)
> occi.compute.speed Float (10^9 Hertz) Clock speed in gigahertz (e.g.
> 2.4)
>
>
> Network
>
> A network resource is capable of transferring data (e.g. a virtual
> network or VLAN).
>
> *Table 2. Network Attributes*
>
> Attribute Type Description
> occi.network.vlan-id Integer (0..4095) 802.1q VLAN ID (e.g. 4095)
> occi.network.vlan-tag Token Tag based VLANs (e.g. external-dmz)
> occi.network.ipv4[].gateway IPv4 Address IPv4 gateway address (e.g.
> 192.168.0.1)
> occi.network.ipv4[].netmask IPv4 Address IPv4 netmask address (e.g.
> 255.255.255.0)
> occi.network.ipv4[].network IPv4 Address IPv4 network address (e.g.
> 192.168.0.0)
> occi.network.ipv4[].cidr Integer (0..32) Netmask in CIDR notation
> (e.g. 24)
>
>
> Storage
>
> A storage resource is capable of mass storage of data (e.g. a virtual
> hard drive).
>
> *Table 3. Storage Attributes*
>
> Attribute Type Description
> occi.storage.persistence Enum (transient, persistent, reliable)
> Qualitative device persistence (e.g. transient)
> occi.storage.size Integer (10^9 bytes) Drive size in gigabytes (e.g.
> 40)
>
>
> Extensions
>
> Various extensions provide for more advanced management functionality
> such as billing, monitoring and reporting.
>
>
> State machine (state)
>
> The state machine extension allows for the modeling of arbitrarily
> complex state machines and associated transitions (e.g. start, stop,
> restart).
>
>
> OCCI Registries
>
> ------------------------------------------------------------------------
>
> *Table 1. HTTP Status Codes*
>
> Code Description Example
> 200 OK Request completed successfully Response is returned
> 201 Created Request completed successfully, resource was created
> Pointer to new resource returned
> 202 Accepted Request accepted, processing not completed Workload
> starting but not yet active
> 301 Moved Permanently Resource has been assigned a new permanent
> URI Workload migrated to another installation
> 302 Found Resource resides temporarily under a different URI Alias
> pointing to UUID can be updated
> 304 Not Modified Conditional GET on resource that is unchanged
> Client already has the latest version of the resource
> 400 Bad Request Request could not be understood by the server due to
> malformed syntax Client sent a representation that was unable to be
> understood
> 401 Unauthorized The request requires user authentication Client
> must retry with authentication
> 402 Payment Required The server has refused to fulfill the request
> Credit limit exceeded
> 403 Forbidden The server understood the request, but is refusing to
> fulfill it Attempt to access resource without permission
> 404 Not Found The server has not found the resource Feed or entry
> unknown
> 405 Method Not Allowed The method specified is not allowed for the
> resource Attempt to delete an immutable resource
> 406 Not Acceptable The resource is not capable of requested content
> characteristics Unsupported output format requested
> 409 Conflict Request is in conflict with the current state of the
> resource Resource updated by a third-party in the interim
> 410 Gone Resource is gone, no forwarding address Resource was deleted
> 500 Internal Server Error Server encountered an unexpected
> condition An unknown failure has occurred (e.g. out of memory)
> 501 Not Implemented Functionality required to fulfill request is not
> implemented A missing extension was called
> 502 Bad Gateway An invalid response was received from an upstream
> server The gateway received a malformed response from a node
> 503 Service Unavailable Server is temporarily unable to handle the
> request Server may be overloaded or down for maintenance
> 504 Gateway Timeout No response was received from an upstream
> server The gateway did not receive a response within the timeout period
>
>
>
> ------------------------------------------------------------------------
>
> _______________________________________________
> occi-wg mailing list
> occi-wg at ogf.org
> http://www.ogf.org/mailman/listinfo/occi-wg
More information about the occi-wg
mailing list