OpenStack API Quick Start
- The OpenStack system has several key projects that are
- separate installations but can work together depending on your
- cloud needs: OpenStack Compute, OpenStack Object Storage,
- OpenStack Identity Service, and OpenStack Image Store. With
- the TryStack OpenStack installation, the OpenStack Compute,
- OpenStack Identity, and OpenStack Image Store projects are all
- working together in the background of the installation.
-
+ OpenStack APIs
+ To authenticate access to OpenStack services, you issue an
+ authentication request to the OpenStack Identity Service. You
+ must supply a payload of credentials in the authentication
+ request.
+ Credentials are usually a combination of your user name and
+ password, and optionally, the name or ID of the tenant in
+ which your cloud runs. Ask your cloud administrator for your
+ user name, password, and tenant so that you can generate
+ authentication tokens. Alternatively, you can supply a token
+ rather than a user name and password.
+ A token is typically valid for 24 hours. When you send API
+ requests, you include the token in the
+ X-Auth-Token header. You must generate
+ another token if you interact with your cloud through API
+ endpoints rather than through a client.
- OpenStack API Introduction
- This page covers the basics for talking to your
- OpenStack cloud through the Compute API after authorizing
- with the Identity Service API. You can then build a cloud
- by launching images and assigning metadata to instances,
- all through the API. For an API reference of all the
- possible commands, see the OpenStack Compute API v2 specification and
- the Identity Service 2.0 specification published
- at docs.openstack.org/api.
+
+ Authentication and API request workflow
+
+ Request an authentication token from the Identity
+ Service endpoint that your cloud administrator gave
+ you. Send a payload of credentials in the
+ request:
+
+
+
+
+
+
+
Parameter
+
Type
+
Description
+
+
+
+
+
username (Optional)
+
xsd:string
+
The user name. If you do not provide a
+ user name and password, you must provide a
+ token.
+
+
+
password (Optional)
+
xsd:string
+
The password for the user.
+
+
+
tenantName (Optional)
+
xsd:string
+
The tenant name. Both the
+ tenantId and
+ tenantName are
+ optional, but should not be specified
+ together. If both attributes are
+ specified, the server responds with a
+ 400
+ Bad Request.
+
+
+
tenantId (Optional)
+
capi:UUID
+
The tenant ID. Both the
+ tenantId and
+ tenantName are
+ optional, but should not be specified
+ together. If both attributes are
+ specified, the server responds with a
+ 400
+ Bad Request.
+
+
+
token (Optional)
+
capi:UUID
+
A token. If you do not provide a token,
+ you must provide a user name and
+ password.
+
+
+
+ If the request succeeds, the server returns an
+ authentication token.
+
+
+ Send API requests and include the token in the
+ X-Auth-Token header. Continue
+ to send API requests with that token until the job
+ completes or a 401
+ Unauthorized error occurs.
+
+
+ If the 401
+ Unauthorized error occurs,
+ request another token.
+
+
+ The examples in this section use cURL commands. For
+ information about cURL, see http://curl.haxx.se/. For information about the
+ OpenStack APIs, see OpenStack API Reference.
+
+
+ Authenticate
+ For a typical OpenStack deployment that runs the
+ Identity Service, use a cURL command like the following
+ command to request a token:
+ $curl -i 'http://127.0.0.1:5000/v2.0/tokens' -X POST -H "Content-Type: application/json" -H "Accept: application/json" -d '{"auth": {"tenantName": "admin", "passwordCredentials": {"username": "admin", "password": "devstack"}}}'
+ If the request succeeds, you receive a 200
+ OK response followed by a response body
+ that contains a token in the form
+ "id":"token"
+ and an expiration date and time in the form
+ "expires":"datetime".
+ The following example shows a successful
+ response:
+ HTTP/1.1 200 OK
+Vary: X-Auth-Token
+Content-Type: application/json
+Content-Length: 5858
+Date: Wed, 06 Nov 2013 20:06:24 GMT
+
+
+ If you do not know your tenant name or ID, you can
+ send an authentication request with an empty tenant,
+ as follows:
+ $curl -i 'http://127.0.0.1:5000/v2.0/tokens' -X POST -H "Content-Type: application/json" -H "Accept: application/json" -d '{"auth": {"tenantName": "", "passwordCredentials": {"username": "admin", "password": "devstack"}}}'
+
-
- Getting Credentials
- Credentials are a combination of your user name,
- password, and what tenant (or project) your cloud is
- running under. You only need to generate an additional
- token if you are interacting with your cloud directly with
- API endpoints, and not with a client. Your cloud
- administrator can give you a user name and a password as
- well as your tenant identifier so you can generate
- authorization tokens. You can also get the tenant ID from
- the Dashboard URLs, for example
- https://trystack.org/dash/296/images/ indicates a tenant
- ID of 296.
- These tokens are typically good for 24 hours, and when
- the token expires, you will find out with a 401
- (Unauthorized) error and can request another token
- programmatically. The general work flow goes something
- like this:
-
-
- Begin API requests by asking for an
- authorization token from the endpoint your cloud
- administrator gave you, typically
- http://hostname:port/v2.0/tokens. You send your
- user name, password, and what group or account you
- are with (the "tenant" in auth-speak).
- curl -k -X 'POST' -v https://arm.trystack.org:5443/v2.0/tokens -d '{"auth":{"passwordCredentials":{"username": "joecool", "password":"coolword"}, "tenantId":"5"}}' -H 'Content-type: application/json'
-
-
- The server returns a response in which the
- 24-hours token is contained. Use that token to
- send API requests with the X-Auth-Token included
- as an header field.
- curl -k -D - -H "X-Auth-Token: 7d2f63fd-4dcc-4752-8e9b-1d08f989cc00" -X 'GET' -v https://arm.trystack.org:9774/v1.1/296/extensions -H 'Content-type: application/json'
-
-
-
- Repeatedly send API requests with that token in
- the X-Auth-Token header until either: 1) the job's
- done or 2) you get a 401 (Unauthorized) code in
- return.
-
-
- Request a token again when you get a 401
- response or until the script's job is done.
-
-
-
- For a typical OpenStack deployment running the Identity
- Service you can request a token with this command in cURL
- if you know your
- tenantId:
-$ curl -X 'POST' -v
-https://arm.trystack.org:5443/v2.0/tokens -d
-'{"auth":{"passwordCredentials":{"username": "joecool", "password":"coolword"}, "tenantId":"5"}}' -H 'Content-type: application/json'
-
- In return, you should get a 200 OK response with a token
- in the form of "id":
- "cd427a33-bb4a-4079-a6d7-0ae148bdeda9" and an expiration
- date 24 hours from now. Here's what it looks like, the
- exact response may vary from cloud-to-cloud:
-
-
-{
- "access": {
- "serviceCatalog": [
- {
- "endpoints": [
- {
- "adminURL": "https://arm.trystack.org:9774/v1.1/1",
- "internalURL": "https://arm.trystack.org:9774/v1.1/1",
- "publicURL": "https://arm.trystack.org:9774/v1.1/1",
- "region": "RegionOne"
- }
- ],
- "name": "nova",
- "type": "compute"
- },
- {
- "endpoints": [
- {
- "adminURL": "https://GLANCE_API_IS_NOT_DISCLOSED/v1.1/1",
- "internalURL": "https://GLANCE_API_IS_NOT_DISCLOSED/v1.1/1",
- "publicURL": "https://GLANCE_API_IS_NOT_DISCLOSED/v1.1/1",
- "region": "RegionOne"
- }
- ],
- "name": "glance",
- "type": "image"
- },
- {
- "endpoints": [
- {
- "adminURL": "https://arm.trystack.org:5443/v2.0",
- "internalURL": "https://keystone.trystack.org:5000/v2.0",
- "publicURL": "https://keystone.trystack.org:5000/v2.0",
- "region": "RegionOne"
- }
- ],
- "name": "keystone",
- "type": "identity"
- }
- ],
- "token": {
- "expires": "2012-02-15T19:32:21",
- "id": "5df9d45d-d198-4222-9b4c-7a280aa35666",
- "tenant": {
- "id": "1",
- "name": "admin"
- }
- },
- "user": {
- "id": "14",
- "name": "joecool",
- "roles": [
- {
- "id": "2",
- "name": "Member",
- "tenantId": "1"
- }
- ]
- }
- }
- }
- If you don't know your tenantId, you can send a request
- with an empty tenantId, such as this JSON example:
-
-'{"auth":{"passwordCredentials":{"username": "joecool", "password":"coolword"}, "tenantId":""}}'
-
- Then, with the auth token that returns, fill in a request using the X-Auth-Token header as an authentication to get your tenantId:
- curl -H "X-Auth-Token:6de6d45d-d198-4222-9b4c-7a280aa24888" http://arm.trystack.org:5000/v2.0/tenants
- In return, you get a list of
- tenants:{
- "tenants_links": [],
- "tenants": [
- {
- "enabled": "true",
- "description": "joecool",
- "name": "joecool",
- "id": "tenantnnnnnn"
- }
- ]
- }
- Use the resulting token to make a new POST request
- containing the tenantId so you can retrieve
- endpoints:
- curl -k -X 'POST' -v http://arm.trystack.org:5000/v2.0/tokens -d
- '{"auth":{"passwordCredentials":{"username": "usern4me", "password":"passwerd"}, "tenantId":"tenantnnnnnn"}}' -H 'Content-type: application/json'
- The resulting JSON contains a list of endpoints, for
- example:
- {
- "endpoints": [
- {
- "adminURL": "http://10.225.0.8:8774/v2/tenantnnnnnn",
- "region": "Calxeda-AUS1",
- "internalURL": "http://10.225.0.8:8774/v2/tenantnnnnnn",
- "publicURL": "http://208.123.85.197:8774/v2/tenantnnnnnn"
- }
- ],
- "endpoints_links": [],
- "type": "compute",
- "name": "nova"
-}
- In addition, you can see a valid token matched to your
- user and
- tenantId:{
- "access": {
- "token": {
- "expires": "2012-10-31T17: 13: 12Z",
- "id": "new_token***",
- "tenant": {
- "enabled": true,
- "id": "tenantnnnnnn",
- "name": "joecool",
- "description": "joecool"
- }
- }
-}
+
+ Send API requests
+ This section shows how to make some Identity Service and
+ Compute API calls. For a complete list of Identity Service
+ API calls, see Identity Service APIs. For a complete list of
+ Compute API calls, see Compute APIs and Extensions.
+ Use the Identity Service API to request a list of
+ tenants, as follows:
+ $curl -i -X GET http://166.78.21.23:35357/v2.0/tenants -H "User-Agent: python-keystoneclient" -H "X-Auth-Token: token"
+
+ Use the Identity Service API to request a list of
+ endpoints, as follows:
+ $curl -i -X GET http://166.78.21.23:35357/v2.0/endpoints -H "User-Agent: python-keystoneclient" -H "X-Auth-Token: token"
+
+ Use the Compute API to list servers, as follows:
+ $curl -v -H "X-Auth-Token:token" http://208.123.85.197:8774/v2/tenant_id/servers
+
-
- Sending Requests to the API
- You have a couple of options for sending requests to
- OpenStack through an API. Developers and testers may
- prefer to use cURL, the command-line tool from http://curl.haxx.se/. With cURL you can send
- HTTP requests and receive responses back from the command
- line.
- If you like to use a more graphical interface, the REST
- client for Firefox also works well for testing and trying
- out commands, see https://addons.mozilla.org/en-US/firefox/addon/restclient/.
- You can also download and install rest-client, a Java
- application to test RESTful web services, from http://code.google.com/p/rest-client/.
- You need to generate a token as shown above if you use
- cURL or a REST client.
- It's also recommended that you install and use a
- Command-Line-Client (CLI) such as python-novaclient, which
- is documented in CLI guide.
- Here's an example of curl commands that can check your list of servers.
-
- curl -v -H "X-Auth-Token:tokengoeshere" http://208.123.85.197:8774/v2/tenantnnnnnn/servers
- Here's what you get in return if you have a running server.
- {
- "servers": [
- {
- "id": "server***",
- "links": [
- {
- "href": "http://208.123.85.197:8774/v2/tenantnnnnnn/servers/server***",
- "rel": "self"
- },
- {
- "href": "http://208.123.85.197:8774/tenantnnnnnn/servers/server***",
- "rel": "bookmark"
- }
- ],
- "name": "Staging Server"
- }
- ]
-}
-
-
-
diff --git a/api-quick-start/src/docbkx/api-quick-start-onepager.xml b/api-quick-start/src/docbkx/api-quick-start-onepager.xml
index af8ae4d1c..10434d366 100644
--- a/api-quick-start/src/docbkx/api-quick-start-onepager.xml
+++ b/api-quick-start/src/docbkx/api-quick-start-onepager.xml
@@ -3,11 +3,49 @@
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:xi="http://www.w3.org/2001/XInclude"
xmlns:svg="http://www.w3.org/2000/svg"
- xmlns:html="http://www.w3.org/1999/xhtml"
- version="5.0"
+ xmlns:html="http://www.w3.org/1999/xhtml" version="5.0"
xml:id="openstack-api-quick-start">
OpenStack API Quick Start
+ Although you install each OpenStack service separately, the
+ OpenStack services work together to meet your cloud needs:
+ Identity Service, Compute, Image Service, Block Storage
+ Service, Networking, Object Storage, Orchestration, and
+ Metering. With the TryStack OpenStack installation, these services
+ work together in the background of the installation.
+ After you authenticate through the Identity Service, you can
+ use the other OpenStack APIs to create and manage resources in
+ your OpenStack cloud. You can launch instances from images and
+ assign metadata to instances through the Compute API or the
+ nova command-line client.
+ To begin sending API requests, use one of the following
+ methods:
+
+
+ cURL
+ A command-line tool that lets you send HTTP requests
+ and receive responses. See .
+
+
+ OpenStack command-line
+ clients
+ Each OpenStack project provides a command-line
+ client that enables you to access its API through
+ easy-to-use commands. See .
+
+
+ REST clients
+ Both Mozilla and Google provide browser-based
+ graphical interfaces for REST. For Firefox, see RESTClient. For Chrome, see rest-client.
+
+
+
-
+
diff --git a/api-quick-start/src/docbkx/cli-uses.xml b/api-quick-start/src/docbkx/cli-uses.xml
index 30d237f4d..336e80c93 100644
--- a/api-quick-start/src/docbkx/cli-uses.xml
+++ b/api-quick-start/src/docbkx/cli-uses.xml
@@ -1,148 +1,169 @@
- Setting Up python-novaclient
-
-For more serious scripting work, you can use a client like the
- python-novaclient client. The python-novaclient implements
- Compute API through a command-line interface. You only need a
- user name and password to use the python-novaclient tool.
- Installing the python-novaclient gives you a nova shell command that enables
- Compute API interactions from the command line. You install the client, and then provide
- your user name and password, set as environment variables for convenience, and then you
- can have the ability to send commands to your cloud on the command-line.
- To install python-novaclient, install from Pypi
- like so.
-
-$ pip install python-novaclient
-
- The CLI guide offers more detailed install
- instructions including how to source your credentials.
-
-Listing ImagesBefore you can go about the business of building your cloud, you
- want to know what images are available to you by asking
- the image service what kinds of configurations are
- available. The image service could be compared to iTunes
- for your cloud - you can view the playlist of images
- before using your favorite image to create a new instance
- in the cloud. To get the list of images, their names,
- status, and ID, use this command:
-
-$ nova image-list
-
-+----+--------------------------------------+--------+--------+
-| ID | Name | Status | Server |
-+----+--------------------------------------+--------+--------+
-| 12 | natty-server-cloudimg-amd64-kernel | ACTIVE | |
-| 13 | natty-server-cloudimg-amd64 | ACTIVE | |
-| 14 | oneiric-server-cloudimg-amd64-kernel | ACTIVE | |
-| 15 | oneiric-server-cloudimg-amd64 | ACTIVE | |
-+----+--------------------------------------+--------+--------+
-
- Next you need to know the relative sizes of each of these.
-
- With the information about what is available to you, you can choose the combination of image and flavor to create your virtual servers and launch instances.
- Listing Flavors
- You also need to know the ID of the flavor
- To get the list of flavors, their names,
- status, and ID, use this command:
-
-$ nova flavor-list
-
-+----+-----------+-----------+------+-----------+------+-------+-------------+
-| ID | Name | Memory_MB | Disk | Ephemeral | Swap | VCPUs | RXTX_Factor |
-+----+-----------+-----------+------+-----------+------+-------+-------------+
-| 1 | m1.tiny | 512 | 0 | N/A | 0 | 1 | |
-| 2 | m1.small | 2048 | 20 | N/A | 0 | 1 | |
-| 3 | m1.medium | 4096 | 40 | N/A | 0 | 2 | |
-| 4 | m1.large | 8192 | 80 | N/A | 0 | 4 | |
-| 5 | m1.xlarge | 16384 | 160 | N/A | 0 | 8 | |
-+----+-----------+-----------+------+-----------+------+-------+-------------+
-
- With the information about what is available to you, you can choose the combination of image and flavor to create your virtual servers and launch instances.
-
- Launching Instances
-
- To launch a server, you choose an image you want to match
- up to a size, find the ID for the image and the ID for the
- flavor so you can size it, and create the command with the
- IDs. From the information we got previously, we know that
- an Ubuntu Natty image has an ID of 13, and if you want to
- start small with about 2 GB of memory and 20 GB of disk
- space, you'd choose the m1.small flavor which has an ID of
- 2 when using the 1.1 API on TryStack. Put those parameters
- in with the "boot" command and you can create a new
- virtual server.
- When using an endpoint that supports 1.1 of the
- Compute API, you can launch instances with an ID.
- When using an endpoint that supports v2 of the
- Compute API, you must use the UUID to launch an
- instance.
-
-
-
- $ nova boot --flavor=2 --image=13 testserver
-
- +-----------+--------------------------------------+
-| Property | Value |
-+-----------+--------------------------------------+
-| adminPass | **************** |
-| created | 2011-09-01T21:40:41Z |
-| flavor | m1.small |
-| hostId | |
-| id | 1805 |
-| image | natty |
-| metadata | {} |
-| name | testserver |
-| progress | 0 |
-| status | BUILD |
-| updated | 2011-09-01T21:40:41Z |
-| uuid | ce044452-f22e-4ea4-a3ec-d1cde80cf996 |
-+-----------+--------------------------------------+
-
-
- Now, you can view this server in your new cloud by using the nova list
- command:
-$ nova list
-+------+------------+--------+--------------------------------+
-| ID | Name | Status | Networks |
-+------+------------+--------+--------------------------------+
-| 1805 | testserver | ACTIVE | private=10.4.96.81 |
-+------+------------+--------+--------------------------------+
-
-
- There are three statuses you may see - ACTIVE, BUILDING, and UNKNOWN. The BUILDING status is transient and you likely will not see it. If you see UNKNOWN, run nova list again until it goes away.
- To view all the information about a particular server, use
- nova show with the ID of the server that
- you got from the nova list command.
-
-$ nova show 1805
-
-+-----------------+----------------------------------------------------------+
-| Property | Value |
-+-----------------+----------------------------------------------------------+
-| created | 2011-09-01T21:40:41Z |
-| flavor | m1.small |
-| hostId | 58a7430169aa42cde5ce2456b0cb5bb5ac1ab0703bab6420e8a49e6e |
-| id | 1805 |
-| image | natty |
-| metadata | {} |
-| name | testserver |
-| private network | 10.4.96.81 |
-| progress | 100 |
-| status | ACTIVE |
-| updated | 2011-09-01T21:40:46Z |
-| uuid | ce044452-f22e-4ea4-a3ec-d1cde80cf996 |
-+-----------------+----------------------------------------------------------+
-
-
- You can now launch that image again, but add more information to the server when you
- boot it so that you can more easily identify it amongst your ever-growing elastic cloud.
- Use the -meta option with a key=value pair, where you can make up the string for both the
- key and the value. For example, you could add a description and also the creator of the
- server.
- $ nova boot --flavor=2 --image=13 testserver --meta description='Use for testing purposes' --meta creator=joecool
-
+ OpenStack command-line clients
+ For scripting work, you can use a command-line client like
+ the python-novaclient
+ client. This client enables you to use the Compute API through
+ a command-line interface.
+ For information about the command-line clients, see OpenStack End User
+ Guide and OpenStack Admin User
+ Guide.
+
+ Install the clients
+ Use pip to install the OpenStack
+ clients on a Mac OS X or Linux system. It is easy and
+ ensures that you get the latest version of the client from
+ the Python
+ Package Index. Also, pip
+ lets you update or remove a package. After you install the
+ clients, you must source an openrc file to set required environment
+ variables before you can request OpenStack services
+ through the clients or the APIs. For complete information
+ about the OpenStack clients including how to source the
+ openrc file, see OpenStack End User
+ Guide and OpenStack Admin User
+ Guide.
+ You must install each client separately.
+ Run the following command to install or update a client
+ package:
+ $sudo pip install [--upgrade] python-PROJECTclient
+ Where PROJECT is the project
+ name.
+ For example, to install the nova client, run the
+ following command:
+ $sudo pip install python-novaclient
+ To update the nova client, run the following
+ command:
+ $sudo pip install --upgrade python-novaclient
+ To remove the nova client, run the following
+ command:
+ $sudo pip uninstall python-novaclient
+ Before you can issue client commands, you must download
+ and source the openrc file to set
+ environment variables.
+
+
+ Launch an instance
+ To launch instances, you must choose a name, an image,
+ and a flavor for your instance.
+ To list available images, call the Compute API through
+ the nova client, as follows:
+ $nova image-list
+ +--------------------------------------+---------------------------------+--------+--------+
+| ID | Name | Status | Server |
++--------------------------------------+---------------------------------+--------+--------+
+| 949c80c8-b4ac-4315-844e-69f9bef39ed1 | cirros-0.3.1-x86_64-uec | ACTIVE | |
+| 2d96f33d-ff66-4cac-b377-820cdf51204a | cirros-0.3.1-x86_64-uec-kernel | ACTIVE | |
+| eda9e5cb-4c8c-4e88-b580-7fac80ad8e78 | cirros-0.3.1-x86_64-uec-ramdisk | ACTIVE | |
++--------------------------------------+---------------------------------+--------+--------+
+ To list flavors, run the following command:
+ $nova flavor-list
+ +----+-----------+-----------+------+-----------+------+-------+-------------+-----------+
+| ID | Name | Memory_MB | Disk | Ephemeral | Swap | VCPUs | RXTX_Factor | Is_Public |
++----+-----------+-----------+------+-----------+------+-------+-------------+-----------+
+| 1 | m1.tiny | 512 | 0 | 0 | | 1 | 1.0 | True |
+| 2 | m1.small | 2048 | 20 | 0 | | 1 | 1.0 | True |
+| 3 | m1.medium | 4096 | 40 | 0 | | 2 | 1.0 | True |
+| 4 | m1.large | 8192 | 80 | 0 | | 4 | 1.0 | True |
+| 42 | m1.nano | 64 | 0 | 0 | | 1 | 1.0 | True |
+| 5 | m1.xlarge | 16384 | 160 | 0 | | 8 | 1.0 | True |
+| 84 | m1.micro | 128 | 0 | 0 | | 1 | 1.0 | True |
++----+-----------+-----------+------+-----------+------+-------+-------------+-----------+
+ To launch an instance, note the IDs of your desired
+ image and flavor.
+ To launch an instance named
+ my_instance, run the nova
+ boot command with the image and flavor IDs
+ and the server name, as follows:
+ $nova boot --image 949c80c8-b4ac-4315-844e-69f9bef39ed1 --flavor 2 my_instance
+ +-------------------------------------+--------------------------------------+
+| Property | Value |
++-------------------------------------+--------------------------------------+
+| OS-DCF:diskConfig | MANUAL |
+| OS-EXT-AZ:availability_zone | nova |
+| OS-EXT-SRV-ATTR:host | None |
+| OS-EXT-SRV-ATTR:hypervisor_hostname | None |
+| OS-EXT-SRV-ATTR:instance_name | instance-00000001 |
+| OS-EXT-STS:power_state | 0 |
+| OS-EXT-STS:task_state | scheduling |
+| OS-EXT-STS:vm_state | building |
+| accessIPv4 | |
+| accessIPv6 | |
+| adminPass | XysUgJRnkB2y |
+| config_drive | |
+| created | 2013-11-07T17:34:16Z |
+| flavor | m1.small |
+| hostId | |
+| id | 66129319-1f1d-420d-a226-bf9fc5ea0138 |
+| image | cirros-0.3.1-x86_64-uec |
+| key_name | None |
+| metadata | {} |
+| name | my_instance |
+| progress | 0 |
+| security_groups | [{u'name': u'default'}] |
+| status | BUILD |
+| tenant_id | 604bbe45ac7143a79e14f3158df67091 |
+| updated | 2013-11-07T17:34:16Z |
+| user_id | 3273a50d6cfb4a2ebc75e83cb86e1554 |
++-------------------------------------+--------------------------------------+
+ Use the nova list command to view
+ your server:
+ $nova list
+ +--------------------------------------+-------------+--------+------------+-------------+------------------+
+| ID | Name | Status | Task State | Power State | Networks |
++--------------------------------------+-------------+--------+------------+-------------+------------------+
+| 66129319-1f1d-420d-a226-bf9fc5ea0138 | my_instance | ACTIVE | None | Running | private=10.0.0.2 |
++--------------------------------------+-------------+--------+------------+-------------+------------------+
+ To view details for a specified server, use the
+ nova show command. Include the ID
+ of the server:
+ $nova show 66129319-1f1d-420d-a226-bf9fc5ea0138
+ +-------------------------------------+----------------------------------------------------------------+
+| Property | Value |
++-------------------------------------+----------------------------------------------------------------+
+| OS-DCF:diskConfig | MANUAL |
+| OS-EXT-AZ:availability_zone | nova |
+| OS-EXT-SRV-ATTR:host | devstack-grizzly |
+| OS-EXT-SRV-ATTR:hypervisor_hostname | devstack-grizzly |
+| OS-EXT-SRV-ATTR:instance_name | instance-00000001 |
+| OS-EXT-STS:power_state | 1 |
+| OS-EXT-STS:task_state | None |
+| OS-EXT-STS:vm_state | active |
+| accessIPv4 | |
+| accessIPv6 | |
+| config_drive | |
+| created | 2013-11-07T17:34:16Z |
+| flavor | m1.small (2) |
+| hostId | d57e6f9f7885c615794b4d5a87103509620b6a7f567f7e7bd57e97a2 |
+| id | 66129319-1f1d-420d-a226-bf9fc5ea0138 |
+| image | cirros-0.3.1-x86_64-uec (949c80c8-b4ac-4315-844e-69f9bef39ed1) |
+| key_name | None |
+| metadata | {} |
+| name | my_instance |
+| private network | 10.0.0.2 |
+| progress | 0 |
+| security_groups | [{u'name': u'default'}] |
+| status | ACTIVE |
+| tenant_id | 604bbe45ac7143a79e14f3158df67091 |
+| updated | 2013-11-07T17:34:32Z |
+| user_id | 3273a50d6cfb4a2ebc75e83cb86e1554 |
++-------------------------------------+----------------------------------------------------------------+
+
+
diff --git a/api-quick-start/src/docbkx/endpoints-list-resp.json b/api-quick-start/src/docbkx/endpoints-list-resp.json
new file mode 100644
index 000000000..089a0019a
--- /dev/null
+++ b/api-quick-start/src/docbkx/endpoints-list-resp.json
@@ -0,0 +1,52 @@
+{
+ "endpoints":[
+ {
+ "adminurl":"http://166.78.21.23:3333",
+ "service_id":"95ce5af0aab747e497925a5be1d88b6b",
+ "region":"RegionOne",
+ "publicurl":"http://166.78.21.23:3333",
+ "id":"406cae0574614d829adcbdcf16b4949b",
+ "internalurl":"http://166.78.21.23:3333"
+ },
+ {
+ "adminurl":"http://166.78.21.23:8773/services/Admin",
+ "service_id":"5f1f74decf1f4478a962bcc64fc085bf",
+ "region":"RegionOne",
+ "publicurl":"http://166.78.21.23:8773/services/Cloud",
+ "id":"14c4ae919d4045b78154744f8de08bc8",
+ "internalurl":"http://166.78.21.23:8773/services/Cloud"
+ },
+ {
+ "adminurl":"http://166.78.21.23:8776/v1/$(tenant_id)s",
+ "service_id":"1d95b26ad4744e6bb0010f3755655986",
+ "region":"RegionOne",
+ "publicurl":"http://166.78.21.23:8776/v1/$(tenant_id)s",
+ "id":"c2c8807f17f544f2a4e813adce7997a4",
+ "internalurl":"http://166.78.21.23:8776/v1/$(tenant_id)s"
+ },
+ {
+ "adminurl":"http://166.78.21.23:35357/v2.0",
+ "service_id":"f7c3f51731df49cf876c816b96dba615",
+ "region":"RegionOne",
+ "publicurl":"http://166.78.21.23:5000/v2.0",
+ "id":"f872f18d21ac4a57ae6337bf7c3b4ff0",
+ "internalurl":"http://166.78.21.23:5000/v2.0"
+ },
+ {
+ "adminurl":"http://166.78.21.23:9292",
+ "service_id":"675b9a6b5d9140d794f0ca72414ed688",
+ "region":"RegionOne",
+ "publicurl":"http://166.78.21.23:9292",
+ "id":"9883108c61af480c8715448086ec59b0",
+ "internalurl":"http://166.78.21.23:9292"
+ },
+ {
+ "internalurl":"http://166.78.21.23:8774/v2/$(tenant_id)s",
+ "adminurl":"http://166.78.21.23:8774/v2/$(tenant_id)s",
+ "service_id":"ea8d30c196904f569645bb5f6558b7dc",
+ "region":"RegionOne",
+ "id":"552b1ad2d28a42c6a80f908c6047fc06",
+ "publicurl":"http://166.78.21.23:8774/v2/$(tenant_id)s"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/api-quick-start/src/docbkx/get_credentials_resp.json b/api-quick-start/src/docbkx/get_credentials_resp.json
new file mode 100644
index 000000000..ffc36194c
--- /dev/null
+++ b/api-quick-start/src/docbkx/get_credentials_resp.json
@@ -0,0 +1,132 @@
+{
+ "access":{
+ "token":{
+ "issued_at":"2013-11-06T20:06:24.113908",
+ "expires":"2013-11-07T20:06:24Z",
+ "id":"{token}",
+ "tenant":{
+ "description":null,
+ "enabled":true,
+ "id":"604bbe45ac7143a79e14f3158df67091",
+ "name":"admin"
+ }
+ },
+ "serviceCatalog":[
+ {
+ "endpoints":[
+ {
+ "adminURL":"http://166.78.21.23:8774/v2/604bbe45ac7143a79e14f3158df67091",
+ "region":"RegionOne",
+ "internalURL":"http://166.78.21.23:8774/v2/604bbe45ac7143a79e14f3158df67091",
+ "id":"9851cb538ce04283b770820acc24e898",
+ "publicURL":"http://166.78.21.23:8774/v2/604bbe45ac7143a79e14f3158df67091"
+ }
+ ],
+ "endpoints_links":[
+
+ ],
+ "type":"compute",
+ "name":"nova"
+ },
+ {
+ "endpoints":[
+ {
+ "adminURL":"http://166.78.21.23:3333",
+ "region":"RegionOne",
+ "internalURL":"http://166.78.21.23:3333",
+ "id":"0bee9a113d294dda86fc23ac22dce1e3",
+ "publicURL":"http://166.78.21.23:3333"
+ }
+ ],
+ "endpoints_links":[
+
+ ],
+ "type":"s3",
+ "name":"s3"
+ },
+ {
+ "endpoints":[
+ {
+ "adminURL":"http://166.78.21.23:9292",
+ "region":"RegionOne",
+ "internalURL":"http://166.78.21.23:9292",
+ "id":"4b6e9ece7e25479a8f7bb07eb58845af",
+ "publicURL":"http://166.78.21.23:9292"
+ }
+ ],
+ "endpoints_links":[
+
+ ],
+ "type":"image",
+ "name":"glance"
+ },
+ {
+ "endpoints":[
+ {
+ "adminURL":"http://166.78.21.23:8776/v1/604bbe45ac7143a79e14f3158df67091",
+ "region":"RegionOne",
+ "internalURL":"http://166.78.21.23:8776/v1/604bbe45ac7143a79e14f3158df67091",
+ "id":"221a2df63537400e929c0ce7184c5d68",
+ "publicURL":"http://166.78.21.23:8776/v1/604bbe45ac7143a79e14f3158df67091"
+ }
+ ],
+ "endpoints_links":[
+
+ ],
+ "type":"volume",
+ "name":"cinder"
+ },
+ {
+ "endpoints":[
+ {
+ "adminURL":"http://166.78.21.23:8773/services/Admin",
+ "region":"RegionOne",
+ "internalURL":"http://166.78.21.23:8773/services/Cloud",
+ "id":"356f334fdb7045f7a35b0eebe26fca53",
+ "publicURL":"http://166.78.21.23:8773/services/Cloud"
+ }
+ ],
+ "endpoints_links":[
+
+ ],
+ "type":"ec2",
+ "name":"ec2"
+ },
+ {
+ "endpoints":[
+ {
+ "adminURL":"http://166.78.21.23:35357/v2.0",
+ "region":"RegionOne",
+ "internalURL":"http://166.78.21.23:5000/v2.0",
+ "id":"10f3816574c14a5eb3d455b8a72dc9b0",
+ "publicURL":"http://166.78.21.23:5000/v2.0"
+ }
+ ],
+ "endpoints_links":[
+
+ ],
+ "type":"identity",
+ "name":"keystone"
+ }
+ ],
+ "user":{
+ "username":"admin",
+ "roles_links":[
+
+ ],
+ "id":"3273a50d6cfb4a2ebc75e83cb86e1554",
+ "roles":[
+ {
+ "name":"admin"
+ }
+ ],
+ "name":"admin"
+ },
+ "metadata":{
+ "is_admin":0,
+ "roles":[
+ "b0d525aa42784ee0a3df1730aabdcecd"
+ ]
+ }
+ }
+}
\ No newline at end of file
diff --git a/api-quick-start/src/docbkx/server-post-resp.json b/api-quick-start/src/docbkx/server-post-resp.json
new file mode 100644
index 000000000..29ce13717
--- /dev/null
+++ b/api-quick-start/src/docbkx/server-post-resp.json
@@ -0,0 +1,16 @@
+{
+ "server": {
+ "adminPass": "MVk5HPrazHcG",
+ "id": "5bbcc3c4-1da2-4437-a48a-66f15b1b13f9",
+ "links": [
+ {
+ "href": "http://openstack.example.com/v2/openstack/servers/5bbcc3c4-1da2-4437-a48a-66f15b1b13f9",
+ "rel": "self"
+ },
+ {
+ "href": "http://openstack.example.com/openstack/servers/5bbcc3c4-1da2-4437-a48a-66f15b1b13f9",
+ "rel": "bookmark"
+ }
+ ]
+ }
+}
\ No newline at end of file
diff --git a/api-quick-start/src/docbkx/tenants_list_resp.json b/api-quick-start/src/docbkx/tenants_list_resp.json
new file mode 100644
index 000000000..e8945c872
--- /dev/null
+++ b/api-quick-start/src/docbkx/tenants_list_resp.json
@@ -0,0 +1,37 @@
+{
+ "tenants_links":[
+
+ ],
+ "tenants":[
+ {
+ "description":null,
+ "enabled":true,
+ "id":"3eddf34c2f814bd5bc50a382f8fba1c6",
+ "name":"demo"
+ },
+ {
+ "description":null,
+ "enabled":true,
+ "id":"604bbe45ac7143a79e14f3158df67091",
+ "name":"admin"
+ },
+ {
+ "description":null,
+ "enabled":true,
+ "id":"78323d3574e6421b98fe5894475c69fe",
+ "name":"service"
+ },
+ {
+ "description":null,
+ "enabled":true,
+ "id":"da73856734d84ec29958b048d8708d82",
+ "name":"invisible_to_admin"
+ },
+ {
+ "description":null,
+ "enabled":true,
+ "id":"ee30a93eaade41acbcf210780dd7a0ba",
+ "name":"alt_demo"
+ }
+ ]
+}
\ No newline at end of file