[occi-wg] [occi] 2 new revisions pushed by s... at samj.net on 2010-02-21 15:33 GMT

Sam Johnston samj at samj.net
Sun Feb 21 09:46:51 CST 2010


Apologies for spamming the list with a one-word
change<http://code.google.com/p/occi/source/diff?spec=svn1df85e1a498cd9cd626ed6685013038104aa5c9a&r=1df85e1a498cd9cd626ed6685013038104aa5c9a&format=side&path=/docs/occi-book.xml>-
didn't realise we'd started posting commits. I've turned off the "
*Include diffs of changed files in the email notification*" as when you
modify the DocBook XML the build system will regenerate one or more HTML and
PDF files... it's best if you just follow the links to the revisions and
inspect the changes to the XML files using the Google Code web interface.

Cheers,

Sam

On Sun, Feb 21, 2010 at 4:34 PM, <occi at googlecode.com> wrote:

> 2 new revisions:
>
> Revision: 1df85e1a49
> Author: Sam Johnston <samj at samj.net>
> Date: Sun Feb 21 07:32:22 2010
> Log: Updated affiliation, regenerated.
> http://code.google.com/p/occi/source/detail?r=1df85e1a49
>
> Revision: 235906a914
> Author: Sam Johnston <samj at samj.net>
> Date: Sun Feb 21 07:33:00 2010
> Log: merged
> http://code.google.com/p/occi/source/detail?r=235906a914
>
>
> ==============================================================================
> Revision: 1df85e1a49
> Author: Sam Johnston <samj at samj.net>
> Date: Sun Feb 21 07:32:22 2010
> Log: Updated affiliation, regenerated.
> http://code.google.com/p/occi/source/detail?r=1df85e1a49
>
> Modified:
>  /docs/occi-application.html
>  /docs/occi-application.pdf
>  /docs/occi-book.html
>  /docs/occi-book.pdf
>  /docs/occi-book.xml
>
> =======================================
> --- /docs/occi-application.html Sat Oct 10 07:36:28 2009
> +++ /docs/occi-application.html Sun Feb 21 07:32:22 2010
> @@ -1,7 +1,7 @@
>  <?xml version="1.0" encoding="UTF-8"?>
>  <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML
> 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
> -<html xmlns="http://www.w3.org/1999/xhtml"><head><title>OCCI
> Application</title><meta name="generator" content="DocBook XSL-NS
> Stylesheets V1.75.2"/></head><body><div class="article" title="OCCI
> Application"><div class="titlepage"><div><div><h2 class="title"><a
> id="id36063441"/>OCCI Application</h2></div></div><hr/></div><p>The OCCI
> Application specification defines kinds and extensions
> -  relating to management of cloud application services (SaaS).</p><div
> class="table"><a id="id36063454"/><p class="title"><b>Table 1. Common
> Attributes</b></p><div class="table-contents"><table summary="Common
> Attributes" border="1"><colgroup><col style="text-align:
> center"/><col/><col/></colgroup><thead><tr><th style="text-align:
>
> left">Attribute</th><th>Type</th><th>Description</th></tr></thead><tbody><tr><td
> style="text-align: left"><code
> class="computeroutput">occi.application.version</code></td><td>Float (e.g.
> 1.0)</td><td>Version of the OCCI Application
> specification</td></tr></tbody></table></div></div><br
> class="table-break"/><div class="section" title="Kinds"><div
> class="titlepage"><div><div><h2 class="title"><a
> id="id36063507"/>Kinds</h2></div></div></div><p>Cloud application services
> can be modeled using the following
> -    primary kinds:</p><div class="table"><a id="id36063516"/><p
> class="title"><b>Table 2. Kinds</b></p><div class="table-contents"><table
> summary="Kinds" border="1"><colgroup><col style="text-align:
> center"/><col/><col/></colgroup><thead><tr><th style="text-align:
> left">Kind</th><th>URI</th><th>Description</th></tr></thead><tbody><tr><td
> style="text-align: left"><code
> class="computeroutput">contact</code></td><td><code
> class="uri">http://purl.org/occi/kind/contact</code></td><td>A contact; a
> person, a venue such as a club or a
> -            restaurant, or an organisation.</td></tr><tr><td
> style="text-align: left"><code
> class="computeroutput">document</code></td><td><code
> class="uri">http://purl.org/occi/kind/document</code></td><td>A word
> processing document</td></tr><tr><td style="text-align: left"><code
> class="computeroutput">event</code></td><td><code
> class="uri">http://purl.org/occi/kind/event</code></td><td>A calendar
> event</td></tr><tr><td style="text-align: left"><code
> class="computeroutput">presentation</code></td><td><code
> class="uri">http://purl.org/occi/kind/presentation</code></td><td>A visual
> representation</td></tr><tr><td style="text-align: left"><code
> class="computeroutput">spreadsheet</code></td><td><code
> class="uri">http://purl.org/occi/kind/spreadsheet</code></td><td>A
> worksheet</td></tr></tbody></table></div></div><br
> class="table-break"/><div class="section" title="Contact"><div
> class="titlepage"><div><div><h3 class="title"><a
> id="id36063640"/>Contact</h3></div></div></div><p>A contact is a person,
> venue, organisation, etc.</p></div></div><div class="section"
> title="Extensions"><div class="titlepage"><div><div><h2 class="title"><a
> id="id36063651"/>Extensions</h2></div></div></div><p>Various extensions
> provide for more advanced management
> -    functionality such as billing, monitoring and reporting.</p></div><div
> class="bibliography" title="Bibliography"><div
> class="titlepage"><div><div><h2 class="title"><a
> id="id36063662"/>Bibliography</h2></div></div></div><div
> class="bibliomixed"><a id="id36063664"/><p class="bibliomixed">Normative
> References</p></div><div class="bibliomixed"><a id="id36063667"/><p
> class="bibliomixed">Informative References</p></div><div
> class="biblioentry" title="Google Data Protocol (GData)"><a
> id="application-gdata"/><p>[GData] <span class="title"><i>Google Data
> Protocol (GData)</i>. </span><span class="address"><code class="uri"><a
> class="uri" href="http://en.wikipedia.org/wiki/List_of_device_bandwidths"
> target="">http://code.google.com/apis/gdata/</a></code>. </span><span
> class="author">. </span></p></div></div></div></body></html>
> +<html xmlns="http://www.w3.org/1999/xhtml"><head><title>OCCI
> Application</title><meta name="generator" content="DocBook XSL-NS
> Stylesheets V1.75.2"/></head><body><div class="article" title="OCCI
> Application"><div class="titlepage"><div><div><h2 class="title"><a
> id="id36063440"/>OCCI Application</h2></div></div><hr/></div><p>The OCCI
> Application specification defines kinds and extensions
> +  relating to management of cloud application services (SaaS).</p><div
> class="table"><a id="id36063453"/><p class="title"><b>Table 1. Common
> Attributes</b></p><div class="table-contents"><table summary="Common
> Attributes" border="1"><colgroup><col style="text-align:
> center"/><col/><col/></colgroup><thead><tr><th style="text-align:
>
> left">Attribute</th><th>Type</th><th>Description</th></tr></thead><tbody><tr><td
> style="text-align: left"><code
> class="computeroutput">occi.application.version</code></td><td>Float (e.g.
> 1.0)</td><td>Version of the OCCI Application
> specification</td></tr></tbody></table></div></div><br
> class="table-break"/><div class="section" title="Kinds"><div
> class="titlepage"><div><div><h2 class="title"><a
> id="id36063506"/>Kinds</h2></div></div></div><p>Cloud application services
> can be modeled using the following
> +    primary kinds:</p><div class="table"><a id="id36063515"/><p
> class="title"><b>Table 2. Kinds</b></p><div class="table-contents"><table
> summary="Kinds" border="1"><colgroup><col style="text-align:
> center"/><col/><col/></colgroup><thead><tr><th style="text-align:
> left">Kind</th><th>URI</th><th>Description</th></tr></thead><tbody><tr><td
> style="text-align: left"><code
> class="computeroutput">contact</code></td><td><code
> class="uri">http://purl.org/occi/kind/contact</code></td><td>A contact; a
> person, a venue such as a club or a
> +            restaurant, or an organisation.</td></tr><tr><td
> style="text-align: left"><code
> class="computeroutput">document</code></td><td><code
> class="uri">http://purl.org/occi/kind/document</code></td><td>A word
> processing document</td></tr><tr><td style="text-align: left"><code
> class="computeroutput">event</code></td><td><code
> class="uri">http://purl.org/occi/kind/event</code></td><td>A calendar
> event</td></tr><tr><td style="text-align: left"><code
> class="computeroutput">presentation</code></td><td><code
> class="uri">http://purl.org/occi/kind/presentation</code></td><td>A visual
> representation</td></tr><tr><td style="text-align: left"><code
> class="computeroutput">spreadsheet</code></td><td><code
> class="uri">http://purl.org/occi/kind/spreadsheet</code></td><td>A
> worksheet</td></tr></tbody></table></div></div><br
> class="table-break"/><div class="section" title="Contact"><div
> class="titlepage"><div><div><h3 class="title"><a
> id="id36063638"/>Contact</h3></div></div></div><p>A contact is a person,
> venue, organisation, etc.</p></div></div><div class="section"
> title="Extensions"><div class="titlepage"><div><div><h2 class="title"><a
> id="id36063650"/>Extensions</h2></div></div></div><p>Various extensions
> provide for more advanced management
> +    functionality such as billing, monitoring and reporting.</p></div><div
> class="bibliography" title="Bibliography"><div
> class="titlepage"><div><div><h2 class="title"><a
> id="id36063660"/>Bibliography</h2></div></div></div><div
> class="bibliomixed"><a id="id36063662"/><p class="bibliomixed">Normative
> References</p></div><div class="bibliomixed"><a id="id36063666"/><p
> class="bibliomixed">Informative References</p></div><div
> class="biblioentry" title="Google Data Protocol (GData)"><a
> id="application-gdata"/><p>[GData] <span class="title"><i>Google Data
> Protocol (GData)</i>. </span><span class="address"><code class="uri"><a
> class="uri" href="http://en.wikipedia.org/wiki/List_of_device_bandwidths"
> target="">http://code.google.com/apis/gdata/</a></code>. </span><span
> class="author">. </span></p></div></div></div></body></html>
> =======================================
> --- /docs/occi-application.pdf  Sat Oct 10 07:36:28 2009
> +++ /docs/occi-application.pdf  Sun Feb 21 07:32:22 2010
> Binary file, no diff available.
> =======================================
> --- /docs/occi-book.html        Wed Oct 28 18:16:54 2009
> +++ /docs/occi-book.html        Sun Feb 21 07:32:22 2010
> @@ -1,11 +1,11 @@
>  <?xml version="1.0" encoding="UTF-8"?>
>  <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML
> 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
> -<html xmlns="http://www.w3.org/1999/xhtml"><head><title>OGF OCCI-WG
> Deliverables</title><meta name="generator" content="DocBook XSL-NS
> Stylesheets V1.75.2"/></head><body><div class="book" title="OGF OCCI-WG
> Deliverables"><div class="titlepage"><div><div><h1 class="title"><a
> id="id36063441"/>OGF OCCI-WG Deliverables</h1></div><div><div
> class="author"><h3 class="author"><span class="firstname">Sam</span> <span
> class="surname">Johnston</span></h3><span class="contrib">WG
> Secretary</span> <span class="contrib">Author</span> <div
> class="affiliation"><span class="orgname">Australian Online
> Solutions<br/></span></div></div></div><div><div class="author"><h3
> class="author"><span class="firstname">Thijs</span> <span
> class="surname">Metsch</span></h3><span
> class="contrib">Co-Chair</span> <span class="contrib">Author</span> <div
> class="affiliation"><span class="orgname">Sun
> Microsystems<br/></span></div></div></div><div><div class="author"><h3
> class="author"><span class="firstname">Andrew</span> <span
> class="surname">Edmonds</span></h3><span
> class="contrib">Co-Chair</span> <span class="contrib">Author</span> <div
> class="affiliation"><span
> class="orgname">Intel<br/></span></div></div></div><div><div
> class="author"><h3 class="author"><span class="firstname">Alexis</span>
> <span class="surname">Richardson</span></h3><span
> class="contrib">Co-Chair</span> <div class="affiliation"><span
> class="orgname">Rabbit Technologies<br/></span></div></div></div><div><p
> class="pubdate">July 2009</p></div></div><hr/></div><div class="article"
> title="OCCI Use Cases"><div class="titlepage"><div><div><h2
> class="title"><a id="id36063864"/>OCCI Use
> Cases</h2></div></div><hr/></div><p>The following section describes the Use
> Cases which were gathered
> +<html xmlns="http://www.w3.org/1999/xhtml"><head><title>OGF OCCI-WG
> Deliverables</title><meta name="generator" content="DocBook XSL-NS
> Stylesheets V1.75.2"/></head><body><div class="book" title="OGF OCCI-WG
> Deliverables"><div class="titlepage"><div><div><h1 class="title"><a
> id="id36063440"/>OGF OCCI-WG Deliverables</h1></div><div><div
> class="author"><h3 class="author"><span class="firstname">Sam</span> <span
> class="surname">Johnston</span></h3><span class="contrib">WG
> Secretary</span> <span class="contrib">Author</span> <div
> class="affiliation"><span
> class="orgname">Google<br/></span></div></div></div><div><div
> class="author"><h3 class="author"><span class="firstname">Thijs</span>
> <span class="surname">Metsch</span></h3><span
> class="contrib">Co-Chair</span> <span class="contrib">Author</span> <div
> class="affiliation"><span class="orgname">Sun
> Microsystems<br/></span></div></div></div><div><div class="author"><h3
> class="author"><span class="firstname">Andrew</span> <span
> class="surname">Edmonds</span></h3><span
> class="contrib">Co-Chair</span> <span class="contrib">Author</span> <div
> class="affiliation"><span
> class="orgname">Intel<br/></span></div></div></div><div><div
> class="author"><h3 class="author"><span class="firstname">Alexis</span>
> <span class="surname">Richardson</span></h3><span
> class="contrib">Co-Chair</span> <div class="affiliation"><span
> class="orgname">Rabbit Technologies<br/></span></div></div></div><div><p
> class="pubdate">July 2009</p></div></div><hr/></div><div class="article"
> title="OCCI Use Cases"><div class="titlepage"><div><div><h2
> class="title"><a id="id36063862"/>OCCI Use
> Cases</h2></div></div><hr/></div><p>The following section describes the Use
> Cases which were gathered
>    during the requirements analyses for the OCCI working group. They are
> used
>    to set up the requirements and later on to verify the OCCI
> -  specification.</p><div class="section" title="SLA-aware cloud
> infrastructure using SLA at SOI"><div class="titlepage"><div><div><h2
> class="title"><a id="id36065051"/>SLA-aware cloud infrastructure using
> SLA at SOI</h2></div></div></div><p>There is a need for a standard interface
> for dynamic infrastructure
> +  specification.</p><div class="section" title="SLA-aware cloud
> infrastructure using SLA at SOI"><div class="titlepage"><div><div><h2
> class="title"><a id="id36065047"/>SLA-aware cloud infrastructure using
> SLA at SOI</h2></div></div></div><p>There is a need for a standard interface
> for dynamic infrastructure
>      provisioning. While doing so it must be guaranteed and verified that
> the
> -    infrastructure provisioning uses 'machine-readable' SLAs. <span
> class="citerefentry"><span
> class="refentrytitle">(SLA_SOI)</span></span></p><h3><a
> id="id36065067"/>Functional Requirements</h3><div class="itemizedlist"><ul
> class="itemizedlist"><li class="listitem"><p>VM Description: request format
> important - In this area is where
> +    infrastructure provisioning uses 'machine-readable' SLAs. <sup>[<a
> id="id36065057" href="#ftn.id36065057"
> class="footnote">1</a>]</sup></p><h3><a id="id36065064"/>Functional
> Requirements</h3><div class="itemizedlist"><ul class="itemizedlist"><li
> class="listitem"><p>VM Description: request format important - In this area
> is where
>          there is least coherency amongst providers.</p></li><li
> class="listitem"><p>VM Description: a means to add non-functional
> constraints on
>          functional attributes.</p></li><li class="listitem"><p>VM
> Management: all parameters in the request should be
>          "monitor-able" and verifiable. Full control of resources (VMs)
> @@ -14,20 +14,20 @@
>          defaults of public and private further sub-categorisation could be
>          allowed e.g. tag of web could be assigned to the public network
>          group.</p></li><li class="listitem"><p>Storage Management: simple
> mount points, reuse storage SaaS
> -        offerings</p></li></ul></div><h3><a
> id="id36065121"/>Non-functional Requirements</h3><div
> class="itemizedlist"><ul class="itemizedlist"><li
> class="listitem"><p>Security: Transport and user level (ACLs? oAuth?)
> +        offerings</p></li></ul></div><h3><a
> id="id36065118"/>Non-functional Requirements</h3><div
> class="itemizedlist"><ul class="itemizedlist"><li
> class="listitem"><p>Security: Transport and user level (ACLs? oAuth?)
>          security</p></li><li class="listitem"><p>Quality of Service: Can
> be many - Part of service offering from
>          the infrastructure provider e.g. Security, QoS, geo-location,
>          isolation levels - NFPs are the basic building blocks of
>          differentiating IaaS providers.</p></li><li
> class="listitem"><p>Scheduling Information: When a particular resource is
> to be run.
>          Also in which order should a collection of resources be ran in the
> -        case that one resource is dependent on
> another.</p></li></ul></div></div><div class="section" title="Service
> Manager to control the Life cycle of Services"><div
> class="titlepage"><div><div><h2 class="title"><a id="id36065154"/>Service
> Manager to control the Life cycle of Services</h2></div></div></div><p>This
> Use Case is based in the 'Service Manager' (SM) layer of the
> +        case that one resource is dependent on
> another.</p></li></ul></div></div><div class="section" title="Service
> Manager to control the Life cycle of Services"><div
> class="titlepage"><div><div><h2 class="title"><a id="id36065151"/>Service
> Manager to control the Life cycle of Services</h2></div></div></div><p>This
> Use Case is based in the 'Service Manager' (SM) layer of the
>      RESERVOIR project architecture. 'Service Providers' (SP) willing to
> deploy
>      their service on the Cloud use this layer to control the service life
>      cycle. The SM operates over the Cloud infrastructure automatically as
> the
>      service demands. In a way, the SM maps the service configuration and
> needs
>      to calls to the Cloud infrastructure, so many of the requirements
> imposed
> -    by the SM are due to the flexibility that the SM aims to provide to
> SPs.
> -    (<span class="citerefentry"><span
> class="refentrytitle">RV</span></span>)</p><h3><a
> id="id36065175"/>Functional Requirements</h3><div class="itemizedlist"><ul
> class="itemizedlist"><li class="listitem"><p>Network Management: There
> should be methods for the Allocation
> +    by the SM are due to the flexibility that the SM aims to provide to
> +    SPs.<sup>[<a id="id36065164" href="#ftn.id36065164"
> class="footnote">2</a>]</sup></p><h3><a id="id36065172"/>Functional
> Requirements</h3><div class="itemizedlist"><ul class="itemizedlist"><li
> class="listitem"><p>Network Management: There should be methods for the
> Allocation
>          of private networks, where VMs can be attached to. A special
> network
>          (e.g. 'Public Network') should be available. When some network
>          interface is attached to it, the infrastructure must assign a
> public
> @@ -72,7 +72,7 @@
>          IDs, (UUIDs, URIs, or the like). It is to be determined whether
>          components of VMs (disks, memory...) should have an unique ID too.
> IDs
>          are assigned by the Cloud infrastructure when the corresponding
> -        element is created.</p></li></ul></div><h3><a
> id="id36065349"/>Non-functional Requirements</h3><div
> class="itemizedlist"><ul class="itemizedlist"><li class="listitem"><p>Both
> for hardware configuration and monitoring values there
> +        element is created.</p></li></ul></div><h3><a
> id="id36065346"/>Non-functional Requirements</h3><div
> class="itemizedlist"><ul class="itemizedlist"><li class="listitem"><p>Both
> for hardware configuration and monitoring values there
>          should be a clear, standard way to set which magnitude the value
>          represents. For example, when setting the memory size to '2', it
> must
>          be clear that we refer to GBs and not to MBs. An option would be
> @@ -80,7 +80,7 @@
>          value and the magnitude: value '2' and magnitude 'GB'.</p></li><li
> class="listitem"><p>Protocols: The transport, message format, and state
>          representation should use open and standard protocols, each one
> which
>          strong software support (i.e. libraries and frameworks available
> for
> -        several programming languages).</p></li></ul></div></div><div
> class="section" title="Interoperability across Cloud Infrastructures using
> OpenNebula"><div class="titlepage"><div><div><h2 class="title"><a
> id="id36065377"/>Interoperability across Cloud Infrastructures using
> +        several programming languages).</p></li></ul></div></div><div
> class="section" title="Interoperability across Cloud Infrastructures using
> OpenNebula"><div class="titlepage"><div><div><h2 class="title"><a
> id="id36065373"/>Interoperability across Cloud Infrastructures using
>      OpenNebula</h2></div></div></div><p>OpenNebula is a Virtual
> Infrastructure Engine, being enhanced in the
>      RESERVOIR project, which allows the management of Virtual Machines on
> a
>      pool of physical resources It offers three main functionalities:
> backend
> @@ -93,7 +93,7 @@
>      OpenNebula to manage Virtual Machines from different cloud providers.
>      Currently, there are two set of plugins for OpenNebula to access
> Amazon
>      EC2 and ElasticHosts cloud providers that leverage the use of both
> cloud
> -    providers in a transparent fashion for the end user. (<span
> class="citerefentry"><span
> class="refentrytitle">ONE</span></span>)</p><h3><a
> id="id36065405"/>Functional Requirements</h3><div class="itemizedlist"><ul
> class="itemizedlist"><li class="listitem"><p>VM Description: Virtual
> Machines should be described
> +    providers in a transparent fashion for the end user.<sup>[<a
> id="id36065393" href="#ftn.id36065393"
> class="footnote">3</a>]</sup></p><h3><a id="id36065400"/>Functional
> Requirements</h3><div class="itemizedlist"><ul class="itemizedlist"><li
> class="listitem"><p>VM Description: Virtual Machines should be described
>          consistently across cloud providers using a slim set of
> indispensable
>          attributes, such as:</p><div class="itemizedlist"><ul
> class="itemizedlist"><li class="listitem"><p>Memory: Amount of RAM needed
> by the Virtual Machine</p></li><li class="listitem"><p>CPU: Number of CPUs
> needed by the Virtual Machine (this
>              needs to be normalized)</p></li><li class="listitem"><p>Disk:
> Disks that will conform the basic filesystem and
> @@ -111,61 +111,61 @@
>          fundamental to virtual machine management to avoid the need to
>          reinstall software for each cloud provider. The upload process
> should
>          return an identifier to be used in the Virtual Machine
> -        Description.</p></li></ul></div><h3><a
> id="id36065615"/>Non-functional Requirements</h3><div
> class="itemizedlist"><ul class="itemizedlist"><li
> class="listitem"><p>Security: Security should be handled using X509
> certificates for
> +        Description.</p></li></ul></div><h3><a
> id="id36065610"/>Non-functional Requirements</h3><div
> class="itemizedlist"><ul class="itemizedlist"><li
> class="listitem"><p>Security: Security should be handled using X509
> certificates for
>          authentication. Also, authorization can be based on said
> certificates
>          and ACL lists.</p></li><li class="listitem"><p>Quality of Service:
> When used in conjunction with Haizea,
>          OpenNebula provides advanced reservation functionality. Cloud
>          providers API should provide similar capabilities to ensure proper
> -        QoS.</p></li></ul></div></div><div class="section" title="AJAX web
> front-end directly calling API"><div class="titlepage"><div><div><h2
> class="title"><a id="id36065640"/>AJAX web front-end directly calling
> API</h2></div></div></div><p>This Use Case describes the ability to create
> web front-ends for
> +        QoS.</p></li></ul></div></div><div class="section" title="AJAX web
> front-end directly calling API"><div class="titlepage"><div><div><h2
> class="title"><a id="id36065635"/>AJAX web front-end directly calling
> API</h2></div></div></div><p>This Use Case describes the ability to create
> web front-ends for
>      Clouds. A cloud provider implements their customer web front-end as an
>      entirely client-side AJAX application calling the OCCI API
> -    directly.</p><h3><a id="id36065651"/>Functional Requirements</h3><div
> class="itemizedlist"><ul class="itemizedlist"><li
> class="listitem"><p>Completeness: API must be contain complete set of calls
> to
> +    directly.</p><h3><a id="id36065646"/>Functional Requirements</h3><div
> class="itemizedlist"><ul class="itemizedlist"><li
> class="listitem"><p>Completeness: API must be contain complete set of calls
> to
>          completely specify and control cloud (but this is likely only
> ~15-20
>          verbs on ~3-4 nouns!)</p></li><li
> class="listitem"><p>Responsiveness: Calls must return swiftly. In
> particular, we
>          should provide a simple and quick call to poll the _list_ of
> servers,
>          drives, etc. that exist without listing all of their properties,
> since
>          this is computationally much cheaper for the cloud to return, and
> will
>          need to be regularly polled to catch any servers, etc. that are
> -        created outside of the interface.</p></li></ul></div><h3><a
> id="id36065677"/>Non-functional Requirements</h3><div
> class="itemizedlist"><ul class="itemizedlist"><li
> class="listitem"><p>Syntax: A simple JSON syntax for the API will make the
> AJAX
> -        interface much simpler to implement</p></li></ul></div></div><div
> class="section" title="Single technical integration to support multiple
> service providers"><div class="titlepage"><div><div><h2 class="title"><a
> id="id36065693"/>Single technical integration to support multiple service
> +        created outside of the interface.</p></li></ul></div><h3><a
> id="id36065672"/>Non-functional Requirements</h3><div
> class="itemizedlist"><ul class="itemizedlist"><li
> class="listitem"><p>Syntax: A simple JSON syntax for the API will make the
> AJAX
> +        interface much simpler to implement</p></li></ul></div></div><div
> class="section" title="Single technical integration to support multiple
> service providers"><div class="titlepage"><div><div><h2 class="title"><a
> id="id36065688"/>Single technical integration to support multiple service
>      providers</h2></div></div></div><p>Today, each cloud provider
> (ElasticHosts, GoGrid, Amazon, etc.)
>      integrates independently with every other player in the cloud
> ecosystem
>      (CohesiveFT, RightScale, etc), producing O(n^2) separate technical
>      integrations. In the future, if all cloud providers and cloud
> ecosystem
>      partners use a single standard API, then we have O(n) technical
>      integrations, and all potential partnerships can immediately
> -    interoperate.</p><h3><a id="id36065706"/>Non-functional
> Requirements</h3><div class="itemizedlist"><ul class="itemizedlist"><li
> class="listitem"><p>Uptake: Standardized IaaS API needs strong uptake in by
> both
> -        cloud providers and cloud ecosystem.</p></li></ul></div></div><div
> class="section" title="Wrapping EC2 in OCCI"><div
> class="titlepage"><div><div><h2 class="title"><a id="id36065722"/>Wrapping
> EC2 in OCCI</h2></div></div></div><p>At the time of this writing, Amazon
> EC2 is popular cloud API for
> +    interoperate.</p><h3><a id="id36065701"/>Non-functional
> Requirements</h3><div class="itemizedlist"><ul class="itemizedlist"><li
> class="listitem"><p>Uptake: Standardized IaaS API needs strong uptake in by
> both
> +        cloud providers and cloud ecosystem.</p></li></ul></div></div><div
> class="section" title="Wrapping EC2 in OCCI"><div
> class="titlepage"><div><div><h2 class="title"><a id="id36065717"/>Wrapping
> EC2 in OCCI</h2></div></div></div><p>At the time of this writing, Amazon
> EC2 is popular cloud API for
>      IaaS. Cloud providers implementing EC2 as well as other proprietary
> and
>      open cloud APIs may not implement OCCI. To help ensure that the OCCI
> API
>      would be capable of interfacing to EC2 though gateways, minimizing the
> -    impact to provider operations. </p><h3><a id="id36065734"/>Functional
> Requirements</h3><div class="itemizedlist"><ul class="itemizedlist"><li
> class="listitem"><p>Semantics: Must include the ability to fully describe
> core EC2
> -        objects and operations</p></li></ul></div><h3><a
> id="id36065749"/>Non-functional Requirements</h3><div
> class="itemizedlist"><ul class="itemizedlist"><li class="listitem"><p>A
> gateway to support the integration of OCCI and
> EC2</p></li></ul></div></div><div class="section" title="Automated Business
> Continuity and Disaster Recovery"><div class="titlepage"><div><div><h2
> class="title"><a id="id36065764"/>Automated Business Continuity and
> Disaster Recovery</h2></div></div></div><p>Maintain a up-to-date remote
> shadows of physical and/or virtual
> +    impact to provider operations.</p><h3><a id="id36065729"/>Functional
> Requirements</h3><div class="itemizedlist"><ul class="itemizedlist"><li
> class="listitem"><p>Semantics: Must include the ability to fully describe
> core EC2
> +        objects and operations</p></li></ul></div><h3><a
> id="id36065744"/>Non-functional Requirements</h3><div
> class="itemizedlist"><ul class="itemizedlist"><li class="listitem"><p>A
> gateway to support the integration of OCCI and
> EC2</p></li></ul></div></div><div class="section" title="Automated Business
> Continuity and Disaster Recovery"><div class="titlepage"><div><div><h2
> class="title"><a id="id36065759"/>Automated Business Continuity and
> Disaster Recovery</h2></div></div></div><p>Maintain a up-to-date remote
> shadows of physical and/or virtual
>      machines, such that in the event of a disaster it is possible to start
> and
> -    switch to the remote machines.</p><h3><a id="id36065775"/>Functional
> Requirements</h3><div class="itemizedlist"><ul class="itemizedlist"><li
> class="listitem"><p>VM Description: Metadata mapping to legacy
> systems</p></li><li class="listitem"><p>VM Management: Automated management
> in the event of a disaster
> +    switch to the remote machines.</p><h3><a id="id36065770"/>Functional
> Requirements</h3><div class="itemizedlist"><ul class="itemizedlist"><li
> class="listitem"><p>VM Description: Metadata mapping to legacy
> systems</p></li><li class="listitem"><p>VM Management: Automated management
> in the event of a disaster
>          (e.g. startup, IP changes).</p></li><li
> class="listitem"><p>Network Management: Runtime alteration of
> IPs</p></li><li class="listitem"><p>Image Management: Advanced, rsync style
> updates to synchronise
>          machines with physical equivalents (e.g. rsync block devices to
> remote
> -        raw disk files).</p></li></ul></div><h3><a
> id="id36065813"/>Non-functional Requirements</h3><div
> class="itemizedlist"><ul class="itemizedlist"><li
> class="listitem"><p>Quality of Service: Reservation of capacity sufficient
> for fail
> -        over</p></li></ul></div></div><div class="section" title="Simple
> scripting of cloud from Unix shell"><div class="titlepage"><div><div><h2
> class="title"><a id="id36065829"/>Simple scripting of cloud from Unix
> shell</h2></div></div></div><p>An end user wishes to script a simple task
> (such as starting a
> +        raw disk files).</p></li></ul></div><h3><a
> id="id36065808"/>Non-functional Requirements</h3><div
> class="itemizedlist"><ul class="itemizedlist"><li
> class="listitem"><p>Quality of Service: Reservation of capacity sufficient
> for fail
> +        over</p></li></ul></div></div><div class="section" title="Simple
> scripting of cloud from Unix shell"><div class="titlepage"><div><div><h2
> class="title"><a id="id36065824"/>Simple scripting of cloud from Unix
> shell</h2></div></div></div><p>An end user wishes to script a simple task
> (such as starting a
>      server at midnight every night and shutting it down an hour later,
>      automating fail over, reporting, etc.). They are using a typical
>      Unix/Linux setup, so would like to write a simple cron job which
> carries
> -    this out.</p><h3><a id="id36065840"/>Non-functional
> Requirements</h3><div class="itemizedlist"><ul class="itemizedlist"><li
> class="listitem"><p>Syntax: This should be as simple as possible to place
> minimal
> +    this out.</p><h3><a id="id36065836"/>Non-functional
> Requirements</h3><div class="itemizedlist"><ul class="itemizedlist"><li
> class="listitem"><p>Syntax: This should be as simple as possible to place
> minimal
>          barriers to entry on the user. The user should not need any
>          development tools or libraries. They should be able to write 1-2
> lines
>          of shell script, posting a simple &lt;5 lines of command data
> using
> -        curl, wget, etc.</p></li></ul></div></div><div class="section"
> title="Typical web hosting cluster"><div class="titlepage"><div><div><h2
> class="title"><a id="id36065858"/>Typical web hosting
> cluster</h2></div></div></div><p>An end-user runs a typical web hosting
> cluster on a cloud, with: n
> +        curl, wget, etc.</p></li></ul></div></div><div class="section"
> title="Typical web hosting cluster"><div class="titlepage"><div><div><h2
> class="title"><a id="id36065853"/>Typical web hosting
> cluster</h2></div></div></div><p>An end-user runs a typical web hosting
> cluster on a cloud, with: n
>      database servers, m front-end web server (bursting to x under load)
> and a
>      load balancer (either a specialized virtual machine or provided by the
> -    cloud like GoGrid).</p><h3><a id="id36065870"/>Functional
> Requirements</h3><div class="itemizedlist"><ul class="itemizedlist"><li
> class="listitem"><p>Completeness: The API should be able to fully express
> this
> +    cloud like GoGrid).</p><h3><a id="id36065865"/>Functional
> Requirements</h3><div class="itemizedlist"><ul class="itemizedlist"><li
> class="listitem"><p>Completeness: The API should be able to fully express
> this
>          cluster, which will require at least: (n+m+x) virtual machines,
>          storage for each virtual machine, two networks (a private one
>          connecting the machines, and the public Internet also connected to
> the
>          load balancer), a fixed static IP for the website on the public
> -        Internet, possible specification of the load balancer
> itself.</p></li></ul></div></div><div class="section" title="Manage cloud
> resources from a centralized dashboard"><div
> class="titlepage"><div><div><h2 class="title"><a id="id36065888"/>Manage
> cloud resources from a centralized dashboard</h2></div></div></div><p>An
> end user wishes to view and control all of his cloud-based
> +        Internet, possible specification of the load balancer
> itself.</p></li></ul></div></div><div class="section" title="Manage cloud
> resources from a centralized dashboard"><div
> class="titlepage"><div><div><h2 class="title"><a id="id36065883"/>Manage
> cloud resources from a centralized dashboard</h2></div></div></div><p>An
> end user wishes to view and control all of his cloud-based
>      resources in a lightweight (perhaps AJAX-based) console, perhaps the
> same
>      web front-end referred to in this Use Case: AJAX web front-end
> directly
> -    calling API</p><h3><a id="id36065900"/>Functional
> Requirements</h3><div class="itemizedlist"><ul class="itemizedlist"><li
> class="listitem"><p>Completeness: Every resource provided by the cloud is
> +    calling API</p><h3><a id="id36065895"/>Functional
> Requirements</h3><div class="itemizedlist"><ul class="itemizedlist"><li
> class="listitem"><p>Completeness: Every resource provided by the cloud is
>          discoverable by the API, and every action that can be performed on
> all
>          these resources is also available via the API, together with
> actuators
>          to actually perform those actions, and all the attributes of the
> @@ -175,18 +175,17 @@
>          this is computationally much cheaper for the cloud to return, and
> will
>          need to be regularly polled to catch any servers, etc. that are
>          created outside of the interface. (text copied from AJAX web
> front-end
> -        directly calling API)</p></li><li
> class="listitem"><p>Categorizability: (there's gotta be a better word...)
> The client
> -        must be able to identify what type each resource is in order to
> -        display like-typed resources together and in order to provide
> separate
> -        UI views that might be specialized for certain resource types. For
> -        example, the client must be able to differentiate between a
> compute
> -        resource that does not represent an actual CPU (perhaps this is a
> -        compute template) and between a compute resource that actually
> -        represents a running CPU. The interface for actually-running CPUs
> -        might display the current IP address of the instance and allow you
> to
> -        SSH into the instance, while a different tab in the interface
> might
> -        display all the compute templates and allow you to instantiate
> -        instances from them.</p></li><li class="listitem"><p>Taggability:
> Every resource discoverable by the API must be able
> +        directly calling API)</p></li><li
> class="listitem"><p>Categorizability: The client must be able to identify
> what type
> +        each resource is in order to display like-typed resources together
> and
> +        in order to provide separate UI views that might be specialized
> for
> +        certain resource types. For example, the client must be able to
> +        differentiate between a compute resource that does not represent
> an
> +        actual CPU (perhaps this is a compute template) and between a
> compute
> +        resource that actually represents a running CPU. The interface for
> +        actually-running CPUs might display the current IP address of the
> +        instance and allow you to SSH into the instance, while a different
> tab
> +        in the interface might display all the compute templates and allow
> you
> +        to instantiate instances from them.</p></li><li
> class="listitem"><p>Taggability: Every resource discoverable by the API
> must be able
>          to be tagged by the user. This supports the oft-occurring
> situation
>          where resources, though they are identified by the
>          implementation-specific identifier, are easily identified using
> @@ -197,43 +196,43 @@
>          allow an optional filter that can specify a category or tag upon
> which
>          to filter the results. This allows one to further limit their view
> to,
>          for example, resources tagged "productionEnvironment", or
> resources of
> -        the category "storage".</p></li></ul></div><h3><a
> id="id36065962"/>Non-functional Requirements</h3><div
> class="itemizedlist"><ul class="itemizedlist"><li
> class="listitem"><p>Usability: This should be a user interface with
> context-menus
> +        the category "storage".</p></li></ul></div><h3><a
> id="id36065957"/>Non-functional Requirements</h3><div
> class="itemizedlist"><ul class="itemizedlist"><li
> class="listitem"><p>Usability: This should be a user interface with
> context-menus
>          and context-aware links that allow the user to easily see what
> actions
> -        can be performed for each resource.</p></li></ul></div></div><div
> class="section" title="Compute Cloud"><div class="titlepage"><div><div><h2
> class="title"><a id="id36065979"/>Compute Cloud</h2></div></div></div><p>A
> cloud provider implements a RESTful API for provisioning,
> -    executing, and monitoring of tasks.</p><h3><a
> id="id36065989"/>Functional Requirements</h3><div class="itemizedlist"><ul
> class="itemizedlist"><li class="listitem"><p>Secure: API must be secured to
> ensure that only authorized
> +        can be performed for each resource.</p></li></ul></div></div><div
> class="section" title="Compute Cloud"><div class="titlepage"><div><div><h2
> class="title"><a id="id36065973"/>Compute Cloud</h2></div></div></div><p>A
> cloud provider implements a RESTful API for provisioning,
> +    executing, and monitoring of tasks.</p><h3><a
> id="id36065983"/>Functional Requirements</h3><div class="itemizedlist"><ul
> class="itemizedlist"><li class="listitem"><p>Secure: API must be secured to
> ensure that only authorized
>          identities are permitted to use the API.</p></li><li
> class="listitem"><p>Resource: An endpoint must be created for external
> monitoring,
>          status, and auditing of the task. This endpoint would be
> responsive to
>          RESTful calls supporting AJAX and other clients.</p></li><li
> class="listitem"><p>Scripted: The target system needs to understand and
> process
>          directives which would be provided with the task. These directives
>          would include the ability to pull binaries or data onto the
> system,
> -        run executables, and status the system
> resources.</p></li></ul></div><h3><a id="id36066021"/>Non-functional
> Requirements</h3><div class="itemizedlist"><ul class="itemizedlist"><li
> class="listitem"><p>Single Compute Method: The resultant service should be
> the same
> +        run executables, and status the system
> resources.</p></li></ul></div><h3><a id="id36066016"/>Non-functional
> Requirements</h3><div class="itemizedlist"><ul class="itemizedlist"><li
> class="listitem"><p>Single Compute Method: The resultant service should be
> the same
>          service that can be used for many other purposes. It could be used
> for
>          monitoring of system health, system life-cycle management, system
>          patching, and configuration changes. If this was the only service
> on
>          the system initially, it could then be used to build up the other
> -        services in a plug-in manner.</p></li></ul></div></div><div
> class="section" title="Multiple Allocation"><div
> class="titlepage"><div><div><h2 class="title"><a id="id36066040"/>Multiple
> Allocation</h2></div></div></div><p>Allocate a whole cluster with one
> call.</p><h3><a id="id36066049"/>Functional Requirements</h3><div
> class="itemizedlist"><ul class="itemizedlist"><li
> class="listitem"><p>Definition of groups: There should be a way to define
> groups of
> +        services in a plug-in manner.</p></li></ul></div></div><div
> class="section" title="Multiple Allocation"><div
> class="titlepage"><div><div><h2 class="title"><a id="id36066034"/>Multiple
> Allocation</h2></div></div></div><p>Allocate a whole cluster with one
> call.</p><h3><a id="id36066044"/>Functional Requirements</h3><div
> class="itemizedlist"><ul class="itemizedlist"><li
> class="listitem"><p>Definition of groups: There should be a way to define
> groups of
>          computers. In the example of a cluster, there would be two groups:
> The
>          Headnode and a couple of Workernodes.</p></li><li
> class="listitem"><p>Information: For configuration of the members of the
> defined
>          groups, there should be way (maybe a URL) to find out about all
> groups
>          and their basic configurations. In the example, the Headnode would
>          want to know IPs or Hostnames of all Workernodes. The workernodes
> will
>          need to know this, as well _and_ they need to know, that the
> headnode
> -        is in a different group.</p></li></ul></div></div><div
> class="section" title="Cloud Consumer Discovery of Cloud Provider's VM
> Input and Output Format Support"><div class="titlepage"><div><div><h2
> class="title"><a id="id36066076"/>Cloud Consumer Discovery of Cloud
> Provider's VM Input and Output
> +        is in a different group.</p></li></ul></div></div><div
> class="section" title="Cloud Consumer Discovery of Cloud Provider's VM
> Input and Output Format Support"><div class="titlepage"><div><div><h2
> class="title"><a id="id36066071"/>Cloud Consumer Discovery of Cloud
> Provider's VM Input and Output
>      Format Support</h2></div></div></div><p>A cloud consumer would like to
> discover the VM input and output
> -    formats accepted and delivered by the cloud provider.</p><h3><a
> id="id36066087"/>Functional Requirements</h3><div class="itemizedlist"><ul
> class="itemizedlist"><li class="listitem"><p>The provider supplies an API
> which is availed over unsecured
> +    formats accepted and delivered by the cloud provider.</p><h3><a
> id="id36066082"/>Functional Requirements</h3><div class="itemizedlist"><ul
> class="itemizedlist"><li class="listitem"><p>The provider supplies an API
> which is availed over unsecured
>          network connections.</p></li><li class="listitem"><p>The provider
> supplies an API which is availed over secured
>          network connections.</p></li><li class="listitem"><p>The provider
> supplied API is availed for all consumer
>          authentication and authorization levels.</p></li><li
> class="listitem"><p>The provider supplied API identifies the supported VM
> input
>          formats API uniquely and commonly across all
> providers.</p></li><li class="listitem"><p>The provider supplied API
> identifies the supported VM output
>          formats API uniquely and commonly across all
> providers.</p></li><li class="listitem"><p>The provider supplied API
> identifies the supported VM formats
> -        uniquely and commonly across all providers.</p></li><li
> class="listitem"><p>The provider API identifies mutliple supported VM input
> formats
> +        uniquely and commonly across all providers.</p></li><li
> class="listitem"><p>The provider API identifies multiple supported VM input
> formats
>          as a list uniquely and commonly across all providers</p></li><li
> class="listitem"><p>The provider API identifier is unique and and
> consistent across
>          all API representations.</p></li><li class="listitem"><p>The
> provider API VM input and output format identifiers are
>          unique and and consistent across all providers.</p></li><li
> class="listitem"><p>The reported VM input and output formats are not
> required to be
> -        symetrical and equal and in consistent
> order.</p></li></ul></div></div><div class="section" title="Cloud Consumer
> Discovery of Cloud Provider's Dataset Input and Output Format Support"><div
> class="titlepage"><div><div><h2 class="title"><a id="id36066173"/>Cloud
> Consumer Discovery of Cloud Provider's Dataset Input and
> +        symetrical and equal and in consistent
> order.</p></li></ul></div></div><div class="section" title="Cloud Consumer
> Discovery of Cloud Provider's Dataset Input and Output Format Support"><div
> class="titlepage"><div><div><h2 class="title"><a id="id36066168"/>Cloud
> Consumer Discovery of Cloud Provider's Dataset Input and
>      Output Format Support</h2></div></div></div><p>A cloud consumer would
> like to discover the Dataset input and output
>      formats accepted and delivered by the cloud
> -    provider.</p><h3><a id="id36066183"/>Functional Requirements</h3><div
> class="itemizedlist"><ul class="itemizedlist"><li class="listitem"><p>The
> provider supplies an API which is availed over unsecured
> +    provider.</p><h3><a id="id36066178"/>Functional Requirements</h3><div
> class="itemizedlist"><ul class="itemizedlist"><li class="listitem"><p>The
> provider supplies an API which is availed over unsecured
>            network connections.</p></li><li class="listitem"><p>The
> provider supplies an API which is availed over secured
>            network connections.</p></li><li class="listitem"><p>The
> provider supplied API is availed for all consumer
>            authentication and authorization levels.</p></li><li
> class="listitem"><p>The provider supplied API identifies the supported
> Dataset
> @@ -244,8 +243,8 @@
>            as a list uniquely and commonly across all providers</p></li><li
> class="listitem"><p>The provider API identifier is unique and and
> consistent
>            across all API representations.</p></li><li
> class="listitem"><p>The provider API Dataset input and output format
> identifiers
>            are unique and and consistent across all providers.</p></li><li
> class="listitem"><p>The reported Dataset input and output formats are not
> required
> -          to be symetrical and equal and in consistent
> order.</p></li></ul></div></div></div><div class="article" title="OCCI
> Requirements"><div class="titlepage"><div><div><h2 class="title"><a
> id="id36063880"/>OCCI Requirements</h2></div></div><hr/></div><div
> class="section" title="Functional Requirements"><div
> class="titlepage"><div><div><h2 class="title"><a
> id="id36066814"/>Functional Requirements</h2></div></div></div><p>This
> section deals with the funtional requirements. The requirments
> -    have been split up in tables and prioritized.</p><div class="table"><a
> id="id36066824"/><p class="title"><b>Table 1. Functional requirements on VM
> description</b></p><div class="table-contents"><table summary="Functional
> requirements on VM description"
> border="1"><colgroup><col/><col/><col/><col/></colgroup><thead><tr><th
> style="text-align: center">ID</th><th style="text-align:
> center">Description</th><th style="text-align: center">Usecases</th><th
> style="text-align:
> center">Priority</th></tr></thead><tbody><tr><td>A.1.1</td><td>Attributes
> to define memory, CPU, disk and network
> +          to be symetrical and equal and in consistent
> order.</p></li></ul></div></div><div class="footnotes"><br/><hr/><div
> class="footnote"><p><sup>[<a id="ftn.id36065057" href="#id36065057"
> class="para">1</a>] </sup>SLA at SOI project website -
> http://sla-at-soi.eu</p></div><div class="footnote"><p><sup>[<a
> id="ftn.id36065164" href="#id36065164" class="para">2</a>] </sup>RESERVOIR
> project website - http://www.reservoir-fp7.eu</p></div><div
> class="footnote"><p><sup>[<a id="ftn.id36065393" href="#id36065393"
> class="para">3</a>] </sup>OpenNebula website -
> http://www.opennebula.org</p></div></div></div><div class="article"
> title="OCCI Requirements"><div class="titlepage"><div><div><h2
> class="title"><a id="id36063879"/>OCCI
> Requirements</h2></div></div><hr/></div><div class="section"
> title="Functional Requirements"><div class="titlepage"><div><div><h2
> class="title"><a id="id36066810"/>Functional
> Requirements</h2></div></div></div><p>This section deals with the funtional
> requirements. The requirements
> +    have been split up in tables and prioritized.</p><div class="table"><a
> id="id36066820"/><p class="title"><b>Table 1. Functional requirements on VM
> description</b></p><div class="table-contents"><table summary="Functional
> requirements on VM description"
> border="1"><colgroup><col/><col/><col/><col/></colgroup><thead><tr><th
> style="text-align: center">ID</th><th style="text-align:
> center">Description</th><th style="text-align: center">Usecases</th><th
> style="text-align:
> center">Priority</th></tr></thead><tbody><tr><td>A.1.1</td><td>Attributes
> to define memory, CPU, disk and network
>              requirements should be available.</td><td>2.2, 2.3,
> 2.6</td><td>High</td></tr><tr><td>A.1.2.</td><td>Attributes to define
> placement constraints, such as
>              geographical location must be
> supported</td><td>2.2</td><td>Medium</td></tr><tr><td>A.1.3.</td><td>A
> attributes should demonstrate if migration is supported
>              by the
>
> infrastructure</td><td>2.2</td><td>Medium</td></tr><tr><td>A.1.4.</td><td>The
> API should be able to fully express a cluster (e.g. 5
> @@ -257,7 +256,7 @@
>              provisioned resources to be execute sometime in the future
> from
>              the original
> request</td><td>2.1</td><td>Medium</td></tr><tr><td>A.1.7.</td><td>Common
> operating systems should be
> supported</td><td>-</td><td>High</td></tr><tr><td>A.1.8.</td><td>Resources
> should be grouped according to provider
>
> policies</td><td>-</td><td>High</td></tr><tr><td>A.1.9.</td><td>Then
> requesting new resource(s) the request must be fully
> -
>
> complete/describing</td><td>-</td><td>High</td></tr></tbody></table></div></div><br
> class="table-break"/><div class="table"><a id="id36067066"/><p
> class="title"><b>Table 2. Functional requirements on VM
> management</b></p><div class="table-contents"><table summary="Functional
> requirements on VM management"
> border="1"><colgroup><col/><col/><col/><col/></colgroup><thead><tr><th
> style="text-align: center">ID</th><th style="text-align:
> center">Description</th><th style="text-align: center">Usecases</th><th
> style="text-align:
> center">Priority</th></tr></thead><tbody><tr><td>A.2.1.</td><td>Methods to
> start, stop, suspend and resume VMs must be
> +
>
> complete/describing</td><td>-</td><td>High</td></tr></tbody></table></div></div><br
> class="table-break"/><div class="table"><a id="id36067062"/><p
> class="title"><b>Table 2. Functional requirements on VM
> management</b></p><div class="table-contents"><table summary="Functional
> requirements on VM management"
> border="1"><colgroup><col/><col/><col/><col/></colgroup><thead><tr><th
> style="text-align: center">ID</th><th style="text-align:
> center">Description</th><th style="text-align: center">Usecases</th><th
> style="text-align:
> center">Priority</th></tr></thead><tbody><tr><td>A.2.1.</td><td>Methods to
> start, stop, suspend and resume VMs must be
>              available</td><td>2.1, 2.2, 2.3, 2.5, 2.11,
> 2.10</td><td>High</td></tr><tr><td>A.2.2.</td><td>Automated management in
> the event of a disaster should be
>              supported</td><td>2.1,
> 2.7</td><td>Low</td></tr><tr><td>A.2.3.</td><td>Provide IDs for each backup
> disk and
> images</td><td>2.2</td><td>High</td></tr><tr><td>A.2.4.</td><td>Provide
> methods to donwload any
> backup</td><td>2.2</td><td>Medium</td></tr><tr><td>A.2.5.</td><td>API
> should offer functionality to enforce the following
>              operations: deploy, shutdown, cancel, checkpoint, save,
> restore,
> @@ -271,153 +270,162 @@
>
>
> Interoperability)</td><td>-</td><td>Medium</td></tr><tr><td>A.2.11.</td><td>Support
> a subset of all functions of today IaaS based
>              Clouds (e.g. Amaton
> EC2)</td><td>2.6</td><td>Medium</td></tr><tr><td>A.2.12.</td><td>A common
> interface should be used which can be supported by
>              many Cloud service providers (regarding Infrastructure and
> Data
> -            interfaces).</td><td>2.13,
> 2.14</td><td>Medium</td></tr></tbody></table></div></div><br
> class="table-break"/><div class="table"><a id="id36067354"/><p
> class="title"><b>Table 3. Functional requirements on Network
> management</b></p><div class="table-contents"><table summary="Functional
> requirements on Network management"
> border="1"><colgroup><col/><col/><col/><col/></colgroup><thead><tr><th
> style="text-align: center">ID</th><th style="text-align:
> center">Description</th><th style="text-align: center">Usecases</th><th
> style="text-align:
> center">Priority</th></tr></thead><tbody><tr><td>A.3.1.</td><td>Support the
> creation of
> VPNs</td><td>2.3</td><td>Low</td></tr><tr><td>A.3.2.</td><td>Support
> multiple network connection (Public and
> +            interfaces).</td><td>2.13,
> 2.14</td><td>Medium</td></tr></tbody></table></div></div><br
> class="table-break"/><div class="table"><a id="id36067350"/><p
> class="title"><b>Table 3. Functional requirements on Network
> management</b></p><div class="table-contents"><table summary="Functional
> requirements on Network management"
> border="1"><colgroup><col/><col/><col/><col/></colgroup><thead><tr><th
> style="text-align: center">ID</th><th style="text-align:
> center">Description</th><th style="text-align: center">Usecases</th><th
> style="text-align:
> center">Priority</th></tr></thead><tbody><tr><td>A.3.1.</td><td>Support the
> creation of
> VPNs</td><td>2.3</td><td>Low</td></tr><tr><td>A.3.2.</td><td>Support
> multiple network connection (Public and
>              Private)</td><td>2.1, 2.2,
> 2.3</td><td>High</td></tr><tr><td>A.3.3.</td><td>It must be possible to
> attach and change IPs at
>              runtime</td><td>2.3,
> 2.7</td><td>Medium</td></tr><tr><td>A.3.4.</td><td>Support a tagging
> mechanism for a group of network
>              connections</td><td>2.1, 2.2,
> 2.3</td><td>Low</td></tr><tr><td>A.3.5.</td><td>Support network setups
> which allow an 'Intercloud' setup
> -            (This relates to
>
> Integration)</td><td>-</td><td>Medium</td></tr></tbody></table></div></div><br
> class="table-break"/><div class="table"><a id="id36067513"/><p
> class="title"><b>Table 4. Functional requirements on Storage
> management</b></p><div class="table-contents"><table summary="Functional
> requirements on Storage management"
> border="1"><colgroup><col/><col/><col/><col/></colgroup><thead><tr><th
> style="text-align: center">ID</th><th style="text-align:
> center">Description</th><th style="text-align: center">Usecases</th><th
> style="text-align:
> center">Priority</th></tr></thead><tbody><tr><td>A.4.1.</td><td>Allow the
> usage of URIs as mount points - allows reuse of
> +            (This relates to
>
> Integration)</td><td>-</td><td>Medium</td></tr></tbody></table></div></div><br
> class="table-break"/><div class="table"><a id="id36067509"/><p
> class="title"><b>Table 4. Functional requirements on Storage
> management</b></p><div class="table-contents"><table summary="Functional
> requirements on Storage management"
> border="1"><colgroup><col/><col/><col/><col/></colgroup><thead><tr><th
> style="text-align: center">ID</th><th style="text-align:
> center">Description</th><th style="text-align: center">Usecases</th><th
> style="text-align:
> center">Priority</th></tr></thead><tbody><tr><td>A.4.1.</td><td>Allow the
> usage of URIs as mount points - allows reuse of
>              Storage service
> offerings</td><td>2.1</td><td>High</td></tr><tr><td>A.4.2.</td><td>Allow
> the attachment of additional storage resources at
> -
> runtime</td><td>-</td><td>Medium</td></tr></tbody></table></div></div><br
> class="table-break"/><div class="table"><a id="id36067619"/><p
> class="title"><b>Table 5. Functional requirements on Image
> management</b></p><div class="table-contents"><table summary="Functional
> requirements on Image management"
> border="1"><colgroup><col/><col/><col/><col/></colgroup><thead><tr><th
> style="text-align: center">ID</th><th style="text-align:
> center">Description</th><th style="text-align: center">Usecases</th><th
> style="text-align:
> center">Priority</th></tr></thead><tbody><tr><td>A.5.1.</td><td>Methods
> which are capable to register, upload, update and
> +
> runtime</td><td>-</td><td>Medium</td></tr></tbody></table></div></div><br
> class="table-break"/><div class="table"><a id="id36067615"/><p
> class="title"><b>Table 5. Functional requirements on Image
> management</b></p><div class="table-contents"><table summary="Functional
> requirements on Image management"
> border="1"><colgroup><col/><col/><col/><col/></colgroup><thead><tr><th
> style="text-align: center">ID</th><th style="text-align:
> center">Description</th><th style="text-align: center">Usecases</th><th
> style="text-align:
> center">Priority</th></tr></thead><tbody><tr><td>A.5.1.</td><td>Methods
> which are capable to register, upload, update and
>              download disk images must be
>
> available.</td><td>2.2</td><td>Medium</td></tr><tr><td>A.5.2.</td><td>Updates
> based on rsync commands to synchronize machines
>              with physical equivalents should be
> supported</td><td>2.7</td><td>Medium</td></tr><tr><td>A.5.3.</td><td>When
> an upload completes successfully, an identifier should
> -            be
> returned</td><td>2.2</td><td>Low</td></tr></tbody></table></div></div><br
> class="table-break"/><div class="table"><a id="id36067744"/><p
> class="title"><b>Table 6. Identifications/References</b></p><div
> class="table-contents"><table summary="Identifications/References"
> border="1"><colgroup><col/><col/><col/><col/></colgroup><thead><tr><th
> style="text-align: center">ID</th><th style="text-align:
> center">Description</th><th style="text-align: center">Usecases</th><th
> style="text-align:
> center">Priority</th></tr></thead><tbody><tr><td>A.6.1.</td><td>Unique IDs
> for VM images and their components must be
> +            be
> returned</td><td>2.2</td><td>Low</td></tr></tbody></table></div></div><br
> class="table-break"/><div class="table"><a id="id36067739"/><p
> class="title"><b>Table 6. Identifications/References</b></p><div
> class="table-contents"><table summary="Identifications/References"
> border="1"><colgroup><col/><col/><col/><col/></colgroup><thead><tr><th
> style="text-align: center">ID</th><th style="text-align:
> center">Description</th><th style="text-align: center">Usecases</th><th
> style="text-align:
> center">Priority</th></tr></thead><tbody><tr><td>A.6.1.</td><td>Unique IDs
> for VM images and their components must be
>              available</td><td>2.2, 2.13,
> 2.14</td><td>High</td></tr><tr><td>A.6.2.</td><td>It must be possbile to
> tag resources and their
>              components</td><td>2.10,
> 2.12</td><td>Medium</td></tr><tr><td>A.6.3.</td><td>It must be possible to
> search for resources based on e.g.
> -            tags.</td><td>2.10,
> 2.12</td><td>Medium</td></tr></tbody></table></div></div><br
> class="table-break"/><div class="table"><a id="id36067867"/><p
> class="title"><b>Table 7. Monitoring</b></p><div
> class="table-contents"><table summary="Monitoring"
> border="1"><colgroup><col/><col/><col/><col/></colgroup><thead><tr><th
> style="text-align: center">ID</th><th style="text-align:
> center">Description</th><th style="text-align: center">Usecases</th><th
> style="text-align:
> center">Priority</th></tr></thead><tbody><tr><td>A.7.1.</td><td>Support
> pull-based monitoring that request the status of
> +            tags.</td><td>2.10,
> 2.12</td><td>Medium</td></tr></tbody></table></div></div><br
> class="table-break"/><div class="table"><a id="id36067863"/><p
> class="title"><b>Table 7. Monitoring</b></p><div
> class="table-contents"><table summary="Monitoring"
> border="1"><colgroup><col/><col/><col/><col/></colgroup><thead><tr><th
> style="text-align: center">ID</th><th style="text-align:
> center">Description</th><th style="text-align: center">Usecases</th><th
> style="text-align:
> center">Priority</th></tr></thead><tbody><tr><td>A.7.1.</td><td>Support
> pull-based monitoring that request the status of
>              the elements such as network , VM ...</td><td>2.1, 2.2,
> 2.3</td><td>Medium</td></tr><tr><td>A.7.2.</td><td>Support for a
> publish/subscribe pattern that request events
>              which occur in the VM or networks (such as Errors on some
>              component, changes in the VM state and other periodic
>
>
> notifications)</td><td>2.2</td><td>Medium</td></tr><tr><td>A.7.3.</td><td>Attributes
> that define simple quick call to poll the list
>              of servers, drives, etc should
>
> monitorable</td><td>2.4</td><td>Low</td></tr><tr><td>A.7.4.</td><td>Attributes
> about resource consumption of the VM from the
>              hypervisor (CPU, memory...) should be monitorable</td><td>2.1,
> 2.2</td><td>Medium</td></tr><tr><td>A.7.5.</td><td>Management reports
> should be generated from in some of the
> -            following formats XML,
> PDF</td><td>-</td><td>Low</td></tr></tbody></table></div></div><br
> class="table-break"/></div><div class="section" title="Non-functional
> Requirements"><div class="titlepage"><div><div><h2 class="title"><a
> id="id36068030"/>Non-functional Requirements</h2></div></div></div><p>This
> section deals with all the non-funtional requirements.</p><div
> class="table"><a id="id36068040"/><p class="title"><b>Table 8. Security
> requirements</b></p><div class="table-contents"><table summary="Security
> requirements"
> border="1"><colgroup><col/><col/><col/><col/></colgroup><thead><tr><th
> style="text-align: center">ID</th><th style="text-align:
> center">Description</th><th style="text-align: center">Usecases</th><th
> style="text-align:
> center">Priority</th></tr></thead><tbody><tr><td>B.1.1.</td><td>Support the
> usage of X509 Certificates</td><td>2.3, 2.13,
> 2.14</td><td>High</td></tr><tr><td>B.1.2.</td><td>Support the usage of
> ACLs</td><td>B.1,
> 2.1</td><td>High</td></tr><tr><td>B.1.3.</td><td>Attributes to define
> Security levels should be available in
> -            the
>
> descriptions</td><td>2.1</td><td>High</td></tr><tr><td>B.1.4.</td><td>Transport
> and user level security should be given</td><td>2.1, 2.13,
> 2.14</td><td>High</td></tr><tr><td>B.1.5.</td><td>Allow geographical region
> to be
> specified</td><td>B.4</td><td>High</td></tr></tbody></table></div></div><br
> class="table-break"/><div class="table"><a id="id36068198"/><p
> class="title"><b>Table 9. Quality of Service</b></p><div
> class="table-contents"><table summary="Quality of Service"
> border="1"><colgroup><col/><col/><col/><col/></colgroup><thead><tr><th
> style="text-align: center">ID</th><th style="text-align:
> center">Description</th><th style="text-align: center">Usecases</th><th
> style="text-align:
> center">Priority</th></tr></thead><tbody><tr><td>B.2.1.</td><td>Support
> capacities requirements for recovery / failover
> +            following formats XML,
> PDF</td><td>-</td><td>Low</td></tr></tbody></table></div></div><br
> class="table-break"/></div><div class="section" title="Non-functional
> Requirements"><div class="titlepage"><div><div><h2 class="title"><a
> id="id36068026"/>Non-functional Requirements</h2></div></div></div><p>This
> section deals with all the non-funtional requirements.</p><div
> class="table"><a id="id36068035"/><p class="title"><b>Table 8. Security
> requirements</b></p><div class="table-contents"><table summary="Security
> requirements"
> border="1"><colgroup><col/><col/><col/><col/></colgroup><thead><tr><th
> style="text-align: center">ID</th><th style="text-align:
> center">Description</th><th style="text-align: center">Usecases</th><th
> style="text-align:
> center">Priority</th></tr></thead><tbody><tr><td>B.1.1.</td><td>Support the
> usage of X509 Certificates</td><td>2.3, 2.13,
> 2.14</td><td>High</td></tr><tr><td>B.1.2.</td><td>Support the usage of
> ACLs</td><td>B.1,
> 2.1</td><td>High</td></tr><tr><td>B.1.3.</td><td>Attributes to define
> Security levels should be available in
> +            the
>
> descriptions</td><td>2.1</td><td>High</td></tr><tr><td>B.1.4.</td><td>Transport
> and user level security should be given</td><td>2.1, 2.13,
> 2.14</td><td>High</td></tr><tr><td>B.1.5.</td><td>Allow geographical region
> to be
> specified</td><td>B.4</td><td>High</td></tr></tbody></table></div></div><br
> class="table-break"/><div class="table"><a id="id36068194"/><p
> class="title"><b>Table 9. Quality of Service</b></p><div
> class="table-contents"><table summary="Quality of Service"
> border="1"><colgroup><col/><col/><col/><col/></colgroup><thead><tr><th
> style="text-align: center">ID</th><th style="text-align:
> center">Description</th><th style="text-align: center">Usecases</th><th
> style="text-align:
> center">Priority</th></tr></thead><tbody><tr><td>B.2.1.</td><td>Support
> capacities requirements for recovery / failover
>
> cases</td><td>2.7</td><td>Low</td></tr><tr><td>B.2.2.</td><td>Support of
> attributes in the VM description to define QoS
>              level (this also includes the reponse
> times)</td><td>2.1</td><td>High</td></tr><tr><td>B.2.3.</td><td>Support of
> attributes in the VM describing the Isolation
>
> level</td><td>2.1</td><td>Medium</td></tr><tr><td>B.2.4.</td><td>Support of
> attributes for an advanced reservation
> -
> functionality</td><td>2.3</td><td>Low</td></tr><tr><td>B.2.5.</td><td>Allow
> VM response times to be
> specified</td><td>B.4</td><td>High</td></tr></tbody></table></div></div><br
> class="table-break"/><div class="table"><a id="id36068357"/><p
> class="title"><b>Table 10. Syntax</b></p><div class="table-contents"><table
> summary="Syntax"
> border="1"><colgroup><col/><col/><col/><col/></colgroup><thead><tr><th
> style="text-align: center">ID</th><th style="text-align:
> center">Description</th><th style="text-align: center">Usecases</th><th
> style="text-align:
> center">Priority</th></tr></thead><tbody><tr><td>B.3.1.</td><td>No
> development tools or libraries should be needed by the
> +
> functionality</td><td>2.3</td><td>Low</td></tr><tr><td>B.2.5.</td><td>Allow
> VM response times to be
> specified</td><td>B.4</td><td>High</td></tr></tbody></table></div></div><br
> class="table-break"/><div class="table"><a id="id36068353"/><p
> class="title"><b>Table 10. Syntax</b></p><div class="table-contents"><table
> summary="Syntax"
> border="1"><colgroup><col/><col/><col/><col/></colgroup><thead><tr><th
> style="text-align: center">ID</th><th style="text-align:
> center">Description</th><th style="text-align: center">Usecases</th><th
> style="text-align:
> center">Priority</th></tr></thead><tbody><tr><td>B.3.1.</td><td>No
> development tools or libraries should be needed by the
>
> end-user</td><td>2.8</td><td>Medium</td></tr><tr><td>B.3.2.</td><td>Support
> simple JSON syntax to suppot Ajax interface</td><td>2.4,
> 2.10</td><td>Medium</td></tr><tr><td>B.3.3.</td><td>Clear definition of
> units (MB, GB etc) should be used in
> -            the requests (Like those defined by IEC 60027-2
> A.2)</td><td>A.2,
> 2.4</td><td>Medium</td></tr></tbody></table></div></div><br
> class="table-break"/><div class="table"><a id="id36068481"/><p
> class="title"><b>Table 11. Backup/Disaster recovery</b></p><div
> class="table-contents"><table summary="Backup/Disaster recovery"
> border="1"><colgroup><col/><col/><col/><col/></colgroup><thead><tr><th
> style="text-align: center">ID</th><th style="text-align:
> center">Description</th><th style="text-align: center">Usecases</th><th
> style="text-align:
> center">Priority</th></tr></thead><tbody><tr><td>B.4.1.</td><td>Support a
> backup functionality of cloud
> resources</td><td>-</td><td>Low</td></tr><tr><td>B.4.2.</td><td>The
> interface should reconsider failover, disaster recovery
> -            and business continuity
> plans</td><td>-</td><td>Medium</td></tr></tbody></table></div></div><br
> class="table-break"/></div></div><div class="article" title="OCCI
> Walkthrough"><div class="titlepage"><div><div><h2 class="title"><a
> id="id36066277"/>OCCI Walkthrough</h2></div></div><hr/></div><div
> class="section" title="Overview"><div class="titlepage"><div><div><h2
> class="title"><a id="id36066634"/>Overview</h2></div><div><h3
> class="subtitle">THIS WALKTHROUGH DOCUMENT DOES NOT REFLECT THE CURRENT
> STATE OF
> +            the requests (Like those defined by IEC 60027-2
> A.2)</td><td>A.2,
> 2.4</td><td>Medium</td></tr></tbody></table></div></div><br
> class="table-break"/><div class="table"><a id="id36068476"/><p
> class="title"><b>Table 11. Backup/Disaster recovery</b></p><div
> class="table-contents"><table summary="Backup/Disaster recovery"
> border="1"><colgroup><col/><col/><col/><col/></colgroup><thead><tr><th
> style="text-align: center">ID</th><th style="text-align:
> center">Description</th><th style="text-align: center">Usecases</th><th
> style="text-align:
> center">Priority</th></tr></thead><tbody><tr><td>B.4.1.</td><td>Support a
> backup functionality of cloud
> resources</td><td>-</td><td>Low</td></tr><tr><td>B.4.2.</td><td>The
> interface should reconsider failover, disaster recovery
> +            and business continuity
> plans</td><td>-</td><td>Medium</td></tr></tbody></table></div></div><br
> class="table-break"/></div></div><div class="article" title="OCCI
> Walkthrough"><div class="titlepage"><div><div><h2 class="title"><a
> id="id36066264"/>OCCI Walkthrough</h2></div></div><hr/></div><div
> class="section" title="Overview"><div class="titlepage"><div><div><h2
> class="title"><a id="id36066681"/>Overview</h2></div><div><h3
> class="subtitle">THIS WALKTHROUGH DOCUMENT DOES NOT REFLECT THE CURRENT
> STATE OF
>      THE SPECIFICATION. IT WILL BE UPDATED ON
> PUBLICATION.</h3></div></div></div><p>The Open Cloud Computing Interface
> (OCCI) is an API for managing
>      cloud infrastructure services (also known as Infrastructure as a
> Service
> -    or IaaS) which strictly adheres to REpresentational State Transfer
> (REST)
> +    or IaaS), which strictly adheres to REpresentational State Transfer
> (REST)
>      principles and is closely tied to HyperText Tranfer Protocol (HTTP).
> For
>      simplicity and scalability reasons it specifically avoids Remote
> Procedure
>      Call (RPC) style interfaces and can essentially be implemented as a
>      horizontally scalable document repository with which both nodes and
>      clients interact.</p><p>This document describes a step-by-step
> walkthrough of performing
> -    various tasks as at the time of writing.</p></div><div class="section"
> title="Getting Started"><div class="titlepage"><div><div><h2
> class="title"><a id="id36066657"/>Getting
> Started</h2></div></div></div><h3><a
> id="id36066663"/>Connecting</h3><p>Each implementation has a single OCCI
> end-point URL (we'll use
> -    http://example.com/) and everything you need to know is linked from
> this
> +    various tasks as at the time of writing.</p></div><div class="section"
> title="Getting Started"><div class="titlepage"><div><div><h2
> class="title"><a id="id36066705"/>Getting
> Started</h2></div></div></div><h3><a
> id="id36066710"/>Connecting</h3><p>Each implementation has a single OCCI
> end-point URL (we'll use
> +    http://example.com/) and everything needed to know is linked from
> this
>      point - configuring clients is just a case of providing this
> parameter. In
> -    the simplest case the end-point may contain only a single resource or
> type
> -    of resource (e.g. a hypervisor burnt into the BIOS of a motherboard
> -    exposing compute resources, a network switch/router exposing network
> -    resources or a SAN exposing storage resources) and at the other end of
> the
> -    spectrum it may provide access to a global cloud infrastructure (e.g.
> the
> +    the simplest case, the end-point may contain only a single resource,
> for
> +    example, a hypervisor burnt into the BIOS of a motherboard that
> exposes
> +    compute resources, a network switch/router exposing network resources
> or a
> +    SAN exposing storage resources. At the other end of the spectrum the
> +    end-point may provide access to a global cloud infrastructure (e.g.
> the
>      "Great Global Grid" or GGG). You will only ever see those resources to
>      which you have access to (typically all of them for a private cloud or
> a
> -    small subset for a public cloud) and flexible categorisation and
> search
> -    provide fine-grained control which resources are returned, allowing
> OCCI
> -    to handle the largest of installations. You will always connect to
> this
> -    end-point over HTTP(S) and given the simplicity of the interface most
> -    user-agents are suitable, including libraries (e.g. urllib2, LWP),
> command
> -    line tools (e.g. curl, wget) and full blown browsers (e.g.
> -    Firefox).</p><h3><a id="id36066669"/>Authenticating</h3><p>When you
> connect you will normally be challenged to authenticate via
> +    small subset for a public cloud) and flexible categorisation. The
> search
> +    extension provides fine-grained control which resources are returned,
> +    allowing OCCI to handle the largest of installations. The end-point is
> +    always connected over HTTP(S) and given the simplicity of the
> interface
> +    most user-agents are suitable, including libraries (e.g. urllib2,
> LWP),
> +    command line tools (e.g. curl, wget) and full blown browsers (e.g.
> +    Firefox).</p><h3><a id="id36066717"/>Authenticating</h3><p>When you
> connect you will normally be challenged to authenticate via
>      HTTP (this is not always the case - in secure/offline environments it
> may
>      not be necessary) and will need to do so via the specified mechanism.
> It
>      is anticipated that most implementations will require HTTP Basic
> -    Authentication over SSL/TLS so at the very least you should support
> this
> -    (fortunately almost all user-agents already do), but more advanced
> -    mechanisms such as NTLM or Kerberos may be deployed. Certain types of
> -    accesses (such as a compute resource querying OCCI for introspection
> and
> -    configuration) may be possible anonymously (having already been
> -    authenticated by interface and/or IP address). Should you be
> redirected by
> -    the API to a node, storage device, etc. (for example, to retrieve a
> large
> -    binary representation) then you should either be able to transparently
> -    authenticate or a signed URL should be provided. That is, a single set
> of
> -    credentials is all that is required to access the entire system from
> any
> -    point.</p><h3><a id="id36066676"/>Representations</h3><p>As the
> resource itself (e.g. a physical machine, storage array or
> -    network switch) cannot be transferred over HTTP (at least not yet!) we
> -    instead make available one or more representations of that resource.
> For
> -    example, an API modeling a person might return a picture,
> fingerprints,
> -    identity document(s) or even a digitised DNA sequence, but not the
> person
> -    themselves. A circle might be represented by SVG drawing primatives or
> any
> -    three distinct points on the curve. For cloud infrastructure there are
> -    many useful representations, and while OCCI standardises a number of
> them
> -    for interoperability purposes, an implementation is free to implement
> -    others in order to best serve the specific needs of their users and to
> +    Authentication over SSL/TLS so at the very least you should support
> this,
> +    but more advanced mechanisms such as NTLM or Kerberos may be deployed.
> +    Certain types of accesses such as a compute resource querying OCCI for
> +    introspection and configuration may be possible anonymously but only
> +    having already been authenticated by interface and/or IP address.
> Should
> +    you be redirected by the API to a node, storage device, etc. (for
> example,
> +    to retrieve a large binary representation) then the OCCI provider
> should
> +    provide means to transparently authenticate the currently
> authenticated
> +    user. That is, a single set of credentials and a single sign-on is all
> +    that is required to access the entire system from any point.</p><h3><a
> id="id36066724"/>Representations</h3><p>As the resource itself (e.g. a
> physical machine, storage array or
> +    network switch) cannot be transferred over HTTP we instead make
> available
> +    one or more representations of that resource. For example, an API
> modeling
> +    a person might return a picture, fingerprints, identity document(s) or
> +    even a digitised DNA sequence, but not the person themselves. A circle
> +    might be represented by SVG drawing primatives or any three distinct
> +    points on the curve. For cloud infrastructure there are many useful
> +    representations, and while OCCI recommends a number of them for
> +    interoperability purposes, an implementation is free to implement
> others
> +    in order to best serve the specific needs of their users and to
>      differentiate from other offerings. Other examples include:</p><div
> class="itemizedlist"><ul class="itemizedlist"><li class="listitem"><p>Open
> Cloud Computing Interface (OCCI) descriptor format
>          (application/occi+xml)</p></li><li class="listitem"><p>Open
> Virtualisation Format (OVF) file
>          (application/ovf+xml?)</p></li><li class="listitem"><p>Open
> Virtualisation Archive (OVA) file
> -        (application/x-ova?)</p></li><li class="listitem"><p>Screenshot of
> the console (image/png)</p></li><li class="listitem"><p>Access to the
> console (application/x-vnc)</p></li></ul></div><p>The client indicates
> which representation(s) it desires by way of
> -    the URL and/or HTTP Accept headers (e.g. HTTP Content Negotiation) and
> if
> -    the server is unable to satisfy the request then it should return HTTP
> 406
> -    Not Acceptable.</p><h3><a id="id36066735"/>Descriptors</h3><p>In
> addition to the protocol itself, OCCI defines a simple key/value
> -    based descriptor format for cloud infrastructure resources:</p><div
> class="glosslist"><dl><dt>compute</dt><dd><p>Provides computational
> services, ranging from dedicated
> +        (application/x-ova?)</p></li></ul></div><p>Other, albeit lesser
> representations, could include:</p><div class="itemizedlist"><ul
> class="itemizedlist"><li class="listitem"><p>Screenshot of the console
> (image/png)</p></li><li class="listitem"><p>Access to the console
> (application/x-vnc)</p></li></ul></div><p>The client indicates which
> representation(s) it desires by way of
> +    HTTP Content Negotiation using the HTTP Accept header and if the
> server is
> +    unable to satisfy the request then it should return HTTP 406 Not
> +    Acceptable. The client can also request the rendering via URL
> extension,
> +    if the server supports this option.</p><h3><a
> id="id36066791"/>Descriptors</h3><p>OCCI defines a simple attribute-based
> (key/value) descriptor format
> +    for cloud infrastructure resources. These infrastructure resources as
> +    defined by OCCI are:</p><div class="glosslist"><dl><dt><span
> class="bold"><strong>Compute:</strong></span></dt><dd><p>Provides
> computational services, ranging from dedicated
>            physical machines (e.g. Dedibox) to virtual machines (e.g.
> Amazon
> -          EC2) to slices/zones/containers (e.g. Mosso Cloud
> Servers).</p></dd><dt>network</dt><dd><p>Provides connectivity between
> machines and the outside world.
> +          EC2) to slices/zones/containers (e.g. Mosso Cloud
> Servers).</p></dd><dt><span
> class="bold"><strong>Network:</strong></span></dt><dd><p>Provides
> connectivity between machines and the outside world.
>            Usually virtual and may or may not be connected to a physical
> -          segment.</p></dd><dt>storage</dt><dd><p>Provides storage
> services, typically via magnetic mass storage
> +          segment.</p></dd><dt><span
> class="bold"><strong>Storage:</strong></span></dt><dd><p>Provides storage
> services, typically via magnetic mass storage
>            devices (e.g. hard drives, RAID arrays,
> SANs).</p></dd></dl></div><p>Given the simplicity of the format it is
> trivial to translate
> -    between wire formats including plain text, JSON, XML and others. For
> +    between wire formats including plain text, JSON, XML and others
> +    <em><span class="remark">&lt;--| Insert alternative examples |
> --&gt;</span></em> . For
>      example:</p><pre class="screen">occi.compute.cores 2
>  compute.speed 3200
> -compute.memory 2048</pre><h3><a id="id36066800"/>Identifiers</h3><p>Each
> resource is identified by its dereferenceable URL which is by
> +compute.memory 2048</pre><h3><a id="id36064816"/>Identifiers</h3><p>Each
> resource is identified by its dereferenceable URL which is by
>      definition unique, giving information about the origin and type of the
> -    resource as well as a local identifier (the combination of which forms
> a
> -    globally unique compound key). The primary drawback is that the more
> -    information that goes into the key (and therefore the more transparent
> it
> -    is), the more likely it is to change. For example, if you migrate a
> -    resource from one implementation to another then its identifier will
> -    change (though in this instance the source should provide a HTTP 301
> Moved
> -    Permanently response along with the new location, assuming it is
> known, or
> -    HTTP 410 Gone otherwise).</p><p>In order to realise the benefit of
> transparent, dereferenceable
> +    resource as well as a local identifier. The combination of both forms
> a
> +    globally unique compound key.<em><span class="remark"> &lt;--| Is this
> necessary
> +    here?</span></em> The primary drawback is that the more information
> that goes
> +    into the key (and therefore the more transparent it is), the more
> likely
> +    it is to change. For example, if you migrate a resource from one
> +    implementation to another then its identifier will change (though in
> this
> +    instance the source should provide a HTTP 301 Moved Permanently
> response
> +    along with the new location, assuming it is known, or HTTP 410 Gone
> +    otherwise).<em><span class="remark">|--&gt;</span></em></p><p>In order
> to realise the benefit of transparent, dereferenceable
>      identifiers while still being able to track resources through their
> entire
>      lifecycle an immutable UUID attribute should be allocated which will
>      remain with the resource throughout its life. This is particularly
>      important where the same resource (e.g. a network) appears in multiple
> -    places.</p><p>New implementations should use type 4 (random) UUIDs
> anyway, as
> -    these can be safely allocated by any node without consulting a
> -    register/sequence, but where existing identifiers are available they
> -    should be used instead (e.g.
> -    http://amazon.com/compute/ami-ef48af86).</p></div><div
> class="section"
> title="Operations"><div class="titlepage"><div><div><h2 class="title"><a
> id="id36064772"/>Operations</h2></div></div></div><h3><a
> id="id36064777"/>Create</h3><p>To create a resource simply POST it to the
> appropropriate collection
> -    (e.g. /compute, /network or /storage) as an HTML form (supported by
> -    virtually all user agents) or in another supported format (e.g.
> -    OVF):</p><pre class="screen">POST /compute HTTP/1.1
> +    places.</p><p>New implementations should use type-4 random UUIDs, as
> these can be
> +    safely allocated by any OCCI-compliant provider without consulting a
> +    register/sequence. Where existing identifiers are available they
> should be
> +    used instead (e.g.
> +    http://an.occi.provider.com/compute/ami-ef48af86).</p></div><div
> class="section" title="Operations"><div class="titlepage"><div><div><h2
> class="title"><a id="id36064848"/>Operations</h2></div></div></div><h3><a
> id="id36064854"/>Create</h3><p>To create a resource simply POST the
> resource representation to the
> +    appropriate collection (e.g. /compute, /network or /storage) using the
> +    application/x- www-form-urlencoded format (used by HTML forms) or in
> +    another supported format (e.g. OVF):</p><pre class="screen">POST
> /compute HTTP/1.1
>  Host: example.com
>  Content-Length: 35
>  Content-Type: application/x-www-form-urlencoded
>
>  compute.cores=2&amp;compute.memory=2048</pre><p>Rather than generating the
> new resource from scratch you may also be
> -    given the option to GET a template and POST or PUT it back (for
> example,
> -    where "small", "medium" and "large" instances or pre-configured
> appliances
> -    are offered).</p><h3><a id="id36064797"/>Retrieve</h3><p>The simplest
> command is to retrieve a single resource by conducting
> +    given the option <em><span class="remark">&lt;--| Templates are not
> explained in the
> +    walkthrough </span></em>to GET a template <em><span class="remark">|
> --&gt; </span></em>and
> +    <em><span class="remark">&lt;--| Semantic differences between the 2|
> </span></em>POST or PUT
> +    <em><span class="remark">|--&gt; </span></em>it back, for example,
> where "small", "medium" and
> +    "large" templates or pre-configured appliances are offered.</p><h3><a
> id="id36064889"/>Retrieve</h3><p>The simplest command is to retrieve a
> single resource by conducting
>      a HTTP GET on its URL (which doubles as its identifier):</p><pre
> class="screen">GET /compute/b10fa926-41a6-4125-ae94-bfad2670ca87 HTTP/1.1
>  Host: example.com</pre><p>This will return <em><span class="remark">a
> HTTP
> 300 Multiple Choices response
>      containing a list of available representations for the resource as
> well as
>      a suggestion in the form of a HTTP Location: header of</span></em> the
>      default rendering, which should be HTML (thereby allowing standard
>      browsers to access the API directly). An arbitrary number of
> alternatives
> -    may also be returned by way of HTTP Link: headers.</p><p>If you just
> need to know what representations are available you
> +    may also be returned by way of HTTP Link: headers. <em><span
> class="remark">&lt;--| this
> +    requires 2 calls by default |--&gt;</span></em></p><p>If you just need
> to know what representations are available you
>      should make a HEAD request instead of a GET - this will return the
> -    metadata in the headers without the default rendering.</p><p>Some
> requests (such as searches) will need to return a collection of
> -    resources. There are two options:</p><div
> class="glosslist"><dl><dt>Pass-by-reference</dt><dd><p>A plain text or HTML
> list of links is provided but each needs
> -          to be retrieved separately, resulting in O(n+1)
> performance.</p></dd><dt>Pass-by-value</dt><dd><p>A wrapper format such as
> Atom is used to deliver [links to]
> +    metadata in the headers without the default rendering.</p><p>Some
> requests, such as the collections returned using the search
> +    extension, will need to return a collection of resources. There are
> two
> +    concepts that are supported:</p><div
> class="glosslist"><dl><dt>Pass-by-reference:</dt><dd><p>A plain text or
> HTML list of links is provided but each needs
> +          to be retrieved separately, resulting in O(n+1)
> performance.</p></dd><dt>Pass-by-value:</dt><dd><p>A wrapper format such as
> Atom is used to deliver [links to]
>            the content as well as the metadata (e.g. links, associations,
> -          cahching information, etc.), resulting in O(1)
> performance.</p></dd></dl></div><h3><a
> id="id36064863"/>Update</h3><p>Updating resources is trivial - simply GET
> the resource, modify it
> -    as necessary and PUT it back where you found it.</p><h3><a
> id="id36064871"/>Delete</h3><p>Simply <code
> class="computeroutput">DELETE</code> the resource:</p><pre
> class="screen">DELETE /compute/b10fa926-41a6-4125-ae94-bfad2670ca87
> HTTP/1.1
> -Host: example.com</pre></div><div class="section" title="Sub-resource
> Collections"><div class="titlepage"><div><div><h2 class="title"><a
> id="id36064886"/>Sub-resource
> Collections</h2></div></div></div><p><em><span class="remark">(For want of
> a better name) </span></em></p><p>Each resource may expose collections for
> functions such as logging,
> +          caching information, etc.), resulting in O(1)
> performance.</p></dd></dl></div><h3><a
> id="id36064957"/>Update</h3><p>Updating resources is trivial - simply GET
> the resource, modify it
> +    as necessary and PUT <em><span class="remark">&lt;--| What about
> someone using POST?
> +    --&gt;</span></em> it back where you found it.</p><h3><a
> id="id36064969"/>Delete</h3><p>Simply <code
> class="computeroutput">DELETE</code> the resource:</p><pre
> class="screen">DELETE /compute/b10fa926-41a6-4125-ae94-bfad2670ca87
> HTTP/1.1
> +Host: example.com</pre></div><div class="section" title="Resource Child
> Collections"><div class="titlepage"><div><div><h2 class="title"><a
> id="id36064984"/>Resource Child Collections</h2></div></div></div><p>Each
> resource may expose collections for functions such as logging,
>      auditing, change control, documentation and other operations (e.g.
>      http://example.com/compute/123/log/456) in addition to any required
> by
>      OCCI. As usual CRUD operations map to HTTP verbs (as above) and
> clients
>      can either PUT entries directly if they know or will generate the
>      identifiers, or POST them to the collection if this will be handled on
> the
> -    server side (using POST Once Exactly (POE) to ensure
> idempotency).</p><h3><a id="id36064904"/>Requests</h3><p>Requests are used
> to trigger state changes and other operations such
> -    as backups, snapshots, migrations and invasive reconfigurations (such
> as
> -    storage resource resizing). Those that do not complete immediately
> -    (returning HTTP 200 OK or similar) must be handled asynchronously
> -    (returning HTTP 201 Accepted or similar).</p><pre class="screen">POST
> /compute/123/requests HTTP/1.1
> +    server side (using POST Once Exactly (POE) to ensure
> idempotency).</p><h3><a id="id36064998"/>Requests</h3><p><em><span
> class="remark">&lt;--| This section must reference somewhere that lists
> +    these </span></em>Requests <em><span class="remark">|
> --&gt;</span></em>are used to trigger state
> +    changes and other operations such as backups, snapshots, migrations
> and
> +    invasive reconfigurations (such as storage resource resizing). Those
> that
> +    do not complete immediately (returning HTTP 200 OK or similar) must be
> +    handled asynchronously (returning HTTP 201 Accepted or
> similar).</p><pre class="screen">POST /compute/123/requests HTTP/1.1
>  Host: example.com
>  Content-Length: 35
>  Content-Type: application/x-www-form-urlencoded
> @@ -426,7 +434,7 @@
>      which are only handled daily at midnight) and may take some time to
>      complete (for example a secure erase which requires multiple passes
> over
>      the disk). Clients can poll for status periodically or use server push
> (or
> -    a non-HTTP technology such as XMPP) to monitor for
> events.</p></div></div><div class="article" title="OCCI Frequently Asked
> Questions"><div class="titlepage"><div><div><h2 class="title"><a
> id="id36066287"/>OCCI Frequently Asked
> Questions</h2></div></div><hr/></div><div class="section"
> title="General"><div class="titlepage"><div><div><h2 class="title"><a
> id="id36066406"/>General</h2></div></div></div><div
> class="glosslist"><dl><dt>Who created the Open Cloud Computing Interface
> +    a non-HTTP technology such as XMPP) to monitor for
> events.</p></div></div><div class="article" title="OCCI Frequently Asked
> Questions"><div class="titlepage"><div><div><h2 class="title"><a
> id="id36066411"/>OCCI Frequently Asked
> Questions</h2></div></div><hr/></div><div class="section"
> title="General"><div class="titlepage"><div><div><h2 class="title"><a
> id="id36066537"/>General</h2></div></div></div><div
> class="glosslist"><dl><dt>Who created the Open Cloud Computing Interface
>          (OCCI)?</dt><dd><p>The Open Grid Forum (OGF)'s Open Cloud
> Computing Interface
>            Working Group (OCCI-WG) created the Open Cloud Computing
> Interface
>            (OCCI).</p></dd><dt>Who are the Open Cloud Computing Interface
> Working Group
> @@ -435,42 +443,50 @@
>            the chairs, and Sam Johnston (Australian Online Solutions) is
> the
>            secretary.</p></dd><dt>Who else was involved?</dt><dd><p>Around
> 200 individuals representing over 100 companies were
>            involved in the development of the Open Cloud Computing
> Interface
> -          (OCCI).</p></dd></dl></div></div><div class="section" title="Use
> Cases"><div class="titlepage"><div><div><h2 class="title"><a
> id="id36066463"/>Use Cases</h2></div></div></div><div
> class="glosslist"><dl><dt>How were the use cases collected?</dt><dd><p>Use
> cases were solicited from the working group mailing list
> -          as well as other external sources.</p></dd></dl></div></div><div
> class="section" title="Technical"><div class="titlepage"><div><div><h2
> class="title"><a id="id36066488"/>Technical</h2></div></div></div><div
> class="glosslist"><dl><dt>Why didn't you invent your own XML
> +          (OCCI).</p></dd></dl></div></div><div class="section" title="Use
> Cases"><div class="titlepage"><div><div><h2 class="title"><a
> id="id36066595"/>Use Cases</h2></div></div></div><div
> class="glosslist"><dl><dt>How were the use cases collected?</dt><dd><p>Use
> cases were solicited from the working group mailing list
> +          as well as other external sources.</p></dd></dl></div></div><div
> class="section" title="Technical"><div class="titlepage"><div><div><h2
> class="title"><a id="id36066620"/>Technical</h2></div></div></div><div
> class="glosslist"><dl><dt>Why didn't you invent your own XML
>          representation?</dt><dd><p>See Tim Bray's Don’t Invent XML
> -          Languages post.</p></dd></dl></div></div></div><div
> class="article" title="OCCI Core Specification"><div
> class="titlepage"><div><div><h2 class="title"><a id="id36068729"/>OCCI Core
> Specification</h2></div></div><hr/></div><div class="section"
> title="Introduction"><div class="titlepage"><div><div><h2 class="title"><a
> id="id36069560"/>Introduction</h2></div></div></div><p>The Open Cloud
> Computing Interface (OCCI) is an open protocol for
> -    all cloud computing services. A RESTful interface, it deviates from
> the
> -    underlying HyperText Transfer Protocol (HTTP) only where absolutely
> -    necessary and can be described as a "Resource Oriented Architecture
> +          Languages post.</p></dd></dl></div></div></div><div
> class="article" title="OCCI Core Specification &amp; Models"><div
> class="titlepage"><div><div><h2 class="title"><a id="id36066417"/>OCCI Core
> Specification &amp; Models</h2></div></div><hr/></div><div class="section"
> title="Introduction"><div class="titlepage"><div><div><h2 class="title"><a
> id="id36069859"/>Introduction</h2></div></div></div><p>The Open Cloud
> Computing Interface (OCCI) is an open protocol for
> +    cloud computing services. It initially targets the infrastructure
> services
> +    (IaaS) layer but its modular design which extends this OCCI Core
> +    Specification allows for future targeting of the platform services
> (PaaS)
> +    and application services (SaaS) layers on a future roadmap.</p><p>A
> Representational State Transfer (REST) protocol, it deviates from
> +    the underlying HyperText Transfer Protocol (HTTP) only where
> absolutely
> +    necessary and could be described as a "Resource Oriented Architecture
>      (ROA)".<a class="xref" href="#core-rws" title="RESTful Web
> Services">RWS</a> Unlike other envelope-based protocols
> -    which operate in-band, all existing HTTP features are available for
> -    caching, proxying, gatewaying and other advanced functionality such as
> -    partial GETs.</p><p>Each resource is identified by URL(s) and has one
> or more
> -    representations which may include a hypertext (e.g. XHTML5) rendering
> for
> -    direct end-user accessibility. As such OCCI can present both a machine
> -    interface (using native resource renderings) and a user interface
> (using
> -    HTML markup with forms and other web technologies such as
> -    Javascript/Ajax). HTTP content negotiation is used to select between
> -    alternative representations and metadata including associations
> between
> -    resources is exposed via HTTP headers (e.g. the
> -    <code class="computeroutput">Link:</code> and
> +    such as Atom and SOAP (which describe complex XML-based structures for
> +    data transferred within the HTTP payload, essentially duplicating
> HTTP's
> +    built in header-based metadata functionality), OCCI provides a "clean
> +    channel" over which any suitable format can travel without
> modification or
> +    wrapping, using HTTP to its full extent in the way it was intended.
> OCCI
> +    also uses various HTTP verbs in transactions rather than tunneling
> +    everything over POST, as was the case with SOAP and the various WS-*
> +    protocols. As such all existing HTTP features are available for
> caching,
> +    proxying, gatewaying and other advanced functionality such as partial
> +    GETs.</p><p>Each resource (i.e. a compute node) is identified by
> URL(s) and has
> +    one or more native representations (i.e. Open Virtualisation Format or
> +    OVF) as well as a generic XHTML5 rendering. The latter allows for
> direct
> +    end-user accessibility with well-formed, embedded semantic web markup
> for
> +    consumption by both human and machine clients. As such OCCI
> simultaneously
> +    presents both a machine interface (using native resource renderings)
> and a
> +    user interface (using HTML markup with forms and other web
> technologies
> +    such as Javascript/Ajax) so as to satisfy all common use cases. HTTP
> +    content negotiation is used to select between alternative
> representations
> +    and metadata including associations between resources is exposed via
> HTTP
> +    headers (e.g. the <code class="computeroutput">Link:</code> and
>      <code class="computeroutput">Category:</code> headers).</p><p>In this
> way OCCI is not responsible for the representations
>      themselves, rather it enables users to organise and group resources
>      together to build arbitrarily complex systems of inter-related
> resources.
>      It relies on existing standards for rendering and does not make any
> -    recommendations of one standard format over any other.</p><div
> class="tip" title="Tip" style="margin-left: 0.5in; margin-right:
> 0.5in;"><h3 class="title">Tip</h3><p>This is the case for the World Wide
> Web today where many image,
> -      video and other supporting formats co-exist. Browsers support a
> number
> -      of the common formats and users choose the most appropriate for the
> -      task.</p></div><div class="section" title="Example"><div
> class="titlepage"><div><div><h3 class="title"><a
> id="id36069607"/>Example</h3></div></div></div><pre class="screen">&gt; GET
> /us-east/webapp/vm01 HTTP/1.1
> -&gt; User-Agent: occi-client/1.0 (linux) libcurl/7.19.4 OCCI/1.0
> +    recommendations of one standard format over any other, in the same way
> as
> +    the Internet has many popular image formats.</p><div class="section"
> title="Example"><div class="titlepage"><div><div><h3 class="title"><a
> id="id36069910"/>Example</h3></div></div></div><pre class="screen">&gt; GET
> /us-east/webapp/vm01 HTTP/1.1
>  &gt; Host: cloud.example.com
>  &gt; Accept: */*
>  &gt;
>  &lt; HTTP/1.1 200 OK
> -&lt; Date: Sat, 10 Oct 2009 12:56:51 GMT
>  &lt; Content-Type: application/ovf
>  &lt; Link: &lt;/us-east/webapp/vm01;start&gt;;
> -&lt;       rel="http://purl.org/occi/action/start";
> +&lt;       rel="http://purl.org/occi/action#start";
>  &lt;       title="Start"
>  &lt; Link: &lt;/us-east/webapp/build.pdf&gt;;
>  &lt;       rel="related";
> @@ -478,27 +494,119 @@
>  &lt;       type="application/pdf"
>  &lt; Category: compute;
>  &lt;       label="Compute Resource";
> -&lt;       scheme="http://purl.org/occi/kind/"
> +&lt;       scheme="http://purl.org/occi/kind#"
>  &lt; Server: occi-server/1.0 (linux) OCCI/1.0
>  &lt; Connection: close
>  &lt;
>  &lt; &lt;?xml version="1.0" encoding="UTF-8"?&gt;
> -&lt; &lt;Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
> -&lt;           xmlns:ovf="http://schemas.dmtf.org/ovf/envelope/1"
> -&lt;           xmlns="http://schemas.dmtf.org/ovf/envelope/1"
> -&lt;           xml:lang="en-US"&gt;
> -...</pre></div></div><div class="section" title="Basics"><div
> class="titlepage"><div><div><h2 class="title"><a
> id="id36069626"/>Basics</h2></div></div></div><div class="section"
> title="Entry point"><div class="titlepage"><div><div><h3 class="title"><a
> id="id36069631"/>Entry point</h3></div></div></div><p>The interface is
> defined by a single URL entry point which will
> -      either be a <em class="glossterm">collection</em>, contain
> -      <em class="glossterm">link</em>(s) to <em
> class="glossterm">collection</em>(s)
> -      or both.</p></div><div class="section" title="Kinds, Actions &amp;
> Attributes"><div class="titlepage"><div><div><h3 class="title"><a
> id="id36069653"/>Kinds, Actions &amp;
> Attributes</h3></div></div></div><p>An interface exposes "kinds" which
> have "attributes" and on which
> -      "actions" can be performed. The attributes are exposed as key-value
> -      pairs and applicable actions as links, following the REST hypertext
> -      constraint (whereby state transitions are defined
> -      <em class="glossterm">in-band</em> rather than via
> rules).</p></div><div class="section" title="HTTP Verbs"><div
> class="titlepage"><div><div><h3 class="title"><a id="id36069669"/>HTTP
> Verbs</h3></div></div></div><p>Create, Retrieve, Update and Delete (CRUD)
> operations map to the
> +...</pre></div></div><div class="section" title="Essentials"><div
> class="titlepage"><div><div><h2 class="title"><a
> id="id36069926"/>Essentials</h2></div></div></div><div class="section"
> title="Connection"><div class="titlepage"><div><div><h3 class="title"><a
> id="id36069932"/>Connection</h3></div></div></div><div class="section"
> title="Authentication"><div class="titlepage"><div><div><h4
> class="title"><a
> id="id36069938"/>Authentication</h4></div></div></div><p>Servers <span
> class="emphasis"><em>may</em></span> require that requests be
> +        authenticated using standard HTTP-based authentication mechanisms
> +        (including OAuth).<a class="xref" href="#core-oauth"
> title="OAuth">OAuth</a> They indicate this
> +        requirement by returning <code class="code">HTTP 401</code> with a
> +        <code class="code">WWW-Authenticate</code> header and a suitable
> challenge (e.g.
> +        <code class="code">Basic</code>, <code class="code">Digest</code>,
> <code class="code">OAuth</code>). </p><pre class="screen">&gt; GET /
> HTTP/1.1
> +&gt; Host: cloud.example.com
> +&gt;
> +&lt; HTTP/1.1 401 Unauthorized
> +&lt; WWW-Authenticate: OAuth realm="http://sp.example.com/"</pre><p>The
> client then includes appropriate <code class="code">Authorization</code>
> +        headers in its responses:<a class="xref" href="#core-rfc2617"
> title="RFC 2617 - HTTP Authentication: Basic and Digest Access
> Authentication">RFC2617</a></p><pre class="screen">&gt; GET / HTTP/1.1
> +&gt; Authorization: OAuth realm="http://sp.example.com/",
> +&gt;                oauth_consumer_key="0685bd9184jfhq22",
> +&gt;                oauth_token="ad180jjd733klru7",
> +&gt;                oauth_signature_method="HMAC-SHA1",
> +&gt;                oauth_signature="wOJIO9A2W5mFwDgiDvZbTSMK%2FPY%3D",
> +&gt;                oauth_timestamp="137131200",
> +&gt;                oauth_nonce="4572616e48616d6d65724c61686176",
> +&gt;                oauth_version="1.0"</pre></div><div class="section"
> title="Cookies"><div class="titlepage"><div><div><h4 class="title"><a
> id="id36069997"/>Cookies</h4></div></div></div><p>Servers <span
> class="emphasis"><em>may</em></span> set and clients
> +        <span class="emphasis"><em>may</em></span> accept <em
> class="glossterm">cookies</em> in
> +        order to maintain authentication state between requests:<a
> class="xref" href="#core-rfc2109" title="RFC 2109 - HTTP State Management
> Mechanism">RFC2109</a></p><pre class="screen">Set-Cookie:
> session=4732518c5fe6dbeb8429cdda11d65c3d; domain=.example.com;
> path=/</pre><div class="warning" title="Warning" style="margin-left: 0.5in;
> margin-right: 0.5in;"><h3 class="title">Warning</h3><p>Such sessions <span
> class="emphasis"><em>should not</em></span> be used for
> +          other purposes (such as server-side state) in line with RESTful
> +          principles.</p></div></div><div class="section"
> title="Versioning"><div class="titlepage"><div><div><h4 class="title"><a
> id="id36070037"/>Versioning</h4></div></div></div><p>Servers and clients
> <span class="emphasis"><em>should</em></span> indicate the
> +        latest version of OCCI they support (e.g.
> +        <code class="computeroutput">1.0</code>) by way of the
> +        <code class="computeroutput">Server:</code> and
> +        <code class="computeroutput">User-Agent:</code> headers
> respectively,
> +        using the token <span class="quote">“<span class="quote"><code
> class="computeroutput">OCCI</code></span>”</span>
> +        (e.g. <span class="quote">“<span class="quote"><code
> class="computeroutput">OCCI/1.0</code></span>”</span>). If
> +        none is provided the latest (highest supported version number)
> +        available version offered by the server <span
> class="emphasis"><em>should</em></span> be
> +        used:</p><pre class="screen">&gt; GET / HTTP/1.1
> +&gt; Host: cloud.example.com
> +&gt; User-Agent: occi-client/1.0 (linux) libcurl/7.19.4 OCCI/1.0
> +&gt;
> +&lt; HTTP/1.1 200 OK
> +&lt; Server: Apache/2.2.13 (Unix) OCCI/1.0</pre></div></div><div
> class="section" title="Addressing"><div class="titlepage"><div><div><h3
> class="title"><a id="id36070082"/>Addressing</h3></div></div></div><p>A
> single entry point is defined by a URL (e.g.
> +      <code class="uri">http://cloud.example.com/</code>) which may be a
> collection of
> +      resources or some other page as defined by the implementor (e.g. a
> +      descriptive web page). Therefore OCCI is fully compatible with any
> +      existing web presence such as a marketing site or landing
> page.</p><p>All resources <span class="emphasis"><em>must</em></span> be
> addressible by URLs
> +      (whose structure is opaque and at the discretion of the implementor)
> and
> +      discoverable via search and/or link traversal from the entry point.
> +      Clients <span class="emphasis"><em>should not</em></span> rely
> on "rules" to construct
> +      URLs, rather learning them from URLs previously retrieved, in line
> with
> +      RESTful principles:</p><pre class="screen">&gt; GET /-/compute/
> HTTP/1.1
> +&gt; Accept: text/uri-list
> +&gt;
> +&lt; HTTP/1.1 200 OK
> +&lt; Content-type: text/uri-list
> +&lt;
> +&lt; /us-east/new-york/node17
> +&lt; /us-west/san-francisco/node43
> +&lt; /europe/paris/node38</pre></div><div class="section"
> title="Bootstrapping"><div class="titlepage"><div><div><h3 class="title"><a
> id="id36070116"/>Bootstrapping</h3></div></div></div><p>Clients will
> typically conduct a
> +      <code class="computeroutput">GET</code> or
> +      <code class="computeroutput">HEAD</code> request on the root
> +      (<span class="quote">“<span class="quote"><code
> class="uri">/</code></span>”</span>) and discover the category search
> +      interface, from which they can learn the supported categories/kinds
> and
> +      retrieve some or all of them. If they know the URL for the resource
> they
> +      wish to interact with (e.g. scripts &amp; cron jobs) then they can
> +      bypass the discovery process and manipulate it directly.</p><div
> class="example"><a id="id36070140"/><p class="title"><b>Example 1. Example
> bootstrap</b></p><div class="example-contents"><p>Retrieve a collection of
> desired resources (having already
> +        discovered the category search URL and available
> categories):</p><pre class="screen"># detect category search interface
> +&gt; GET / HTTP/1.1
> +&gt; Host: cloud.example.com
> +&gt;
> +&lt; HTTP/1.1 200 OK
> +&lt; Content-type: text/html
> +&lt; Link: &lt;/-/&gt;; rel="search"; title="Category Search"
> +&lt;
> +&lt; &lt;html&gt;
> +&lt; &lt;head&gt;
> +&lt; &lt;...&gt;
> +&lt;
> +# detect categories
> +&gt; GET /-/ HTTP/1.1
> +&gt;
> +&lt; HTTP/1.1 200 OK
> +&lt; Content-length: 0
> +&lt;
> +&lt; Category: compute; label="Compute Resource";
> scheme="http://purl.org/occi/kind#"
> +&lt; Category: network; label="Network Resource";
> scheme="http://purl.org/occi/kind#"
> +&lt; Category: storage; label="Storage Resource";
> scheme="http://purl.org/occi/kind#"
> +&lt; Category: us-east; label="US East Coast";
> scheme="http://example.com/locations"
> +&lt; Category: us-west; label="US West Coast";
> scheme="http://example.com/locations"
> +&lt; Category: demo; label="My Customer Demo";
> scheme="http://example.com/~user/"
> +&lt;
> +# retrieve category
> +&gt; GET /-/compute HTTP/1.1
> +&gt;
> +&gt; HTTP/1.1 200 OK
> +&gt; Content-type: text/uri-list
> +&gt;
> +&gt; /node1
> +&gt; /node2
> +&gt;
> +# retrieve resource
> +&gt; GET /node1 HTTP/1.1
> +&gt;
> +&gt; HTTP/1.1 200 OK
> +&gt; Content-type: application/ovf
> +&gt; &lt;...&gt;</pre></div></div><br
> class="example-break"/></div></div><div class="section"
> title="Operations"><div class="titlepage"><div><div><h2 class="title"><a
> id="id36070165"/>Operations</h2></div></div></div><div class="section"
> title="HTTP Verbs"><div class="titlepage"><div><div><h3 class="title"><a
> id="id36070171"/>HTTP Verbs</h3></div></div></div><p>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. WebDAV definitions are used for
> -      MKCOL, MOVE and COPY.</p><div class="glosslist"><dl><dt>POST
> (Create)</dt><dd><p><span class="quote">“<span class="quote">The POST
> method is used to request that the origin
> +      MKCOL, MOVE and COPY.</p><div class="warning" title="Warning"
> style="margin-left: 0.5in; margin-right: 0.5in;"><h3
> class="title">Warning</h3><p>Some providers may implement a subset of these
> operations, and
> +        those available to you for a given resource (if any) may depend on
> +        security policy. Be prepared to handle exceptions if you attempt
> to
> +        call operations that are not available to you.</p></div><div
> class="glosslist"><dl><dt>POST (Create)</dt><dd><p><span
> class="quote">“<span class="quote">The POST method is used to request that
> the origin
>              server accept the entity enclosed in the request as a new
>              subordinate of the resource identified by the Request-URI in
> the
>              Request-Line.</span>”</span><a class="xref"
> href="#core-rfc2616" title="RFC 2616 - Hypertext Transfer Protocol --
> HTTP/1.1">RFC2616</a></p><p>POSTing a representation (e.g. OVF) to a
> collection (e.g.
> @@ -512,11 +620,16 @@
>              "406 Not Acceptable" will be returned.</p></dd><dt>PUT (Create
> or Update)</dt><dd><p><span class="quote">“<span class="quote">The PUT
> method requests that the enclosed entity be
>              stored under the supplied Request-URI.</span>”</span><a
> class="xref" href="#core-rfc2616" title="RFC 2616 - Hypertext Transfer
> Protocol -- HTTP/1.1">RFC2616</a></p><p>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.</p></dd><dt>DELETE
> (Delete)</dt><dd><p><span class="quote">“<span class="quote">The DELETE
> method requests that the origin server
> +            updated. The URL is known or selected by the client, in
> contrast
> +            to POSTs where the URL is selected by the
> server.</p></dd><dt>DELETE (Delete)</dt><dd><p><span class="quote">“<span
> class="quote">The DELETE method requests that the origin server
>              delete the resource identified by the
> Request-URI.</span>”</span><a class="xref" href="#core-rfc2616" title="RFC
> 2616 - Hypertext Transfer Protocol -- HTTP/1.1">RFC2616</a></p><p>DELETE
> results in the deletion of the resource (and
> -            everything "under" it, as
> appropriate).</p></dd></dl></div><p>Additionally the following HTTP methods
> are used:</p><div class="glosslist"><dl><dt>COPY
> (Duplicate)</dt><dd><p><span class="quote">“<span class="quote">The COPY
> method creates a duplicate of the source
> +            everything "under" it, as
> appropriate).</p></dd></dl></div><div class="tip" title="Tip"
> style="margin-left: 0.5in; margin-right: 0.5in;"><h3
> class="title">Tip</h3><p>It is possible to instruct the server to create a
> resource based
> +        on a default configuration (without requiring client support) by
> doing
> +        an empty POST/PUT, specifying <span class="quote">“<span
> class="quote"><code class="computeroutput">Content-type:
> +        application/occi</code></span>”</span> (such that the web server
> +        knows where to route the request) and specifying the appropriate
> +        <em class="parameter"><code>kind</code></em> category (such that
> OCCI knows what to
> +        create).</p></div><p>Additionally the following HTTP methods are
> used:</p><div class="glosslist"><dl><dt>COPY (Duplicate)</dt><dd><p><span
> class="quote">“<span class="quote">The COPY method creates a duplicate of
> the source
>              resource identified by the Request-URI, in the destination
>              resource identified by the URI in the Destination
>              header.</span>”</span><a class="xref" href="#core-rfc4918"
> title="RFC 4918 - HTTP Extensions for Web Distributed Authoring and
> Versioning (WebDAV)">RFC4918</a></p></dd><dt>HEAD (Retrieve - Metadata
> Only)</dt><dd><p><span class="quote">“<span class="quote">The HEAD method
> is identical to GET except that the
> @@ -528,63 +641,28 @@
>              all three actions are performed in a single
>              operation.</span>”</span><a class="xref" href="#core-rfc4918"
> title="RFC 4918 - HTTP Extensions for Web Distributed Authoring and
> Versioning (WebDAV)">RFC4918</a></p></dd><dt>OPTIONS</dt><dd><p><span
> class="quote">“<span class="quote">The OPTIONS method represents a request
> for
>              information about the communication options available on the
> -            request/response chain identified by the
> Request-URI.</span>”</span><a class="xref" href="#core-rfc2616" title="RFC
> 2616 - Hypertext Transfer Protocol --
> HTTP/1.1">RFC2616</a></p></dd></dl></div></div></div><div class="section"
> title="Connection"><div class="titlepage"><div><div><h2 class="title"><a
> id="id36069890"/>Connection</h2></div></div></div><div class="section"
> title="Authentication"><div class="titlepage"><div><div><h3
> class="title"><a
> id="id36069896"/>Authentication</h3></div></div></div><p>Servers <span
> class="emphasis"><em>may</em></span> require that requests be
> -      authenticated using standard HTTP-based authentication mechanisms
> -      (including OAuth).<a class="xref" href="#core-oauth"
> title="OAuth">OAuth</a> They indicate this
> -      requirement by returning <code class="code">HTTP 401</code> with a
> -      <code class="code">WWW-Authenticate</code> header and a suitable
> challenge (e.g.
> -      <code class="code">Basic</code>, <code class="code">Digest</code>,
> <code class="code">OAuth</code>). The client
> -      then includes appropriate <code class="code">Authorization</code>
> headers in its
> -      responses.<a class="xref" href="#core-rfc2617" title="RFC 2617 -
> HTTP Authentication: Basic and Digest Access
> Authentication">RFC2617</a></p><p>Servers <span
> class="emphasis"><em>may</em></span> set and clients
> -      <span class="emphasis"><em>may</em></span> accept <em
> class="glossterm">cookies</em> in order
> -      to maintain authentication state between requests. Such sessions
> -      <span class="emphasis"><em>should not</em></span> be used for other
> purposes (such as
> -      server-side state) in line with RESTful principles.<a class="xref"
> href="#core-rfc2109" title="RFC 2109 - HTTP State Management
> Mechanism">RFC2109</a></p></div><div class="section"
> title="Versioning"><div class="titlepage"><div><div><h3 class="title"><a
> id="id36069962"/>Versioning</h3></div></div></div><p>Servers and clients
> <span class="emphasis"><em>should</em></span> indicate the
> -      latest version of OCCI they support (e.g.
> -      <code class="computeroutput">1.0</code>) by way of the
> -      <code class="computeroutput">Server:</code> and
> -      <code class="computeroutput">User-Agent:</code> headers
> respectively, using
> -      the token <span class="quote">“<span class="quote"><code
> class="computeroutput">OCCI</code></span>”</span> (e.g.
> -      <span class="quote">“<span class="quote"><code
> class="computeroutput">OCCI/1.0</code></span>”</span>). If none is
> -      provided the latest available version <span
> class="emphasis"><em>shall</em></span> be
> -      used.</p></div></div><div class="section" title="Model"><div
> class="titlepage"><div><div><h2 class="title"><a
> id="id36070001"/>Model</h2></div></div></div><p>The model defines the
> objects themselves without regard to how they
> -    interrelate.</p><div class="section" title="Kinds"><div
> class="titlepage"><div><div><h3 class="title"><a
> id="id36070011"/>Kinds</h3></div></div></div><p>Each category of resources
> distinguished by some common
> -      characteristic or quality is called a <em
> class="glossterm">kind</em> (e.g.
> -      <code class="computeroutput">compute</code>,
> -      <code class="computeroutput">network</code>,
> -      <code class="computeroutput">storage</code>,
> -      <code class="computeroutput">queue</code>,
> -      <code class="computeroutput">application</code>,
> -      <code class="computeroutput">contact</code>).</p><p>Kinds defined by
> this standard live in the
> -      <code class="uri">http://purl.org/occi/kind/</code> namespace but
> anyone can define a
> -      new kind by allocating a URI they control.</p><div class="warning"
> title="Warning" style="margin-left: 0.5in; margin-right: 0.5in;"><h3
> class="title">Warning</h3><p>Defining your own kinds can lead to
> interoperability problems
> -        and should be a last resort reserved for unique functionality. A
> -        simple peer review process is available for extending the
> registries
> -        which should be used where possible.</p></div><p>Each resource
> <span class="emphasis"><em>must</em></span> specify a kind by way of a
> -      <em class="glossterm">category</em> within the <em
> class="glossterm">scheme</em>
> -      <span class="quote">“<span class="quote"><code
> class="uri">http://purl.org/occi/kind/</code></span>”</span>.</p><div
> class="tip" title="Tip" style="margin-left: 0.5in; margin-right:
> 0.5in;"><h3 class="title">Tip</h3><p>The word <em
> class="glossterm">type</em> is not used in this context
> -        in order to avoid confusion with Internet media
> types.</p></div></div><div class="section" title="Attributes"><div
> class="titlepage"><div><div><h3 class="title"><a
> id="id36070094"/>Attributes</h3></div></div></div><p>An <em
> class="glossterm">attribute</em> is a specification that
> -      defines a property of an object. It is expressed in the form of
> -      key-value pairs. Attributes are divided into namespaces which are
> -      separated by the dot character (<span class="quote">“<span
> class="quote">.</span>”</span>).</p><div class="tip" title="Tip"
> style="margin-left: 0.5in; margin-right: 0.5in;"><h3
> class="title">Tip</h3><p>This scalable approach was derived from the
> Mozilla Firefox
> -        <code class="uri">about:config</code> page.</p></div><p>Attributes
> defined by this standard reside under the
> -      <code class="computeroutput">occi</code> namespace (e.g.
> -      "<code class="computeroutput">occi.abc</code>") but anyone can
> define a new
> -      attribute by allocating a unique namespace based on their reversed
> -      Internet domain (e.g.
> -      <span class="quote">“<span class="quote"><code
> class="computeroutput">com.cisco.cdp</code></span>”</span>).</p><div
> class="warning" title="Warning" style="margin-left: 0.5in; margin-right:
> 0.5in;"><h3 class="title">Warning</h3><p>Defining your own attributes can
> lead to interoperability
> -        problems and should be a last resort reserved for unique
> -        functionality. A simple peer review process is available for
> extending
> -        the registries which should be used where possible.</p></div><div
> class="section" title="Registry Entries"><div
> class="titlepage"><div><div><h4 class="title"><a id="id36070148"/>Registry
> Entries</h4></div></div></div><div class="table"><a id="id36070154"/><p
> class="title"><b>Table 1. Core Attributes</b></p><div
> class="table-contents"><table summary="Core Attributes"
> border="1"><colgroup><col style="text-align:
> center"/><col/><col/><col/></colgroup><thead><tr><th style="text-align:
>
> left">Attribute</th><th>Description</th><th>Type</th><th>Example</th></tr></thead><tbody><tr><td
> style="text-align: left"><code
> class="computeroutput">occi.id</code></td><td>Immutable identifier for the
> resource</td><td>URI</td><td><code
>
> class="uri">urn:uuid:d0e9f0d0-f62d-4f28-bc90-23b0bd871770</code></td></tr><tr><td
> style="text-align: left"><code
> class="computeroutput">occi.title</code></td><td>Display name for the
> resource</td><td>String</td><td><code class="computeroutput">Compute
> Resource
> -                #123</code></td></tr><tr><td style="text-align:
> left"><code class="computeroutput">occi.summary</code></td><td>Description
> of the resource</td><td>String</td><td><code class="computeroutput">A
> virtual compute
> -                resource</code></td></tr><tr><td style="text-align:
> left"><code
> class="computeroutput">occi.version</code></td><td>Specification
> version</td><td>Float</td><td><code
> class="computeroutput">1.0</code></td></tr></tbody></table></div></div><br
> class="table-break"/></div></div><div class="section" title="Actions"><div
> class="titlepage"><div><div><h3 class="title"><a
> id="id36070289"/>Actions</h3></div></div></div><p>An <em
> class="glossterm">action</em> is some process that can be
> -      carried out on one or more <em
> class="glossterm">resource</em>s.</p><p>Each available <em
> class="glossterm">action</em> for a given
> +            request/response chain identified by the
> Request-URI.</span>”</span><a class="xref" href="#core-rfc2616" title="RFC
> 2616 - Hypertext Transfer Protocol --
> HTTP/1.1">RFC2616</a></p></dd></dl></div><div class="tip" title="Tip"
> style="margin-left: 0.5in; margin-right: 0.5in;"><h3
> class="title">Tip</h3><p>Implementors may offer full WebDAV support in
> order to allow
> +        clients to enumerate the entire tree, interact with the resources
> via
> +        standard file managers (e.g. Windows Explorer, Mac OS X Finder),
> +        etc.</p></div></div><div class="section" title="Actions"><div
> class="titlepage"><div><div><h3 class="title"><a
> id="id36070426"/>Actions</h3></div></div></div><p>An <em
> class="glossterm">action</em> is some process that can be
> +      carried out on one or more <em class="glossterm">resource</em>s,
> which may
> +      result in a state change and/or the creation of new
> resource(s).</p><div class="tip" title="Tip" style="margin-left: 0.5in;
> margin-right: 0.5in;"><h3 class="title">Tip</h3><p>Use common sense to
> decide what functionality should be exposed
> +        by way of actions and consult the list of existing actions and
> verbs
> +        before creating your own. For example it does not make sense to
> resize
> +        a storage resource by setting the <span class="quote">“<span
> class="quote">size</span>”</span> attribute
> +        (indeed there may not be space available or the filesystem may not
> +        support resizing and in any case the operation will take some
> time),
> +        nor to start a machine by changing the state from
> +        <span class="quote">“<span class="quote">stopped</span>”</span> to
> <span class="quote">“<span
> class="quote">running</span>”</span>.</p></div><p>Each available <em
> class="glossterm">action</em> for a given
>        <em class="glossterm">resource</em> is indicated via a
> -      <em class="glossterm">link</em> with the
> -      <code class="computeroutput">action</code> class.</p><pre
> class="screen">Link: &lt;/us-east/webapp/vm01;start&gt;;
> -      rel="http://purl.org/occi/action/start";
> +      <em class="glossterm">link</em> with <em
> class="parameter"><code>class</code></em> extension
> +      set to <span class="quote">“<span class="quote"><em
> class="parameter"><code>action</code></em></span>”</span> (such that
> clients
> +      can identify actions, including those from third-parties, without
> +      deriving meaning from the <em
> class="parameter"><code>rel</code></em> URI).</p><pre class="screen">Link:
> &lt;/us-east/webapp/vm01;start&gt;;
> +      rel="http://purl.org/occi/action#start";
> +      class="action";
>        title="Start"</pre><p>Actions defined by this standard reside under
> the
> -      <code class="uri">http://purl.org/occi/action/</code> namespace but
> anyone can define
> +      <code class="uri">http://purl.org/occi/action#</code> namespace but
> anyone can define
>        a new action by allocating a URI they control.</p><div
> class="warning" title="Warning" style="margin-left: 0.5in; margin-right:
> 0.5in;"><h3 class="title">Warning</h3><p>Defining your own actions can lead
> to interoperability problems
>          and should be a last resort reserved for unique functionality. A
>          simple peer review process is available for extending the
> registries
> @@ -592,12 +670,12 @@
>        depending on the action requested (e.g.
>        <code class="computeroutput">resize</code>), parameters
>        <span class="emphasis"><em>may</em></span> be provided using HTML
> forms (e.g.
> -      <code class="computeroutput">application/x-www-form-encoded</code>).
> In the
> -      case of HTML-based renderings the actions can therefore be actual
> HTML
> -      forms.</p><div class="tip" title="Tip" style="margin-left: 0.5in;
> margin-right: 0.5in;"><h3 class="title">Tip</h3><p>Some resources can be
> interacted with but not rendered due to
> +      <code
> class="computeroutput">application/x-www-form-urlencoded</code>). In
> +      the case of HTML-based renderings the actions can therefore be
> actual
> +      HTML forms.</p><div class="tip" title="Tip" style="margin-left:
> 0.5in; margin-right: 0.5in;"><h3 class="title">Tip</h3><p>Some resources
> can be interacted with but not rendered due to
>          the nature of the resource or prevailing security policies (for
>          example, an operator may be able to backup a machine without
> knowing
> -        anything about it).</p></div><div class="section"
> title="Asynchronous Actions"><div class="titlepage"><div><div><h4
> class="title"><a id="id36070373"/>Asynchronous
> Actions</h4></div></div></div><p>Synchronous actions <span
> class="emphasis"><em>may</em></span> return
> +        anything about it).</p></div><div class="section"
> title="Asynchronous Actions"><div class="titlepage"><div><div><h4
> class="title"><a id="id36070541"/>Asynchronous
> Actions</h4></div></div></div><p>Synchronous actions <span
> class="emphasis"><em>may</em></span> return
>          <code class="computeroutput">200 OK</code> on successful
> completion or
>          <code class="computeroutput">201 Created</code> with a
>          <code class="computeroutput">Location:</code> header indicating a
> new
> @@ -608,16 +686,55 @@
>          <code class="computeroutput">Location:</code> header indicating a
> new
>          resource where status and other pertinent information can be
>          obtained.</p><div class="tip" title="Tip" style="margin-left:
> 0.5in; margin-right: 0.5in;"><h3 class="title">Tip</h3><p>Don't keep
> clients waiting - if you're not sure to return
> -          immediately then give them a resource they can
> monitor.</p></div></div><div class="section" title="Advanced Actions"><div
> class="titlepage"><div><div><h4 class="title"><a id="id36070433"/>Advanced
> Actions</h4></div></div></div><p>The specific parameters required and
> allowable values for them
> +          immediately then give them a resource they can monitor. For
> example
> +          by responding with an 202 Accepted return code and include a
> +          location: header, as described.</p></div></div><div
> class="section" title="Advanced Actions"><div
> class="titlepage"><div><div><h4 class="title"><a id="id36070602"/>Advanced
> Actions</h4></div></div></div><p>The specific parameters required and
> allowable values for them
>          depend on the action and for advanced actions <span
> class="emphasis"><em>may</em></span>
>          require sending of custom <em class="glossterm">content type</em>s
> rather
>          than
> -        <code
>
> class="computeroutput">application/x-www-form-encoded</code>.</p></div></div></div><div
> class="section" title="Meta-model"><div class="titlepage"><div><div><h2
> class="title"><a id="id36070458"/>Meta-model</h2></div></div></div><p>The
> meta-model defines how objects interrelate.</p><div class="section"
> title="Categories"><div class="titlepage"><div><div><h3 class="title"><a
> id="id36070467"/>Categories</h3></div></div></div><p><em
> class="glossterm">Category</em> information allows for flexible
> +        <code
> class="computeroutput">application/x-www-form-encoded</code>.</p></div><div
> class="section" title="State Machines"><div class="titlepage"><div><div><h4
> class="title"><a id="id36070625"/>State
> Machines</h4></div></div></div><p>State machines are maintained on the
> server side and possible
> +        transitions are advertised to the client by way of action links.
> The
> +        links offered to a given client may depend on the resource, its
> +        current state, security policy, etc.</p><div class="tip"
> title="Tip" style="margin-left: 0.5in; margin-right: 0.5in;"><h3
> class="title">Tip</h3><p>Many state transitions will not be effected
> immediately so be
> +          prepared to handle asynchronous
> responses.</p></div></div></div></div><div class="section"
> title="Model"><div class="titlepage"><div><div><h2 class="title"><a
> id="id36070647"/>Model</h2></div></div></div><p>The model defines the
> objects and how they interrelate. An interface
> +    exposes "kinds" which have "attributes" and on which "actions" can be
> +    performed. The attributes are exposed as key-value pairs and
> applicable
> +    actions as links, following the REST hypertext constraint (whereby
> state
> +    transitions are defined <em class="glossterm">in-band</em> rather than
> via
> +    rules).</p><div class="section" title="Kinds"><div
> class="titlepage"><div><div><h3 class="title"><a
> id="id36070663"/>Kinds</h3></div></div></div><p>Each category of resources
> distinguished by some common
> +      characteristic or quality is called a <em
> class="glossterm">kind</em> (e.g.
> +      <code class="computeroutput">compute</code>,
> +      <code class="computeroutput">network</code>,
> +      <code class="computeroutput">storage</code>,
> +      <code class="computeroutput">queue</code>,
> +      <code class="computeroutput">application</code>,
> +      <code class="computeroutput">contact</code>).</p><p>Kinds defined by
> this standard live in the
> +      <code class="uri">http://purl.org/occi/kind/</code> namespace but
> anyone can define a
> +      new kind by using a URI they control as the term.</p><div
> class="warning" title="Warning" style="margin-left: 0.5in; margin-right:
> 0.5in;"><h3 class="title">Warning</h3><p>Defining your own kinds can lead
> to interoperability problems
> +        and should be a last resort reserved for unique functionality. A
> +        simple peer review process is available for extending the
> registries
> +        which should be used where possible.</p></div><p>Each resource
> <span class="emphasis"><em>must</em></span> specify a kind by way of a
> +      <em class="glossterm">category</em> within the <em
> class="glossterm">scheme</em>
> +      <span class="quote">“<span class="quote"><code
> class="uri">http://purl.org/occi/kind#</code></span>”</span>.</p><div
> class="tip" title="Tip" style="margin-left: 0.5in; margin-right:
> 0.5in;"><h3 class="title">Tip</h3><p>The word <em
> class="glossterm">type</em> is not used in this context
> +        in order to avoid confusion with Internet media
> types.</p></div><div class="section" title="Attributes"><div
> class="titlepage"><div><div><h4 class="title"><a
> id="id36070744"/>Attributes</h4></div></div></div><p>An <em
> class="glossterm">attribute</em> is a specification that
> +        defines a property of an object. It is expressed in the form of
> +        key-value pairs. Attributes are divided into namespaces which are
> +        separated by the dot character (<span class="quote">“<span
> class="quote">.</span>”</span>).</p><div class="tip" title="Tip"
> style="margin-left: 0.5in; margin-right: 0.5in;"><h3
> class="title">Tip</h3><p>This scalable approach was derived from the
> Mozilla Firefox
> +          <code class="uri">about:config</code>
> page.</p></div><p>Attributes defined by this standard reside at the root
> but
> +        anyone can define a new attribute by allocating a unique namespace
> +        based on their reversed Internet domain (e.g.
> +        <span class="quote">“<span class="quote"><code
>
> class="computeroutput">com.example.attribute</code></span>”</span>).</p><div
> class="warning" title="Warning" style="margin-left: 0.5in; margin-right:
> 0.5in;"><h3 class="title">Warning</h3><p>Defining your own attributes can
> lead to interoperability
> +          problems and should be a last resort reserved for unique
> +          functionality. A simple peer review process is available for
> +          extending the registries which should be used where
> possible.</p></div><div class="section" title="Registry Entries"><div
> class="titlepage"><div><div><h5 class="title"><a id="id36070792"/>Registry
> Entries</h5></div></div></div><div class="table"><a id="id36070798"/><p
> class="title"><b>Table 1. Core Attributes</b></p><div
> class="table-contents"><table summary="Core Attributes"
> border="1"><colgroup><col/><col/><col/><col/></colgroup><thead><tr><th
> style="text-align:
>
> left">Attribute</th><th>Description</th><th>Type</th><th>Example</th></tr></thead><tbody><tr><td
> style="text-align: left"><code
> class="computeroutput">id</code></td><td>Immutable, unique identifier for
> the resource</td><td>URI</td><td><code
> class="uri">urn:uuid:d0e9f0d0-f62d-4f28-bc90-23b0bd871770</code>
> +                  or <code
> class="uri">urn:aws:ami-123456</code></td></tr><tr><td style="text-align:
> left"><code class="computeroutput">title</code></td><td>Display name for
> the resource</td><td>String</td><td><code class="computeroutput">Compute
> Resource
> +                  #123</code></td></tr><tr><td style="text-align:
> left"><code class="computeroutput">summary</code></td><td>Description of
> the resource</td><td>String</td><td><code class="computeroutput">A virtual
> compute
> +                  resource</code></td></tr></tbody></table></div></div><br
> class="table-break"/></div></div></div><div class="section"
> title="Categories"><div class="titlepage"><div><div><h3 class="title"><a
> id="categories"/>Categories</h3></div></div></div><p><em
> class="glossterm">Category</em> information allows for flexible
>        organisation of resources into one or more vocabularies (each of
> which
> -      is referred to as a <em class="glossterm">scheme</em>).</p><p>The
> meta-model was derived from Atom, consisting of three
> +      is referred to as a <em class="glossterm">scheme</em>).</p><p>The
> category model was derived from Atom and consists of three
>        attributes:</p><div class="glosslist"><dl><dt>term</dt><dd><p>The
> term itself (e.g.
>              <span class="quote">“<span class="quote"><code
> class="computeroutput">compute</code></span>”</span>)</p></dd><dt>scheme
> (optional)</dt><dd><p>The vocabulary (e.g.
> -            <span class="quote">“<span class="quote"><code
> class="computeroutput">http://purl.org/occi/kind/
> </code></span>”</span>)</p></dd><dt>label
> (optional)</dt><dd><p>A human-friendly display name for the term (e.g.
> +            <span class="quote">“<span class="quote"><code
> class="computeroutput">http://purl.org/occi/kind#
> </code></span>”</span>)</p></dd><dt>label
> (optional)</dt><dd><p>A human-friendly display name for the term (e.g.
>              <span class="quote">“<span class="quote"><code
> class="computeroutput">Compute
>              Resource</code></span>”</span>)</p></dd></dl></div><p>Category
> schemes and/or terms defined by this standard reside
>        throughout the <code class="uri">http://purl.org/occi/</code>
> namespace but anyone can
> @@ -629,37 +746,64 @@
>          <code class="computeroutput">US-West</code>,
>          <code class="computeroutput">Europe</code>), operating systems
> (e.g.
>          <code class="computeroutput">Windows</code>,
> -        <code class="computeroutput">Linux</code>) and patch levels
> (e.g.</p></div><div class="section" title="Examples"><div
> class="titlepage"><div><div><h4 class="title"><a
> id="id36070583"/>Examples</h4></div></div></div><pre
> class="screen">Category: compute;
> +        <code class="computeroutput">Linux</code>) and patch levels
> (e.g.</p></div><div class="example"><a id="id36071201"/><p
> class="title"><b>Example 2. Category examples</b></p><div
> class="example-contents"><p>OCCI kinds are represented by a
> category:</p><pre class="screen">Category: compute;
>        label="Compute Resource";
> -      scheme="http://purl.org/occi/kind/"</pre></div><div class="section"
> title="Querying"><div class="titlepage"><div><div><h4 class="title"><a
> id="id36070594"/>Querying</h4></div></div></div><p class="remark"><i><span
> class="remark">TODO: Pull query interface from GData:
> -
> http://code.google.com/apis/gdata/docs/2.0/reference.html#Queries
> </span></i></p></div><div
> class="section" title="Registry Entries"><div
> class="titlepage"><div><div><h4 class="title"><a id="id36070605"/>Registry
> Entries</h4></div></div></div><div class="table"><a id="id36070611"/><p
> class="title"><b>Table 2. Core Category Schemes</b></p><div
> class="table-contents"><table summary="Core Category Schemes"
> border="1"><colgroup><col style="text-align:
> center"/><col/></colgroup><thead><tr><th style="text-align:
> left">Scheme</th><th>Description</th></tr></thead><tbody><tr><td
> style="text-align: left"><code
> class="computeroutput">http://purl.org/occi/kind/</code></td><td>OCCI
> Kinds</td></tr></tbody></table></div></div><br
> class="table-break"/></div></div><div class="section"
> title="Collections"><div class="titlepage"><div><div><h3 class="title"><a
> id="id36070664"/>Collections</h3></div></div></div><p>Where an operation
> could return multiple resources (e.g.
> +      scheme="http://purl.org/occi/kind#"</pre><p>Implementors and users
> can also define their own vocabularies by
> +        defining schemes:</p><pre class="screen">Category: cluster1;
> +      label="Cluster #1";
> +      scheme="http://example.com/clusters#"</pre></div></div><br
> class="example-break"/><div class="section" title="Querying"><div
> class="titlepage"><div><div><h4 class="title"><a
> id="id36071224"/>Querying</h4></div></div></div><p>The category query
> interface can be accessed by constructing an
> +        URL with the desired categories added to the path. Categories can
> be
> +        negated by prefixing with <span class="quote">“<span
> class="quote">-</span>”</span> and schemes may be
> +        specified with braces.</p><div class="example"><a
> id="id36071238"/><p class="title"><b>Example 3. Example category
> query</b></p><div class="example-contents"><p>Locate the category search
> root (which
> +          <span class="emphasis"><em>should</em></span> be <code
> class="uri">/-/</code>):</p><pre class="screen">&gt; HEAD / HTTP/1.1
> +&gt;
> +&lt; HTTP/1.1 200 OK
> +&lt; Link: &lt;/-/&gt;; rel="search"; title="Category
> Search"</pre><p>Discover the available categories (which will all be
> returned
> +          in the same format as they appear in the HTTP headers):</p><pre
> class="screen">&gt; GET /-/ HTTP/1.1
> +&gt; Accept: */*
> +&gt;
> +&lt; HTTP/1.1 200 OK
> +&lt; Content-type: application/occi
> +&lt;
> +&lt; Category: compute; label="Compute Resource";
> scheme="http://purl.org/occi/kind#"
> +&lt; Category: network; label="Network Resource";
> scheme="http://purl.org/occi/kind#"
> +&lt; Category: storage; label="Storage Resource";
> scheme="http://purl.org/occi/kind#"
> +&lt; Category: us-east; label="US East Coast";
> scheme="http://example.com/locations"
> +&lt; Category: us-west; label="US West Coast";
> scheme="http://example.com/locations"
> +&lt; Category: demo; label="My Customer Demo";
> scheme="http://example.com/~user/"</pre><p>Query the category search
> interface for the desired
> +          category(s):</p><pre class="screen">&gt; GET /-/compute/us-west
> HTTP/1.1
> +&gt; Accept: text/uri-list
> +&gt;
> +&lt; HTTP/1.1 200 OK
> +&lt; Content-type: text/uri-list
> +&lt;
> +&lt; /vm01
> +&lt; /webapp/web01
> +&lt; /webapp/web02
> +&lt; /webapp/db01</pre></div></div><br class="example-break"/></div><div
> class="section" title="Registry Entries"><div
> class="titlepage"><div><div><h4 class="title"><a id="id36071283"/>Registry
> Entries</h4></div></div></div><div class="table"><a id="id36071289"/><p
> class="title"><b>Table 2. Core Category Schemes</b></p><div
> class="table-contents"><table summary="Core Category Schemes"
> border="1"><colgroup><col style="text-align:
> center"/><col/><col/></colgroup><thead><tr><th style="text-align:
>
> left">Scheme</th><th>Description</th><th>Example</th></tr></thead><tbody><tr><td
> style="text-align: left"><code
> class="computeroutput">http://purl.org/occi/kind#</code></td><td>OCCI
> Kinds</td><td><code class="computeroutput">compute</code></td></tr><tr><td
> style="text-align: left"><code
> class="computeroutput">http://purl.org/occi/category#countries
> </code></td><td>ISO
> Country Codes</td><td><code
> class="computeroutput">us</code></td></tr><tr><td style="text-align:
> left"><code
> class="computeroutput">http://purl.org/occi/category#us-states
> </code></td><td>US
> States</td><td><code class="computeroutput">ca</code></td></tr><tr><td
> style="text-align: left"><code
> class="computeroutput">http://purl.org/occi/category#operating-systems
> </code></td><td>Operating
> Systems</td><td><code class="computeroutput">linux</code></td></tr><tr><td
> style="text-align: left"><code
> class="computeroutput">http://purl.org/occi/category#regulations
> </code></td><td>Regulation
> compliance</td><td><code
> class="computeroutput">sox</code></td></tr></tbody></table></div></div><br
> class="table-break"/><p>Other categories schemes can be added to the
> registry.</p></div></div><div class="section" title="Collections"><div
> class="titlepage"><div><div><h3 class="title"><a
> id="id36071429"/>Collections</h3></div></div></div><p>Where an operation
> could return multiple resources (e.g.
>        categories, searches) this is referred to as a
>        <em class="glossterm">collection</em>. Collections are returned as a
> list of
>        URLs in <code class="computeroutput">text/uri-list</code> format.<a
> class="xref" href="#core-rfc2483" title="RFC 2483 - URI Resolution Services
> Necessary for URN Resolution">RFC2483</a></p><div class="tip" title="Tip"
> style="margin-left: 0.5in; margin-right: 0.5in;"><h3
> class="title">Tip</h3><p>Collections are passed by reference for simplicity
> rather than
>          performance reasons, requiring O(n+1) requests. Including metadata
> -        (requiring a wrapper format like Atom or SOAP) and/or the data
> itself
> -        would provide O(1) performance, though passing by value should
> only be
> -        considered where the representations are known to be small as such
> -        encodings add significant overhead.</p></div><div class="section"
> title="Examples"><div class="titlepage"><div><div><h4 class="title"><a
> id="id36070694"/>Examples</h4></div></div></div><pre class="screen"># OCCI
> Example Collection
> +        (via a wrapper format like Atom or SOAP) and/or the data itself
> would
> +        provide O(1) performance, though this "pass by value" approach
> should
> +        only be considered where the representations are known to be small
> as
> +        encoding adds significant overhead.</p></div><div
> class="example"><a id="id36071460"/><p class="title"><b>Example 4. Example
> collection</b></p><div class="example-contents"><pre class="screen"># OCCI
> Example Collection
>  /examples/custom-extension
>  /examples/lamp-multi-vm
>  /examples/lamp
> -/examples/myservice</pre></div><div class="section"
> title="Advertising"><div class="titlepage"><div><div><h4 class="title"><a
> id="id36070706"/>Advertising</h4></div></div></div><p>Any given URL can be
> a collection and/or advertise
> -        <em class="glossterm">link</em>s to other
> -        <em class="glossterm">collection</em>s using the
> -        <code class="computeroutput">collection</code> class:</p><pre
> class="screen">Link: &lt;http://example.com/123/audit&gt;;
> -      rel="http://purl.org/occi/collection/audit";
> -      title="Audit Entries"</pre><div class="tip" title="Tip"
> style="margin-left: 0.5in; margin-right: 0.5in;"><h3
> class="title">Tip</h3><p>The root (<span class="quote">“<span
> class="quote">/</span>”</span>) <span
> class="emphasis"><em>should</em></span> expose
> -          collections <em class="glossterm">in-band</em> and/or
> -          <em class="glossterm">out-of-band</em> in order for clients to
> discover
> -          resources.</p></div></div><div class="section"
> title="Paging"><div class="titlepage"><div><div><h4 class="title"><a
> id="id36070753"/>Paging</h4></div></div></div><p>Collections <span
> class="emphasis"><em>may</em></span> be divided into
> +/examples/myservice</pre></div></div><br class="example-break"/><div
> class="section" title="Paging"><div class="titlepage"><div><div><h4
> class="title"><a
> id="id36071472"/>Paging</h4></div></div></div><p>Collections <span
> class="emphasis"><em>may</em></span> be divided into
>          <em class="glossterm">page</em>s, with each linking to the
>          <span class="quote">“<span class="quote">first</span>”</span>,
> <span class="quote">“<span class="quote">last</span>”</span>, <span
> class="quote">“<span class="quote">next</span>”</span> and
> -        <span class="quote">“<span class="quote">previous</span>”</span>
> <em class="glossterm">link relation</em>s.</p><pre class="screen">Link:
> &lt;http://example.com/xyz;start=0&gt;; rel="first"
> -Link: &lt;http://example.com/xyz;start=400&gt;; rel="previous"
> -Link: &lt;http://example.com/xyz;start=500&gt;; rel="self"
> -Link: &lt;http://example.com/xyz;start=600&gt;; rel="next"
> -Link: &lt;http://example.com/xyz;start=900&gt;;
> rel="last"</pre></div></div><div class="section" title="Linking"><div
> class="titlepage"><div><div><h3 class="title"><a
> id="id36070795"/>Linking</h3></div></div></div><p>Web linking standards for
> HTTP [<a class="xref" href="#core-link" title="Web Linking">LINK</a>] and
> +        <span class="quote">“<span class="quote">previous</span>”</span>
> <em class="glossterm">link relation</em>s. The
> +        required <em class="parameter"><code>class</code></em> extension,
> with the value of
> +        <em class="parameter"><code>paging</code></em>, allows clients to
> group links together
> +        in the user interface and the server to specify e.g. "Next
> 10", "Next
> +        100", etc.</p><pre class="screen">Link:
> &lt;http://example.com/xyz;start=0&gt;; rel="first"; title="First";
> class="paging"
> +Link: &lt;http://example.com/xyz;start=400&gt;; rel="previous";
> title="Previous"; class="paging"
> +Link: &lt;http://example.com/xyz;start=500&gt;; rel="self"; title="Self";
> class="paging"
> +Link: &lt;http://example.com/xyz;start=600&gt;; rel="next"; title="Next";
> class="paging"
> +Link: &lt;http://example.com/xyz;start=900&gt;; rel="last"; title="Last";
> class="paging"</pre></div></div><div class="section" title="Linking"><div
> class="titlepage"><div><div><h3 class="title"><a
> id="id36071523"/>Linking</h3></div></div></div><p>Web linking standards for
> HTTP [<a class="xref" href="#core-link" title="Web Linking">LINK</a>] and
>        HTML [<a class="xref" href="#core-html5" title="HTML 5">HTML5</a>]
> are used to indicate associations
>        between resources. All formats <span
> class="emphasis"><em>must</em></span> support
>        <em class="glossterm">in-band</em> linking including:</p><div
> class="itemizedlist"><ul class="itemizedlist"><li class="listitem"><p>Link
> relations (e.g.
> @@ -672,12 +816,7 @@
>        type="application/pdf"</pre><p><em class="glossterm">Link
> relation</em>s defined by this standard
>        reside under the <code class="uri">http://purl.org/occi/rel</code>
> namespace but
>        anyone can define a new <em class="glossterm">link relation</em> by
> -      allocating a URI they control.</p><div class="section"
> title="Registry Entries"><div class="titlepage"><div><div><h4
> class="title"><a id="id36071020"/>Registry
> Entries</h4></div></div></div><div class="table"><a id="id36071026"/><p
> class="title"><b>Table 3. Core Link Relations</b></p><div
> class="table-contents"><table summary="Core Link Relations"
> border="1"><colgroup><col style="text-align:
> center"/><col/></colgroup><thead><tr><th style="text-align:
> left">Relation</th><th>Description</th></tr></thead><tbody><tr><td
> style="text-align: left"><code class="computeroutput">collection</code>
> -                (<code
> class="uri">http://purl.org/occi/rel#collection</code>)</td><td><p>A
> related collection whereby:</p><div class="itemizedlist"><ul
> class="itemizedlist"><li class="listitem"><p>The root of the collection is
> indicated by the
> -                      <code class="computeroutput">href</code>
> attribute.</p></li><li class="listitem"><p>The <em
> class="glossterm">kind</em> of the collection
> -                      is indicated by the
> -                      <code class="computeroutput">kind</code> extended
> -                      attribute.</p></li></ul></div></td></tr><tr><td
> style="text-align: left"><code
> class="computeroutput">first</code></td><td><span class="quote">“<span
> class="quote">An IRI that refers to the furthest preceding
> +      allocating a URI they control.</p><div class="section"
> title="Registry Entries"><div class="titlepage"><div><div><h4
> class="title"><a id="id36071613"/>Registry
> Entries</h4></div></div></div><div class="table"><a id="id36071619"/><p
> class="title"><b>Table 3. Core Link Relations</b></p><div
> class="table-contents"><table summary="Core Link Relations"
> border="1"><colgroup><col/><col/></colgroup><thead><tr><th
> style="text-align:
> left">Relation</th><th>Description</th></tr></thead><tbody><tr><td
> style="text-align: left"><code
> class="computeroutput">first</code></td><td><span class="quote">“<span
> class="quote">An IRI that refers to the furthest preceding
>                  resource in a series of resources.</span>”</span> [<a
> class="xref" href="#core-link" title="Web
> Linking">LINK</a>]</td></tr><tr><td style="text-align: left"><code
> class="computeroutput">help</code></td><td><span class="quote">“<span
> class="quote">The referenced document provides further help
>                  information for the page as a whole.</span>”</span> [<a
> class="xref" href="#core-html5" title="HTML 5">HTML5</a>]</td></tr><tr><td
> style="text-align: left"><code
> class="computeroutput">icon</code></td><td><span class="quote">“<span
> class="quote">The specified resource is an icon representing
>                  the page or site, and should be used by the user agent
> when
> @@ -687,20 +826,20 @@
> ***The diff for this file has been truncated for email.***
> =======================================
> --- /docs/occi-book.pdf Wed Oct 28 18:16:54 2009
> +++ /docs/occi-book.pdf Sun Feb 21 07:32:22 2010
> Binary file, no diff available.
> =======================================
> --- /docs/occi-book.xml Wed Oct 28 18:16:54 2009
> +++ /docs/occi-book.xml Sun Feb 21 07:32:22 2010
> @@ -17,7 +17,7 @@
>        <contrib>Author</contrib>
>
>        <affiliation>
> -        <orgname>Australian Online Solutions</orgname>
> +        <orgname>Google</orgname>
>        </affiliation>
>      </author>
>
>
>
> ==============================================================================
> Revision: 235906a914
> Author: Sam Johnston <samj at samj.net>
> Date: Sun Feb 21 07:33:00 2010
> Log: merged
> http://code.google.com/p/occi/source/detail?r=235906a914
>
>
> _______________________________________________
> occi-wg mailing list
> occi-wg at ogf.org
> http://www.ogf.org/mailman/listinfo/occi-wg
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.ogf.org/pipermail/occi-wg/attachments/20100221/0ab64411/attachment.html 


More information about the occi-wg mailing list