tuskar/doc/source/api/curl.rst
Jay Dobies e305f61b18 Fix tuskar docs building
Fixed a problem with the docs not even building and cleaned up the
sphinx warnings. Changed the directory structure to more closely
resemble other OpenStack projects. This doesn't address any of the
content yet, simply the structure and ability to build.

Change-Id: I2b00b12b7664d58d44994b9d0e23a55c96379c18
2014-02-18 13:50:14 -05:00

448 lines
10 KiB
ReStructuredText

=============
cURL Commands
=============
Resources
---------
- `Rack <#rack>`_
- `Flavor <#flavor>`_
- `ResourceClass <#resource_class>`_
- `DataCenter <#data_center>`_
- `Node <#node>`_
- `Overcloud <#overcloud>`_
Rack
----
create
~~~~~~
::
curl -vX POST -H 'Content-Type: application/json' -H 'Accept: application/json' -v -d '
{
"subnet": "192.168.1.0/255",
"name": "my_rack",
"capacities": [{
"name": "total_cpu",
"value": "64",
"unit": "count"
}, {
"name": "total_memory",
"value": "1024",
"unit": "MiB"
}],
"nodes": [{
"id": "123"
}, {
"id": "345"
}],
"slots": 1
}
' http://0.0.0.0:8585/v1/racks
create with ResourceClass
~~~~~~~~~~~~~~~~~~~~~~~~~
::
curl -vX POST -H 'Content-Type: application/json' -H 'Accept: application/json' -v -d '
{
"subnet": "192.168.1.0/255",
"name": "my_rack",
"capacities": [{
"name": "total_cpu",
"value": "64",
"unit": "cpu"
}, {
"name": "total_memory",
"value": "1024",
"unit": "MB"
}],
"nodes": [{
"id": "123"
}, {
"id": "345"
}],
"slots": 1,
"resource_class":{
"id":1,
"links":[
{
"href":"http://0.0.0.0:8585/v1/resource_clases/1",
"rel":"self"
}
]
}
}
' http://0.0.0.0:8585/v1/racks
delete
~~~~~~
::
curl -vX DELETE http://localhost:8585/v1/racks/1
update
~~~~~~
::
curl -v -X PUT -H 'Content-Type: application/json' -H 'Accept: application/json' -v -d '{ "name": "new_name" }' http://0.0.0.0:8585/v1/racks/1
update (change nodes to Rack 1)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
::
curl -v -X PUT -H 'Content-Type: application/json' -H 'Accept: application/json' -v -d '{ "nodes": [ { "id": "1" }, { "id": "2"}] }' http://0.0.0.0:8585/v1/racks/1
`back to top <#index>`_
Flavor
------
This resource only exists as part of a ResourceClass.
create a new Flavor for a specific ResourceClass
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
::
curl -v -X POST -H 'Content-Type: application/json' -H 'Accept: application/json' -v -d '
{
"max_vms": 10,
"name": "tiny",
"capacities":
[
{
"value": "1",
"name": "cpu",
"unit": "count"
},
{
"value": "512",
"name": "memory",
"unit": "MiB"
},
{
"value": "512",
"name": "storage",
"unit": "GiB"
}
]
}'
http://0.0.0.0:8585/v1/resource_classes/1/flavors``
Flavors can also be created as part of `ResourceClass create <#rc_with_flavors>`_ operation:
get Flavor(s) for a particular ResourceClass
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
::
curl -H "Accept: application/xml" http://0.0.0.0:8585/v1/resource_classes/1/flavors(/2)
delete a specific Flavor from a given ResourceClass
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
::
curl -X DELETE -H "Accept: application/xml" http://0.0.0.0:8585/v1/resource_classes/1/flavors/1
update an existing Flavor in a specified ResourceClass
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
::
curl -v -X PUT -H 'Content-Type: application/json' -H 'Accept: application/json' -v -d '
{
"capacities":
[
{
"value": "5000",
"name": "cpu",
"unit": "count"
},
{
"value": "1111",
"name": "memory",
"unit": "MiB"
},
{
"value": "2222",
"name": "storage",
"unit": "GiB"
}
],
"max_vms": 9999,
"name": "tiny_update" }'
http://0.0.0.0:8585/v1/resource_classes/1/flavors/3``
**NOTE:** The above operation can be performed to change only part of a
given flavor - such as updating the name or max\_vms, or even a specific
capacity. The body of the PUT request will determine what is updated.
For example, to update the 'cpu' capacity and 'max\_vms':
::
curl -v -X PUT -H 'Content-Type: application/json' -H 'Accept: application/json' -v -d '
{
"max_vms": 1234,
"capacities" : [
{ "name": "cpu",
"value" : "1",
"unit" : "count" }
]
}'
http://0.0.0.0:8585/v1/resource_classes/1/flavors/3``
`back to top <#index>`_
ResourceClass
-------------
get a specific ResourceClass
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
::
curl -H 'Accept: application/json' http://0.0.0.0:8585/v1/resource_classes/1
response
^^^^^^^^
::
{
"id":11,
"name":"test-chassis",
"service_type":"compute",
"racks":[
{
"id":1,
"links":[
{
"href":"http://0.0.0.0:8585/v1/rack/1",
"rel":"self"
}
]
}
],
"links":[
{
"href":"http://0.0.0.0:8585/v1/resource_classes/11",
"rel":"self"
}
]
}
get collection
~~~~~~~~~~~~~~
::
curl -H 'Accept: application/json' http://0.0.0.0:8585/v1/resource_classes
create without Racks
~~~~~~~~~~~~~~~~~~~~
::
curl -iX POST -H 'Content-Type: application/json' -H 'Accept: application/json' -d '
{
"service_type": "compute",
"name": "test-chassis"
}
' http://0.0.0.0:8585/v1/resource_classes
create with Rack and Flavor definitions
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
::
curl -iX POST -H 'Content-Type: application/json' -H 'Accept: application/json' -d '
{
"name": "test-chassis",
"service_type":"compute",
"racks": [
{ "id":1,
"links":[{"href":"http://0.0.0.0:8585/v1/racks/1","rel":"self"}]
}
],
"flavors": [
{ "name" : "x-large",
"capacities" : [
{ "name": "cpu",
"value" : "4",
"unit" : "count" },
{ "name": "memory",
"value" : "8192",
"unit" : "MiB" },
{ "name": "storage",
"value" : "1024",
"unit" : "GiB" }
]
}
]
}
' http://0.0.0.0:8585/v1/resource_classes
**as a one-liner (copy/paste)**
::
curl -iX POST -H 'Content-Type: application/json' -H 'Accept: application/json' -d '{"service_type": "compute_1","name": "test-chassis", "service_type":"compute","racks":[{"id":1,"links":[{"href":"http://0.0.0.0:8585/v1/racks/1","rel":"self"}]}], "flavors": [{"name" : "x-large", "capacities" : [ { "name": "cpu", "value" : "4", "unit" : "count" }, { "name": "memory", "value" : "8192", "unit" : "MiB" }, { "name": "storage", "value" : "1024", "unit" : "GiB" }]}]}' http://0.0.0.0:8585/v1/resource_classes
update
~~~~~~
To add or remove Racks on a ResourceClass, simply do an update and alter
the racks array attribute accordingly.
::
curl -iX PUT -H 'Content-Type: application/json' -H 'Accept: application/json' -d '
{
"service_type": "compute",
"name": "test-chassis",
"racks":[
{
"id": 1,
"links": [
{
"href":"http://0.0.0.0:8585/v1/racks/1",
"rel":"self"
}
]
}
]
}
' http://0.0.0.0:8585/v1/resource_classes/13``
delete
~~~~~~
::
curl -X DELETE http://0.0.0.0:8585/v1/resource_classes/1
`back to top <#index>`_
DataCenter
----------
provision all
~~~~~~~~~~~~~
This will provision the data center according to its description in
Tuskar.
::
curl -XPOST -H 'Content-Type:application/json' -H 'Accept: application/json' http://0.0.0.0:8585/v1/data_centers/
`back to top <#index>`_
Node
----
Get Collection
~~~~~~~~~~~~~~
::
curl http://0.0.0.0:8585/v1/nodes/
response
^^^^^^^^
::
[
{
"nova_baremetal_node_id": "0e3ab3d3-bd85-40bd-b6a1-fae484040825",
"id": "1",
"links": [
{
"href": "http://127.0.0.1:8585/v1/nodes/1",
"rel": "self"
}
],
"rack": {
"id": 1,
"links":
[
{
"href": "http://127.0.0.1:8585/v1/racks/1",
"rel": "self"
}
]
}
}
]
Retrieve a single Node
~~~~~~~~~~~~~~~~~~~~~~
::
curl http://0.0.0.0:8585/v1/nodes/1
response
^^^^^^^^
::
{
"nova_baremetal_node_id": "0e3ab3d3-bd85-40bd-b6a1-fae484040825",
"id": "1",
"links":
[
{
"href": "http://127.0.0.1:8585/v1/nodes/1",
"rel": "self"
}
],
"rack":
{
"id": 1,
"links":
[
{
"href": "http://127.0.0.1:8585/v1/racks/1",
"rel": "self"
}
]
}
}
Overcloud
----------
get Keystone URL for an overcloud
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
::
curl -X GET -H 'Content-Type:application/json' -H 'Accept: application/json' http://0.0.0.0:8585/v1/overclouds/cloudname
response
^^^^^^^^
::
{
"stack_name": "cloudname",
"links": [
{
"rel": "keystone",
"href": "http://192.0.2.5:5000/v2.0/"
}
]
}
`back to top <#index>`_