diff options
author | Devananda van der Veen <devananda.vdv@gmail.com> | 2016-08-09 14:36:08 -0700 |
---|---|---|
committer | Devananda van der Veen <devananda.vdv@gmail.com> | 2016-08-21 11:43:30 -0700 |
commit | 28a399a13c25ef7387cd0effc78d10f92c083c81 (patch) | |
tree | f55ff32aca30ccf60ebfeedd16dbf791a325477b /api-ref/regenerate-samples.sh | |
parent | 494651de1f3f99f260b71c27c5ae2bc4d3015c3e (diff) | |
download | ironic-28a399a13c25ef7387cd0effc78d10f92c083c81.tar.gz |
Update api-ref for v1.22
This commit does several things, which were just easier to do together.
- Adds a new "misc" page describing the /v1/lookup and /v1/heartbeat
resources.
- Adds descriptions of the node.resource_class and
node.network_interface fields that were introduced into the API but
not into the documentation.
- Introduces a new script, api-ref/regenerate-samples.sh, which can be
used with Ironic to automate the generation of most of the sample files
used in the api-ref documententation.
- Corrects several errors in the sample JSON files that rendered errors
when using them with curl for POST, PUT, or PATCH.
- Uses the aforementioned regenerate-samples.sh script to regenerate
most of the JSON result samples, ensuring that they are all up to date
with the v1.22 API microversion.
- Removes a few old/incorrect "Error Code" listings.
- Updates the index page to remove extraneous wording.
Change-Id: I764cbb43be15f05ba681de6ce1be1ae7c022173d
Diffstat (limited to 'api-ref/regenerate-samples.sh')
-rwxr-xr-x | api-ref/regenerate-samples.sh | 171 |
1 files changed, 171 insertions, 0 deletions
diff --git a/api-ref/regenerate-samples.sh b/api-ref/regenerate-samples.sh new file mode 100755 index 000000000..ac524867c --- /dev/null +++ b/api-ref/regenerate-samples.sh @@ -0,0 +1,171 @@ +#!/bin/bash + +set -e -x + +if [ ! -x /usr/bin/jq ]; then + echo "This script relies on 'jq' to process JSON output." + echo "Please install it before continuing." + exit 1 +fi + +OS_AUTH_TOKEN=$(openstack token issue | grep ' id ' | awk '{print $4}') +IRONIC_URL="http://127.0.0.1:6385" + +export OS_AUTH_TOKEN IRONIC_URL + +function GET { + # GET $RESOURCE + curl -s -H "X-Auth-Token: $OS_AUTH_TOKEN" \ + -H 'X-OpenStack-Ironic-API-Version: 1.22' \ + ${IRONIC_URL}/$1 | jq -S '.' +} + +function POST { + # POST $RESOURCE $FILENAME + curl -s -H "X-Auth-Token: $OS_AUTH_TOKEN" \ + -H 'X-OpenStack-Ironic-API-Version: 1.22' \ + -H "Content-Type: application/json" \ + -X POST --data @$2 \ + ${IRONIC_URL}/$1 | jq -S '.' +} + +function PATCH { + # POST $RESOURCE $FILENAME + curl -s -H "X-Auth-Token: $OS_AUTH_TOKEN" \ + -H 'X-OpenStack-Ironic-API-Version: 1.22' \ + -H "Content-Type: application/json" \ + -X PATCH --data @$2 \ + ${IRONIC_URL}/$1 | jq -S '.' +} + +function PUT { + # PUT $RESOURCE $FILENAME + curl -s -H "X-Auth-Token: $OS_AUTH_TOKEN" \ + -H 'X-OpenStack-Ironic-API-Version: 1.22' \ + -H "Content-Type: application/json" \ + -X PUT --data @$2 \ + ${IRONIC_URL}/$1 +} + +pushd source/samples + +########### +# ROOT APIs +GET '' > api-root-response.json + +GET 'v1' > api-v1-root-response.json + + +########### +# DRIVER APIs +GET v1/drivers > drivers-list-response.json +GET v1/drivers/agent_ipmitool > driver-get-response.json +GET v1/drivers/agent_ipmitool/properties > driver-property-response.json +GET v1/drivers/agent_ipmitool/raid/logical_disk_properties > driver-logical-disk-properties-response.json + +GET v1/drivers/agent_ipmitool/vendor_passthru/methods > driver-passthru-methods-response.json + + + +######### +# CHASSIS + +POST v1/chassis chassis-create-request.json > chassis-show-response.json +CID=$(cat chassis-show-response.json | grep '"uuid"' | sed 's/.*"\([0-9a-f\-]*\)",*/\1/') +if [ "$CID" == "" ]; then + exit 1 +else + echo "Chassis created. UUID: $CID" +fi + +GET v1/chassis > chassis-list-response.json + +GET v1/chassis/detail > chassis-list-details-response.json + +PATCH v1/chassis/$CID chassis-update-request.json > chassis-update-response.json + +# skip GET /v1/chassis/$UUID because the response is same as POST + + +####### +# NODES + +# Create a node with a real driver, but missing ipmi_address, +# then do basic commands with it +POST v1/nodes node-create-request.json > node-create-response.json +NID=$(cat node-create-response.json | grep '"uuid"' | sed 's/.*"\([0-9a-f\-]*\)",*/\1/') +if [ "$NID" == "" ]; then + exit 1 +else + echo "Node created. UUID: $NID" +fi + +# get the list of passthru methods from agent* driver +GET v1/nodes/$NID/vendor_passthru/methods > node-vendor-passthru-response.json + +# Change to the fake driver and then move the node into the AVAILABLE +# state without saving any output. +# NOTE that these three JSON files are not included in the docs +PATCH v1/nodes/$NID node-update-driver.json +PUT v1/nodes/$NID/states/provision node-set-manage-state.json +PUT v1/nodes/$NID/states/provision node-set-available-state.json + +GET v1/nodes/$NID/validate > node-validate-response.json + +PUT v1/nodes/$NID/states/power node-set-power-off.json +GET v1/nodes/$NID/states > node-get-state-response.json + +GET v1/nodes > nodes-list-response.json +GET v1/nodes/detail > nodes-list-details-response.json +GET v1/nodes/$NID > node-show-response.json + +# Put the Node in maintenance mode, then continue doing everything else +PUT v1/nodes/$NID/maintenance node-maintenance-request.json + +########### +# PORTS + +# Before we can create a port, we must +# write NODE ID into the create request document body +sed -i "s/.*node_uuid.*/ \"node_uuid\": \"$NID\",/" port-create-request.json + +POST v1/ports port-create-request.json > port-create-response.json +PID=$(cat port-create-response.json | grep '"uuid"' | sed 's/.*"\([0-9a-f\-]*\)",*/\1/') +if [ "$PID" == "" ]; then + exit 1 +else + echo "Port created. UUID: $PID" +fi + +GET v1/ports > port-list-respone.json +GET v1/ports/detail > port-list-detail-response.json +PATCH v1/ports/$PID port-update-request.json > port-update-response.json + +# skip GET $PID because same result as POST +# skip DELETE + +################ +# NODE PORT APIs + +GET v1/nodes/$NID/ports > node-port-list-response.json +GET v1/nodes/$NID/ports/detail > node-port-detail-response.json + + +############ +# LOOKUP API + +GET v1/lookup?node_uuid=$NID > lookup-node-response.json + + +##################### +# NODES MANAGEMENT API +# These need to be done while the node is in maintenance mode, +# and the node's driver is "fake", to avoid potential races +# with internal processes that lock the Node + +# this corrects an intentional ommission in some of the samples +PATCH v1/nodes/$NID node-update-driver-info-request.json > node-update-driver-info-response.json + +GET v1/nodes/$NID/management/boot_device/supported > node-get-supported-boot-devices-response.json +PUT v1/nodes/$NID/management/boot_device node-set-boot-device.json +GET v1/nodes/$NID/management/boot_device > node-get-boot-device-response.json |