Cloud Panel

Change the disk

POST/api/v1/volumes/{disk_uuid}/change-class

Moves the volume between shared and dedicated while it is in use. The data stays in place and the new price applies from the next hour.

Parameters

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

Request body

FieldTypeDescription
storage_class_idintegerrequiredThe new disk id, from List disks

Example request

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

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": "class_change_queued",
  "size_gb": 100,
  "storage_class_id": 19
}

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
400A disk the volume cannot move to, or the one it has
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