Last updated August 20, 2009 23:17, by Tim Bray
Feedicon  

Cloud API Specification - Requests to Cluster Resources

The requests documented in this section are directed to Cluster resources, which represent sets of virtual machines and private networks.


Get Cluster

Retrieve information about a specific cluster.

Synopsis: GET {URI of Cluster from representation of containing VDC}

Request Headers: Accept, Authorization, X-Cloud-Client-Specification-Version.

Request Message Body: N/A.

Response Headers: Content-Length, Content-Type.

Response Message Body: Cluster.

Response Status: 200, 400, 401, 403, 404.

Example Request: Retrieve information about a Cluster instance named "Staging WebTier".

 GET /clusters/123456
 Host: example.com
 Authorization: Basic xxxxxxxxxxxxxxxxxxx
 Accept: application/vnd.com.sun.cloud.Cluster+json
 X-Cloud-Client-Specification-Version: 0.1

Example Response:

 HTTP/1.1 200 OK
 Content-Type: application/vnd.com.sun.cloud.Cluster+json
 Content-Length: nnn
 
 {
   "name": "Staging Web Tier",
   "uri" : "http://example.com/clusters/123456",
   "tags" : [ "staging" ],
   "vms": [
     { "name" : "web01", "uri" : "http://example.com/vms/0003", ... },
     ...
   ],
   "controllers" : {
      "halt" : "http://example.com/cluster/halt?cluster=123456",
   }
 }

Update Cluster Properties

Update an existing Cluster definition based on the fields actually present in the request message body.

Synopsis: PUT { URI of Cluster }

Request Headers: Accept, Authorization, Content-Length, Content-Type, X-Cloud-Client-Specification-Version.

Request Parameters: N/A.

Request Message Body: Cluster containing fields to update properties.

Response Headers: Content-Length, Content-Type.

Response Message Body: Status for use in tracking update progress.

Response Status: 202, 400, 401, 403, 404.

Status "op" Value: "update-Cluster".

Status "target_uri" identifies: The cluster receiving the PUT.

Example Request: Add a tag on an existing Cluster named Production Web Tier.

 PUT /clusters/654321
 Host: example.com
 Authorization: Basic xxxxxxxxxxxxxxxxxxx
 Accept: application/vnd.com.sun.cloud.Cluster+json
 Content-Length: nnn
 Content-Type: application/vnd.com.sun.cloud.Cluster+json
 X-Cloud-Client-Specification-Version: 0.1
 
 {
   tags : [ "production", "monitoring" ]
 }

Example 1 Response:

 HTTP/1.1 202 Accepted
 Content-Type: application/vnd.com.sun.cloud.Status+json
 Content-Length: nnn
 
 {
   "op": "update-Cluster",
   "progress": 100,
   "target_uri": "/clusters/654321",
   "status_uri": "/statuses?op=update-cluster&seq=3552354232",
   "status" : 200
 }

Delete Cluster

Delete an existing cluster and all of its subordinate resources.

Synopsis: DELETE { URI of Cluster }

Request Headers: Authorization, X-Cloud-Client-Specification-Version.

Request Parameters: N/A.

Request Message Body: N/A.

Response Headers: Content-Length, Content-Type.

Response Message Body: Status for use in tracking deletion progress.

Response Status: 202, 400, 401, 403, 404.

Status "op" Value: "delete-Cluster".

Status "target_uri" identifies: The cluster being deleted.

Example Request: Delete an existing cluster named Staging Web Tier.

 DELETE /clusters/123456
 Host: example.com
 Authorization: Basic xxxxxxxxxxxxxxxxxxx
 X-Cloud-Client-Specification-Version: 0.1

Example Response:

 HTTP/1.1 202 Accepted
 Content-Type: application/vnd.com.sun.cloud.Status+json
 Content-Length: nnn
 
 {
   "op": "delete-Cluster",
   "progress": 100,
   "target_uri": "/clusters/123456",
   "status_uri": "/statuses?op=delete-cluster&cluster=123456",
   "status" : 200
 }

Create VM

Create a new VM associated with this Cluster. You can optionally specify the URI of a VM template or an existing VM as a basis of default values. The request is a POST of a VM representation, whose Media-Type MUST be "application/vnd.com.sun.cloud.VM+json".

Synopsis: POST { URI of Cluster }

Request Headers: Accept, Authorization, Content-Length, Content-Type, X-Cloud-Client-Specification-Version.

Request Parameters: N/A.

Request Message Body: VM.

Response Headers: Content-Length, Content-Type.

Response Message Body: Status for use in tracking VM creation progress.

Response Status: 202, 400, 401, 403, 404.

Status "op" Value: "new-VM".

Status "target_uri" identifies: The URI of the new VM once it is created.

