<?xml version="1.0" encoding="UTF-8"?>
<page>
  <created-at type="datetime">2009-03-11T05:37:31Z</created-at>
  <description>Reverted to revision #40</description>
  <id type="integer">1047</id>
  <name>CloudAPISpecificationResourceModels</name>
  <number type="integer">40</number>
  <person-id type="integer">5056</person-id>
  <text>&lt;h1&gt;Cloud API Specification - Resource Models&lt;/h1&gt;

__TOC__

This section specifies the representations of the resources which this API operates on.  The representations are made up of '''fields''', each with a name and value, encoded using a JSON dictionary.  The values may be numeric or string literals, lists, or dictionaries, each of which are represented in the obvious way in JSON.

These representations typically nest.  For example, the representation of a VDC will include representations of the Clusters which inhabit it, which in turn include representations of the VMs within each cluster.  Two points follow from this:
* Retrieving the representation of a VDC gives a comprehensive snapshot of the current state of everything in it using a single GET request.  The size of these representations seems, in practice, not excessive.
* Many of the models specify that the representation includes a '''uri''' field whose value is the URI of the resource being represented.  This is present to support URI discovery in nested representations.

Each type of cloud resource has its own Internet Media Type.  The media type '''SHALL''' conform to the pattern ''application/vnd.com.sun.cloud.Xxxxxxxx+json'', and the specific media type for each resource model is included in square brackets in the corresponding section header.

In the resource model descriptions, fields annotated with '''[POST]''' may be included in a POST request, which is normally used to create new resources.  Likewise, fields annotated with '''[PUT]''' may be included in a PUT request, which is normally used to update properties of existing resources.  Fields not so annotated '''SHOULD NOT''' be included in the request body of PUT and POST requests, and will be ignored by the server if they are included.

= Cloud [application/vnd.com.sun.cloud.Cloud+json] =

A ''Cloud'' represents a user's view of all accessible resources in the cloud.

A &quot;Cloud&quot; resource model contains the following fields:

{|- border=&quot;1&quot; width=&quot;100%&quot;
! Field Name
! Type
! Occurs
! Description
|-
| uri
| URI
| 1
| A GET against this URI refreshes the client representation of the resources accessible to this user.
|-
| locations
| Location[]
| 0..1
| The set of locations for VDC deployment that are supported by this service provider.
|-
| vdcs
| VDC[]
| 0..1
| Virtual data center(s) accessible to this user.  Only the ''name'' and ''uri'' fields '''MUST''' be populated by the server.
|-
| specification_version
| String[]
| 1
| Which version(s) of this specification this server implementation supports.
|-
| implementation_version
| String
| 1
| Version of the server implementation.
|}

= Location [application/vnd.com.sun.cloud.Location+json] =

A ''Location'' represents a particular geographic or other physical location.  VDCs are provisioned within a particular location such that the various included elements may have high bandwidth and secure connectivity.

A &quot;Location&quot; resource model contains the following fields:

{|- border=&quot;1&quot; width=&quot;100%&quot;
! Field Name
! Type
! Occurs
! Description
|-
| name
| String
| 1
| Logical name for this location.
|-
| uri
| URI
| 1
| A GET against this URI refreshes the client representation of this ''Location'' resource.
|-
| description
| String
| 0..1
| Human friendly description of this ''Location''. [POST][PUT]
|}

= Virtual Data Center (VDC) [application/vnd.com.sun.cloud.VDC+json] =

A ''VDC'' represents a user's view of available resources in a single virtual data center.  It also provides URIs for acquiring related resource representations, as well as URIs for creating new resources of various types.

A &quot;VDC&quot; resource model contains the following fields:

{|- border=&quot;1&quot; width=&quot;100%&quot;
! Field Name
! Type
! Occurs
! Description
|-
| name
| String
| 1
| Logical name of this virtual data center. [POST][PUT]
|-
| uri
| URI
| 1
| A GET against this URI refreshes the client representation of this virtual data center.
|-
| description
| String
| 0..1
| Human friendly description of this ''VDC''. [POST][PUT]
|-
| location
| URI
| 0..1
| URI of the ''Location'' within which resources for this ''VDC'' are physically deployed. [POST]
|-
| addresses
| PublicAddress[]
| 1
| The static public IP addresses which are allocated for use in this VDC.  PublicAddress resources that are currently attached will have a URI value in the &quot;vm&quot; field describing to which VM that address is currently attached.
|-
| cluster
| Cluster
| 1
| The root cluster associated with this VDC.
|-
| tags
| [ ]
| 0..1
| Arbitrary values assigned by the user.  These values have no semantic impact on the operation of the cloud. [POST][PUT]
|-
| volumes
| Volume[]
| 1
| The WebDAV volumes (in the storage service) owned by this user.
|-
| vm_templates
| URI
| 1
| A GET request against this URI returns an array of available templates (type=''application/vnd.com.sun.cloud.VMTemplates+json).
|}

= Request Status [application/vnd.com.sun.cloud.Status+json] =

A ''status'' represents a report on the progress of a request for a change in the state of the cloud.  Such requests receive an HTTP status code of &quot;202 Accepted&quot;, with the response body being a Status representation.

This is designed to be used by applications to poll the server to track the progress of a request; thus, server implementations SHOULD anticipate this activity and make such polling reasonably lightweight.

A ''status'' resource model contains the following fields:

{|- border=&quot;1&quot; width=&quot;100%&quot;
! Field Name
! Type
! Occurs
! Description
|-
| op
| String
| 1
| Identifies the nature of the request whose status this represents. The possible values are described in the specifications of the individual requests.
|-
| progress
| Integer in the range 0-100, inclusive
| 1
| Represents the progress towards completion of the request.  A value of 100 indicates that the request has completed.  There is no requirement that implementations be able to predict the latency of requests; it should not be surprising if, during the lifetime of a request, the progress value remains at 0 until it changes to 100 upon request completion.
|-
| target_uri
| URI
| 1
| Identifies the resource upon which the request is acting.  Specific semantics depend on the details of the request, and are described fully in the specifications of the individual requests.
|-
| status_uri
| URI
| 1
| Identifies this status resource and may be used to retrieve an up-to-date status report.
|-
| status
| Integer
| 1
| HTTP status code describing the result of the completed operation. Typical values would be 200, 201, and various error codes.  This value is only meaningful if the value of the &quot;progress&quot; field is 100.
|-
| message
| String
| 1
| Brief message describing the completed operation (if successful) or an error message (if not successful).  This value is only meaningful if the value of the &quot;progress&quot; field is 100.
|}

= Public Address [application/vnd.com.sun.cloud.PublicAddress+json] =

A ''public address'' represents a static, publicly accessible Internet Protocol (IP) address, which can be attached to a particular ''VM'' via an ''interface''.  The fact that this address is static means it is suitable for registration with the Domain Name Service (DNS) environment for your application domain.  Typically, the ''VM'' that a public address is attached to will be a firewall appliance, but this is not required by the Cloud API itself.

A ''public address'' resource model contains the following fields:

{|- border=&quot;1&quot; width=&quot;100%&quot;
! Field Name
! Type
! Occurs
! Description
|-
| name
| String
| 1
| Logical name of this Public Address (unique within owning VDC).  [POST][PUT]
|-
| uri
| URI
| 1
| URI by which this public address may be addressed as a standalone resource.
|-
| description
| String
| 0..1
| Human friendly description of this ''Public Address''. [POST][PUT]
|-
| vdc
| URI
| 1
| URI of the ''VDC'' this ''PublicAddress'' belongs to.
|-
| dns
| String[]
| 1
| List of DNS server IP addresses to be used for connecting out through this Internet connection.  [POST][PUT]
|-
| domain_names
| String[]
| 0..1
| Optional list of domain names associated with this public IP address (informational only).  [POST][PUT]
|-
| gateway
| String
| 1
| Gateway for this Internet connection.
|-
| ip_address
| String
| 1
| Physical IP address represented by this ''public address'' instance.
|-
| netmask
| String
| 1
| Netmask for this Internet connection.
|-
| tags
| [ ]
| 0..1
| Arbitrary values assigned by the user.  These values have no semantic impact on the operation of the cloud.  [POST][PUT]
|-
| vm
| URI
| 0..1
| URI of the VM to which this address is attached, if any.
|}

= Cluster [application/vnd.com.sun.cloud.Cluster+json] =

A ''cluster'' represents a grouping of ''VM'' and ''VNet'' resources, segregated for purposes of grouping by common functionality, shared access control, or other purposes.  Each VDC contains, by definition, one root ''cluster'', which may in turn contain other clusters; the effect is that of a filesystem-like hierarchy of clusters.

A ''cluster'' resource model contains the following fields:

{|- border=&quot;1&quot; width=&quot;100%&quot;
! Field Name
! Type
! Occurs
! Description
|-
| name
| String
| 1
| Logical name of this cluster, unique within the owning VDC.  [POST][PUT]
|-
| uri
| URI
| 1
| URI by which this ''cluster'' may be addressed as a standalone resource.
|-
| description
| String
| 0..1
| Human friendly description of this ''Cluster''. [POST][PUT]
|-
| vdc
| URI
| 1
| URI of the ''VDC'' this ''Cluster'' belongs to.
|-
| parent
| URI
| 0..1
| URI of the parent ''Cluster'' for this ''Cluster'' (if this is not the root cluster of a ''VDC'').
|-
| from_cluster
| URI
| 0..1
| On a ''Create Cluster'' request type, the URI of an existing cluster to initialize default values from.  [POST]
|-
| tags
| [ ]
| 0..1
| Arbitrary values assigned by the user.  These values have no semantic impact on the operation of the cloud.  [POST][PUT]
|-
| vnets
| VNet[]
| 0..1
| The collection of virtual private networks associated with this Cluster.
|-
| vms
| VM[]
| 0..1
| The collection of virtual machines associated with this cluster.
|-
| controllers
| {}
| 0..1
| Hash of URIs which may be used to request state changes in the cluster via POST requests (see next table), keyed by the type of state change being requested.
|-
| clusters
| Cluster[]
| 0..1
| Collection of Clusters which are logically contained in this cluster.
|}

Some of the &quot;control&quot; URIs may or may not be accessible based on the state of the cluster, and may not appear in representations of it when not usable. For convenience, these are grouped into the &quot;controllers&quot; list field, in which zero or more of the following URIs (keyed by the change type) will be included in a representation provided by the server. 

