81
Draft

OpenStack Compute Developer Guide fileThis document is intended for software developers interested in developing applications using the OpenStack Compute Application Programming Interface

  • Upload
    others

  • View
    16

  • Download
    0

Embed Size (px)

Citation preview

Page 2: OpenStack Compute Developer Guide fileThis document is intended for software developers interested in developing applications using the OpenStack Compute Application Programming Interface

OpenStack Compute Dev Guide(DRAFT)

Feb. 9, 2011 API v1.1

ii

OpenStack Compute Developer GuideAPI v1.1 (02/09/11)Copyright © 2009-2011 Rackspace US, Inc. All rights reserved.

This document is intended for software developers interested in developing applications using the OpenStack Compute ApplicationProgramming Interface (API). The document is for informational purposes only and is provided “AS IS.”

RACKSPACE MAKES NO REPRESENTATIONS OR WARRANTIES OF ANY KIND, EXPRESS OR IMPLIED, AS TO THE ACCURACY ORCOMPLETENESS OF THE CONTENTS OF THIS DOCUMENT AND RESERVES THE RIGHT TO MAKE CHANGES TO SPECIFICATIONS ANDPRODUCT/SERVICES DESCRIPTION AT ANY TIME WITHOUT NOTICE. RACKSPACE SERVICES OFFERINGS ARE SUBJECT TO CHANGEWITHOUT NOTICE. USERS MUST TAKE FULL RESPONSIBILITY FOR APPLICATION OF ANY SERVICES MENTIONED HEREIN. EXCEPT AS SETFORTH IN RACKSPACE GENERAL TERMS AND CONDITIONS AND/OR CLOUD TERMS OF SERVICE, RACKSPACE ASSUMES NO LIABILITYWHATSOEVER, AND DISCLAIMS ANY EXPRESS OR IMPLIED WARRANTY, RELATING TO ITS SERVICES INCLUDING, BUT NOT LIMITEDTO, THE IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT.

Except as expressly provided in any written license agreement from Rackspace, the furnishing of this document does not give you anylicense to patents, trademarks, copyrights, or other intellectual property.

Rackspace®, Rackspace logo and Fanatical Support® are registered service marks of Rackspace US, Inc. All other product names andtrademarks used in this document are for identification purposes only and are property of their respective owners.

Page 3: OpenStack Compute Developer Guide fileThis document is intended for software developers interested in developing applications using the OpenStack Compute Application Programming Interface

OpenStack Compute Dev Guide(DRAFT)

Feb. 9, 2011 API v1.1

iii

Table of Contents1. Overview ..................................................................................................................... 1

1.1. Intended Audience ........................................................................................... 11.2. Document Change History ................................................................................ 2

2. Concepts ..................................................................................................................... 32.1. Server ............................................................................................................... 32.2. Flavor ............................................................................................................... 32.3. Image ............................................................................................................... 32.4. Reboot ............................................................................................................. 32.5. Rebuild ............................................................................................................. 32.6. Resize ............................................................................................................... 32.7. Shared IP Address ............................................................................................ 32.8. Shared IP Group ............................................................................................... 4

3. General API Information ............................................................................................. 53.1. Authentication ................................................................................................. 53.2. Request/Response Types .................................................................................. 53.3. Content Compression ....................................................................................... 73.4. Persistent Connections ...................................................................................... 73.5. Paginated Collections ....................................................................................... 83.6. Caching ............................................................................................................ 83.7. Efficient Polling with the Changes-Since Parameter ...................................... 83.8. Limits ............................................................................................................... 9

3.8.1. Rate Limits ............................................................................................ 93.8.2. Absolute Limits .................................................................................... 103.8.3. Determining Limits Programmatically ................................................... 10

3.9. Versions .......................................................................................................... 133.10. Extensions .................................................................................................... 233.11. Faults ............................................................................................................ 32

4. API Operations .......................................................................................................... 354.1. Servers ............................................................................................................ 35

4.1.1. List Servers ........................................................................................... 354.1.2. Create Server ....................................................................................... 384.1.3. Get Server Details ................................................................................ 434.1.4. Update Server Name ............................................................................ 444.1.5. Delete Server ....................................................................................... 46

4.2. Server Addresses ............................................................................................ 474.2.1. List Addresses ...................................................................................... 474.2.2. List Public Addresses ............................................................................ 484.2.3. List Private Addresses ........................................................................... 494.2.4. Share an IP Address ............................................................................. 504.2.5. Unshare an IP Address ......................................................................... 51

4.3. Server Metadata ............................................................................................. 524.3.1. List Metadata ...................................................................................... 524.3.2. Update Metadata ................................................................................ 524.3.3. Get Metadata Item .............................................................................. 534.3.4. Update Metadata Item ........................................................................ 544.3.5. Delete Metadata Item ......................................................................... 54

4.4. Server Actions ................................................................................................ 564.4.1. Change Password ................................................................................ 56

Page 4: OpenStack Compute Developer Guide fileThis document is intended for software developers interested in developing applications using the OpenStack Compute Application Programming Interface

OpenStack Compute Dev Guide(DRAFT)

Feb. 9, 2011 API v1.1

iv

4.4.2. Reboot Server ...................................................................................... 564.4.3. Rebuild Server ...................................................................................... 584.4.4. Resize Server ........................................................................................ 604.4.5. Confirm Resized Server ........................................................................ 614.4.6. Revert Resized Server ........................................................................... 62

4.5. Flavors ............................................................................................................ 634.5.1. List Flavors ........................................................................................... 634.5.2. Get Flavor Details ................................................................................ 64

4.6. Images ........................................................................................................... 654.6.1. List Images .......................................................................................... 654.6.2. Create Image ....................................................................................... 664.6.3. Get Image Details ................................................................................ 684.6.4. Delete Image ....................................................................................... 69

4.7. Shared IP Groups ............................................................................................ 704.7.1. List Shared IP Groups ........................................................................... 704.7.2. Create Shared IP Group ....................................................................... 714.7.3. Get Shared IP Group Details ................................................................. 734.7.4. Delete Shared IP Group ....................................................................... 74

Page 5: OpenStack Compute Developer Guide fileThis document is intended for software developers interested in developing applications using the OpenStack Compute Application Programming Interface

OpenStack Compute Dev Guide(DRAFT)

Feb. 9, 2011 API v1.1

v

List of Tables3.1. JSON and XML Response Formats ............................................................................ 53.2. Encoding Headers .................................................................................................... 73.3. Last Modified Header ............................................................................................... 83.4. Default Rate Limits ................................................................................................... 93.5. Default Absolute Limits .......................................................................................... 103.6. Fault Elements and Error Codes .............................................................................. 33

Page 6: OpenStack Compute Developer Guide fileThis document is intended for software developers interested in developing applications using the OpenStack Compute Application Programming Interface

OpenStack Compute Dev Guide(DRAFT)

Feb. 9, 2011 API v1.1

vi

List of Examples3.1. Request with Headers: JSON .................................................................................... 53.2. Response with Headers: XML ................................................................................... 63.3. Request with Extension: JSON .................................................................................. 63.4. Limit Response: XML .............................................................................................. 113.5. Limit Response: JSON ............................................................................................. 123.6. Request with MIME type versioning ........................................................................ 133.7. Request with URI versioning ................................................................................... 133.8. Multiple Choices Response: XML ............................................................................. 143.9. Multiple Choices Response: JSON ............................................................................ 153.10. Versions List Request ............................................................................................ 163.11. Versions List Response: XML ................................................................................. 173.12. Versions List Response: Atom ................................................................................ 183.13. Versions List Response: JSON ................................................................................ 193.14. Version Details Request ........................................................................................ 203.15. Version Details Response: XML ............................................................................. 203.16. Version Details Response: Atom ............................................................................ 213.17. Version Details Response: JSON ............................................................................ 223.18. Extensions Response: XML .................................................................................... 243.19. Extensions Response: JSON ................................................................................... 253.20. Extension Response: xml ....................................................................................... 273.21. Extensions Response: JSON ................................................................................... 283.22. Extended Server Response: XML ........................................................................... 293.23. Extended Server Response: JSON .......................................................................... 303.24. Extended Action: XML .......................................................................................... 313.25. Extended Action: JSON ......................................................................................... 313.26. Fault Response: XML ............................................................................................ 323.27. Fault Response: JSON ........................................................................................... 323.28. Fault Response, Item Not Found: XML .................................................................. 333.29. Fault Response, Item Not Found: JSON ................................................................. 333.30. Fault Response, Over Limit: XML ........................................................................... 343.31. Fault Response, Over Limit: JSON .......................................................................... 344.1. Servers List Response: XML (detail) ......................................................................... 364.2. Servers List Response: JSON (detail) ........................................................................ 374.3. Server Create Request: XML ................................................................................... 394.4. Server Create Request: JSON .................................................................................. 404.5. Server Create Response: XML ................................................................................. 414.6. Server Create Response: JSON ................................................................................ 424.7. Server Details Response: XML ................................................................................. 434.8. Server Details Response: JSON ................................................................................ 444.9. Server Update Request: XML .................................................................................. 454.10. Server Update Request: JSON ............................................................................... 454.11. Addresses List Response: XML ............................................................................... 474.12. Addresses List Response: JSON .............................................................................. 484.13. Public Addresses List Response: XML ..................................................................... 484.14. Public Addresses List Response: JSON .................................................................... 494.15. Private Addresses List Response: XML ................................................................... 494.16. Private Addresses List Response: JSON .................................................................. 494.17. Share IP Request: XML ......................................................................................... 50

Page 7: OpenStack Compute Developer Guide fileThis document is intended for software developers interested in developing applications using the OpenStack Compute Application Programming Interface

OpenStack Compute Dev Guide(DRAFT)

Feb. 9, 2011 API v1.1

vii

4.18. Share IP Response: JSON ....................................................................................... 504.19. Metadata List Response: XML ............................................................................... 524.20. Metadata List Response: JSON .............................................................................. 524.21. Metadata Update Resquest: XML ......................................................................... 534.22. Metadata Update Request: JSON .......................................................................... 534.23. Metadata Item Response: XML ............................................................................. 534.24. Metadata Item Response: JSON ............................................................................ 544.25. Metadata Item Update Resquest: XML ................................................................. 544.26. Metadata Item Update Request: JSON .................................................................. 544.27. Server Update Request: XML ................................................................................ 564.28. Server Update Request: JSON ............................................................................... 564.29. Action Reboot: XML ............................................................................................. 574.30. Action Reboot: JSON ............................................................................................ 574.31. Action Rebuild: XML ............................................................................................. 584.32. Action Rebuild: JSON ............................................................................................ 594.33. Action Resize: XML ............................................................................................... 604.34. Action Resize: JSON .............................................................................................. 604.35. Action Confirm Resize: XML .................................................................................. 614.36. Action Confirm Resize: JSON ................................................................................. 614.37. Action Revert Resize: XML .................................................................................... 624.38. Action Revert Resize: JSON ................................................................................... 624.39. Flavors List Response: XML (detail) ....................................................................... 634.40. Flavors List Response: JSON (detail) ...................................................................... 634.41. Flavor Details Response: XML ............................................................................... 644.42. Flavor Details Response: JSON ............................................................................... 644.43. Images List Response: XML (detail) ....................................................................... 654.44. Images List Response: JSON (detail) ...................................................................... 664.45. Image Create Request: XML ................................................................................. 674.46. Image Create Request: JSON ................................................................................ 674.47. Image Create Response: XML ............................................................................... 674.48. Image Create Response: JSON .............................................................................. 674.49. Image Details Response: XML ............................................................................... 684.50. Image Details Response: JSON .............................................................................. 684.51. Shared IP Groups List Response: XML (detail) ........................................................ 704.52. Shared IP Groups List Response: JSON (detail) ....................................................... 714.53. Shared IP Group Create Request: XML .................................................................. 714.54. Shared IP Group Create Request: JSON ................................................................. 714.55. Shared IP Group Create Response: XML ................................................................ 724.56. Shared IP Group Create Response: JSON ............................................................... 724.57. Shared IP Group Details Response: XML ................................................................ 734.58. Shared IP Group Details Response: JSON ............................................................... 73

Page 8: OpenStack Compute Developer Guide fileThis document is intended for software developers interested in developing applications using the OpenStack Compute Application Programming Interface

OpenStack Compute Dev Guide(DRAFT)

Feb. 9, 2011 API v1.1

1

1. OverviewOpenStack Compute is a compute service that provides server capacity in the cloud. ComputeServers come in different flavors of memory, disk space, and CPU, and can be provisioned inminutes. Interactions with Compute Servers can occur programmatically via the OpenStackCompute API.

1.1. Intended AudienceThis Guide is intended to assist software developers who want to develop applications usingthe OpenStack Compute API. To use the information provided here, you should first havea general understanding of the OpenStack Compute service and have access to an accountfrom an OpenStack Compute provider. You should also be familiar with:

• ReSTful web services• HTTP/1.1• JSON and/or XML data serialization formats

Page 9: OpenStack Compute Developer Guide fileThis document is intended for software developers interested in developing applications using the OpenStack Compute Application Programming Interface

OpenStack Compute Dev Guide(DRAFT)

Feb. 9, 2011 API v1.1

2

1.2. Document Change HistoryThis version of the Developer Guide replaces and obsoletes all previous versions. The mostrecent changes are described in the table below:

Revision Date Summary of Changes

Feb. 9, 2011 • Initial release.

Page 10: OpenStack Compute Developer Guide fileThis document is intended for software developers interested in developing applications using the OpenStack Compute Application Programming Interface

