============= 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>`_