{|- border=&quot;1&quot; width=&quot;100%&quot;
! Change Type
! Operation Requested
|-
| start
| Start up all the VMs in this cluster, in ascending order based on the ''boot_order'' value of each VM.
|-
| stop
| Shut down all the VMs this cluster, in descending order based on the ''boot_order'' value of each VM.
|}

= Volume [application/vnd.com.sun.cloud.Volume+json] =

A ''Volume'' represents a remote WebDAV volume that may be accessed by the same credentials used to access this information.  Such volumes are global to the calling user, and are therefore enumerated in the containing ''VDC''.  

A ''Volume'' resource model contains the following fields:

{|- border=&quot;1&quot; width=&quot;100%&quot;
! Field Name
! Type
! Occurs
! Description
|-
| name
| String
| 1
| Logical name of this volume (unique within the owning VDC).  [POST][PUT]
|-
| uri
| URI
| 1
| GET, PUT, and DELETE operations may be used to retrieve, update, or delete this volume.
|-
| description
| String
| 0..1
| Human friendly description of this ''Volume''. [POST][PUT]
|-
| vdc
| URI
| 1
| URI of the ''VDC'' this ''Volume'' belongs to.
|-
| webdav
| URI
| 1
| The URI for use in any WebDAV operations.
|-
| created
| Timestamp
| 1
| Date and time when this volume was created.
|-
| snapshots
| Snapshot[]
| 0..1
| Collection of snapshots associated with this volume.
|-
| tags
| [ ]
| 0..1
| Arbitrary values assigned by the user.  These values have no semantic impact on the operation of the cloud.  [POST][PUT]
|}

= Snapshot [application/vnd.com.sun.cloud.Snapshot+json] =

A ''Snapshot'' represents a point-in-time representation of the contents of a ''Volume''.

A ''Snapshot'' resource model contains the following fields:

{|- border=&quot;1&quot; width=&quot;100%&quot;
! Field Name
! Type
! Occurs
! Description
|-
| name
| String
| 1
| Logical name of this snapshot, unique within the owning ''Volume''.  [POST]
|-
| uri
| URI
| 1
| GET, PUT, and DELETE operations may be used to retrieve, update, or delete this snapshot.
|-
| description
| String
| 0..1
| Human friendly description of this ''Snapshot''. [POST][PUT]
|-
| volume
| URI
| 1
| URI of the ''Volume'' this ''Snapshot'' belongs to.
|-
| created
| Timestamp
| 1
| Date and time when this snapshot was created.
|-
| clone
| URI
| 0..1
| A POST to this URI is a request to clone this snapshot into a new volume with a name included in the request body.
|-
| rollback
| URI
| 0..1
| A POST to ths URI is a request to revert the owning volume to the contents as of when this snapshot was created.
|}

= Virtual Machine (VM) [application/vnd.com.sun.cloud.VM+json] =

A ''VM'' represents a virtual computer that is associated with a cluster.

A ''VM'' data model contains the following fields:

{|- border=&quot;1&quot; width=&quot;100%&quot;
! Field Name
! Type
! Occurs
! Description
|-
| name
| String
| 1
| Logical name of this VM, unique within the owning Cluster.  [POST][PUT]
|-
| uri
| URI
| 1
| GET, PUT, and DELETE may be used to retrieve representations of the VM, to update it, and to delete it, respectively.
|-
| description
| String
| 0..1
| Human friendly description of this ''VM''. [POST][PUT]
|-
| cluster
| URI
| 1
| URI of the ''Cluster'' this ''VM'' belongs to.
|-
| run_status
| String
| 0..1
| Current running status of this virtual machine (read only).  Valid values for this field are &quot;STOPPED&quot;, &quot;STARTING&quot;, &quot;STARTED&quot;, &quot;SLEEPING&quot;, &quot;ASLEEP&quot;, &quot;WAKING&quot;, and &quot;STOPPING&quot;.  Initial run_status of a newly created VM is &quot;STOPPED&quot;.
|-
| updated
| Boolean
| 1
| A value of true means that a change has been made to the VM resource, which will not take effect until the VM has been rebooted.
|-
| last_boot
| Timestamp
| 1
| Date when this VM was most recently booted.
|-
| from_template
| String
| 0..1
| On a ''Create VM'' request type, the URI of an existing ''VM template'' to initialize default values from.  [POST]
|-
| from_vm
| String
| 0..1
| On a ''Create VM'' request type, the URI of an existing ''VM'' to initialize default values from.  [POST]
|-
| hostname
| String
| 0..1
| Fully qualified (?) host name of this virtual machine.
|-
| os
| String
| 0..1
| Operating system running on the VM.  FIXME - enumerate the legal values.  [POST]
|-
| cpu
| Integer
| 0..1
| CPU speed in Mhz.  [POST]
|-
| memory
| Integer
| 0..1
| Main memory size in MB.  [POST]
|-
| boot_disk
| Integer
| 0..1
| Boot disk space to allocate in GB.  [POST]
|-
| data_disk
| Integer
| 0..1
| Data disk space to allocate in GB.  [POST]
|-
| temp_disk
| Integer
| 0..1
| Temporary disk space to allocate in GB.  [POST]
|-
| boot_order
| Integer
| 0..1
| Sort ordering value for ''start cluster'' and ''stop cluster'' operations.  When a cluster is started, VMs with the same ''boot_order'' value will be started in an undefined sequence, but the service will ensure that all VMs with a particular ''boot_order'' value will have been started before starting VMs with a higher ''boot_order'' value.  The sequence is reversed for a ''stop cluster'' operation.  VMs with no ''boot_order'' value will be assumed to have a ''boot_order'' of the maximum integer value, so they will be started last and stopped first.  [POST][PUT]
|-
| params
| { }
| 0..1
| Configuration parameters for this VM, keyed by parameter name.  The list of system defined configuration parameters is TBD, but one of them will be &quot;user_params&quot;, whose value is a hash of arbitrary user defined configuration parameters.  [POST][PUT]
|-
| tags
| [ ]
| 0..1
| Arbitrary values assigned by the user.  These values have no semantic impact on the operation of the cloud.  [POST][PUT]
|-
| back_up
| URI
| 1
| A POST of a Backup representation to this URI requests creation of a new Backup.
|-
| attach
| URI
| 1
| A POST of a PublicAddress representation to this URI requests connection to a Public Address.  Or, a POST of a VNet representation to this URI requests connection to a VNet.
|-
| detach
| URI
| 1
| A POST of a PublicAddress representation to this URI requests disconnection from a Public Address.  Or, a POST of a VNet representation to this URI reequests disconnection from a VNet.
|-
| backups
| Backup[]
| 0..1
| Backup snapshots from this virtual machine.
|-
| interfaces
| Interface[]
| 1
| Network interfaces associated with this virtual machine.  These are created automatically when VNets or Public Addresses are associated with VM.[POST]
|-
| controllers
| {}
| 0..1
| Hash of URIs which may be used to request state changes in the VM via POST requests (see next table), keyed by the type of state change being requested.
|}

Some of the &quot;control&quot; URIs, such as those identified in the &quot;attach&quot; and &quot;detach&quot; fields, are in principle always accessible and thus appear as first-class values in the representation of a VM.  Others may or may not be accessible based on the state of the VM, and may not appear in representations of it when not accessible. For convenience, these are grouped into the &quot;controllers&quot; list field, in which zero or more of the following URIs (keyed by the change type) will be included in a representation provided by the server. 

{|- border=&quot;1&quot; width=&quot;100%&quot;
! Change Type
! Operation Requested
! Initial State
! Intermediate State
! Final State
|-
| start
| Start up a VM.
| STOPPED
| STARTING
| STARTED
|-
| stop
| Shut down a running VM.
| STARTED
| STOPPING
| STOPPED
|-
| reboot
| Reboot a running VM.
| STARTED
| STOPPING -&gt; STOPPED -&gt; STARTING
| STARTED
|-
| hibernate
| Put a running VM to sleep.
| STARTED
| SLEEPING
| ASLEEP
|-
| resume
| Wake up a hibernated VM.
| ASLEEP
| WAKING
| STARTED
|}

= Backup [application/vnd.com.sun.cloud.Backup+json] =

A ''backup'' represents a snapshot that was taken of a specific virtual machine.

A ''backup'' resource model contains the following fields:

{|- border=&quot;1&quot; width=&quot;100%&quot;
! Field Name
! Type
! Occurs
! Description
|-
| name
| String
| 1
| Logical name of this backup, unique within owning VM. [POST][PUT]
|-
| uri
| URI
| 1
| GET, PUT, and DELETE may be used to retrieve representations of the Backup, to update it, and to delete it, respectively.
|-
| description
| String
| 0..1
| Human friendly description of this ''Backup''. [POST][PUT]
|-
| type
| String
| 0..1
| Type of this backup (service provider default if not specified). [POST]
|-
| created
| DateTime
| 1
| Timestamp when this backup was created.
|-
| restore
| URI
| 1
| URI that will accept a POST to restore the state of the associated VM to this Backup.
|-
| vm
| URI
| 1
| URI of the VM that this Backup was captured for.
|-
| tags
| [ ]
| 0..1
| Arbitrary values assigned by the user.  These values have no semantic impact on the operation of the cloud.  [POST][PUT]
|}

= Virtual Network (VNet) [application/vnd.com.sun.cloud.VNet+json] =

A ''VNet'' represents a virtual private network to which an ''interface'' associated with a ''VM'' may be attached.  VNets may connect VMs within a ''Cluster'', or they may connect VMs from different clusters together to provide a private communications path.

A ''VNet'' is logically contained within a cluster, but this relationship only exists for administrative purposes and does not affect the operations available on it.

A ''VNet'' resource model contains the following fields:

{|- border=&quot;1&quot; width=&quot;100%&quot;
! Field Name
! Type
! Occurs
! Description
|-
| name
| String
| 1
| Logical name of this ''VNet'', unique within the owning ''Cluster''. [POST][PUT]
|-
| uri
| URI
| 1
| URI that may be used to access this VNet as a standalone resource.
|-
| description
| String
| 0..1
| Human friendly description of this 'VNet''. [POST][PUT]
|-
| cluster
| URI
| 1
| URI of the ''Cluster'' this ''VNet'' belongs to.
|-
| netmask
| String
| 1
| Default network mask for interfaces connected to this VNet.
|-
| tags
| [ ]
| 0..1
| Arbitrary values assigned by the user.  These values have no semantic impact on the operation of the cloud. [POST][PUT]
|}