OpenStack Compute Dev Guide(DRAFT)

Feb. 9, 2011 API v1.1

3

2. ConceptsTo use the OpenStack Compute API effectively, you should understand several key concepts:

2.1. ServerA server is a virtual machine instance in the compute system. Flavor and image are requisiteelements when creating a server.

2.2. FlavorA flavor is an available hardware configuration for a server. Each flavor has a uniquecombination of disk space, memory capacity and priority for CPU time.

2.3. ImageAn image is a collection of files used to create or rebuild a server. Operators provide a numberof pre-built OS images by default. You may also create custom images from cloud servers youhave launched. These custom images are useful for backup purposes or for producing “gold”server images if you plan to deploy a particular server configuration frequently.

2.4. RebootThe reboot function allows for either a soft or hard reboot of a server. With a soft reboot, theoperating system is signaled to restart, which allows for a graceful shutdown of all processes.A hard reboot is the equivalent of power cycling the server.

2.5. RebuildThe rebuild function removes all data on the server and replaces it with the specified image.Server ID and IP addresses remain the same.

2.6. ResizeThe resize function converts an existing server to a different flavor, in essence, scaling theserver up or down. The original server is saved for a period of time to allow rollback ifthere is a problem. All resizes should be tested and explicitly confirmed, at which time theoriginal server is removed. All resizes are automatically confirmed after 24 hours if they arenot confirmed or reverted.

2.7. Shared IP AddressPublic IP addresses can be shared across multiple servers for use in various high availabilityscenarios. When an IP address is shared to another server, the cloud network restrictions aremodified to allow each server to listen to and respond on that IP address (you may optionallyspecify that the target server network configuration be modified). Shared IP addresses can

Page 11: OpenStack Compute Developer Guide fileThis document is intended for software developers interested in developing applications using the OpenStack Compute Application Programming Interface

OpenStack Compute Dev Guide(DRAFT)

Feb. 9, 2011 API v1.1

4

be used with many standard heartbeat facilities (e.g. keepalived) that monitor for failure andmanage IP failover.

2.8. Shared IP GroupA shared IP group is a collection of servers that can share IPs with other members of thegroup. Any server in a group can share one or more public IPs with any other server in thegroup. With the exception of the first server in a shared IP group, servers must be launchedinto shared IP groups. A server may only be a member of one shared IP group.

Page 12: OpenStack Compute Developer Guide fileThis document is intended for software developers interested in developing applications using the OpenStack Compute Application Programming Interface

OpenStack Compute Dev Guide(DRAFT)

Feb. 9, 2011 API v1.1

5

3. General API InformationThe OpenStack Compute API is implemented using a ReSTful web service interface.

Note

All requests to authenticate and operate against Cloud Servers are performedusing SSL over HTTP (HTTPS) on TCP port 443.

3.1. AuthenticationEach ReST request against the OpenStack Compute system requires the inclusion ofspecific authentication credentials. A single deployment may support multiple authenticationschemes (OAuth, Basic Auth, Token). The authentication scheme used is determined bythe provider of the OpenStack Compute system. Please contact contact your provider todetermine the best way to authenticate against this API.

3.2. Request/Response TypesThe OpenStack Compute API supports both the JSON and XML data serialization formats. Therequest format is specified using the Content-Type header and is required for operationsthat have a request body. The response format can be specified in requests using either theAccept header or adding an .xml or .json extension to the request URI. Note that it is possiblefor a response to be serialized using a format different from the request (see example below).If no response format is specified, JSON is the default. If conflicting formats are specified usingboth an Accept header and a query extension, the query extension takes precedence.

Table 3.1. JSON and XML Response Formats

Format Accept Header Query Extension Default

JSON application/json .json Yes

XML application/xml .xml No

Example 3.1. Request with Headers: JSON

POST /v1.1/214412/images HTTP/1.1Host: servers.api.openstack.orgContent-Type: application/jsonAccept: application/xmlX-Auth-Token: eaaafd18-0fed-4b3a-81b4-663c99ec1cbb

{ "image" : { "serverId" : 12, "name" : "Just in case"}}

Page 13: OpenStack Compute Developer Guide fileThis document is intended for software developers interested in developing applications using the OpenStack Compute Application Programming Interface

OpenStack Compute Dev Guide(DRAFT)

Feb. 9, 2011 API v1.1

6

Example 3.2. Response with Headers: XML

HTTP/1.1 200 OKAYDate: Mon, 12 Nov 2007 15:55:01 GMTServer: ApacheContent-Length: 185

Content-Type: application/xml; charset=UTF-8<image xmlns="http://docs.openstack.org/compute/api/v1.1" id="22" name="Just in case" serverId="12" created="2010-10-10T12:00:00Z" status="SAVING" progress="0" />

Notice, in the above example, that the content type is set to application/json but application/xml is requested via the Accept header. An alternative method of achieving the same resultis illustrated below – this time we utilize a URI extension instead of an Accept header.

Example 3.3. Request with Extension: JSON

POST /v1.1/214412/images .xml HTTP/1.1Host: servers.api.openstack.orgContent-Type: application/jsonX-Auth-Token: eaaafd18-0fed-4b3a-81b4-663c99ec1cbb

{ "image" : { "serverId" : 12, "name" : "Just in case"}}

Page 14: OpenStack Compute Developer Guide fileThis document is intended for software developers interested in developing applications using the OpenStack Compute Application Programming Interface

OpenStack Compute Dev Guide(DRAFT)

Feb. 9, 2011 API v1.1

7

3.3. Content CompressionRequest and response body data may be encoded with gzip compression in order toaccelerate interactive performance of API calls and responses. This is controlled using theAccept-Encoding header on the request from the client and indicated by the Content-Encoding header in the server response. Unless the header is explicitly set, encoding defaultsto disabled.

Table 3.2. Encoding Headers

Header Type Name Value

HTTP/1.1 Request Accept-Encoding gzip

HTTP/1.1 Response Content-Encoding gzip

3.4. Persistent ConnectionsBy default, the API supports persistent connections via HTTP/1.1 keepalives. All connectionswill be kept alive unless the connection header is set to close.

To prevent abuse, HTTP sessions have a timeout of 20 seconds before being closed.

Note

The server may close the connection at any time and clients should not rely onthis behavior.

Page 15: OpenStack Compute Developer Guide fileThis document is intended for software developers interested in developing applications using the OpenStack Compute Application Programming Interface

OpenStack Compute Dev Guide(DRAFT)

Feb. 9, 2011 API v1.1

8

3.5. Paginated CollectionsTo reduce load on the service, list operations will return a maximum of items at atime. The maximum number of items returned is determined by compute provider. Tonavigate the collection, the parameters limit and marker can be set in the URI(e.g.?limit=0&marker=1234). The marker parameter is the ID of the last item in theprevious list. Items are sorted by update time. When an update time is not available they aresorted by ID. For convenience, an Atom "next" and "previous" links will be returned in withcollections. The first page in the list will not contain a "previous" link, the last page in thelist will not contain a "next" link. Note that list operations never return itemNotFound (404)faults — applications should expect an empty list instead.

3.6. CachingThe OpenStack Compute API makes extensive use of caching layers at various tiers of thesystem. Purging mechanisms exist to ensure that objects served out of cache are accurate andup to date. GETs returning a cached entity return a 203 (Cached) to signal users that the valueis being served out of cache. Additionally, cached entities have the following header set:

Table 3.3. Last Modified Header

Header Description

Last-Modified Date and time when the entity was last updated in cache.

3.7. Efficient Polling with the Changes-SinceParameter

The ReST API allows you to poll for the status of certain operations by performing aGET on various elements. Rather than re-downloading and re-parsing the full status ateach polling interval, your ReST client may use the changes-since parameter to checkfor changes since a previous request. The changes-since time is specified as an ISO8601 dateTime (2011-01-24T17:08Z). You may also specify a date without a timestamp(2011-01-24), in this case the UTC timezone will be assumed. If nothing has changed sincethe changes-since time, a 304 (Not Modified) response will be returned. If data haschanged, only the items changed since the specified time will be returned in the response.For example, performing a GET against https://api.servers.openstack.org/v1.1/224532/servers?changes-since=2011-01-24T17:08Z would list all servers that have changed sinceMon, 24 Jan 2011 17:08:00 UTC.

Page 16: OpenStack Compute Developer Guide fileThis document is intended for software developers interested in developing applications using the OpenStack Compute Application Programming Interface

OpenStack Compute Dev Guide(DRAFT)

Feb. 9, 2011 API v1.1

9

3.8. LimitsAll accounts, by default, have a preconfigured set of thresholds (or limits) to manage capacityand prevent abuse of the system. The system recognizes two kinds of limits: rate limits andabsolute limits. Rate limits are thresholds that are reset after a certain amount of time passes.Absolute limits are fixed.

Note

If the default limits are too low for your particular application, you may contactyour provider to request an increase.

3.8.1. Rate Limits

We specify rate limits in terms of both a human-readable wild-card URI and a machine-processable regular expression. The regular expression boundary matcher '^' takes effect afterthe root URI path. For example, the regular expression ^/servers would match the boldedportion of the following URI: https://servers.api.openstack.org/v1.1/3542812/servers.

Table 3.4. Default Rate Limits

Verb URI RegEx Default

POST * .* 10/min

POST */servers ^/servers 50/day

PUT * .* 10/min

GET *changes-since* changes-since 3/min

DELETE * .* 100/min

Rate limits are applied in order relative to the verb, going from least to most specific. Forexample, although the threshold for POST to */servers is 50 per day, one cannot POST to*/servers more than 10 times within a single minute because the rate limits for any POST is10/min.

In the event you exceed the thresholds established for your account, a 413 (Rate Control)HTTP response will be returned with a Reply-After header to notify the client when theycan attempt to try again.

Page 17: OpenStack Compute Developer Guide fileThis document is intended for software developers interested in developing applications using the OpenStack Compute Application Programming Interface

OpenStack Compute Dev Guide(DRAFT)

Feb. 9, 2011 API v1.1

10

3.8.2. Absolute Limits

“Maximum total amount of RAM (GB)” limits the number of instances you can run based onthe total aggregate RAM size. For example, with the default limit of 50GB, you may launch amaximum of 200 256MB compute servers, or 100 512MB compute servers, or 50 1GB computeservers, or 20 2GB + 40 256MB compute servers, etc. These limits apply to creating as wellas resizing servers.

Table 3.5. Default Absolute Limits

Limit Default

Maximum total amount of RAM (GB) 50

Maximum number of shared IP groups 25

Maximum number of members per shared IP group 25

3.8.3. Determining Limits Programmatically

Applications can programmatically determine current account limits using the /limits URI asfollows:

Verb URI Description

GET /limits Returns the current limits for your account

Normal Response Code(s): 200, 203

Error Response Code(s): computeFault (400, 500), serviceUnavailable (503), unauthorized(401), badRequest (400), overLimit (413)

This operation does not require a request body.

Page 18: OpenStack Compute Developer Guide fileThis document is intended for software developers interested in developing applications using the OpenStack Compute Application Programming Interface

OpenStack Compute Dev Guide(DRAFT)

Feb. 9, 2011 API v1.1

11

Example 3.4. Limit Response: XML

<?xml version="1.0" encoding="UTF-8"?><limits xmlns="http://docs.openstack.org/common/api/v1.0"> <rates> <rate uri="*" regex=".*"> <limit value="10" verb="POST" remaining="2" unit="MINUTE" next-available="2011-12-15T22:42:45Z"/> <limit value="10" verb="PUT" remaining="2" unit="MINUTE" next-available="2011-12-15T22:42:45Z"/> <limit value="3" verb="GET" remaining="3" unit="MINUTE" next-available="2011-12-15T22:42:45Z"/> <limit value="100" verb="DELETE" remaining="100" unit="MINUTE" next-available="2011-12-15T22:42:45Z"/> </rate> <rate uri="*/servers" regex="^/servers"> <limit verb="POST" value="25" remaining="24" unit="DAY" next-available="2011-12-15T22:42:45Z"/> </rate> </rates> <absolute> <limit name="maxTotalRAMSize" value="51200"/> <limit name="maxIPGroups" value="50"/> <limit name="maxIPGroupMembers" value="25"/> </absolute></limits>

Page 19: OpenStack Compute Developer Guide fileThis document is intended for software developers interested in developing applications using the OpenStack Compute Application Programming Interface

OpenStack Compute Dev Guide(DRAFT)

Feb. 9, 2011 API v1.1

12

Example 3.5. Limit Response: JSON

{ "limits" : { "rate" : [ { "uri" : "*", "regex" : ".*", "limit" : [ { "value" : 10, "verb" : "POST", "remaining" : 2, "unit" : "MINUTE", "next-available" : "2011-12-15T22:42:45Z" }, { "value" : 10, "verb" : "PUT", "remaining" : 2, "unit" : "MINUTE", "next-available" : "2011-12-15T22:42:45Z" }, { "value" : 3, "verb" : "GET", "remaining" : 3, "unit" : "MINUTE", "next-available" : "2011-12-15T22:42:45Z" }, { "value" : 100, "verb" : "DELETE", "remaining" : 100, "unit" : "MINUTE", "next-available" : "2011-12-15T22:42:45Z" } ] }, { "uri" : "*/servers", "regex" : "^/servers", "limit" : [ { "verb" : "POST", "value" : 25, "remaining" : 24, "unit" : "DAY", "next-available" : "2011-12-15T22:42:45Z" } ] } ] , "absolute" : { "maxTotalRAMSize" : 51200, "maxIPGroups" : 50, "maxIPGroupMembers" : 25 } }}

