Cloud Panel

Grow a volume

POST/api/v1/volumes/{disk_uuid}/resize

Grows the volume while it is in use. A volume cannot shrink. Grow the filesystem inside the server after it, for example with resize2fs or xfs_growfs.

Parameters

NameInDescription
disk_uuidpath, stringrequiredVolume id, from Create a volume or List volumes

Request body

FieldTypeDescription
new_size_gbintegerrequiredNew size, GB; bigger than now

Example request

curl -X POST "https://platform.serverscamp.com/api/v1/volumes/$DISK_UUID/resize" \
  -H "Authorization: Bearer $API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "new_size_gb": 200
  }'

Answer

Status 200 with this body.

FieldTypeDescription
disk_uuidstringrequired
statusstringrequiredresize_queued or class_change_queued: the change runs while the volume is in use
size_gbintegerrequiredSize after the change, GB
storage_class_idintegerrequiredDisk id after the change
{
  "disk_uuid": "c7a1e3f9-52b8-4d06-9e41-8b3f2a6d0c75",
  "status": "resize_queued",
  "size_gb": 200,
  "storage_class_id": 18
}

Wait until it is ready

The answer comes at once and the work runs in the background, usually for a few seconds. Get a volume shows how far it got in its state field.

Check the state

Ask Get a volume with the volume's id; the field to watch is state:

curl "https://platform.serverscamp.com/api/v1/volumes/$DISK_UUID" \
  -H "Authorization: Bearer $API_TOKEN"
stateWhat it means
creatingThe volume is being made; one from a backup also shows provision_phase and provision_pct
createdReady. With vm_uuid set it is attached to that server, without it the volume is free
attaching, detaching, resizingThe change runs
failedSomething went wrong. Write to support with the volume id

Wait in a loop

Ask every few seconds until the state is no longer one of the busy ones, and stop on failed.

# DISK_UUID: disk_uuid of the volume, from the answer above
BUSY=" pending queued creating provisioning attaching attach_queued detaching detach_queued resizing deleting deprovisioning delete_queued "
while true; do
  VOL=$(curl -s "https://platform.serverscamp.com/api/v1/volumes/$DISK_UUID" -H "Authorization: Bearer $API_TOKEN")
  STATE=$(echo "$VOL" | jq -r .state)
  echo "$STATE"
  case "$STATE" in failed|error) echo "volume $STATE"; exit 1;; esac
  case "$BUSY" in *" $STATE "*) ;; *) [ "$(echo "$VOL" | jq -r '.provision_phase // "ready"')" = ready ] && break;; esac
  sleep 5
done

The bash version needs jq.

Errors

StatusWhen
400Not bigger than now, or above the disk's largest size
401No token, or a token that is not valid
409The volume is busy
422The body or a parameter is not what the operation takes

Every operation can also answer 401 without a valid token. All errors