= Interface [application/vnd.com.sun.cloud.Interface+json] =

An ''interface'' represents a network interface card (nic), associated with a specific VM, that documents an IP connection (from this VM) either to a ''VNet'' (virtual private network) or to a ''public address'' (a static public IP address accessible from the Internet).  For the latter scenario, the VM will typically implement firewall and/or load balancing functionality, but this is not required by the API.

''Interface'' instances are created, modified, and removed as a side effect of other operations.  Therefore, they do not possess a URI of their own, and support no operations against themselves directly.

A ''interface'' resource model contains the following fields:

{|- border=&quot;1&quot; width=&quot;100%&quot;
! Field Name
! Type
! Occurs
! Description
|-
| vnet
| URI
| 0..1
| The URI of the ''VNet'' instance, if this interface is attached to one.  At most one of ''vnet'' or ''public address'' must be defined.
|-
| public_address
| URI
| 0..1
| The URI of the ''public address'' instance, if this interface is attached to one.  At most one of ''vnet'' or ''public address'' must be defined.
|-
| nic
| String
| 1
| Name of the network interface connector as seen by the host operating system.
|-
| mac_address''
| String
| 1
| MAC address of this network interface.
|-
| ip_address''
| String
| 1
| IP address of this network interface.  If the interface is connected to a Public Address, will be a duplicate of its ip_address field.
|}

= Virtual Machine Template (VMTemplate) [application/vnd.com.sun.cloud.VMTemplate+json] =

A ''VMTemplate'' represents a preconfigured virtual machine image that may be &quot;cloned&quot; in a Create Virtual Machine request, by specifying the URI of a particular template as the value of the ''from_template'' field.

A ''VMTemplate'' data model contains the following fields:

{|- border=&quot;1&quot; width=&quot;100%&quot;
! Field Name
! Type
! Occurs
! Description
|-
| name
| String
| 1
| Logical name of this VMTemplate.
|-
| uri
| URI
| 1
| URI to reference this template in a Create Virtual Machine request.
|-
| description
| String
| 0..1
| Human friendly description of this virtual machine template.
|-
| os
| String
| 0..1
| Operating system running on the VM.  FIXME - enumerate the legal values.
|-
| cpu
| Integer
| 0..1
| CPU speed in Mhz.
|-
| memory
| Integer
| 0..1
| Main memory size in MB.
|-
| boot_disk
| Integer
| 0..1
| Boot disk space to allocate in GB.
|-
| data_disk
| Integer
| 0..1
| Data disk space to allocate in GB.
|-
| temp_disk
| Integer
| 0..1
| Temporary disk space to allocate in GB.
|-
| params
| { }
| 0..1
| Configuration parameters for this VM, keyed by parameter name.  The list of system defined configuration parameters is TBD, but one of them will be &quot;user_params&quot;, whose value is a hash of arbitrary user defined configuration parameters.
|-
| tags
| [ ]
| 0..1
| Arbitrary values assigned by the user.  These values have no semantic impact on the operation of the cloud.
|}