Example 1 Request: Create a new VM named "web01".

 POST /clusters/cluster=123456
 Host: example.com
 Authorization: Basic xxxxxxxxxxxxxxxxxxx
 Accept: application/vnd.com.sun.cloud.VM+json
 Content-Length: nnn
 Content-Type: application/vnd.com.sun.cloud.VM+json
 X-Cloud-Client-Specification-Version: 0.1
 
 {
   "name" : "web01"
   "description" : "This is the old description"
   ... all the characteristics of a VM ...
 }

Example 1 Response:

 HTTP/1.1 202 Accepted
 Content-Type: application/vnd.com.sun.cloud.Status+json
 Content-Length: nnn
 
 {
   "op": "new-VM",
   "progress": 0,
   "target_uri": "/vms?cluster=123456&vm=web01",
   "status_uri": "/statuses?op=new-VM&cluster=123456&name=web01",
 }

Example 2 Request: Create a new VM named "web02" based on a VM Template but set the data disk size to 100gb.

 POST /clusters/cluster=123456
 Host: example.com
 Authorization: Basic xxxxxxxxxxxxxxxxxxx
 Accept: application/vnd.com.sun.cloud.VM+json
 Content-Length: nnn
 Content-Type: application/vnd.com.sun.cloud.VM+json
 X-Cloud-Client-Specification-Version: 0.1
 
 {
   "name" : "web02"
   "from_template": "http://example.com/templates/xyz",
   "data_disk" : 100
 }

Example 2 Response:

 HTTP/1.1 202 Accepted
 Content-Type: application/vnd.com.sun.cloud.Status+json
 Content-Length: nnn
 
 {
   "op": "new-VM",
   "progress": 100,
   "target_uri": "/vms?cluster=123456&vm=web02",
   "status_uri": "/statuses?op=new-VM&cluster=123456&name=web02",
   "status": 201
 }

Example 3 Request: Create a new VM named "web03" based on existing VM "web01".

 POST /clusters/cluster=123456
 Host: example.com
 Authorization: Basic xxxxxxxxxxxxxxxxxxx
 Accept: application/vnd.com.sun.cloud.VM+json
 Content-Length: nnn
 Content-Type: application/vnd.com.sun.cloud.VM+json
 X-Cloud-Client-Specification-Version: 0.1
 
 {
   "name" : "web03"
   "from_vm": "http://example.com/vms/33333"
 }

Example 3 Response:

 HTTP/1.1 202 Accepted
 Content-Type: application/vnd.com.sun.cloud.Status+json
 Content-Length: nnn
 
 {
   "op": "new-VM",
   "progress": 0,
   "target_uri": "/vms?cluster=123456&vm=web03",
   "status_uri": "/statuses?op=new-VM&cluster=123456&name=web03",
 }

Create VNet

Request the creation of a new VNet for use in this Cluster. Most of the fields of a VNet resource are automatically set in the course of its use; the only field required at creation time is its logical name. The request is a POST to the URI of the Cluster; the Content-Type MUST be "application/vnd.com.sun.cloud.VNet+json"

Synopsis: POST { URI of Cluster }

Request Headers: Accept, Authorization, Content-Length, Content-Type, X-Cloud-Client-Specification-Version.

Request Parameters: N/A.

Request Message Body: VNet.

Response Headers: Content-Length, Content-Type.

Response Message Body: Status for use in tracking VNet-creation progress.

Response Status: 202, 400, 401, 403, 404.

Status "op" Value: "new-VNet".

Status "target_uri" identifies: The URI of the new VNet once it is created.

Example 2 Request: Create a new VNet named Front End which will be used to connect the web tier and application tier clusters.

 POST /clusters/c~32425tt6231
 Host: example.com
 Authorization: Basic xxxxxxxxxxxxxxxxxxx
 Accept: application/vnd.com.sun.cloud.VNet+json
 Content-Length: nnn
 Content-Type: application/vnd.com.sun.cloud.VNet+json
 X-Cloud-Client-Specification-Version: 0.1
 
 {
   "name" : "Front End",
   "tags" : [ "webtier", "apptier" ]
 }

Example Response:

 HTTP/1.1 202 Accepted
 Content-Type: application/vnd.com.sun.cloud.Status+json
 Content-Length: nnn
 
 {
   "op": "new-VNet",
   "progress": 0,
   "target_uri": "/vnets/SFMCO**x",
   "status_uri": "/statuses?op=new-vnet&seq=9983711",
 }

Create Cluster

Create a new cluster, within this cluster, based on the request message body representation. There are two options for defining the complete configuration of the new cluster:

  • Specify only the name of the new cluster, and any related values.
  • Specify the name of the new cluster, the name of an existing cluster (in the from_cluster field) from which to clone the current set of related resources, and any additional values to override those copied from the original cluster.