Page 20: OpenStack Compute Developer Guide fileThis document is intended for software developers interested in developing applications using the OpenStack Compute Application Programming Interface

OpenStack Compute Dev Guide(DRAFT)

Feb. 9, 2011 API v1.1

13

3.9. VersionsThe OpenStack Compute API uses both a URI and a MIME type versioning scheme. In theURI scheme, the first element of the path contains the target version identifier (e.g. https://servers.api.openstack.org/ v1.0/…). The MIME type versioning scheme uses HTTP contentnegotiation where the Accept or Content-Type headers contains a MIME type thatidentifies the version (application/vnd.openstack.servers-v1.0+xml). A version MIME typeis always linked to a base MIME type (application/xml or application/json). If conflictingversions are specified using both an HTTP header and a URI, the URI takes precedence.

Example 3.6. Request with MIME type versioning

GET /214412/images HTTP/1.1Host: servers.api.openstack.orgAccept: application/vnd.openstack.servers-v1.0+xmlX-Auth-Token: eaaafd18-0fed-4b3a-81b4-663c99ec1cbb

Example 3.7. Request with URI versioning

GET /v1.1/214412/images HTTP/1.1Host: servers.api.openstack.orgAccept: application/xmlX-Auth-Token: eaaafd18-0fed-4b3a-81b4-663c99ec1cbb

Note

The MIME type versioning approach allows for the creating of permanentlinks, because the version scheme is not specified in the URI path: https://api.servers.openstack.org/224532/servers/123.

Page 21: OpenStack Compute Developer Guide fileThis document is intended for software developers interested in developing applications using the OpenStack Compute Application Programming Interface

OpenStack Compute Dev Guide(DRAFT)

Feb. 9, 2011 API v1.1

14

If a request is made without a version specified in the URI or via HTTP headers, then a multiple-choices response (300) will follow providing links and MIME types to available versions.

Example 3.8. Multiple Choices Response: XML

<?xml version="1.0" encoding="UTF-8"?>

<choices xmlns="http://docs.openstack.org/common/api/v1.0" xmlns:atom="http://www.w3.org/2005/Atom"> <version id="v1.0" status="DEPRECATED"> <media-types> <media-type base="application/xml" type="application/vnd.openstack.servers-v1.0+xml"/> <media-type base="application/json" type="application/vnd.openstack.servers-v1.0+json"/> </media-types> <atom:link rel="self" href="http://servers.api.openstack.org/v1.0/1234/servers/12"/> </version> <version id="v1.1" status="CURRENT"> <media-types> <media-type base="application/xml" type="application/vnd.openstack.servers-v1.1+xml"/> <media-type base="application/json" type="application/vnd.openstack.servers-v1.1+json"/> </media-types> <atom:link rel="self" href="http://servers.api.openstack.org/v1.1/1234/servers/12"/> </version></choices>

Page 22: OpenStack Compute Developer Guide fileThis document is intended for software developers interested in developing applications using the OpenStack Compute Application Programming Interface

OpenStack Compute Dev Guide(DRAFT)

Feb. 9, 2011 API v1.1

15

Example 3.9. Multiple Choices Response: JSON

{ "choices" : [ { "id" : "v1.0", "status" : "DEPRECATED", "links": [ { "rel" : "self", "href" : "http://servers.api.openstack.org/v1.0/1234/servers/12" } ], "media-types": [ { "base" : "application/xml", "type" : "application/vnd.openstack.servers-v1.0+xml" }, { "base" : "application/json", "type" : "application/vnd.openstack.servers-v1.0+json" } ] }, { "id" : "v1.1", "status" : "CURRENT", "links": [ { "rel" : "self", "href" : "http://servers.api.openstack.org/v1.1/1234/servers/12" } ], "media-types": [ { "base" : "application/xml", "type" : "application/vnd.openstack.servers-v1.1+xml" }, { "base" : "application/json", "type" : "application/vnd.openstack.servers-v1.1+json" } ] } ]}

Page 23: OpenStack Compute Developer Guide fileThis document is intended for software developers interested in developing applications using the OpenStack Compute Application Programming Interface

OpenStack Compute Dev Guide(DRAFT)

Feb. 9, 2011 API v1.1

16

New features and functionality that do not break API-compatibility will be introduced inthe current version of the API as extensions (see below) and the URI and MIME types willremain unchanged. Features or functionality changes that would necessitate a break in API-compatibility will require a new version, which will result in URI and MIME type version beingupdated accordingly. When new API versions are released, older versions will be markedas DEPRECATED. Providers should work with developers and partners to ensure there isadequate time to migrate to the new version before deprecated versions are discontinued.

Your application can programmatically determine available API versions by performing a GETon the root URL (i.e. with the version and everything to the right of it truncated) returnedfrom the authentication system. Note that an Atom representation of the versions resourcesis supported when issuing a request with the Accept header containing application/atom+xml or by adding a .atom to the request URI. This allows standard Atom clients to trackversion changes.

Example 3.10. Versions List Request

GET HTTP/1.1Host: servers.api.openstack.org

Normal Response Code(s): 200, 203

Error Response Code(s): 400, 413, 500, 503

This operation does not require a request body.

Page 24: OpenStack Compute Developer Guide fileThis document is intended for software developers interested in developing applications using the OpenStack Compute Application Programming Interface

OpenStack Compute Dev Guide(DRAFT)

Feb. 9, 2011 API v1.1

17

Example 3.11. Versions List Response: XML

<?xml version="1.0" encoding="UTF-8"?>

<versions xmlns="http://docs.openstack.org/common/api/v1.0" xmlns:atom="http://www.w3.org/2005/Atom">

<version id="v1.0" status="DEPRECATED" updated="2009-10-09T11:30:00Z">

<media-types> <media-type base="application/xml" type="application/vnd.openstack.servers-v1.0+xml"/> <media-type base="application/json" type="application/vnd.openstack.servers-v1.0+json"/> </media-types>

<atom:link rel="self" href="http://servers.api.openstack.org/v1.0/"/> </version>

<version id="v1.1" status="CURRENT" updated="2010-12-12T18:30:02.25Z"> <media-types> <media-type base="application/xml" type="application/vnd.openstack.servers-v1.1+xml"/> <media-type base="application/json" type="application/vnd.openstack.servers-v1.1+json"/> </media-types>

<atom:link rel="self" href="http://servers.api.openstack.org/v1.1/"/> </version>

</versions>

Page 25: OpenStack Compute Developer Guide fileThis document is intended for software developers interested in developing applications using the OpenStack Compute Application Programming Interface

OpenStack Compute Dev Guide(DRAFT)

Feb. 9, 2011 API v1.1

18

Example 3.12. Versions List Response: Atom

<?xml version="1.0" encoding="UTF-8"?><feed xmlns="http://www.w3.org/2005/Atom"> <title type="text">Available API Versions</title> <updated>2010-12-12T18:30:02.25Z</updated> <id>http://servers.api.openstack.org/</id> <author><name>Rackspace</name><uri>http://www.rackspace.com/</uri></author> <link rel="self" href="http://servers.api.openstack.org/"/> <entry> <id>http://servers.api.openstack.org/v1.1/</id> <title type="text">Version v1.1</title> <updated>2010-12-12T18:30:02.25Z</updated> <link rel="self" href="http://servers.api.openstack.org/v1.1/"/> <content type="text">Version v1.1 CURRENT (2010-12-12T18:30:02.25Z)</content> </entry> <entry> <id>http://servers.api.openstack.org/v1.0/</id> <title type="text">Version v1.0</title> <updated>2009-10-09T11:30:00Z</updated> <link rel="self" href="http://servers.api.openstack.org/v1.0/"/> <content type="text">Version v1.0 DEPRECATED (2009-10-09T11:30:00Z)</content> </entry></feed>

Page 26: OpenStack Compute Developer Guide fileThis document is intended for software developers interested in developing applications using the OpenStack Compute Application Programming Interface

OpenStack Compute Dev Guide(DRAFT)

Feb. 9, 2011 API v1.1

19

Example 3.13. Versions List Response: JSON

{ "versions" : [ { "id" : "v1.0", "status" : "DEPRECATED", "updated" : "2009-10-09T11:30:00Z", "links": [ { "rel" : "self", "href" : "http://servers.api.openstack.org/v1.0/" } ], "media-types": [ { "base" : "application/xml", "type" : "application/vnd.openstack.servers-v1.0+xml" }, { "base" : "application/json", "type" : "application/vnd.openstack.servers-v1.0+json" } ] }, { "id" : "v1.1", "status" : "CURRENT", "updated" : "2010-12-12T18:30:02.25Z", "links": [ { "rel" : "self", "href" : "http://servers.api.openstack.org/v1.1/" } ], "media-types": [ { "base" : "application/xml", "type" : "application/vnd.openstack.servers-v1.1+xml" }, { "base" : "application/json", "type" : "application/vnd.openstack.servers-v1.1+json" } ] } ]}

Page 27: OpenStack Compute Developer Guide fileThis document is intended for software developers interested in developing applications using the OpenStack Compute Application Programming Interface

OpenStack Compute Dev Guide(DRAFT)

Feb. 9, 2011 API v1.1

20

You can also obtain additional information about a specific version by performing a GETon the base version URL (e.g. https://servers.api.openstack.org/v1.1/). Version request URLsshould always end with a trailing slash (/). If the slash is omitted, the server may respondwith a 302 redirection request. Format extensions may be placed after the slash (e.g. https://servers.api.openstack.org/v1.1/.xml). Note that this is a special case that does not hold truefor other API requests. In general, requests such as /servers.xml and /servers/.xml are handledequivalently.

Example 3.14. Version Details Request

GET HTTP/1.1Host: servers.api.openstack.org/v1.1/

Normal Response Code(s): 200, 203

Error Response Code(s): computeFault (400, 500), serviceUnavailable (503), unauthorized(401), badRequest (400), overLimit(413)

This operation does not require a request body

Example 3.15. Version Details Response: XML

<?xml version="1.0" encoding="UTF-8"?><version xmlns="http://docs.openstack.org/common/api/v1.0" xmlns:atom="http://www.w3.org/2005/Atom" id="v1.1" status="CURRENT" updated="2011-01-21T11:33:21-06:00">

<media-types> <media-type base="application/xml" type="application/vnd.openstack.servers-v1.1+xml"/> <media-type base="application/json" type="application/vnd.openstack.servers-v1.1+json"/> </media-types>

<atom:link rel="self" href="http://servers.api.openstack.org/v1.0/"/>

<atom:link rel="describedby" type="application/pdf" href="http://docs.rackspacecloud.com/servers/api/v1.1/cs-devguide-20110125.pdf" />

<atom:link rel="describedby" type="application/vnd.sun.wadl+xml" href="http://docs.rackspacecloud.com/servers/api/v1.1/application.wadl" /></version>

Page 28: OpenStack Compute Developer Guide fileThis document is intended for software developers interested in developing applications using the OpenStack Compute Application Programming Interface

OpenStack Compute Dev Guide(DRAFT)

Feb. 9, 2011 API v1.1

21

Example 3.16. Version Details Response: Atom

<?xml version="1.0" encoding="UTF-8"?><feed xmlns="http://www.w3.org/2005/Atom"> <title type="text">About This Version</title> <updated>2011-01-21T11:33:21-06:00</updated> <id>http://servers.api.openstack.org/v1.0/</id> <author><name>Rackspace</name><uri>http://www.rackspace.com/</uri></author> <link rel="self" href="http://servers.api.openstack.org/v1.0/"/> <entry> <id>http://servers.api.openstack.org/v1.0/</id> <title type="text">Version v1.1</title> <updated>2011-01-21T11:33:21-06:00</updated> <link rel="self" href="http://servers.api.openstack.org/v1.0/"/> <link rel="describedby" type="application/pdf" href="http://docs.rackspacecloud.com/servers/api/v1.1/cs-devguide-20110125.pdf"/> <link rel="describedby" type="application/vnd.sun.wadl+xml" href="http://docs.rackspacecloud.com/servers/api/v1.1/application.wadl"/> <content type="text">Version v1.1 CURRENT (2011-01-21T11:33:21-06:00)</content> </entry></feed>

Page 29: OpenStack Compute Developer Guide fileThis document is intended for software developers interested in developing applications using the OpenStack Compute Application Programming Interface

OpenStack Compute Dev Guide(DRAFT)

Feb. 9, 2011 API v1.1

22

Example 3.17. Version Details Response: JSON

{ "version" : { "id" : "v1.1", "status" : "CURRENT", "updated" : "2011-01-21T11:33:21-06:00", "links": [ { "rel" : "describedby", "type" : "application/pdf", "href" : "http://docs.rackspacecloud.com/servers/api/v1.1/cs-devguide-20110125.pdf" }, { "rel" : "describedby", "type" : "application/vnd.sun.wadl+xml", "href" : "http://docs.rackspacecloud.com/servers/api/v1.1/application.wadl" } ], "media-types": [ { "base" : "application/xml", "type" : "application/vnd.openstack.servers-v1.1+xml" }, { "base" : "application/json", "type" : "application/vnd.openstack.servers-v1.1+json" } ] }}

The detailed version response contains pointers to both a human-readable and a machine-processable description of the API service. The machine-processable description is written inthe Web Application Description Language (WADL).

Note

If there is a discrepancy between the two specifications, the WADL isauthoritative as it contains the most accurate and up-to-date description of theAPI service.

Page 30: OpenStack Compute Developer Guide fileThis document is intended for software developers interested in developing applications using the OpenStack Compute Application Programming Interface

OpenStack Compute Dev Guide(DRAFT)

Feb. 9, 2011 API v1.1

23

3.10. ExtensionsThe OpenStack Compute API is extensible. Extensions serve two purposes: They allow theintroduction of new features in the API without requiring a version change and they allowthe introduction of vendor specific niche functionality. Applications can programmaticallydetermine what extensions are available by performing a GET on the /extensions URI. Notethat this is a versioned request — that is, an extension available in one API version may notbe available in another.

Verb URI Description

GET /extensions Returns a list of available extensions

Normal Response Code(s): 200, 203

Error Response Code(s): computeFault (400, 500), serviceUnavailable (503), badRequest(400), overLimit (413)

This operation does not require a request body. Each extension is identified by two uniqueidentifiers, a namespace and an alias. Additionally an extension contains documentation linksin various formats.

Page 31: OpenStack Compute Developer Guide fileThis document is intended for software developers interested in developing applications using the OpenStack Compute Application Programming Interface

OpenStack Compute Dev Guide(DRAFT)

Feb. 9, 2011 API v1.1

24

Example 3.18. Extensions Response: XML

<?xml version="1.0" encoding="UTF-8"?>

<extensions xmlns="http://docs.openstack.org/common/api/v1.0" xmlns:atom="http://www.w3.org/2005/Atom">

<extension name="Public Image Extension" namespace="http://docs.rackspacecloud.com/servers/api/ext/pie/v1.0" alias="RS-PIE" updated="2011-01-22T13:25:27-06:00">

<description> Adds the capability to share an image with other users. </description>

<atom:link rel="describedby" type="application/pdf" href="http://docs.rackspacecloud.com/servers/api/ext/cs-pie-20111111.pdf"/> <atom:link rel="describedby" type="application/vnd.sun.wadl+xml" href="http://docs.rackspacecloud.com/servers/api/ext/cs-pie.wadl"/> </extension>

<extension name="Cloud Block Storage" namespace="http://docs.rackspacecloud.com/servers/api/ext/cbs/v1.0" alias="RS-CBS" updated="2011-01-12T11:22:33-06:00" > <description> Allows mounting cloud block storage volumes. </description>

<atom:link rel="describedby" type="application/pdf" href="http://docs.rackspacecloud.com/servers/api/ext/cs-cbs-20111201.pdf"/> <atom:link rel="describedby" type="application/vnd.sun.wadl+xml" href="http://docs.rackspacecloud.com/servers/api/ext/cs-cbs.wadl"/> </extension></extensions>

Page 32: OpenStack Compute Developer Guide fileThis document is intended for software developers interested in developing applications using the OpenStack Compute Application Programming Interface

OpenStack Compute Dev Guide(DRAFT)

Feb. 9, 2011 API v1.1

25

Example 3.19. Extensions Response: JSON

{ "extensions" : [ { "name" : "Public Image Extension", "namespace" : "http://docs.rackspacecloud.com/servers/api/ext/pie/v1.0", "alias" : "RS-PIE", "updated" : "2011-01-22T13:25:27-06:00", "description" : "Adds the capability to share an image with other users.", "links" : [ { "rel" : "describedby", "type" : "application/pdf", "href" : "http://docs.rackspacecloud.com/servers/api/ext/cs-pie-20111111.pdf" }, { "rel" : "describedby", "type" : "application/vnd.sun.wadl+xml", "href" : "http://docs.rackspacecloud.com/servers/api/ext/cs-pie.wadl" } ] }, { "name" : "Cloud Block Storage", "namespace" : "http://docs.rackspacecloud.com/servers/api/ext/cbs/v1.0", "alias" : "RS-CBS", "updated" : "2011-01-12T11:22:33-06:00", "description" : "Allows mounting cloud block storage volumes.", "links" : [ { "rel" : "describedby", "type" : "application/pdf", "href" : "http://docs.rackspacecloud.com/servers/api/ext/cs-cbs-20111201.pdf" }, { "rel" : "describedby", "type" : "application/vnd.sun.wadl+xml", "href" : "http://docs.rackspacecloud.com/servers/api/ext/cs-cbs.wadl" } ] } ]}

Page 33: OpenStack Compute Developer Guide fileThis document is intended for software developers interested in developing applications using the OpenStack Compute Application Programming Interface

OpenStack Compute Dev Guide(DRAFT)

Feb. 9, 2011 API v1.1

26

Extensions may also be queried individually by their unique alias. This provides the simplestmethod of checking if an extension is available as an unavailable extension will issue anitemNotFound (404) response.

Verb URI Description

GET /extensions/alias Return details of a single extension

Normal Response Code(s): 200, 203

Error Response Code(s): computeFault (400, 500), serviceUnavailable (503), badRequest(400), itemNotFound (404), overLimit (413)

Page 34: OpenStack Compute Developer Guide fileThis document is intended for software developers interested in developing applications using the OpenStack Compute Application Programming Interface

OpenStack Compute Dev Guide(DRAFT)

Feb. 9, 2011 API v1.1

27

Example 3.20. Extension Response: xml

<?xml version="1.0" encoding="UTF-8"?>

<extension xmlns="http://docs.openstack.org/common/api/v1.0" xmlns:atom="http://www.w3.org/2005/Atom" name="Public Image Extension" namespace="http://docs.rackspacecloud.com/servers/api/ext/pie/v1.0" alias="RS-PIE" updated="2011-01-22T13:25:27-06:00">

<description> Adds the capability to share an image with other users. </description>

<atom:link rel="describedby" type="application/pdf" href="http://docs.rackspacecloud.com/servers/api/ext/cs-pie-20111111.pdf"/>

<atom:link rel="describedby" type="application/vnd.sun.wadl+xml" href="http://docs.rackspacecloud.com/servers/api/ext/cs-pie.wadl"/></extension>

Page 35: OpenStack Compute Developer Guide fileThis document is intended for software developers interested in developing applications using the OpenStack Compute Application Programming Interface

OpenStack Compute Dev Guide(DRAFT)

Feb. 9, 2011 API v1.1

28

Example 3.21. Extensions Response: JSON

{ "extension" : { "name" : "Public Image Extension", "namespace" : "http://docs.rackspacecloud.com/servers/api/ext/pie/v1.0", "alias" : "RS-PIE", "updated" : "2011-01-22T13:25:27-06:00", "description" : "Adds the capability to share an image with other users.", "links" : [ { "rel" : "describedby", "type" : "application/pdf", "href" : "http://docs.rackspacecloud.com/servers/api/ext/cs-pie-20111111.pdf" }, { "rel" : "describedby", "type" : "application/vnd.sun.wadl+xml", "href" : "http://docs.rackspacecloud.com/servers/api/ext/cs-pie.wadl" } ] }}

Extensions may define new data types, parameters, actions, headers, states, and resources.In XML, additional elements and attributes may be defined. These elements must be definedin the extension's namespace. In JSON, the alias must be used. The volumes element in theExamples 3.22 and 3.23 is defined in the RS-CBS namespace. Actions work in exactly thesame manner as illustrated in Examples 3.24 and 3.25. Extended headers are always prefixedwith X- followed by the alias and a dash: (X-RS-CBS-HEADER1). States and parametersmust be prefixed with the extension alias followed by a colon. For example, an image maybe in the RS-PIE:PrepareShare state.

Important

Applications should be prepared to ignore response data that contains extensionelements. An extended state should always be treated as an UNKNOWN state if theapplication does not support the extension. Applications should also verify thatan extension is available before submitting an extended request.

Page 36: OpenStack Compute Developer Guide fileThis document is intended for software developers interested in developing applications using the OpenStack Compute Application Programming Interface

OpenStack Compute Dev Guide(DRAFT)

Feb. 9, 2011 API v1.1

29

Example 3.22. Extended Server Response: XML

<?xml version="1.0" encoding="UTF-8"?><servers xmlns="http://docs.openstack.org/compute/api/v1.1">

<server id="1234" name="sample-server" flavorId="1" status="BUILD" progress="60" hostId="e4d909c290d0fb1ca068ffaddf22cbd0" ipv6AffinityId="fc88bcf8394db9c8d0564e08ca6a9724188a84d1" updated="2010-10-10T12:00:00Z" created="2010-08-10T12:00:00Z" imageRef="https://servers.api.rackspacecloud.com/v1.1/32278/images/1234"> <metadata> <meta key="Server Label">Web Head 1</meta> <meta key="Image Version">2.1</meta> </metadata> <addresses> <public> <ip version="4" addr="67.23.10.132"/> <ip version="6" addr="::babe:67.23.10.132"/> <ip version="4" addr="67.23.10.131"/> <ip version="6" addr="::babe:4317:0A83"/> </public> <private> <ip version="4" addr="10.176.42.16"/> <ip version="6" addr="::babe:10.176.42.16"/> </private> <volumes xmlns="http://docs.rackspacecloud.com/servers/api/ext/cbs/v1.0"> <volume name="OS" href="https://cbs.api.rackspacecloud.com/12934/volumes/19"/> <volume name="Work" href="https://cbs.api.rackspacecloud.com/12934/volumes/23"/> </volumes> </addresses> </server>

<server id="5678" name="sample-server2" flavorId="1" status="ACTIVE" hostId="9e107d9d372bb6826bd81d3542a419d6" updated="2010-10-10T12:00:00Z" created="2010-08-10T12:00:00Z" ipv6AffinityId="b414fa41cb37b97dcb58d6c76112af1258e9eae2" imageRef="https://servers.api.rackspacecloud.com/v1.1/32278/images/1"> <metadata> <meta key="Server Label">DB 1</meta> </metadata> <addresses> <public> <ip version="4" addr="67.23.10.133"/> <ip version="6" addr="::babe:67.23.10.133"/> </public> <private> <ip version="4" addr="10.176.42.17"/> <ip version="6" addr="::babe:10.176.42.17"/> </private> </addresses> </server></servers>

Page 37: OpenStack Compute Developer Guide fileThis document is intended for software developers interested in developing applications using the OpenStack Compute Application Programming Interface

OpenStack Compute Dev Guide(DRAFT)

Feb. 9, 2011 API v1.1

30

Example 3.23. Extended Server Response: JSON

{ "servers" : [ { "id" : 1234, "name" : "sample-server", "imageRef" : "https://servers.api.rackspacecloud.com/v1.1/32278/images/1234", "flavorId" : 1, "updated" : "2010-10-10T12:00:00Z", "created" : "2010-08-10T12:00:00Z", "hostId" : "e4d909c290d0fb1ca068ffaddf22cbd0", "ipv6AffinityId" : "fc88bcf8394db9c8d0564e08ca6a9724188a84d1", "status" : "BUILD", "progress" : 60, "addresses" : { "public" : [ {"version" : 4, "addr" : "67.23.10.132"}, {"version" : 6, "addr" : "::babe:67.23.10.132"}, {"version" : 4, "addr" : "67.23.10.131"}, {"version" : 6, "addr" : "::babe:4317:0A83"} ], "private" : [ {"version" : 4, "addr" : "10.176.42.16"}, {"version" : 6, "addr" : "::babe:10.176.42.16"} ] }, "metadata" : { "Server Label" : "Web Head 1", "Image Version" : "2.1" }, "RS-CBS:volumes" : [ { "name" : "OS", "href" : "https://cbs.api.rackspacecloud.com/12934/volumes/19"}, { "name" : "Work", "href" : "https://cbs.api.rackspacecloud.com/12934/volumes/23"} ] }, { "id" : 5678, "name" : "sample-server2", "imageRef" : "https://servers.api.rackspacecloud.com/v1.1/32278/images/1", "flavorId" : 1, "updated" : "2010-10-10T12:00:00Z", "created" : "2010-08-10T12:00:00Z", "hostId" : "9e107d9d372bb6826bd81d3542a419d6", "ipv6AffinityId" : "b414fa41cb37b97dcb58d6c76112af1258e9eae2", "status" : "ACTIVE", "addresses" : { "public" : [ {"version" : 4, "addr" : "67.23.10.133"}, {"version" : 6, "addr" : "::babe:67.23.10.133"} ], "private" : [ {"version" : 4, "addr" : "10.176.42.17"}, {"version" : 6, "addr" : "::babe:10.176.42.17"} ] }, "metadata" : { "Server Label" : "DB 1" } } ] }

Page 38: OpenStack Compute Developer Guide fileThis document is intended for software developers interested in developing applications using the OpenStack Compute Application Programming Interface

OpenStack Compute Dev Guide(DRAFT)

Feb. 9, 2011 API v1.1

31

Example 3.24. Extended Action: XML

<?xml version="1.0" encoding="UTF-8"?><attach-volume xmlns="http://docs.rackspacecloud.com/servers/api/ext/cbs/v1.0" href="https://cbs.api.rackspacecloud.com/12934/volumes/19"/>

Example 3.25. Extended Action: JSON

{ "RS-CBS:attach-volume" { "href" : "https://cbs.api.rackspacecloud.com/12934/volumes/19" }}

Page 39: OpenStack Compute Developer Guide fileThis document is intended for software developers interested in developing applications using the OpenStack Compute Application Programming Interface

OpenStack Compute Dev Guide(DRAFT)

Feb. 9, 2011 API v1.1

32

3.11. FaultsWhen an error occurs, the system will return an HTTP error response code denoting the typeof error. The system will also return additional information about the fault in the body ofthe response.

Example 3.26. Fault Response: XML

<?xml version="1.0" encoding="UTF-8"?><computeFault xmlns="http://docs.openstack.org/compute/api/v1.1" code="500"> <message>Fault!</message> <details>Error Details...</details></computeFault>

Example 3.27. Fault Response: JSON

{ "computeFault" : { "code" : 500, "message" : "Fault!", "details" : "Error Details..." }}

The error code is returned in the body of the response for convenience. The message sectionreturns a human-readable message that is appropriate for display to the end user. The detailssection is optional and may contain information—for example, a stack trace—to assist intracking down an error. The detail section may or may not be appropriate for display to anend user.

The root element of the fault (e.g. computeFault) may change depending on the type oferror. The following is a list of possible elements along with their associated error codes.

Page 40: OpenStack Compute Developer Guide fileThis document is intended for software developers interested in developing applications using the OpenStack Compute Application Programming Interface

OpenStack Compute Dev Guide(DRAFT)

Feb. 9, 2011 API v1.1

33

Table 3.6. Fault Elements and Error Codes

Fault Element Associated Error Codes Expected in All Requests?

computeFault 500, 400, other codes possible

serviceUnavailable 503

unauthorized 401

badRequest 400

overLimit 413

badMediaType 415

badMethod 405

itemNotFound 404

buildInProgress 409

serverCapacityUnavailable 503

backupOrResizeInProgress 409

resizeNotAllowed 403

notImplemented 501

Example 3.28. Fault Response, Item Not Found: XML

<?xml version="1.0" encoding="UTF-8"?><itemNotFound xmlns="http://docs.openstack.org/compute/api/v1.1" code="404"> <message>Not Found</message> <details>Error Details...</details></itemNotFound>

Example 3.29. Fault Response, Item Not Found: JSON

{ "itemNotFound" : { "code" : 404, "message" : "Not Found", "details" : "Error Details..." }}

From an XML schema perspective, all API faults are extensions of the base fault typeComputeAPIFault. When working with a system that binds XML to actual classes (such asJAXB), one should be capable of using ComputeAPIFault as a “catch-all” if there's no interestin distinguishing between individual fault types.

Page 41: OpenStack Compute Developer Guide fileThis document is intended for software developers interested in developing applications using the OpenStack Compute Application Programming Interface

OpenStack Compute Dev Guide(DRAFT)

Feb. 9, 2011 API v1.1

34

The OverLimit fault is generated when a rate limit threshold is exceeded. For convenience,the fault adds a retryAt attribute that contains the content of the Reply-After header in XMLSchema 1.0 date/time format.

Example 3.30. Fault Response, Over Limit: XML

<?xml version="1.0" encoding="UTF-8"?><overLimit xmlns="http://docs.openstack.org/compute/api/v1.1" code="413" retryAt="2010-08-01T00:00:00Z"> <message>OverLimit Retry...</message> <details>Error Details...</details></overLimit>

Example 3.31. Fault Response, Over Limit: JSON

{ "overLimit" : { "code" : 413, "message" : "OverLimit Retry...", "details" : "Error Details...", "retryAt" : "2010-08-01T00:00:00Z" }}

Page 42: OpenStack Compute Developer Guide fileThis document is intended for software developers interested in developing applications using the OpenStack Compute Application Programming Interface

OpenStack Compute Dev Guide(DRAFT)

Feb. 9, 2011 API v1.1

35

4. API Operations

4.1. Servers

4.1.1. List Servers

Verb URI Description

GET /servers List all servers (IDs and names only)

GET /servers/detail List all servers (all details)

Normal Response Code(s): 200, 203

Error Response Code(s): computeFault (400, 500), serviceUnavailable (503), unauthorized(401), badRequest (400), overLimit (413)

This operation provides a list of servers associated with your account. Servers that havebeen deleted are not included in this list. Servers contain a status attribute that can beused as an indication of the current server state. Servers with an ACTIVE status areavailable for use. Other possible values for the status attribute include: BUILD, REBUILD,SUSPENDED, QUEUE_RESIZE, PREP_RESIZE, RESIZE, VERIFY_RESIZE, PASSWORD,RESCUE, REBOOT, HARD_REBOOT, SHARE_IP, SHARE_IP_NO_CONFIG, DELETE_IP, andUNKNOWN.

When retrieving a list of servers via the changes-since parameter (see Efficient Polling withthe Changes-Since Parameter), the list will contain servers that have been deleted since thechanges-since time.

The Compute Servers provisioning algorithm has an anti-affinity property that attempts tospread out customer VMs across hosts. Under certain situations, VMs from the same customermay be placed on the same host. hostId represents the host your server runs on and can beused to determine this scenario if it's relevant to your application.

Note

HostId is unique per account and is not globally unique.

This operation does not require a request body.

Page 43: OpenStack Compute Developer Guide fileThis document is intended for software developers interested in developing applications using the OpenStack Compute Application Programming Interface

OpenStack Compute Dev Guide(DRAFT)

Feb. 9, 2011 API v1.1

36

Example 4.1. Servers List Response: XML (detail)

<?xml version="1.0" encoding="UTF-8"?><servers xmlns="http://docs.openstack.org/compute/api/v1.1">

<server id="1234" name="sample-server" flavorId="1" status="BUILD" progress="60" hostId="e4d909c290d0fb1ca068ffaddf22cbd0" ipv6AffinityId="fc88bcf8394db9c8d0564e08ca6a9724188a84d1" updated="2010-10-10T12:00:00Z" created="2010-08-10T12:00:00Z" imageRef="https://servers.api.rackspacecloud.com/v1.1/32278/images/1234"> <metadata> <meta key="Server Label">Web Head 1</meta> <meta key="Image Version">2.1</meta> </metadata> <addresses> <public> <ip version="4" addr="67.23.10.132"/> <ip version="6" addr="::babe:67.23.10.132"/> <ip version="4" addr="67.23.10.131"/> <ip version="6" addr="::babe:4317:0A83"/> </public> <private> <ip version="4" addr="10.176.42.16"/> <ip version="6" addr="::babe:10.176.42.16"/> </private> </addresses> </server>

<server id="5678" name="sample-server2" flavorId="1" status="ACTIVE" hostId="9e107d9d372bb6826bd81d3542a419d6" updated="2010-10-10T12:00:00Z" created="2010-08-10T12:00:00Z" ipv6AffinityId="b414fa41cb37b97dcb58d6c76112af1258e9eae2" imageRef="https://servers.api.rackspacecloud.com/v1.1/32278/images/1" > <metadata> <meta key="Server Label">DB 1</meta> </metadata> <addresses> <public> <ip version="4" addr="67.23.10.133"/> <ip version="6" addr="::babe:67.23.10.133"/> </public> <private> <ip version="4" addr="10.176.42.17"/> <ip version="6" addr="::babe:10.176.42.17"/> </private> </addresses> </server>

</servers>

Page 44: OpenStack Compute Developer Guide fileThis document is intended for software developers interested in developing applications using the OpenStack Compute Application Programming Interface

OpenStack Compute Dev Guide(DRAFT)

Feb. 9, 2011 API v1.1

37

Example 4.2. Servers List Response: JSON (detail)

{ "servers" : [ { "id" : 1234, "name" : "sample-server", "imageRef" : "https://servers.api.rackspacecloud.com/v1.1/32278/images/1234", "flavorId" : 1, "updated" : "2010-10-10T12:00:00Z", "created" : "2010-08-10T12:00:00Z", "hostId" : "e4d909c290d0fb1ca068ffaddf22cbd0", "ipv6AffinityId" : "fc88bcf8394db9c8d0564e08ca6a9724188a84d1", "status" : "BUILD", "progress" : 60, "addresses" : { "public" : [ {"version" : 4, "addr" : "67.23.10.132"}, {"version" : 6, "addr" : "::babe:67.23.10.132"}, {"version" : 4, "addr" : "67.23.10.131"}, {"version" : 6, "addr" : "::babe:4317:0A83"} ], "private" : [ {"version" : 4, "addr" : "10.176.42.16"}, {"version" : 6, "addr" : "::babe:10.176.42.16"} ] }, "metadata" : { "Server Label" : "Web Head 1", "Image Version" : "2.1" } }, { "id" : 5678, "name" : "sample-server2", "imageRef" : "https://servers.api.rackspacecloud.com/v1.1/32278/images/1", "flavorId" : 1, "updated" : "2010-10-10T12:00:00Z", "created" : "2010-08-10T12:00:00Z", "hostId" : "9e107d9d372bb6826bd81d3542a419d6", "ipv6AffinityId" : "b414fa41cb37b97dcb58d6c76112af1258e9eae2", "status" : "ACTIVE", "addresses" : { "public" : [ {"version" : 4, "addr" : "67.23.10.133"}, {"version" : 6, "addr" : "::babe:67.23.10.133"} ], "private" : [ {"version" : 4, "addr" : "10.176.42.17"}, {"version" : 6, "addr" : "::babe:10.176.42.17"} ] }, "metadata" : { "Server Label" : "DB 1" } } ] }

Page 45: OpenStack Compute Developer Guide fileThis document is intended for software developers interested in developing applications using the OpenStack Compute Application Programming Interface

OpenStack Compute Dev Guide(DRAFT)

Feb. 9, 2011 API v1.1

38

4.1.2. Create Server

Verb URI Description

POST /servers Create a new server

Normal Response Code(s): 202

Error Response Code(s): computeFault (400, 500), serviceUnavailable (503),unauthorized (401), badMediaType(415), itemNotFound (404), badRequest (400),serverCapacityUnavailable (503), overLimit (413)

Status Transition: BUILD ACTIVE

BUILD ERROR (on error)

This operation asynchronously provisions a new server. The progress of this operationdepends on several factors including location of the requested image, network i/o, host load,and the selected flavor. The progress of the request can be checked by performing a GET on /server/ id , which will return a progress attribute (0-100% completion).

A password will be randomly generated for you and returned in the response object. Forsecurity reasons, it will not be returned in subsequent GET calls against a given server ID.

Custom server metadata can also be supplied at launch time. This metadata is stored in theAPI system where it is retrievable by querying the API for server status. The maximum size ofthe metadata key and value is each 255 bytes and the maximum number of key-value pairsthat can be supplied per server is 5.

You may further customize a server by injecting data into the file system of the server itself.This is useful, for example, for inserting ssh keys, setting configuration files, or storing datathat you want to retrieve from within the instance itself. It is intended to provide a minimalamount of launch-time personalization. If significant customization is required, a customimage should be created. The max size of the file p ath data is 255 bytes while the max sizeof the file contents is 10KB. Note that the file contents should be encoded as a Base64 stringand the 10KB limit refers to the number of bytes in the decoded data not the number ofcharacters in the encoded data. The maximum number of file path/content pairs that can besupplied is 5. Any existing files that match the specified file will be renamed to include theextension bak followed by a time stamp. For example, the file /etc/passwd will be backed upas /etc/passwd.bak.1246036261.5785 . All files will have root and the root group as ownerand group owner, respectively and will allow user and group read access only ( -r--r-----).

Page 46: OpenStack Compute Developer Guide fileThis document is intended for software developers interested in developing applications using the OpenStack Compute Application Programming Interface

OpenStack Compute Dev Guide(DRAFT)

Feb. 9, 2011 API v1.1

39

Example 4.3. Server Create Request: XML

<?xml version="1.0" encoding="UTF-8"?><server xmlns="http://docs.openstack.org/compute/api/v1.1" name="new-server-test" flavorId="1" imageRef="https://servers.api.rackspacecloud.com/v1.1/32278/images/1"> <metadata> <meta key="My Server Name">Apache1</meta> </metadata> <personality> <file path="/etc/banner.txt"> ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBp dCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5k IGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVs c2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4g QnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRo ZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlv dSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vy c2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6 b25zLiINCg0KLVJpY2hhcmQgQmFjaA== </file> </personality></server>

Page 47: OpenStack Compute Developer Guide fileThis document is intended for software developers interested in developing applications using the OpenStack Compute Application Programming Interface

OpenStack Compute Dev Guide(DRAFT)

Feb. 9, 2011 API v1.1

40

Example 4.4. Server Create Request: JSON

{ "server" : { "name" : "new-server-test", "imageRef" : "https://servers.api.rackspacecloud.com/v1.1/32278/images/1", "flavorId" : 1, "metadata" : { "My Server Name" : "Apache1" }, "personality" : [ { "path" : "/etc/banner.txt", "contents" : "ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBp dCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5k IGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVs c2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4g QnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRo ZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlv dSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vy c2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6 b25zLiINCg0KLVJpY2hhcmQgQmFjaA==" } ] }}

Page 48: OpenStack Compute Developer Guide fileThis document is intended for software developers interested in developing applications using the OpenStack Compute Application Programming Interface

OpenStack Compute Dev Guide(DRAFT)

Feb. 9, 2011 API v1.1

41

Example 4.5. Server Create Response: XML

<?xml version="1.0" encoding="UTF-8"?><server xmlns="http://docs.openstack.org/compute/api/v1.1" id="1235" name="new-server-test" flavorId="1" hostId="e4d909c290d0fb1ca068ffaddf22cbd0" progress="0" ipv6AffinityId="fc88bcf8394db9c8d0564e08ca6a9724188a84d1" status="BUILD" adminPass="GFf1j9aP" created="2010-11-11T12:00:00Z" imageRef="https://servers.api.rackspacecloud.com/v1.1/32278/images/1"> <metadata> <meta key="My Server Name">Apache1</meta> </metadata> <addresses> <public> <ip version="4" addr="67.23.10.138"/> <ip version="6" addr="::babe:67.23.10.138"/> </public> <private> <ip version="4" addr="10.176.42.19"/> <ip version="6" addr="::babe:10.176.42.19"/> </private> </addresses></server>

Page 49: OpenStack Compute Developer Guide fileThis document is intended for software developers interested in developing applications using the OpenStack Compute Application Programming Interface

OpenStack Compute Dev Guide(DRAFT)

Feb. 9, 2011 API v1.1

42

Example 4.6. Server Create Response: JSON

{ "server" : { "id" : 1235, "name" : "new-server-test", "imageRef" : "https://servers.api.rackspacecloud.com/v1.1/32278/images/1", "flavorId" : 1, "created" : "2010-11-11T12:00:00Z", "hostId" : "e4d909c290d0fb1ca068ffaddf22cbd0", "ipv6AffinityId" : "fc88bcf8394db9c8d0564e08ca6a9724188a84d1", "progress" : 0, "status" : "BUILD", "adminPass" : "GFf1j9aP", "metadata" : { "My Server Name" : "Apache1" }, "addresses" : { "public" : [ {"version" : 4, "addr" : "67.23.10.138"}, {"version" : 6, "addr" : "::babe:67.23.10.138"} ], "private" : [ {"version" : 4, "addr" : "10.176.42.19"}, {"version" : 6, "addr" : "::babe:10.176.42.19"} ] } }}

4.1.2.1. Sharing IPv4 Addresses

Servers in the same shared IP group can share public and private IPv4 IPs for various highavailability and load balancing configurations. To launch an HA server, include the optionalsharedIpGroupId attribute and the server will be launched into that shared IP group.

If you intend to use a shared IP on the server being created and have no need for a separatepublic IP address, you may launch the server into a shared IP group and specify an IP addressfrom that shared IP group to be used as its public IP. You can accomplish this by specifying thepublic shared IP address in your request. This is optional and is only valid if sharedIpGroupIdis also supplied.

Note

sharedIpGroupId is an optional parameter and for optimal performance, shouldONLY be specified when intending to share IPs between servers.

Page 50: OpenStack Compute Developer Guide fileThis document is intended for software developers interested in developing applications using the OpenStack Compute Application Programming Interface

OpenStack Compute Dev Guide(DRAFT)

Feb. 9, 2011 API v1.1

43

4.1.2.2. Sharing IPv6 Addresses

Servers with the same IPv6 affinity ID can share public and private IPv6 IPs for various highavailability and load balancing configurations. To launch an HA server, include the optionalipv6AffinityId attribute matching the ipv6AffinityId attribute of a server you wish to share anIP with. Servers that share the same ipv6AffinityId attribute may share IPv6 addresses froma range of allowable addresses. Contact your provider for details on allowable IPv6 addressranges.

4.1.3. Get Server DetailsVerb URI Description

GET /servers/id List details of the specified server

Normal Response Code(s): 200, 203

Error Response Code(s): computeFault (400, 500), serviceUnavailable (503), unauthorized(401), badRequest (400), itemNotFound (404), overLimit (413)

This operation returns the details of a specific server by its ID.

This operation does not require a request body.

Example 4.7. Server Details Response: XML

<?xml version="1.0" encoding="UTF-8"?><server xmlns="http://docs.openstack.org/compute/api/v1.1" id="1234" name="sample-server" flavorId="1" status="BUILD" updated="2010-10-10T12:00:00Z" created="2010-08-10T12:00:00Z" progress="60" hostId="e4d909c290d0fb1ca068ffaddf22cbd0" ipv6AffinityId="fc88bcf8394db9c8d0564e08ca6a9724188a84d1" imageRef="https://servers.api.rackspacecloud.com/v1.1/32278/images/1234"> <metadata> <meta key="Server Label">Web Head 1</meta> <meta key="Image Version">2.1</meta> </metadata> <addresses> <public> <ip version="4" addr="67.23.10.132"/> <ip version="6" addr="::babe:67.23.10.132"/> <ip version="4" addr="67.23.10.131"/> <ip version="6" addr="::babe:4317:0A83"/> </public> <private> <ip version="4" addr="10.176.42.16"/> <ip version="6" addr="::babe:10.176.42.16"/> </private> </addresses></server>

Page 51: OpenStack Compute Developer Guide fileThis document is intended for software developers interested in developing applications using the OpenStack Compute Application Programming Interface

OpenStack Compute Dev Guide(DRAFT)

Feb. 9, 2011 API v1.1

44

Example 4.8. Server Details Response: JSON

{ "server" : { "id" : 1234, "name" : "sample-server", "imageRef" : "https://servers.api.rackspacecloud.com/v1.1/32278/images/1234", "flavorId" : 1, "updated" : "2010-10-10T12:00:00Z", "created" : "2010-08-10T12:00:00Z", "hostId" : "e4d909c290d0fb1ca068ffaddf22cbd0", "ipv6AffinityId" : "fc88bcf8394db9c8d0564e08ca6a9724188a84d1", "status" : "BUILD", "progress" : 60, "addresses" : { "public" : [ {"version" : 4, "addr" : "67.23.10.132"}, {"version" : 6, "addr" : "::babe:67.23.10.132"}, {"version" : 4, "addr" : "67.23.10.131"}, {"version" : 6, "addr" : "::babe:4317:0A83"} ], "private" : [ {"version" : 4, "addr" : "10.176.42.16"}, {"version" : 6, "addr" : "::babe:10.176.42.16"} ] }, "metadata" : { "Server Label" : "Web Head 1", "Image Version" : "2.1" } }}

4.1.4. Update Server Name

Verb URI Description

PUT /servers/id Update the specified server's name

Normal Response Code(s): 204

Error Response Code(s): computeFault (400, 500), serviceUnavailable (503), unauthorized(401), badRequest (400), badMediaType(415), itemNotFound (404), buildInProgress (409),overLimit (413)

Status Transition: ACTIVE ACTIVE

This operation changes the name of the server in the Compute system but does not changethe server host name.

Page 52: OpenStack Compute Developer Guide fileThis document is intended for software developers interested in developing applications using the OpenStack Compute Application Programming Interface

OpenStack Compute Dev Guide(DRAFT)

Feb. 9, 2011 API v1.1

45

Example 4.9. Server Update Request: XML

<?xml version="1.0" encoding="UTF-8"?><server xmlns="http://docs.openstack.org/compute/api/v1.1" name="new-server-test"/>

Example 4.10. Server Update Request: JSON

{ "server" : { "name" : "new-server-test" }}

This operation does not contain a response body.

Page 53: OpenStack Compute Developer Guide fileThis document is intended for software developers interested in developing applications using the OpenStack Compute Application Programming Interface

OpenStack Compute Dev Guide(DRAFT)

Feb. 9, 2011 API v1.1

46

4.1.5. Delete Server

Verb URI Description

DELETE /servers/id Terminate the specified server

Normal Response Code(s): 204

Error Response Code(s): computeFault (400, 500), serviceUnavailable (503), unauthorized(401), itemNotFound (404), unauthorized (401), buildInProgress (409), overLimit (413)

Status Transition: ACTIVE DELETED

SUSPENDED DELETED

This operation deletes a cloud server instance from the system.

Note

When a server is deleted, all images created from that server are also removed.

This operation does not require a request or a response body.

Page 54: OpenStack Compute Developer Guide fileThis document is intended for software developers interested in developing applications using the OpenStack Compute Application Programming Interface

OpenStack Compute Dev Guide(DRAFT)

Feb. 9, 2011 API v1.1

47

4.2. Server Addresses

4.2.1. List Addresses

Verb URI Description

GET /servers/id/ips List all server addresses

Normal Response Code(s): 200, 203

Error Response Code(s): computeFault (400, 500), serviceUnavailable (503), unauthorized(401), badRequest (400), overLimit (413)

This operation does not require a request body.

Example 4.11. Addresses List Response: XML

<?xml version="1.0" encoding="UTF-8"?><addresses xmlns="http://docs.openstack.org/compute/api/v1.1"> <public> <ip version="4" addr="67.23.10.132"/> <ip version="6" addr="::babe:67.23.10.132"/> <ip version="4" addr="67.23.10.131"/> <ip version="6" addr="::babe:4317:0A83"/> </public> <private> <ip version="4" addr="10.176.42.16"/> <ip version="6" addr="::babe:10.176.42.16"/> </private></addresses>

Page 55: OpenStack Compute Developer Guide fileThis document is intended for software developers interested in developing applications using the OpenStack Compute Application Programming Interface

OpenStack Compute Dev Guide(DRAFT)

Feb. 9, 2011 API v1.1

48

Example 4.12. Addresses List Response: JSON

{ "addresses" : { "public" : [ {"version" : 4, "addr" : "67.23.10.132"}, {"version" : 6, "addr" : "::babe:67.23.10.132"}, {"version" : 4, "addr" : "67.23.10.131"}, {"version" : 6, "addr" : "::babe:4317:0A83"} ], "private" : [ {"version" : 4, "addr" : "10.176.42.16"}, {"version" : 6, "addr" : "::babe:10.176.42.16"} ] }}

4.2.2. List Public Addresses

Verb URI Description

GET /servers/id/ips/public List all public server addresses

Normal Response Code(s): 200, 203

Error Response Code(s): computeFault (400, 500), serviceUnavailable (503), unauthorized(401), badRequest (400), overLimit (413)

This operation does not require a request body.

Example 4.13. Public Addresses List Response: XML

<?xml version="1.0" encoding="UTF-8"?><public xmlns="http://docs.openstack.org/compute/api/v1.1"> <ip version="4" addr="67.23.10.132"/> <ip version="6" addr="::babe:67.23.10.132"/> <ip version="4" addr="67.23.10.131"/> <ip version="6" addr="::babe:4317:0A83"/></public>

Page 56: OpenStack Compute Developer Guide fileThis document is intended for software developers interested in developing applications using the OpenStack Compute Application Programming Interface

OpenStack Compute Dev Guide(DRAFT)

Feb. 9, 2011 API v1.1

49

Example 4.14. Public Addresses List Response: JSON

{ "public" : [ {"version" : 4, "addr" : "67.23.10.132"}, {"version" : 6, "addr" : "::babe:67.23.10.132"}, {"version" : 4, "addr" : "67.23.10.131"}, {"version" : 6, "addr" : "::babe:4317:0A83"} ]}

4.2.3. List Private Addresses

Verb URI Description

GET /servers/id/ips/private List all private server addresses

Normal Response Code(s): 200, 203

Error Response Code(s): computeFault (400, 500), serviceUnavailable (503), unauthorized(401), badRequest (400), overLimit (413)

This operation does not require a request body.

Example 4.15. Private Addresses List Response: XML

<?xml version="1.0" encoding="UTF-8"?><private xmlns="http://docs.openstack.org/compute/api/v1.1"> <ip version="4" addr="10.176.42.16"/> <ip version="6" addr="::babe:10.176.42.16"/></private>

Example 4.16. Private Addresses List Response: JSON

{ "private" : [ {"version" : 4, "addr" : "10.176.42.16"}, {"version" : 6, "addr" : "::babe:10.176.42.16"} ]}

Page 57: OpenStack Compute Developer Guide fileThis document is intended for software developers interested in developing applications using the OpenStack Compute Application Programming Interface

OpenStack Compute Dev Guide(DRAFT)

Feb. 9, 2011 API v1.1

50

4.2.4. Share an IP Address

Verb URI Description

PUT /servers/id/ips/public/address Share an IP address to thespecified server

Normal Response Code(s): 202

Error Response Code(s): computeFault (400, 500), serviceUnavailable (503), unauthorized(401), badRequest (400), badMediaType(415), itemNotFound (404), overLimit (413)

Status Transition: ACTIVE SHARE_IP ACTIVE (if configureServer is true)

ACTIVE SHARE_IP_NO_CONFIG ACTIVE

This operation shares an IP from an existing server in the specified shared IP group to anotherspecified server in the same group. By default, the operation modifies network restrictionsto allow IP traffic for the given IP to/from the server specified, but does not bind the IP tothe server itself. A heartbeat facility (e.g. keepalived) can then be used within the servers toperform health checks and manage IP failover. If the configureServer attribute is set to true,the server is configured with the new address, though the address is not enabled. Note thatconfiguring the server does require a reboot.

Example 4.17. Share IP Request: XML

<?xml version="1.0" encoding="UTF-8"?><shareIp xmlns="http://docs.openstack.org/compute/api/v1.1" sharedIpGroupId="1234" configureServer="true"/>

Example 4.18. Share IP Response: JSON

{ "shareIp" : { "sharedIpGroupId" : 1234, "configureServer" : true }}

This operation does not return a response body.

Page 58: OpenStack Compute Developer Guide fileThis document is intended for software developers interested in developing applications using the OpenStack Compute Application Programming Interface

OpenStack Compute Dev Guide(DRAFT)

Feb. 9, 2011 API v1.1

51

4.2.5. Unshare an IP Address

Verb URI Description

DELETE /servers/id/ips/public/address Remove a shared IP address fromthe specified server

Normal Response Code(s): 202

Error Response Code(s): computeFault (400, 500), serviceUnavailable (503), unauthorized(401), badRequest (400), badMediaType(415), itemNotFound (404), overLimit (413)

Status Transition: ACTIVE DELETE_IP ACTIVE

This operation removes a shared IP address from the specified server.

This operation does not contain a request or response body.

Page 59: OpenStack Compute Developer Guide fileThis document is intended for software developers interested in developing applications using the OpenStack Compute Application Programming Interface

OpenStack Compute Dev Guide(DRAFT)

Feb. 9, 2011 API v1.1

52

4.3. Server Metadata

4.3.1. List Metadata

Verb URI Description

GET /servers/id/meta List metadata associated with a server

Normal Response Code(s): 200, 203

Error Response Code(s): computeFault (400, 500), serviceUnavailable (503), unauthorized(401), badRequest (400), overLimit (413)

This operation does not require a request body.

Example 4.19. Metadata List Response: XML

<?xml version="1.0" encoding="UTF-8"?><metadata xmlns="http://docs.openstack.org/compute/api/v1.1"> <meta key="Server Label">Web Head 1</meta> <meta key="Image Version">2.1</meta></metadata>

Example 4.20. Metadata List Response: JSON

{ "metadata" : { "Server Label" : "Web Head 1", "Image Version" : "2.1" } }

4.3.2. Update Metadata

Verb URI Description

POST /servers/id/meta Update metadata items

Normal Response Code(s): 204

Error Response Code(s): computeFault (400, 500), serviceUnavailable (503), unauthorized(401), badRequest (400), buildInProgress (409), badMediaType(415) overLimit (413),

Page 60: OpenStack Compute Developer Guide fileThis document is intended for software developers interested in developing applications using the OpenStack Compute Application Programming Interface

OpenStack Compute Dev Guide(DRAFT)

Feb. 9, 2011 API v1.1

53

Example 4.21. Metadata Update Resquest: XML

<?xml version="1.0" encoding="UTF-8"?><metadata xmlns="http://docs.openstack.org/compute/api/v1.1"> <meta key="Server Label">Web Head 1</meta> <meta key="Image Version">2.1</meta></metadata>

Example 4.22. Metadata Update Request: JSON

{ "metadata" : { "Server Label" : "Web Head 1", "Image Version" : "2.1" } }

This operation does not return a response body.

4.3.3. Get Metadata Item

Verb URI Description

GET /servers/id/meta/key Get metadata item associated with a server

Normal Response Code(s): 200, 203

Error Response Code(s): computeFault (400, 500), serviceUnavailable (503), unauthorized(401), itemNotFound (404), badRequest (400), overLimit (413)

This operation does not require a request body.

Example 4.23. Metadata Item Response: XML

<?xml version="1.0" encoding="UTF-8"?><meta xmlns="http://docs.openstack.org/compute/api/v1.1" key="Server Label">Web Head 1</meta>

Page 61: OpenStack Compute Developer Guide fileThis document is intended for software developers interested in developing applications using the OpenStack Compute Application Programming Interface

OpenStack Compute Dev Guide(DRAFT)

Feb. 9, 2011 API v1.1

54

Example 4.24. Metadata Item Response: JSON

{ "meta" : { "Server Label" : "Web Head 1" } }

4.3.4. Update Metadata Item

Verb URI Description

PUT /servers/id/meta/key Update metadata item

Normal Response Code(s): 204

Error Response Code(s): computeFault (400, 500), serviceUnavailable (503), unauthorized(401), itemNotFound (404), badRequest (400), buildInProgress (409), badMediaType(415)overLimit (413),

Example 4.25. Metadata Item Update Resquest: XML

<?xml version="1.0" encoding="UTF-8"?><meta xmlns="http://docs.openstack.org/compute/api/v1.1" key="Server Label">Web Head 1</meta>

Example 4.26. Metadata Item Update Request: JSON

{ "meta" : { "Server Label" : "Web Head 1" } }

This operation does not return a response body.

4.3.5. Delete Metadata Item

Verb URI Description

DELETE /servers/id/meta/key Update metadata item

Normal Response Code(s): 204

Page 62: OpenStack Compute Developer Guide fileThis document is intended for software developers interested in developing applications using the OpenStack Compute Application Programming Interface

OpenStack Compute Dev Guide(DRAFT)

Feb. 9, 2011 API v1.1

55

Error Response Code(s): computeFault (400, 500), serviceUnavailable (503), unauthorized(401), itemNotFound (404), badRequest (400), buildInProgress (409), badMediaType(415)overLimit (413),

This operation does not require a request body.

This operation does not contain a response body.

Page 63: OpenStack Compute Developer Guide fileThis document is intended for software developers interested in developing applications using the OpenStack Compute Application Programming Interface

OpenStack Compute Dev Guide(DRAFT)

Feb. 9, 2011 API v1.1

56

4.4. Server Actions

4.4.1. Change Password

Verb URI Description

POST /servers/id/action Change a server's password

Normal Response Code(s): 202

Error Response Code(s): computeFault (400, 500), serviceUnavailable (503), unauthorized(401), badRequest (400), badMediaType(415), itemNotFound (404), buildInProgress (409),overLimit (413)

Status Transition: ACTIVE PASSWORD ACTIVE

This operation changes the server's administrator password.

Example 4.27. Server Update Request: XML

<?xml version="1.0" encoding="UTF-8"?><changePassword xmlns="http://docs.openstack.org/compute/api/v1.1" adminPass="ss1293837$%^"/>

Example 4.28. Server Update Request: JSON

{ "changePassword" : { "adminPass" : "ss1293837$%^" }}

This operation does not contain a response body.

4.4.2. Reboot Server

Verb URI Description

POST /servers/id/action Reboot the specified server

Normal Response Code(s): 202

Error Response Code(s): computeFault (400, 500), serviceUnavailable (503), unauthorized(401), badRequest (400), badMediaType(415), itemNotFound (404), buildInProgress (409),overLimit (413)

Page 64: OpenStack Compute Developer Guide fileThis document is intended for software developers interested in developing applications using the OpenStack Compute Application Programming Interface

OpenStack Compute Dev Guide(DRAFT)

Feb. 9, 2011 API v1.1

57

Status Transition: ACTIVE REBOOT ACTIVE (soft reboot)

ACTIVE HARD_REBOOT ACTIVE (hard reboot)

The reboot function allows for either a soft or hard reboot of a server. With a soft reboot(SOFT), the operating system is signaled to restart, which allows for a graceful shutdown ofall processes. A hard reboot (HARD) is the equivalent of power cycling the server.

Example 4.29. Action Reboot: XML

<?xml version="1.0" encoding="UTF-8"?><reboot xmlns="http://docs.openstack.org/compute/api/v1.1" type="HARD"/>

Example 4.30. Action Reboot: JSON

{ "reboot" : { "type" : "HARD" }}

This operation does not return a response body.

Page 65: OpenStack Compute Developer Guide fileThis document is intended for software developers interested in developing applications using the OpenStack Compute Application Programming Interface

OpenStack Compute Dev Guide(DRAFT)

Feb. 9, 2011 API v1.1

58

4.4.3. Rebuild Server

Verb URI Description

POST /servers/id/action Rebuild the specified server

Normal Response Code(s): 202

Error Response Code(s): computeFault (400, 500), serviceUnavailable (503), unauthorized(401), badRequest (400), badMediaType(415), itemNotFound (404), buildInProgress (409),serverCapacityUnavailable (503), overLimit (413)

Status Transition: ACTIVE REBUILD ACTIVE

ACTIVE REBUILD ERROR (on error)

The rebuild function removes all data on the server and replaces it with the specified image.The serverId and all IP addresses will remain the same. If name and metadata are specified,they will replace existing values, otherwise they will not change. A rebuild operation alwaysremoves data injected into the file system via server personality. You may reinsert data intothe filesystem during the rebuild.

Example 4.31. Action Rebuild: XML

<?xml version="1.0" encoding="UTF-8"?><rebuild xmlns="http://docs.openstack.org/compute/api/v1.1" name="newName" imageRef="https://servers.api.rackspacecloud.com/v1.1/32278/images/2"> <metadata> <meta key="My Server Name">Apache1</meta> </metadata> <personality> <file path="/etc/banner.txt"> ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBp dCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5k IGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVs c2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4g QnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRo ZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlv dSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vy c2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6 b25zLiINCg0KLVJpY2hhcmQgQmFjaA== </file> </personality></rebuild>

Page 66: OpenStack Compute Developer Guide fileThis document is intended for software developers interested in developing applications using the OpenStack Compute Application Programming Interface

OpenStack Compute Dev Guide(DRAFT)

Feb. 9, 2011 API v1.1

59

Example 4.32. Action Rebuild: JSON

{ "rebuild" : { "imageRef" : "https://servers.api.rackspacecloud.com/v1.1/32278/images/2", "name" : "newName", "metadata" : { "My Server Name" : "Apache1" }, "personality" : [ { "path" : "/etc/banner.txt", "contents" : "ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBp dCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5k IGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVs c2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4g QnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRo ZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlv dSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vy c2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6 b25zLiINCg0KLVJpY2hhcmQgQmFjaA==" } ] }}

This operation does not return a response body.

Page 67: OpenStack Compute Developer Guide fileThis document is intended for software developers interested in developing applications using the OpenStack Compute Application Programming Interface

OpenStack Compute Dev Guide(DRAFT)

Feb. 9, 2011 API v1.1

60

4.4.4. Resize Server

Verb URI Description

POST /servers/id/action Resize the specified server

Normal Response Code(s): 202

Error Response Code(s): computeFault (400, 500), serviceUnavailable (503), unauthorized(401), badRequest (400), badMediaType(415), itemNotFound (404), buildInProgress (409),serverCapacityUnavailable (503), overLimit (413), resizeNotAllowed (403)

Status Transition: ACTIVE QUEUE_RESIZE PREP_RESIZE RESIZE VERIFY_RESIZE

ACTIVE QUEUE_RESIZE ACTIVE (on error)

The resize function converts an existing server to a different flavor, in essence, scaling theserver up or down. The original server is saved for a period of time to allow rollback ifthere is a problem. All resizes should be tested and explicitly confirmed, at which time theoriginal server is removed. All resizes are automatically confirmed after 24 hours if they arenot explicitly confirmed or reverted.

Example 4.33. Action Resize: XML

<?xml version="1.0" encoding="UTF-8"?><resize xmlns="http://docs.openstack.org/compute/api/v1.1" flavorId="3"/>

Example 4.34. Action Resize: JSON

{ "resize" : { "flavorId" : 3 }}

This operation does not return a response body.

Page 68: OpenStack Compute Developer Guide fileThis document is intended for software developers interested in developing applications using the OpenStack Compute Application Programming Interface

OpenStack Compute Dev Guide(DRAFT)

Feb. 9, 2011 API v1.1

61

4.4.5. Confirm Resized Server

Verb URI Description

POST /servers/id/action Confirm a pending resize action

Normal Response Code(s): 204

Error ResponseCode(s): computeFault (400, 500), serviceUnavailable (503), unauthorized(401), badRequest (400), badMediaType(415), itemNotFound (404), buildInProgress (409),serverCapacityUnavailable (503), overLimit (413), resizeNotAllowed (403)

Status Transition: VERIFY_RESIZE ACTIVE

During a resize operation, the original server is saved for a period of time to allow roll backif there is a problem. Once the newly resized server is tested and has been confirmed to befunctioning properly, use this operation to confirm the resize. After confirmation, the originalserver is removed and cannot be rolled back to. All resizes are automatically confirmed after24 hours if they are not explicitly confirmed or reverted.

Example 4.35. Action Confirm Resize: XML

<?xml version="1.0" encoding="UTF-8"?><confirmResize xmlns="http://docs.openstack.org/compute/api/v1.1"/>

Example 4.36. Action Confirm Resize: JSON

{ "confirmResize" : null}

This operation does not return a response body.

Page 69: OpenStack Compute Developer Guide fileThis document is intended for software developers interested in developing applications using the OpenStack Compute Application Programming Interface

OpenStack Compute Dev Guide(DRAFT)

Feb. 9, 2011 API v1.1

62

4.4.6. Revert Resized Server

Verb URI Description

POST /servers/id/action Cancel and revert a pending resize action

Normal Response Code(s): 202

Error ResponseCode(s): computeFault (400, 500), serviceUnavailable (503), unauthorized(401), badRequest (400), badMediaType(415), itemNotFound (404), buildInProgress (409),serverCapacityUnavailable (503), overLimit (413), resizeNotAllowed (403)

Status Transition: VERIFY_RESIZE ACTIVE

During a resize operation, the original server is saved for a period of time to allow for roll backif there is a problem. If you determine there is a problem with a newly resized server, use thisoperation to revert the resize and roll back to the original server. All resizes are automaticallyconfirmed after 24 hours if they have not already been confirmed explicitly or reverted.

Example 4.37. Action Revert Resize: XML

<?xml version="1.0" encoding="UTF-8"?><revertResize xmlns="http://docs.openstack.org/compute/api/v1.1"/>

Example 4.38. Action Revert Resize: JSON

{ "revertResize" : null}

This operation does not return a response body.

Page 70: OpenStack Compute Developer Guide fileThis document is intended for software developers interested in developing applications using the OpenStack Compute Application Programming Interface

OpenStack Compute Dev Guide(DRAFT)

Feb. 9, 2011 API v1.1

63

4.5. FlavorsA flavor is an available hardware configuration for a server. Each flavor has a uniquecombination of disk space and memory capacity.

4.5.1. List FlavorsVerb URI Description

GET /flavors List available flavors (IDs and names only)

GET /flavors/detail List available flavors (all details)

Normal Response Code(s): 200, 203

Error ResponseCode(s): computeFault (400, 500), serviceUnavailable (503), unauthorized(401), badRequest (400), overLimit (413)

This operation will list all available flavors with details.

This operation does not require a request body.

Example 4.39. Flavors List Response: XML (detail)

<?xml version="1.0" encoding="UTF-8"?><flavors xmlns="http://docs.openstack.org/compute/api/v1.1"> <flavor id="1" name="256 MB Server" ram="256" disk="10"/> <flavor id="2" name="512 MB Server" ram="512" disk="20"/></flavors>

Example 4.40. Flavors List Response: JSON (detail)

{ "flavors" : [ { "id" : 1, "name" : "256 MB Server", "ram" : 256, "disk" : 10 }, { "id" : 2, "name" : "512 MB Server", "ram" : 512, "disk" : 20 } ]}

Page 71: OpenStack Compute Developer Guide fileThis document is intended for software developers interested in developing applications using the OpenStack Compute Application Programming Interface

OpenStack Compute Dev Guide(DRAFT)

Feb. 9, 2011 API v1.1

64

4.5.2. Get Flavor Details

Verb URI Description

GET /flavors/id List details of the specified flavor

Normal Response Code(s): 200, 203

Error ResponseCode(s): computeFault (400, 500), serviceUnavailable (503), unauthorized(401), badRequest (400), itemNotFound (404), overLimit (413)

This operation returns details of the specified flavor.

This operation does not require a request body.

Example 4.41. Flavor Details Response: XML

<?xml version="1.0" encoding="UTF-8"?><flavor xmlns="http://docs.openstack.org/compute/api/v1.1" id="1" name="256 MB Server" ram="256" disk="10"/>

Example 4.42. Flavor Details Response: JSON

{ "flavor" : { "id" : 1, "name" : "256 MB Server", "ram" : 256, "disk" : 10 }}

Page 72: OpenStack Compute Developer Guide fileThis document is intended for software developers interested in developing applications using the OpenStack Compute Application Programming Interface

OpenStack Compute Dev Guide(DRAFT)

Feb. 9, 2011 API v1.1

65

4.6. ImagesAn image is a collection of files you use to create or rebuild a server. Operators provide pre-built OS images by default. You may also create custom images.

4.6.1. List Images

Verb URI Description

GET /images List available images (IDs and names only)

GET /images/detail List available images (all details)

Normal Response Code(s): 200, 203

Error ResponseCode(s): computeFault (400, 500), serviceUnavailable (503), unauthorized(401), badRequest (400), overLimit (413)

This operation will list all images visible by the account.

In-flight images will have the status attribute set to SAVING and the conditional progresselement (0-100% completion) will also be returned. Other possible values for the statusattribute include: UNKNOWN, PREPARING, ACTIVE, QUEUED, FAILED. Images with anACTIVE status are available for install.

This operation does not require a request body.

Example 4.43. Images List Response: XML (detail)

<?xml version="1.0" encoding="UTF-8"?><images xmlns="http://docs.openstack.org/compute/api/v1.1"> <image id="1" name="CentOS 5.2" updated="2010-10-10T12:00:00Z" created="2010-08-10T12:00:00Z" status="ACTIVE"/> <image id="743" name="My Server Backup" serverId="12" updated="2010-10-10T12:00:00Z" created="2010-08-10T12:00:00Z" status="SAVING" progress="80"/></images>

Page 73: OpenStack Compute Developer Guide fileThis document is intended for software developers interested in developing applications using the OpenStack Compute Application Programming Interface

OpenStack Compute Dev Guide(DRAFT)

Feb. 9, 2011 API v1.1

66

Example 4.44. Images List Response: JSON (detail)

{ "images" : [ { "id" : 1, "name" : "CentOS 5.2", "updated" : "2010-10-10T12:00:00Z", "created" : "2010-08-10T12:00:00Z", "status" : "ACTIVE" }, { "id" : 743, "name" : "My Server Backup", "serverId" : 12, "updated" : "2010-10-10T12:00:00Z", "created" : "2010-08-10T12:00:00Z", "status" : "SAVING", "progress" : 80 } ]}

4.6.2. Create Image

Verb URI Description

POST /images Create a new image

Normal Response Code(s): 202

Error Response Code(s): computeFault (400, 500), serviceUnavailable (503),unauthorized (401), badMediaType(415), itemNotFound (404), badRequest (400),serverCapacityUnavailable (503), buildInProgress (409), resizeNotAllowed (403),backupOrResizeInProgress (409), overLimit (413)

Status Transition: QUEUED PREPARING SAVING ACTIVE

QUEUED PREPARING SAVING FAILED (on error)

This operation creates a new image for the given server ID. Once complete, a new imagewill be available that can be used to rebuild or create servers. The image creation statuscan be queried by performing a GET on /images/id and examining the status and progressattributes.

Note

At present, image creation is an asynchronous operation, so coordinating thecreation with data quiescence, etc. is currently not possible.

Page 74: OpenStack Compute Developer Guide fileThis document is intended for software developers interested in developing applications using the OpenStack Compute Application Programming Interface

OpenStack Compute Dev Guide(DRAFT)

Feb. 9, 2011 API v1.1

67

Example 4.45. Image Create Request: XML

<image xmlns="http://docs.openstack.org/compute/api/v1.1" name="Just in case" serverId="12" />

Example 4.46. Image Create Request: JSON

{ "image" : { "serverId" : 12, "name" : "Just in case" }}

Example 4.47. Image Create Response: XML

<image xmlns="http://docs.openstack.org/compute/api/v1.1" id="22" name="Just in case" created="2010-10-10T12:00:00Z" status="SAVING" progress="0" serverId="12"/>

Example 4.48. Image Create Response: JSON

{ "image" : { "id" : 22, "serverId" : 12, "name" : "Just in case", "created" : "2010-10-10T12:00:00Z", "status" : "SAVING", "progress" : 0 }}

Page 75: OpenStack Compute Developer Guide fileThis document is intended for software developers interested in developing applications using the OpenStack Compute Application Programming Interface

OpenStack Compute Dev Guide(DRAFT)

Feb. 9, 2011 API v1.1

68

4.6.3. Get Image Details

Verb URI Description

GET /images/id List details of the specified image

Normal Response Code(s): 200, 203

Error Response Code(s): computeFault (400, 500), serviceUnavailable (503), unauthorized(401), badRequest (400), itemNotFound (404), overLimit (413)

This operation returns details of the specified image.

This operation does not require a request body.

Example 4.49. Image Details Response: XML

<?xml version="1.0" encoding="UTF-8"?><image xmlns="http://docs.openstack.org/compute/api/v1.1" id="1" name="CentOS 5.2" serverId="12" updated="2010-10-10T12:00:00Z" created="2010-08-10T12:00:00Z" status="SAVING" progress="80"/>

Example 4.50. Image Details Response: JSON

{ "image" : { "id" : 1, "name" : "CentOS 5.2", "serverId" : 12, "updated" : "2010-10-10T12:00:00Z", "created" : "2010-08-10T12:00:00Z", "status" : "SAVING", "progress" : 80 }}

Page 76: OpenStack Compute Developer Guide fileThis document is intended for software developers interested in developing applications using the OpenStack Compute Application Programming Interface

OpenStack Compute Dev Guide(DRAFT)

Feb. 9, 2011 API v1.1

69

4.6.4. Delete Image

Verb URI Description

DELETE /images/id Deletes the specified image.

Normal Response Code(s): 204

Error Response Code(s): computeFault (400, 500), serviceUnavailable (503), unauthorized(401), itemNotFound (404), overLimit (413)

This operation deletes an image from the system.

Images are immediately removed. Currently, there are no state transitions to track the deleteoperation.

This operation does not require a request body.

This operation does not contain a response body.

Page 77: OpenStack Compute Developer Guide fileThis document is intended for software developers interested in developing applications using the OpenStack Compute Application Programming Interface

OpenStack Compute Dev Guide(DRAFT)

Feb. 9, 2011 API v1.1

70

4.7. Shared IP GroupsA shared IP group is a collection of servers that can share IPv4 IPs with other members of thegroup. Any server in a group can share one or more public and private IPv4 IPs with any otherserver in the group. With the exception of the first server in a shared IP group, servers mustbe launched into shared IP groups. A server may only be a member of one shared IP group.

Note

Shared IP groups apply only to IPv4 addresses. You can share IPv6 addresses withservers that share an IPv6 affinity ID. See Section 4.1.2, “Create Server” for details.

4.7.1. List Shared IP Groups

Verb URI Description

GET /shared_ip_groups List shared ip groups (IDs and names only)

GET /shared_ip_groups/detail List shared ip groups (all details)

Normal Response Code(s): 200, 203

Error ResponseCode(s): computeFault (400, 500), serviceUnavailable (503), unauthorized(401), badRequest (400), overLimit (413)

This operation provides a list of shared IP groups associated with your account.

This operation does not require a request body.

Example 4.51. Shared IP Groups List Response: XML (detail)

<?xml version="1.0" encoding="UTF-8"?><sharedIpGroups xmlns="http://docs.openstack.org/compute/api/v1.1"> <sharedIpGroup id="1234" name="Shared IP Group 1"> <servers> <server id="422"/> <server id="3445"/> </servers> </sharedIpGroup> <sharedIpGroup id="5678" name="Shared IP Group 2"> <servers> <server id="23203"/> <server id="2456"/> <server id="9891"/> </servers> </sharedIpGroup></sharedIpGroups>

Page 78: OpenStack Compute Developer Guide fileThis document is intended for software developers interested in developing applications using the OpenStack Compute Application Programming Interface

OpenStack Compute Dev Guide(DRAFT)

Feb. 9, 2011 API v1.1

71

Example 4.52. Shared IP Groups List Response: JSON (detail)

{ "sharedIpGroups" : [ { "id" : 1234, "name" : "Shared IP Group 1", "servers" : [422, 3445] }, { "id" : 5678, "name" : "Shared IP Group 2", "servers" : [23203, 2456, 9891] } ]}

4.7.2. Create Shared IP GroupVerb URI Description

POST /shared_ip_groups Create a new shared ip group

Normal Response Code(s): 201

Error Response Code(s): computeFault (400, 500), serviceUnavailable (503), unauthorized(401), badMediaType(415), badRequest (400), overLimit (413)

This operation creates a new shared IP group. Please note, all responses to requests forshared_ip_groups return an array of servers. However, on a create request, the shared IPgroup can be created empty or can be initially populated with a single server. Submittinga create request with a sharedIpGroup that contains an array of servers will generate abadRequest (400) fault.

Example 4.53. Shared IP Group Create Request: XML

<?xml version="1.0" encoding="UTF-8"?><sharedIpGroup xmlns="http://docs.openstack.org/compute/api/v1.1" name="Shared IP Group 1"> <server id="422"/></sharedIpGroup>

Example 4.54. Shared IP Group Create Request: JSON

{ "sharedIpGroup" : { "name" : "Shared IP Group 1", "server" : 422 }}

Page 79: OpenStack Compute Developer Guide fileThis document is intended for software developers interested in developing applications using the OpenStack Compute Application Programming Interface

OpenStack Compute Dev Guide(DRAFT)

Feb. 9, 2011 API v1.1

72

Example 4.55. Shared IP Group Create Response: XML

<?xml version="1.0" encoding="UTF-8"?><sharedIpGroup xmlns="http://docs.openstack.org/compute/api/v1.1" id="1234" name="Shared IP Group 1"> <servers> <server id="422"/> </servers></sharedIpGroup>

Example 4.56. Shared IP Group Create Response: JSON

{ "sharedIpGroup" : { "id" : 1234, "name" : "Shared IP Group 1", "servers" : [422] }}

Page 80: OpenStack Compute Developer Guide fileThis document is intended for software developers interested in developing applications using the OpenStack Compute Application Programming Interface

OpenStack Compute Dev Guide(DRAFT)

Feb. 9, 2011 API v1.1

73

4.7.3. Get Shared IP Group Details

Verb URI Description

GET /shared_ip_groups/id List details of the specified shared IP group

Normal Response Code(s): 200, 203

Error Response Code(s): computeFault (400, 500), serviceUnavailable (503), unauthorized(401), badRequest (400), itemNotFound (404), overLimit (413)

This operation returns details of the specified shared IP group.

Example 4.57. Shared IP Group Details Response: XML

<?xml version="1.0" encoding="UTF-8"?><sharedIpGroup xmlns="http://docs.openstack.org/compute/api/v1.1" id="1234" name="Shared IP Group 1"> <servers> <server id="422"/> </servers></sharedIpGroup>

Example 4.58. Shared IP Group Details Response: JSON

{ "sharedIpGroup" : { "id" : 1234, "name" : "Shared IP Group 1", "servers" : [422] }}

This operation does not require a request body.

Page 81: OpenStack Compute Developer Guide fileThis document is intended for software developers interested in developing applications using the OpenStack Compute Application Programming Interface

OpenStack Compute Dev Guide(DRAFT)

Feb. 9, 2011 API v1.1

74

4.7.4. Delete Shared IP Group

Verb URI Description

DELETE /shared_ip_groups/id Delete the specified shared IP group

Normal Response Code(s): 204

Error Response Code(s): computeFault (400, 500), serviceUnavailable (503), unauthorized(401), itemNotFound (404), overLimit (413)

This operation deletes the specified shared IP group. This operation will only succeed if:

1. There are no active servers in the group (i.e. they have all been terminated) or2. No servers in the group are actively sharing IPs.

This operation does not require a request body.

This operation does not contain a response body.