Copyright &amp;copy; Sun Microsystems, 2009.  This work is licensed under [http://creativecommons.org/licenses/by/3.0/ Creative Commons Attribution 3.0 Unported License]
</text>
  <text-as-html>&lt;p&gt;&lt;h1&gt;Cloud API Specification - Resource Models&lt;/h1&gt;

&lt;/p&gt;&lt;div id='toc' class='toc'&gt;
           &lt;div id='toctitle' class='toc-title'&gt;
             &lt;span&gt;Contents&lt;/span&gt;
           &lt;/div&gt;
           &lt;div id='toccontents' class='toc-contents'&gt;&lt;ul&gt;&lt;li&gt;1 &lt;a href='#Cloud_[application/vnd.com.sun.cloud.Cloud+json]'&gt; Cloud [application/vnd.com.sun.cloud.Cloud+json] &lt;/a&gt;&lt;/li&gt;
&lt;li&gt;2 &lt;a href='#Location_[application/vnd.com.sun.cloud.Location+json]'&gt; Location [application/vnd.com.sun.cloud.Location+json] &lt;/a&gt;&lt;/li&gt;
&lt;li&gt;3 &lt;a href='#Virtual_Data_Center_(VDC)_[application/vnd.com.sun.cloud.VDC+json]'&gt; Virtual Data Center (VDC) [application/vnd.com.sun.cloud.VDC+json] &lt;/a&gt;&lt;/li&gt;
&lt;li&gt;4 &lt;a href='#Request_Status_[application/vnd.com.sun.cloud.Status+json]'&gt; Request Status [application/vnd.com.sun.cloud.Status+json] &lt;/a&gt;&lt;/li&gt;
&lt;li&gt;5 &lt;a href='#Public_Address_[application/vnd.com.sun.cloud.PublicAddress+json]'&gt; Public Address [application/vnd.com.sun.cloud.PublicAddress+json] &lt;/a&gt;&lt;/li&gt;
&lt;li&gt;6 &lt;a href='#Cluster_[application/vnd.com.sun.cloud.Cluster+json]'&gt; Cluster [application/vnd.com.sun.cloud.Cluster+json] &lt;/a&gt;&lt;/li&gt;
&lt;li&gt;7 &lt;a href='#Volume_[application/vnd.com.sun.cloud.Volume+json]'&gt; Volume [application/vnd.com.sun.cloud.Volume+json] &lt;/a&gt;&lt;/li&gt;
&lt;li&gt;8 &lt;a href='#Snapshot_[application/vnd.com.sun.cloud.Snapshot+json]'&gt; Snapshot [application/vnd.com.sun.cloud.Snapshot+json] &lt;/a&gt;&lt;/li&gt;
&lt;li&gt;9 &lt;a href='#Virtual_Machine_(VM)_[application/vnd.com.sun.cloud.VM+json]'&gt; Virtual Machine (VM) [application/vnd.com.sun.cloud.VM+json] &lt;/a&gt;&lt;/li&gt;
&lt;li&gt;10 &lt;a href='#Backup_[application/vnd.com.sun.cloud.Backup+json]'&gt; Backup [application/vnd.com.sun.cloud.Backup+json] &lt;/a&gt;&lt;/li&gt;
&lt;li&gt;11 &lt;a href='#Virtual_Network_(VNet)_[application/vnd.com.sun.cloud.VNet+json]'&gt; Virtual Network (VNet) [application/vnd.com.sun.cloud.VNet+json] &lt;/a&gt;&lt;/li&gt;
&lt;li&gt;12 &lt;a href='#Interface_[application/vnd.com.sun.cloud.Interface+json]'&gt; Interface [application/vnd.com.sun.cloud.Interface+json] &lt;/a&gt;&lt;/li&gt;
&lt;li&gt;13 &lt;a href='#Virtual_Machine_Template_(VMTemplate)_[application/vnd.com.sun.cloud.VMTemplate+json]'&gt; Virtual Machine Template (VMTemplate) [application/vnd.com.sun.cloud.VMTemplate+json] &lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;
         &lt;/div&gt;&lt;p&gt;&lt;br /&gt;

&lt;/p&gt;&lt;p&gt;This section specifies the representations of the resources which this API operates on.  The representations are made up of &lt;b&gt;fields&lt;/b&gt;, each with a name and value, encoded using a JSON dictionary.  The values may be numeric or string literals, lists, or dictionaries, each of which are represented in the obvious way in JSON.

&lt;/p&gt;&lt;p&gt;These representations typically nest.  For example, the representation of a VDC will include representations of the Clusters which inhabit it, which in turn include representations of the VMs within each cluster.  Two points follow from this:
&lt;/p&gt;&lt;ul&gt;&lt;li&gt; Retrieving the representation of a VDC gives a comprehensive snapshot of the current state of everything in it using a single GET request.  The size of these representations seems, in practice, not excessive.
&lt;/li&gt;&lt;li&gt; Many of the models specify that the representation includes a &lt;b&gt;uri&lt;/b&gt; field whose value is the URI of the resource being represented.  This is present to support URI discovery in nested representations.
&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;
Each type of cloud resource has its own Internet Media Type.  The media type &lt;b&gt;SHALL&lt;/b&gt; conform to the pattern &lt;i&gt;application/vnd.com.sun.cloud.Xxxxxxxx+json&lt;/i&gt;, and the specific media type for each resource model is included in square brackets in the corresponding section header.

&lt;/p&gt;&lt;p&gt;In the resource model descriptions, fields annotated with &lt;b&gt;[POST]&lt;/b&gt; may be included in a POST request, which is normally used to create new resources.  Likewise, fields annotated with &lt;b&gt;[PUT]&lt;/b&gt; may be included in a PUT request, which is normally used to update properties of existing resources.  Fields not so annotated &lt;b&gt;SHOULD NOT&lt;/b&gt; be included in the request body of PUT and POST requests, and will be ignored by the server if they are included.

&lt;/p&gt;&lt;h1&gt;&lt;a name='Cloud_[application/vnd.com.sun.cloud.Cloud+json]'&gt;&lt;/a&gt; Cloud [application/vnd.com.sun.cloud.Cloud+json] &lt;/h1&gt;
&lt;p&gt;
A &lt;i&gt;Cloud&lt;/i&gt; represents a user's view of all accessible resources in the cloud.

&lt;/p&gt;&lt;p&gt;A &amp;quot;Cloud&amp;quot; resource model contains the following fields:

&lt;/p&gt;&lt;div style=&quot;overflow-x: auto;&quot;&gt;&lt;div style=&quot;margin: 0px 2px 0px 2px;&quot;&gt;
&lt;table - border=&quot;1&quot; width=&quot;100%&quot;&gt;&lt;tr&gt;&lt;th&gt; Field Name
&lt;/th&gt;&lt;th&gt; Type
&lt;/th&gt;&lt;th&gt; Occurs
&lt;/th&gt;&lt;th&gt; Description
&lt;/th&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; uri
&lt;/td&gt;&lt;td&gt; URI
&lt;/td&gt;&lt;td&gt; 1
&lt;/td&gt;&lt;td&gt; A GET against this URI refreshes the client representation of the resources accessible to this user.
&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; locations
&lt;/td&gt;&lt;td&gt; Location[]
&lt;/td&gt;&lt;td&gt; 0..1
&lt;/td&gt;&lt;td&gt; The set of locations for VDC deployment that are supported by this service provider.
&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; vdcs
&lt;/td&gt;&lt;td&gt; VDC[]
&lt;/td&gt;&lt;td&gt; 0..1
&lt;/td&gt;&lt;td&gt; Virtual data center(s) accessible to this user.  Only the &lt;i&gt;name&lt;/i&gt; and &lt;i&gt;uri&lt;/i&gt; fields &lt;b&gt;MUST&lt;/b&gt; be populated by the server.
&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; specification_version
&lt;/td&gt;&lt;td&gt; String[]
&lt;/td&gt;&lt;td&gt; 1
&lt;/td&gt;&lt;td&gt; Which version(s) of this specification this server implementation supports.
&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; implementation_version
&lt;/td&gt;&lt;td&gt; String
&lt;/td&gt;&lt;td&gt; 1
&lt;/td&gt;&lt;td&gt; Version of the server implementation.
&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;
&lt;/div&gt;&lt;/div&gt;
&lt;h1&gt;&lt;a name='Location_[application/vnd.com.sun.cloud.Location+json]'&gt;&lt;/a&gt; Location [application/vnd.com.sun.cloud.Location+json] &lt;/h1&gt;
&lt;p&gt;
A &lt;i&gt;Location&lt;/i&gt; represents a particular geographic or other physical location.  VDCs are provisioned within a particular location such that the various included elements may have high bandwidth and secure connectivity.

&lt;/p&gt;&lt;p&gt;A &amp;quot;Location&amp;quot; resource model contains the following fields:

&lt;/p&gt;&lt;div style=&quot;overflow-x: auto;&quot;&gt;&lt;div style=&quot;margin: 0px 2px 0px 2px;&quot;&gt;
&lt;table - border=&quot;1&quot; width=&quot;100%&quot;&gt;&lt;tr&gt;&lt;th&gt; Field Name
&lt;/th&gt;&lt;th&gt; Type
&lt;/th&gt;&lt;th&gt; Occurs
&lt;/th&gt;&lt;th&gt; Description
&lt;/th&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; name
&lt;/td&gt;&lt;td&gt; String
&lt;/td&gt;&lt;td&gt; 1
&lt;/td&gt;&lt;td&gt; Logical name for this location.
&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; uri
&lt;/td&gt;&lt;td&gt; URI
&lt;/td&gt;&lt;td&gt; 1
&lt;/td&gt;&lt;td&gt; A GET against this URI refreshes the client representation of this &lt;i&gt;Location&lt;/i&gt; resource.
&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; description
&lt;/td&gt;&lt;td&gt; String
&lt;/td&gt;&lt;td&gt; 0..1
&lt;/td&gt;&lt;td&gt; Human friendly description of this &lt;i&gt;Location&lt;/i&gt;. [POST][PUT]
&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;
&lt;/div&gt;&lt;/div&gt;
&lt;h1&gt;&lt;a name='Virtual_Data_Center_(VDC)_[application/vnd.com.sun.cloud.VDC+json]'&gt;&lt;/a&gt; Virtual Data Center (VDC) [application/vnd.com.sun.cloud.VDC+json] &lt;/h1&gt;
&lt;p&gt;
A &lt;i&gt;VDC&lt;/i&gt; represents a user's view of available resources in a single virtual data center.  It also provides URIs for acquiring related resource representations, as well as URIs for creating new resources of various types.

&lt;/p&gt;&lt;p&gt;A &amp;quot;VDC&amp;quot; resource model contains the following fields:

&lt;/p&gt;&lt;div style=&quot;overflow-x: auto;&quot;&gt;&lt;div style=&quot;margin: 0px 2px 0px 2px;&quot;&gt;
&lt;table - border=&quot;1&quot; width=&quot;100%&quot;&gt;&lt;tr&gt;&lt;th&gt; Field Name
&lt;/th&gt;&lt;th&gt; Type
&lt;/th&gt;&lt;th&gt; Occurs
&lt;/th&gt;&lt;th&gt; Description
&lt;/th&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; name
&lt;/td&gt;&lt;td&gt; String
&lt;/td&gt;&lt;td&gt; 1
&lt;/td&gt;&lt;td&gt; Logical name of this virtual data center. [POST][PUT]
&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; uri
&lt;/td&gt;&lt;td&gt; URI
&lt;/td&gt;&lt;td&gt; 1
&lt;/td&gt;&lt;td&gt; A GET against this URI refreshes the client representation of this virtual data center.
&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; description
&lt;/td&gt;&lt;td&gt; String
&lt;/td&gt;&lt;td&gt; 0..1
&lt;/td&gt;&lt;td&gt; Human friendly description of this &lt;i&gt;VDC&lt;/i&gt;. [POST][PUT]
&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; location
&lt;/td&gt;&lt;td&gt; URI
&lt;/td&gt;&lt;td&gt; 0..1
&lt;/td&gt;&lt;td&gt; URI of the &lt;i&gt;Location&lt;/i&gt; within which resources for this &lt;i&gt;VDC&lt;/i&gt; are physically deployed. [POST]
&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; addresses
&lt;/td&gt;&lt;td&gt; PublicAddress[]
&lt;/td&gt;&lt;td&gt; 1
&lt;/td&gt;&lt;td&gt; The static public IP addresses which are allocated for use in this VDC.  PublicAddress resources that are currently attached will have a URI value in the &amp;quot;vm&amp;quot; field describing to which VM that address is currently attached.
&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; cluster
&lt;/td&gt;&lt;td&gt; Cluster
&lt;/td&gt;&lt;td&gt; 1
&lt;/td&gt;&lt;td&gt; The root cluster associated with this VDC.
&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; tags
&lt;/td&gt;&lt;td&gt; [ ]
&lt;/td&gt;&lt;td&gt; 0..1
&lt;/td&gt;&lt;td&gt; Arbitrary values assigned by the user.  These values have no semantic impact on the operation of the cloud. [POST][PUT]
&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; volumes
&lt;/td&gt;&lt;td&gt; Volume[]
&lt;/td&gt;&lt;td&gt; 1
&lt;/td&gt;&lt;td&gt; The WebDAV volumes (in the storage service) owned by this user.
&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; vm_templates
&lt;/td&gt;&lt;td&gt; URI
&lt;/td&gt;&lt;td&gt; 1
&lt;/td&gt;&lt;td&gt; A GET request against this URI returns an array of available templates (type=&lt;i&gt;application/vnd.com.sun.cloud.VMTemplates+json).
&lt;/i&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;
&lt;/div&gt;&lt;/div&gt;
&lt;h1&gt;&lt;a name='Request_Status_[application/vnd.com.sun.cloud.Status+json]'&gt;&lt;/a&gt; Request Status [application/vnd.com.sun.cloud.Status+json] &lt;/h1&gt;
&lt;p&gt;
A &lt;i&gt;status&lt;/i&gt; represents a report on the progress of a request for a change in the state of the cloud.  Such requests receive an HTTP status code of &amp;quot;202 Accepted&amp;quot;, with the response body being a Status representation.

&lt;/p&gt;&lt;p&gt;This is designed to be used by applications to poll the server to track the progress of a request; thus, server implementations SHOULD anticipate this activity and make such polling reasonably lightweight.

&lt;/p&gt;&lt;p&gt;A &lt;i&gt;status&lt;/i&gt; resource model contains the following fields:

&lt;/p&gt;&lt;div style=&quot;overflow-x: auto;&quot;&gt;&lt;div style=&quot;margin: 0px 2px 0px 2px;&quot;&gt;
&lt;table - border=&quot;1&quot; width=&quot;100%&quot;&gt;&lt;tr&gt;&lt;th&gt; Field Name
&lt;/th&gt;&lt;th&gt; Type
&lt;/th&gt;&lt;th&gt; Occurs
&lt;/th&gt;&lt;th&gt; Description
&lt;/th&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; op
&lt;/td&gt;&lt;td&gt; String
&lt;/td&gt;&lt;td&gt; 1
&lt;/td&gt;&lt;td&gt; Identifies the nature of the request whose status this represents. The possible values are described in the specifications of the individual requests.
&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; progress
&lt;/td&gt;&lt;td&gt; Integer in the range 0-100, inclusive
&lt;/td&gt;&lt;td&gt; 1
&lt;/td&gt;&lt;td&gt; Represents the progress towards completion of the request.  A value of 100 indicates that the request has completed.  There is no requirement that implementations be able to predict the latency of requests; it should not be surprising if, during the lifetime of a request, the progress value remains at 0 until it changes to 100 upon request completion.
&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; target_uri
&lt;/td&gt;&lt;td&gt; URI
&lt;/td&gt;&lt;td&gt; 1
&lt;/td&gt;&lt;td&gt; Identifies the resource upon which the request is acting.  Specific semantics depend on the details of the request, and are described fully in the specifications of the individual requests.
&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; status_uri
&lt;/td&gt;&lt;td&gt; URI
&lt;/td&gt;&lt;td&gt; 1
&lt;/td&gt;&lt;td&gt; Identifies this status resource and may be used to retrieve an up-to-date status report.
&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; status
&lt;/td&gt;&lt;td&gt; Integer
&lt;/td&gt;&lt;td&gt; 1
&lt;/td&gt;&lt;td&gt; HTTP status code describing the result of the completed operation. Typical values would be 200, 201, and various error codes.  This value is only meaningful if the value of the &amp;quot;progress&amp;quot; field is 100.
&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; message
&lt;/td&gt;&lt;td&gt; String
&lt;/td&gt;&lt;td&gt; 1
&lt;/td&gt;&lt;td&gt; Brief message describing the completed operation (if successful) or an error message (if not successful).  This value is only meaningful if the value of the &amp;quot;progress&amp;quot; field is 100.
&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;
&lt;/div&gt;&lt;/div&gt;
&lt;h1&gt;&lt;a name='Public_Address_[application/vnd.com.sun.cloud.PublicAddress+json]'&gt;&lt;/a&gt; Public Address [application/vnd.com.sun.cloud.PublicAddress+json] &lt;/h1&gt;
&lt;p&gt;
A &lt;i&gt;public address&lt;/i&gt; represents a static, publicly accessible Internet Protocol (IP) address, which can be attached to a particular &lt;i&gt;VM&lt;/i&gt; via an &lt;i&gt;interface&lt;/i&gt;.  The fact that this address is static means it is suitable for registration with the Domain Name Service (DNS) environment for your application domain.  Typically, the &lt;i&gt;VM&lt;/i&gt; that a public address is attached to will be a firewall appliance, but this is not required by the Cloud API itself.

&lt;/p&gt;&lt;p&gt;A &lt;i&gt;public address&lt;/i&gt; resource model contains the following fields:

&lt;/p&gt;&lt;div style=&quot;overflow-x: auto;&quot;&gt;&lt;div style=&quot;margin: 0px 2px 0px 2px;&quot;&gt;
&lt;table - border=&quot;1&quot; width=&quot;100%&quot;&gt;&lt;tr&gt;&lt;th&gt; Field Name
&lt;/th&gt;&lt;th&gt; Type
&lt;/th&gt;&lt;th&gt; Occurs
&lt;/th&gt;&lt;th&gt; Description
&lt;/th&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; name
&lt;/td&gt;&lt;td&gt; String
&lt;/td&gt;&lt;td&gt; 1
&lt;/td&gt;&lt;td&gt; Logical name of this Public Address (unique within owning VDC).  [POST][PUT]
&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; uri
&lt;/td&gt;&lt;td&gt; URI
&lt;/td&gt;&lt;td&gt; 1
&lt;/td&gt;&lt;td&gt; URI by which this public address may be addressed as a standalone resource.
&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; description
&lt;/td&gt;&lt;td&gt; String
&lt;/td&gt;&lt;td&gt; 0..1
&lt;/td&gt;&lt;td&gt; Human friendly description of this &lt;i&gt;Public Address&lt;/i&gt;. [POST][PUT]
&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; vdc
&lt;/td&gt;&lt;td&gt; URI
&lt;/td&gt;&lt;td&gt; 1
&lt;/td&gt;&lt;td&gt; URI of the &lt;i&gt;VDC&lt;/i&gt; this &lt;i&gt;PublicAddress&lt;/i&gt; belongs to.
&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; dns
&lt;/td&gt;&lt;td&gt; String[]
&lt;/td&gt;&lt;td&gt; 1
&lt;/td&gt;&lt;td&gt; List of DNS server IP addresses to be used for connecting out through this Internet connection.  [POST][PUT]
&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; domain_names
&lt;/td&gt;&lt;td&gt; String[]
&lt;/td&gt;&lt;td&gt; 0..1
&lt;/td&gt;&lt;td&gt; Optional list of domain names associated with this public IP address (informational only).  [POST][PUT]
&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; gateway
&lt;/td&gt;&lt;td&gt; String
&lt;/td&gt;&lt;td&gt; 1
&lt;/td&gt;&lt;td&gt; Gateway for this Internet connection.
&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; ip_address
&lt;/td&gt;&lt;td&gt; String
&lt;/td&gt;&lt;td&gt; 1
&lt;/td&gt;&lt;td&gt; Physical IP address represented by this &lt;i&gt;public address&lt;/i&gt; instance.
&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; netmask
&lt;/td&gt;&lt;td&gt; String
&lt;/td&gt;&lt;td&gt; 1
&lt;/td&gt;&lt;td&gt; Netmask for this Internet connection.
&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; tags
&lt;/td&gt;&lt;td&gt; [ ]
&lt;/td&gt;&lt;td&gt; 0..1
&lt;/td&gt;&lt;td&gt; Arbitrary values assigned by the user.  These values have no semantic impact on the operation of the cloud.  [POST][PUT]
&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; vm
&lt;/td&gt;&lt;td&gt; URI
&lt;/td&gt;&lt;td&gt; 0..1
&lt;/td&gt;&lt;td&gt; URI of the VM to which this address is attached, if any.
&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;
&lt;/div&gt;&lt;/div&gt;
&lt;h1&gt;&lt;a name='Cluster_[application/vnd.com.sun.cloud.Cluster+json]'&gt;&lt;/a&gt; Cluster [application/vnd.com.sun.cloud.Cluster+json] &lt;/h1&gt;
&lt;p&gt;
A &lt;i&gt;cluster&lt;/i&gt; represents a grouping of &lt;i&gt;VM&lt;/i&gt; and &lt;i&gt;VNet&lt;/i&gt; resources, segregated for purposes of grouping by common functionality, shared access control, or other purposes.  Each VDC contains, by definition, one root &lt;i&gt;cluster&lt;/i&gt;, which may in turn contain other clusters; the effect is that of a filesystem-like hierarchy of clusters.

&lt;/p&gt;&lt;p&gt;A &lt;i&gt;cluster&lt;/i&gt; resource model contains the following fields:

&lt;/p&gt;&lt;div style=&quot;overflow-x: auto;&quot;&gt;&lt;div style=&quot;margin: 0px 2px 0px 2px;&quot;&gt;
&lt;table - border=&quot;1&quot; width=&quot;100%&quot;&gt;&lt;tr&gt;&lt;th&gt; Field Name
&lt;/th&gt;&lt;th&gt; Type
&lt;/th&gt;&lt;th&gt; Occurs
&lt;/th&gt;&lt;th&gt; Description
&lt;/th&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; name
&lt;/td&gt;&lt;td&gt; String
&lt;/td&gt;&lt;td&gt; 1
&lt;/td&gt;&lt;td&gt; Logical name of this cluster, unique within the owning VDC.  [POST][PUT]
&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; uri
&lt;/td&gt;&lt;td&gt; URI
&lt;/td&gt;&lt;td&gt; 1
&lt;/td&gt;&lt;td&gt; URI by which this &lt;i&gt;cluster&lt;/i&gt; may be addressed as a standalone resource.
&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; description
&lt;/td&gt;&lt;td&gt; String
&lt;/td&gt;&lt;td&gt; 0..1
&lt;/td&gt;&lt;td&gt; Human friendly description of this &lt;i&gt;Cluster&lt;/i&gt;. [POST][PUT]
&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; vdc
&lt;/td&gt;&lt;td&gt; URI
&lt;/td&gt;&lt;td&gt; 1
&lt;/td&gt;&lt;td&gt; URI of the &lt;i&gt;VDC&lt;/i&gt; this &lt;i&gt;Cluster&lt;/i&gt; belongs to.
&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; parent
&lt;/td&gt;&lt;td&gt; URI
&lt;/td&gt;&lt;td&gt; 0..1
&lt;/td&gt;&lt;td&gt; URI of the parent &lt;i&gt;Cluster&lt;/i&gt; for this &lt;i&gt;Cluster&lt;/i&gt; (if this is not the root cluster of a &lt;i&gt;VDC&lt;/i&gt;).
&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; from_cluster
&lt;/td&gt;&lt;td&gt; URI
&lt;/td&gt;&lt;td&gt; 0..1
&lt;/td&gt;&lt;td&gt; On a &lt;i&gt;Create Cluster&lt;/i&gt; request type, the URI of an existing cluster to initialize default values from.  [POST]
&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; tags
&lt;/td&gt;&lt;td&gt; [ ]
&lt;/td&gt;&lt;td&gt; 0..1
&lt;/td&gt;&lt;td&gt; Arbitrary values assigned by the user.  These values have no semantic impact on the operation of the cloud.  [POST][PUT]
&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; vnets
&lt;/td&gt;&lt;td&gt; VNet[]
&lt;/td&gt;&lt;td&gt; 0..1
&lt;/td&gt;&lt;td&gt; The collection of virtual private networks associated with this Cluster.
&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; vms
&lt;/td&gt;&lt;td&gt; VM[]
&lt;/td&gt;&lt;td&gt; 0..1
&lt;/td&gt;&lt;td&gt; The collection of virtual machines associated with this cluster.
&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; controllers
&lt;/td&gt;&lt;td&gt; {}
&lt;/td&gt;&lt;td&gt; 0..1
&lt;/td&gt;&lt;td&gt; Hash of URIs which may be used to request state changes in the cluster via POST requests (see next table), keyed by the type of state change being requested.
&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; clusters
&lt;/td&gt;&lt;td&gt; Cluster[]
&lt;/td&gt;&lt;td&gt; 0..1
&lt;/td&gt;&lt;td&gt; Collection of Clusters which are logically contained in this cluster.
&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;
&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;
Some of the &amp;quot;control&amp;quot; URIs may or may not be accessible based on the state of the cluster, and may not appear in representations of it when not usable. For convenience, these are grouped into the &amp;quot;controllers&amp;quot; list field, in which zero or more of the following URIs (keyed by the change type) will be included in a representation provided by the server. 

&lt;/p&gt;&lt;div style=&quot;overflow-x: auto;&quot;&gt;&lt;div style=&quot;margin: 0px 2px 0px 2px;&quot;&gt;
&lt;table - border=&quot;1&quot; width=&quot;100%&quot;&gt;&lt;tr&gt;&lt;th&gt; Change Type
&lt;/th&gt;&lt;th&gt; Operation Requested
&lt;/th&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; start
&lt;/td&gt;&lt;td&gt; Start up all the VMs in this cluster, in ascending order based on the &lt;i&gt;boot_order&lt;/i&gt; value of each VM.
&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; stop
&lt;/td&gt;&lt;td&gt; Shut down all the VMs this cluster, in descending order based on the &lt;i&gt;boot_order&lt;/i&gt; value of each VM.
&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;
&lt;/div&gt;&lt;/div&gt;
&lt;h1&gt;&lt;a name='Volume_[application/vnd.com.sun.cloud.Volume+json]'&gt;&lt;/a&gt; Volume [application/vnd.com.sun.cloud.Volume+json] &lt;/h1&gt;
&lt;p&gt;
A &lt;i&gt;Volume&lt;/i&gt; represents a remote WebDAV volume that may be accessed by the same credentials used to access this information.  Such volumes are global to the calling user, and are therefore enumerated in the containing &lt;i&gt;VDC&lt;/i&gt;.  

&lt;/p&gt;&lt;p&gt;A &lt;i&gt;Volume&lt;/i&gt; resource model contains the following fields:

&lt;/p&gt;&lt;div style=&quot;overflow-x: auto;&quot;&gt;&lt;div style=&quot;margin: 0px 2px 0px 2px;&quot;&gt;
&lt;table - border=&quot;1&quot; width=&quot;100%&quot;&gt;&lt;tr&gt;&lt;th&gt; Field Name
&lt;/th&gt;&lt;th&gt; Type
&lt;/th&gt;&lt;th&gt; Occurs
&lt;/th&gt;&lt;th&gt; Description
&lt;/th&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; name
&lt;/td&gt;&lt;td&gt; String
&lt;/td&gt;&lt;td&gt; 1
&lt;/td&gt;&lt;td&gt; Logical name of this volume (unique within the owning VDC).  [POST][PUT]
&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; uri
&lt;/td&gt;&lt;td&gt; URI
&lt;/td&gt;&lt;td&gt; 1
&lt;/td&gt;&lt;td&gt; GET, PUT, and DELETE operations may be used to retrieve, update, or delete this volume.
&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; description
&lt;/td&gt;&lt;td&gt; String
&lt;/td&gt;&lt;td&gt; 0..1
&lt;/td&gt;&lt;td&gt; Human friendly description of this &lt;i&gt;Volume&lt;/i&gt;. [POST][PUT]
&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; vdc
&lt;/td&gt;&lt;td&gt; URI
&lt;/td&gt;&lt;td&gt; 1
&lt;/td&gt;&lt;td&gt; URI of the &lt;i&gt;VDC&lt;/i&gt; this &lt;i&gt;Volume&lt;/i&gt; belongs to.
&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; webdav
&lt;/td&gt;&lt;td&gt; URI
&lt;/td&gt;&lt;td&gt; 1
&lt;/td&gt;&lt;td&gt; The URI for use in any WebDAV operations.
&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; created
&lt;/td&gt;&lt;td&gt; Timestamp
&lt;/td&gt;&lt;td&gt; 1
&lt;/td&gt;&lt;td&gt; Date and time when this volume was created.
&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; snapshots
&lt;/td&gt;&lt;td&gt; Snapshot[]
&lt;/td&gt;&lt;td&gt; 0..1
&lt;/td&gt;&lt;td&gt; Collection of snapshots associated with this volume.
&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; tags
&lt;/td&gt;&lt;td&gt; [ ]
&lt;/td&gt;&lt;td&gt; 0..1
&lt;/td&gt;&lt;td&gt; Arbitrary values assigned by the user.  These values have no semantic impact on the operation of the cloud.  [POST][PUT]
&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;
&lt;/div&gt;&lt;/div&gt;
&lt;h1&gt;&lt;a name='Snapshot_[application/vnd.com.sun.cloud.Snapshot+json]'&gt;&lt;/a&gt; Snapshot [application/vnd.com.sun.cloud.Snapshot+json] &lt;/h1&gt;
&lt;p&gt;
A &lt;i&gt;Snapshot&lt;/i&gt; represents a point-in-time representation of the contents of a &lt;i&gt;Volume&lt;/i&gt;.

&lt;/p&gt;&lt;p&gt;A &lt;i&gt;Snapshot&lt;/i&gt; resource model contains the following fields:

&lt;/p&gt;&lt;div style=&quot;overflow-x: auto;&quot;&gt;&lt;div style=&quot;margin: 0px 2px 0px 2px;&quot;&gt;
&lt;table - border=&quot;1&quot; width=&quot;100%&quot;&gt;&lt;tr&gt;&lt;th&gt; Field Name
&lt;/th&gt;&lt;th&gt; Type
&lt;/th&gt;&lt;th&gt; Occurs
&lt;/th&gt;&lt;th&gt; Description
&lt;/th&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; name
&lt;/td&gt;&lt;td&gt; String
&lt;/td&gt;&lt;td&gt; 1
&lt;/td&gt;&lt;td&gt; Logical name of this snapshot, unique within the owning &lt;i&gt;Volume&lt;/i&gt;.  [POST]
&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; uri
&lt;/td&gt;&lt;td&gt; URI
&lt;/td&gt;&lt;td&gt; 1
&lt;/td&gt;&lt;td&gt; GET, PUT, and DELETE operations may be used to retrieve, update, or delete this snapshot.
&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; description
&lt;/td&gt;&lt;td&gt; String
&lt;/td&gt;&lt;td&gt; 0..1
&lt;/td&gt;&lt;td&gt; Human friendly description of this &lt;i&gt;Snapshot&lt;/i&gt;. [POST][PUT]
&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; volume
&lt;/td&gt;&lt;td&gt; URI
&lt;/td&gt;&lt;td&gt; 1
&lt;/td&gt;&lt;td&gt; URI of the &lt;i&gt;Volume&lt;/i&gt; this &lt;i&gt;Snapshot&lt;/i&gt; belongs to.
&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; created
&lt;/td&gt;&lt;td&gt; Timestamp
&lt;/td&gt;&lt;td&gt; 1
&lt;/td&gt;&lt;td&gt; Date and time when this snapshot was created.
&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; clone
&lt;/td&gt;&lt;td&gt; URI
&lt;/td&gt;&lt;td&gt; 0..1
&lt;/td&gt;&lt;td&gt; A POST to this URI is a request to clone this snapshot into a new volume with a name included in the request body.
&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; rollback
&lt;/td&gt;&lt;td&gt; URI
&lt;/td&gt;&lt;td&gt; 0..1
&lt;/td&gt;&lt;td&gt; A POST to ths URI is a request to revert the owning volume to the contents as of when this snapshot was created.
&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;
&lt;/div&gt;&lt;/div&gt;
&lt;h1&gt;&lt;a name='Virtual_Machine_(VM)_[application/vnd.com.sun.cloud.VM+json]'&gt;&lt;/a&gt; Virtual Machine (VM) [application/vnd.com.sun.cloud.VM+json] &lt;/h1&gt;
&lt;p&gt;
A &lt;i&gt;VM&lt;/i&gt; represents a virtual computer that is associated with a cluster.

&lt;/p&gt;&lt;p&gt;A &lt;i&gt;VM&lt;/i&gt; data model contains the following fields:

&lt;/p&gt;&lt;div style=&quot;overflow-x: auto;&quot;&gt;&lt;div style=&quot;margin: 0px 2px 0px 2px;&quot;&gt;
&lt;table - border=&quot;1&quot; width=&quot;100%&quot;&gt;&lt;tr&gt;&lt;th&gt; Field Name
&lt;/th&gt;&lt;th&gt; Type
&lt;/th&gt;&lt;th&gt; Occurs
&lt;/th&gt;&lt;th&gt; Description
&lt;/th&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; name
&lt;/td&gt;&lt;td&gt; String
&lt;/td&gt;&lt;td&gt; 1
&lt;/td&gt;&lt;td&gt; Logical name of this VM, unique within the owning Cluster.  [POST][PUT]
&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; uri
&lt;/td&gt;&lt;td&gt; URI
&lt;/td&gt;&lt;td&gt; 1
&lt;/td&gt;&lt;td&gt; GET, PUT, and DELETE may be used to retrieve representations of the VM, to update it, and to delete it, respectively.
&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; description
&lt;/td&gt;&lt;td&gt; String
&lt;/td&gt;&lt;td&gt; 0..1
&lt;/td&gt;&lt;td&gt; Human friendly description of this &lt;i&gt;VM&lt;/i&gt;. [POST][PUT]
&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; cluster
&lt;/td&gt;&lt;td&gt; URI
&lt;/td&gt;&lt;td&gt; 1
&lt;/td&gt;&lt;td&gt; URI of the &lt;i&gt;Cluster&lt;/i&gt; this &lt;i&gt;VM&lt;/i&gt; belongs to.
&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; run_status
&lt;/td&gt;&lt;td&gt; String
&lt;/td&gt;&lt;td&gt; 0..1
&lt;/td&gt;&lt;td&gt; Current running status of this virtual machine (read only).  Valid values for this field are &amp;quot;STOPPED&amp;quot;, &amp;quot;STARTING&amp;quot;, &amp;quot;STARTED&amp;quot;, &amp;quot;SLEEPING&amp;quot;, &amp;quot;ASLEEP&amp;quot;, &amp;quot;WAKING&amp;quot;, and &amp;quot;STOPPING&amp;quot;.  Initial run_status of a newly created VM is &amp;quot;STOPPED&amp;quot;.
&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; updated
&lt;/td&gt;&lt;td&gt; Boolean
&lt;/td&gt;&lt;td&gt; 1
&lt;/td&gt;&lt;td&gt; A value of true means that a change has been made to the VM resource, which will not take effect until the VM has been rebooted.
&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; last_boot
&lt;/td&gt;&lt;td&gt; Timestamp
&lt;/td&gt;&lt;td&gt; 1
&lt;/td&gt;&lt;td&gt; Date when this VM was most recently booted.
&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; from_template
&lt;/td&gt;&lt;td&gt; String
&lt;/td&gt;&lt;td&gt; 0..1
&lt;/td&gt;&lt;td&gt; On a &lt;i&gt;Create VM&lt;/i&gt; request type, the URI of an existing &lt;i&gt;VM template&lt;/i&gt; to initialize default values from.  [POST]
&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; from_vm
&lt;/td&gt;&lt;td&gt; String
&lt;/td&gt;&lt;td&gt; 0..1
&lt;/td&gt;&lt;td&gt; On a &lt;i&gt;Create VM&lt;/i&gt; request type, the URI of an existing &lt;i&gt;VM&lt;/i&gt; to initialize default values from.  [POST]
&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; hostname
&lt;/td&gt;&lt;td&gt; String
&lt;/td&gt;&lt;td&gt; 0..1
&lt;/td&gt;&lt;td&gt; Fully qualified (?) host name of this virtual machine.
&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; os
&lt;/td&gt;&lt;td&gt; String
&lt;/td&gt;&lt;td&gt; 0..1
&lt;/td&gt;&lt;td&gt; Operating system running on the VM.  FIXME - enumerate the legal values.  [POST]
&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; cpu
&lt;/td&gt;&lt;td&gt; Integer
&lt;/td&gt;&lt;td&gt; 0..1
&lt;/td&gt;&lt;td&gt; CPU speed in Mhz.  [POST]
&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; memory
&lt;/td&gt;&lt;td&gt; Integer
&lt;/td&gt;&lt;td&gt; 0..1
&lt;/td&gt;&lt;td&gt; Main memory size in MB.  [POST]
&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; boot_disk
&lt;/td&gt;&lt;td&gt; Integer
&lt;/td&gt;&lt;td&gt; 0..1
&lt;/td&gt;&lt;td&gt; Boot disk space to allocate in GB.  [POST]
&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; data_disk
&lt;/td&gt;&lt;td&gt; Integer
&lt;/td&gt;&lt;td&gt; 0..1
&lt;/td&gt;&lt;td&gt; Data disk space to allocate in GB.  [POST]
&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; temp_disk
&lt;/td&gt;&lt;td&gt; Integer
&lt;/td&gt;&lt;td&gt; 0..1
&lt;/td&gt;&lt;td&gt; Temporary disk space to allocate in GB.  [POST]
&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; boot_order
&lt;/td&gt;&lt;td&gt; Integer
&lt;/td&gt;&lt;td&gt; 0..1
&lt;/td&gt;&lt;td&gt; Sort ordering value for &lt;i&gt;start cluster&lt;/i&gt; and &lt;i&gt;stop cluster&lt;/i&gt; operations.  When a cluster is started, VMs with the same &lt;i&gt;boot_order&lt;/i&gt; value will be started in an undefined sequence, but the service will ensure that all VMs with a particular &lt;i&gt;boot_order&lt;/i&gt; value will have been started before starting VMs with a higher &lt;i&gt;boot_order&lt;/i&gt; value.  The sequence is reversed for a &lt;i&gt;stop cluster&lt;/i&gt; operation.  VMs with no &lt;i&gt;boot_order&lt;/i&gt; value will be assumed to have a &lt;i&gt;boot_order&lt;/i&gt; of the maximum integer value, so they will be started last and stopped first.  [POST][PUT]
&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; params
&lt;/td&gt;&lt;td&gt; { }
&lt;/td&gt;&lt;td&gt; 0..1
&lt;/td&gt;&lt;td&gt; Configuration parameters for this VM, keyed by parameter name.  The list of system defined configuration parameters is TBD, but one of them will be &amp;quot;user_params&amp;quot;, whose value is a hash of arbitrary user defined configuration parameters.  [POST][PUT]
&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; tags
&lt;/td&gt;&lt;td&gt; [ ]
&lt;/td&gt;&lt;td&gt; 0..1
&lt;/td&gt;&lt;td&gt; Arbitrary values assigned by the user.  These values have no semantic impact on the operation of the cloud.  [POST][PUT]
&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; back_up
&lt;/td&gt;&lt;td&gt; URI
&lt;/td&gt;&lt;td&gt; 1
&lt;/td&gt;&lt;td&gt; A POST of a Backup representation to this URI requests creation of a new Backup.
&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; attach
&lt;/td&gt;&lt;td&gt; URI
&lt;/td&gt;&lt;td&gt; 1
&lt;/td&gt;&lt;td&gt; A POST of a PublicAddress representation to this URI requests connection to a Public Address.  Or, a POST of a VNet representation to this URI requests connection to a VNet.
&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; detach
&lt;/td&gt;&lt;td&gt; URI
&lt;/td&gt;&lt;td&gt; 1
&lt;/td&gt;&lt;td&gt; A POST of a PublicAddress representation to this URI requests disconnection from a Public Address.  Or, a POST of a VNet representation to this URI reequests disconnection from a VNet.
&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; backups
&lt;/td&gt;&lt;td&gt; Backup[]
&lt;/td&gt;&lt;td&gt; 0..1
&lt;/td&gt;&lt;td&gt; Backup snapshots from this virtual machine.
&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; interfaces
&lt;/td&gt;&lt;td&gt; Interface[]
&lt;/td&gt;&lt;td&gt; 1
&lt;/td&gt;&lt;td&gt; Network interfaces associated with this virtual machine.  These are created automatically when VNets or Public Addresses are associated with VM.[POST]
&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; controllers
&lt;/td&gt;&lt;td&gt; {}
&lt;/td&gt;&lt;td&gt; 0..1
&lt;/td&gt;&lt;td&gt; Hash of URIs which may be used to request state changes in the VM via POST requests (see next table), keyed by the type of state change being requested.
&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;
&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;
Some of the &amp;quot;control&amp;quot; URIs, such as those identified in the &amp;quot;attach&amp;quot; and &amp;quot;detach&amp;quot; fields, are in principle always accessible and thus appear as first-class values in the representation of a VM.  Others may or may not be accessible based on the state of the VM, and may not appear in representations of it when not accessible. For convenience, these are grouped into the &amp;quot;controllers&amp;quot; list field, in which zero or more of the following URIs (keyed by the change type) will be included in a representation provided by the server. 

&lt;/p&gt;&lt;div style=&quot;overflow-x: auto;&quot;&gt;&lt;div style=&quot;margin: 0px 2px 0px 2px;&quot;&gt;
&lt;table - border=&quot;1&quot; width=&quot;100%&quot;&gt;&lt;tr&gt;&lt;th&gt; Change Type
&lt;/th&gt;&lt;th&gt; Operation Requested
&lt;/th&gt;&lt;th&gt; Initial State
&lt;/th&gt;&lt;th&gt; Intermediate State
&lt;/th&gt;&lt;th&gt; Final State
&lt;/th&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; start
&lt;/td&gt;&lt;td&gt; Start up a VM.
&lt;/td&gt;&lt;td&gt; STOPPED
&lt;/td&gt;&lt;td&gt; STARTING
&lt;/td&gt;&lt;td&gt; STARTED
&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; stop
&lt;/td&gt;&lt;td&gt; Shut down a running VM.
&lt;/td&gt;&lt;td&gt; STARTED
&lt;/td&gt;&lt;td&gt; STOPPING
&lt;/td&gt;&lt;td&gt; STOPPED
&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; reboot
&lt;/td&gt;&lt;td&gt; Reboot a running VM.
&lt;/td&gt;&lt;td&gt; STARTED
&lt;/td&gt;&lt;td&gt; STOPPING -&amp;gt; STOPPED -&amp;gt; STARTING
&lt;/td&gt;&lt;td&gt; STARTED
&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; hibernate
&lt;/td&gt;&lt;td&gt; Put a running VM to sleep.
&lt;/td&gt;&lt;td&gt; STARTED
&lt;/td&gt;&lt;td&gt; SLEEPING
&lt;/td&gt;&lt;td&gt; ASLEEP
&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; resume
&lt;/td&gt;&lt;td&gt; Wake up a hibernated VM.
&lt;/td&gt;&lt;td&gt; ASLEEP
&lt;/td&gt;&lt;td&gt; WAKING
&lt;/td&gt;&lt;td&gt; STARTED
&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;
&lt;/div&gt;&lt;/div&gt;
&lt;h1&gt;&lt;a name='Backup_[application/vnd.com.sun.cloud.Backup+json]'&gt;&lt;/a&gt; Backup [application/vnd.com.sun.cloud.Backup+json] &lt;/h1&gt;
&lt;p&gt;
A &lt;i&gt;backup&lt;/i&gt; represents a snapshot that was taken of a specific virtual machine.

&lt;/p&gt;&lt;p&gt;A &lt;i&gt;backup&lt;/i&gt; resource model contains the following fields:

&lt;/p&gt;&lt;div style=&quot;overflow-x: auto;&quot;&gt;&lt;div style=&quot;margin: 0px 2px 0px 2px;&quot;&gt;
&lt;table - border=&quot;1&quot; width=&quot;100%&quot;&gt;&lt;tr&gt;&lt;th&gt; Field Name
&lt;/th&gt;&lt;th&gt; Type
&lt;/th&gt;&lt;th&gt; Occurs
&lt;/th&gt;&lt;th&gt; Description
&lt;/th&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; name
&lt;/td&gt;&lt;td&gt; String
&lt;/td&gt;&lt;td&gt; 1
&lt;/td&gt;&lt;td&gt; Logical name of this backup, unique within owning VM. [POST][PUT]
&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; uri
&lt;/td&gt;&lt;td&gt; URI
&lt;/td&gt;&lt;td&gt; 1
&lt;/td&gt;&lt;td&gt; GET, PUT, and DELETE may be used to retrieve representations of the Backup, to update it, and to delete it, respectively.
&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; description
&lt;/td&gt;&lt;td&gt; String
&lt;/td&gt;&lt;td&gt; 0..1
&lt;/td&gt;&lt;td&gt; Human friendly description of this &lt;i&gt;Backup&lt;/i&gt;. [POST][PUT]
&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; type
&lt;/td&gt;&lt;td&gt; String
&lt;/td&gt;&lt;td&gt; 0..1
&lt;/td&gt;&lt;td&gt; Type of this backup (service provider default if not specified). [POST]
&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; created
&lt;/td&gt;&lt;td&gt; DateTime
&lt;/td&gt;&lt;td&gt; 1
&lt;/td&gt;&lt;td&gt; Timestamp when this backup was created.
&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; restore
&lt;/td&gt;&lt;td&gt; URI
&lt;/td&gt;&lt;td&gt; 1
&lt;/td&gt;&lt;td&gt; URI that will accept a POST to restore the state of the associated VM to this Backup.
&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; vm
&lt;/td&gt;&lt;td&gt; URI
&lt;/td&gt;&lt;td&gt; 1
&lt;/td&gt;&lt;td&gt; URI of the VM that this Backup was captured for.
&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; tags
&lt;/td&gt;&lt;td&gt; [ ]
&lt;/td&gt;&lt;td&gt; 0..1
&lt;/td&gt;&lt;td&gt; Arbitrary values assigned by the user.  These values have no semantic impact on the operation of the cloud.  [POST][PUT]
&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;
&lt;/div&gt;&lt;/div&gt;
&lt;h1&gt;&lt;a name='Virtual_Network_(VNet)_[application/vnd.com.sun.cloud.VNet+json]'&gt;&lt;/a&gt; Virtual Network (VNet) [application/vnd.com.sun.cloud.VNet+json] &lt;/h1&gt;
&lt;p&gt;
A &lt;i&gt;VNet&lt;/i&gt; represents a virtual private network to which an &lt;i&gt;interface&lt;/i&gt; associated with a &lt;i&gt;VM&lt;/i&gt; may be attached.  VNets may connect VMs within a &lt;i&gt;Cluster&lt;/i&gt;, or they may connect VMs from different clusters together to provide a private communications path.

&lt;/p&gt;&lt;p&gt;A &lt;i&gt;VNet&lt;/i&gt; is logically contained within a cluster, but this relationship only exists for administrative purposes and does not affect the operations available on it.

&lt;/p&gt;&lt;p&gt;A &lt;i&gt;VNet&lt;/i&gt; resource model contains the following fields:

&lt;/p&gt;&lt;div style=&quot;overflow-x: auto;&quot;&gt;&lt;div style=&quot;margin: 0px 2px 0px 2px;&quot;&gt;
&lt;table - border=&quot;1&quot; width=&quot;100%&quot;&gt;&lt;tr&gt;&lt;th&gt; Field Name
&lt;/th&gt;&lt;th&gt; Type
&lt;/th&gt;&lt;th&gt; Occurs
&lt;/th&gt;&lt;th&gt; Description
&lt;/th&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; name
&lt;/td&gt;&lt;td&gt; String
&lt;/td&gt;&lt;td&gt; 1
&lt;/td&gt;&lt;td&gt; Logical name of this &lt;i&gt;VNet&lt;/i&gt;, unique within the owning &lt;i&gt;Cluster&lt;/i&gt;. [POST][PUT]
&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; uri
&lt;/td&gt;&lt;td&gt; URI
&lt;/td&gt;&lt;td&gt; 1
&lt;/td&gt;&lt;td&gt; URI that may be used to access this VNet as a standalone resource.
&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; description
&lt;/td&gt;&lt;td&gt; String
&lt;/td&gt;&lt;td&gt; 0..1
&lt;/td&gt;&lt;td&gt; Human friendly description of this 'VNet&lt;i&gt;. [POST][PUT]
&lt;/i&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; cluster
&lt;/td&gt;&lt;td&gt; URI
&lt;/td&gt;&lt;td&gt; 1
&lt;/td&gt;&lt;td&gt; URI of the &lt;i&gt;Cluster&lt;/i&gt; this &lt;i&gt;VNet&lt;/i&gt; belongs to.
&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; netmask
&lt;/td&gt;&lt;td&gt; String
&lt;/td&gt;&lt;td&gt; 1
&lt;/td&gt;&lt;td&gt; Default network mask for interfaces connected to this VNet.
&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; tags
&lt;/td&gt;&lt;td&gt; [ ]
&lt;/td&gt;&lt;td&gt; 0..1
&lt;/td&gt;&lt;td&gt; Arbitrary values assigned by the user.  These values have no semantic impact on the operation of the cloud. [POST][PUT]
&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;
&lt;/div&gt;&lt;/div&gt;
&lt;h1&gt;&lt;a name='Interface_[application/vnd.com.sun.cloud.Interface+json]'&gt;&lt;/a&gt; Interface [application/vnd.com.sun.cloud.Interface+json] &lt;/h1&gt;
&lt;p&gt;
An &lt;i&gt;interface&lt;/i&gt; represents a network interface card (nic), associated with a specific VM, that documents an IP connection (from this VM) either to a &lt;i&gt;VNet&lt;/i&gt; (virtual private network) or to a &lt;i&gt;public address&lt;/i&gt; (a static public IP address accessible from the Internet).  For the latter scenario, the VM will typically implement firewall and/or load balancing functionality, but this is not required by the API.

&lt;/p&gt;&lt;p&gt;&lt;i&gt;Interface&lt;/i&gt; instances are created, modified, and removed as a side effect of other operations.  Therefore, they do not possess a URI of their own, and support no operations against themselves directly.

&lt;/p&gt;&lt;p&gt;A &lt;i&gt;interface&lt;/i&gt; resource model contains the following fields:

&lt;/p&gt;&lt;div style=&quot;overflow-x: auto;&quot;&gt;&lt;div style=&quot;margin: 0px 2px 0px 2px;&quot;&gt;
&lt;table - border=&quot;1&quot; width=&quot;100%&quot;&gt;&lt;tr&gt;&lt;th&gt; Field Name
&lt;/th&gt;&lt;th&gt; Type
&lt;/th&gt;&lt;th&gt; Occurs
&lt;/th&gt;&lt;th&gt; Description
&lt;/th&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; vnet
&lt;/td&gt;&lt;td&gt; URI
&lt;/td&gt;&lt;td&gt; 0..1
&lt;/td&gt;&lt;td&gt; The URI of the &lt;i&gt;VNet&lt;/i&gt; instance, if this interface is attached to one.  At most one of &lt;i&gt;vnet&lt;/i&gt; or &lt;i&gt;public address&lt;/i&gt; must be defined.
&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; public_address
&lt;/td&gt;&lt;td&gt; URI
&lt;/td&gt;&lt;td&gt; 0..1
&lt;/td&gt;&lt;td&gt; The URI of the &lt;i&gt;public address&lt;/i&gt; instance, if this interface is attached to one.  At most one of &lt;i&gt;vnet&lt;/i&gt; or &lt;i&gt;public address&lt;/i&gt; must be defined.
&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; nic
&lt;/td&gt;&lt;td&gt; String
&lt;/td&gt;&lt;td&gt; 1
&lt;/td&gt;&lt;td&gt; Name of the network interface connector as seen by the host operating system.
&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; mac_address&lt;i&gt;&lt;/i&gt;&lt;/td&gt;&lt;td&gt; String
&lt;/td&gt;&lt;td&gt; 1
&lt;/td&gt;&lt;td&gt; MAC address of this network interface.
&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; ip_address&lt;i&gt;&lt;/i&gt;&lt;/td&gt;&lt;td&gt; String
&lt;/td&gt;&lt;td&gt; 1
&lt;/td&gt;&lt;td&gt; IP address of this network interface.  If the interface is connected to a Public Address, will be a duplicate of its ip_address field.
&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;
&lt;/div&gt;&lt;/div&gt;
&lt;h1&gt;&lt;a name='Virtual_Machine_Template_(VMTemplate)_[application/vnd.com.sun.cloud.VMTemplate+json]'&gt;&lt;/a&gt; Virtual Machine Template (VMTemplate) [application/vnd.com.sun.cloud.VMTemplate+json] &lt;/h1&gt;
&lt;p&gt;
A &lt;i&gt;VMTemplate&lt;/i&gt; represents a preconfigured virtual machine image that may be &amp;quot;cloned&amp;quot; in a Create Virtual Machine request, by specifying the URI of a particular template as the value of the &lt;i&gt;from_template&lt;/i&gt; field.

&lt;/p&gt;&lt;p&gt;A &lt;i&gt;VMTemplate&lt;/i&gt; data model contains the following fields:

&lt;/p&gt;&lt;div style=&quot;overflow-x: auto;&quot;&gt;&lt;div style=&quot;margin: 0px 2px 0px 2px;&quot;&gt;
&lt;table - border=&quot;1&quot; width=&quot;100%&quot;&gt;&lt;tr&gt;&lt;th&gt; Field Name
&lt;/th&gt;&lt;th&gt; Type
&lt;/th&gt;&lt;th&gt; Occurs
&lt;/th&gt;&lt;th&gt; Description
&lt;/th&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; name
&lt;/td&gt;&lt;td&gt; String
&lt;/td&gt;&lt;td&gt; 1
&lt;/td&gt;&lt;td&gt; Logical name of this VMTemplate.
&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; uri
&lt;/td&gt;&lt;td&gt; URI
&lt;/td&gt;&lt;td&gt; 1
&lt;/td&gt;&lt;td&gt; URI to reference this template in a Create Virtual Machine request.
&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; description
&lt;/td&gt;&lt;td&gt; String
&lt;/td&gt;&lt;td&gt; 0..1
&lt;/td&gt;&lt;td&gt; Human friendly description of this virtual machine template.
&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; os
&lt;/td&gt;&lt;td&gt; String
&lt;/td&gt;&lt;td&gt; 0..1
&lt;/td&gt;&lt;td&gt; Operating system running on the VM.  FIXME - enumerate the legal values.
&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; cpu
&lt;/td&gt;&lt;td&gt; Integer
&lt;/td&gt;&lt;td&gt; 0..1
&lt;/td&gt;&lt;td&gt; CPU speed in Mhz.
&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; memory
&lt;/td&gt;&lt;td&gt; Integer
&lt;/td&gt;&lt;td&gt; 0..1
&lt;/td&gt;&lt;td&gt; Main memory size in MB.
&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; boot_disk
&lt;/td&gt;&lt;td&gt; Integer
&lt;/td&gt;&lt;td&gt; 0..1
&lt;/td&gt;&lt;td&gt; Boot disk space to allocate in GB.
&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; data_disk
&lt;/td&gt;&lt;td&gt; Integer
&lt;/td&gt;&lt;td&gt; 0..1
&lt;/td&gt;&lt;td&gt; Data disk space to allocate in GB.
&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; temp_disk
&lt;/td&gt;&lt;td&gt; Integer
&lt;/td&gt;&lt;td&gt; 0..1
&lt;/td&gt;&lt;td&gt; Temporary disk space to allocate in GB.
&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; params
&lt;/td&gt;&lt;td&gt; { }
&lt;/td&gt;&lt;td&gt; 0..1
&lt;/td&gt;&lt;td&gt; Configuration parameters for this VM, keyed by parameter name.  The list of system defined configuration parameters is TBD, but one of them will be &amp;quot;user_params&amp;quot;, whose value is a hash of arbitrary user defined configuration parameters.
&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; tags
&lt;/td&gt;&lt;td&gt; [ ]
&lt;/td&gt;&lt;td&gt; 0..1
&lt;/td&gt;&lt;td&gt; Arbitrary values assigned by the user.  These values have no semantic impact on the operation of the cloud.
&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;
&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;
Copyright &amp;copy; Sun Microsystems, 2009.  This work is licensed under &lt;a class='external' href=&quot;http://creativecommons.org/licenses/by/3.0/&quot;&gt;Creative Commons Attribution 3.0 Unported License&lt;/a&gt;&lt;/p&gt;</text-as-html>
  <updated-at type="datetime">2010-01-12T13:24:45Z</updated-at>
  <wiki-id type="integer">3636</wiki-id>
</page>