The request is a POST to the URI of the Cluster; the Content-Type MUST be "application/vnd.com.sun.cloud.Cluster+json"

Synopsis: POST { URI of Cluster }

Request Headers: Accept, Authorization, Content-Length, Content-Type, X-Cloud-Client-Specification-Version.

Request Parameters: N/A.

Request Message Body: A Cluster resource model representing all of the required values, or only those that override an existing cluster as a source of default values.

Response Headers: Content-Length, Content-Type.

Response Message Body: Status for use in tracking cluster-creation progress.

Response Status: 202, 400, 401, 403, 404.

Status "op" Value: "new-Cluster".

Status "target_uri" identifies: The URI of the new Cluster once it is created.

Example 1 Request: Create a new empty cluster named Staging Web Tier.

 POST /vdcs/clusters?id=13589fj92h92f
 Host: example.com
 Authorization: Basic xxxxxxxxxxxxxxxxxxx
 Accept: application/vnd.com.sun.cloud.Cluster+json
 Content-Length: nnn
 Content-Type: application/vnd.com.sun.cloud.Cluster+json
 X-Cloud-Client-Specification-Version: 0.1
 
 {
   "name" : "Staging Web Tier",
   "tags" : [ "staging" ]
 }

Example 1 Response:

 HTTP/1.1 202 Accepted
 Content-Type: application/vnd.com.sun.cloud.Status+json
 Content-Length: nnn
 
 {
   "op": "new-Cluster",
   "progress": 0,
   "target_uri": "http://example.com/clusters/123456",
   "status_uri": "/statuses?op=new-cluster&parent=13589fj92h92f",
 }

Example 2 Request: Create a new cluster named Production Web Tier, cloned from "Staging Web Tier" after the resources for that tier had been built up and tested.

 POST /clusters?id=03AB3FF
 Host: example.com
 Authorization: Basic xxxxxxxxxxxxxxxxxxx
 Accept: application/vnd.com.sun.cloud.Cluster+json
 Content-Length: nnn
 Content-Type: application/vnd.com.sun.cloud.Cluster+json
 X-Cloud-Client-Specification-Version: 0.1
 
 {
   "name" : "Production Web Tier",
   "from_cluster" : "Staging Web Tier",
   "tags" : [ "production" ]
 }

Example 2 Response:

 HTTP/1.1 202 Accepted
 Content-Type: application/vnd.com.sun.cloud.Status+json
 Content-Length: nnn
 
 {
   "op": "new-Cluster",
   "progress": 0,
   "target_uri": "http://example.com/clusters/654321",
   "status_uri": "/statuses/209382tuy2-3t942"
 }

Control Cluster

A Cluster resource model may include one or more URIs in the controllers field, each keyed by the name of a state change being requested. Only the state changes that are legal for the current state of the Cluster will be included. A client application requests a state change by doing a POST to the correponding URI, and including in the request body an arbitrary set of name/value pairs used to influence the operation of the state change.

By convention, the name/value pairs included in the request may contain a field named note whose value is a text string intended for recording in a log on the server, to help identify this request during log file analysis.

Synopsis: POST {URI provided in Cluster representation}

Request Headers: Accept, Authorization, Content-Length, Content-Type, X-Cloud-Client-Specification-Version.

Request Parameters: N/A.

Request Message Body: Name/value pairs with media type "application/json".

Response Headers: Content-Length, Content-Type.

Response Message Body: Status for use in tracking request progress.

Response Status: 202, 400, 401, 403, 404.

Status "op" Value: "start-Cluster" or "stop-Cluster".

Status "target_uri" identifies: The cluster receiving the request.

Example Request: Start all VMs in Cluster.

 POST /cluster/start?name=123456
 Host: example.com
 Authorization: Basic xxxxxxxxxxxxxxxxxxx
 Content-Length: nnn
 Content-Type: application/json
 X-Cloud-Client-Specification-Version: 0.1
 
 {
   "note": "Start testbed per Friday meeting"
 }

Example Response:

 HTTP/1.1 202 Accepted
 Content-Type: application/vnd.com.sun.cloud.Status+json
 Content-Length: nnn
 
 {
   "op": "start-Cluster",
   "progress": 38,
   "target_uri": "/cluster/name=123456",
   "status_uri": "/statuses?op=start-cluster&cluster=123456"
 }

Copyright © Sun Microsystems, 2009. This work is licensed under Creative Commons Attribution 3.0 Unported License

  • Mysql
  • Glassfish
  • Jruby
  • Rails
  • Nblogo
Terms of Use; Privacy Policy;
© 2010, Oracle Corporation and/or its affiliates
(revision 20120127.ac94057)
 
 
Close
loading
Please Confirm
Close