For this tutorial, we will pretend there's a need to change the disk layout of a virtual machine (recently provisioned) based in the following statements:
- Disk 1 needs to be resized from 1TB to 300GB
- Disk 2 needs to be resized from 250GB to 300GB
- New Disk 3 of 300GB needs to be added.
Prerequisites
- Valid access token.
- Access to Virtual Machine
Step-by-step guide
Get virtual machine ID, either moref or uuid using the search feature in the /vm resource:
http GET "https://vss-api.eis.utoronto.ca/v2/vm?name=like,%Frontend2%&short=1" "Authorization: Bearer $TK"
{
"_links": {
"self": "https://vss-api-dev.eis.utoronto.ca/v2/vm?filter=name,like,%25Frontend2%25&short=1"
},
"data": [
{
"hostname": null,
"ip_address": "",
"moref": "vm-2183",
"name": "2004T-Frontend2",
"power_state": "poweredOff",
"uuid": "50309a8a-88ca-5291-2ad3-63f2522c3f8e"
}
],
"meta": {
"count": 1,
"filter": "name,like,%Frontend2%",
"pages": {
"first_url": "https://vss-api-dev.eis.utoronto.ca/v2/vm?filter=name%2Clike%2C%25Frontend2%25&page=1&per_page=100&expand=True",
"last_url": "https://vss-api-dev.eis.utoronto.ca/v2/vm?filter=name%2Clike%2C%25Frontend2%25&page=1&per_page=100&expand=True",
"next_url": null,
"page": 1,
"pages": 1,
"per_page": 100,
"prev_url": null,
"total": 1
},
"time": "0.00804s",
"user": "jm"
}
}
Since vSphere does not support disk "shrinking" (unless the disk is cloned to a new target disk), we would need to remove Disk 1 and create a new Disk 1 of 300GB. This can be done as follows:
# HTTP DELETE method to the right disk resource will remove the disk
http DELETE "https://vss-api.eis.utoronto.ca/v2/vm/<vm-id>/disk/1" "Authorization: Bearer $TK"
# HTTP POST to disk 1 resource will create a new 300GB disk as
# specified in the attribute value
http POST "https://vss-api.eis.utoronto.ca/v2/vm/<vm-id>/disk" "Authorization: Bearer $TK" value:='[300]'
Verifying Disk 1 settings:
http GET "https://vss-api.eis.utoronto.ca/v2/vm/<vm_uuid>/disk/1" "Authorization: Bearer $TK"
{
"_links": {
"disk": "https://vss-api-dev.eis.utoronto.ca/v2/vm/vm-2183/disk",
"self": "https://vss-api-dev.eis.utoronto.ca/v2/vm/vm-2183/disk/1"
},
"data": [
{
"capacity_gb": 300,
"controller": {
"type": "LSI Logic",
"virtual_device_node": "SCSI controller 0:0"
},
"description": "314,572,800 KB",
"key": 2000,
"label": "Hard disk 1",
"shares": {
"level": "normal",
"shares": 1000
},
"unit": 1
}
],
"meta": {
"count": 1,
"time": "0.03733s",
"user": "jm"
}
}
Adding Disk 3 is done making a POST request to /vm/<vm_uuid>/disk resource:
http POST "https://vss-api.eis.utoronto.ca/v2/vm/<vm-id>/disk" "Authorization: Bearer $TK" value:='[300]'
Verifying new disk layout:
http GET "https://vss-api.eis.utoronto.ca/v2/vm/<vm-id>/disk" "Authorization: Bearer $TK"
{
"_links": {
"self": "https://vss-api.eis.utoronto.ca/v2/vm/<vm-id>/disk",
"vm": "https://vss-api.eis.utoronto.ca/v2/vm/<vm-id>"
},
"data": [
{
"_links": {
"self": "https://vss-api.eis.utoronto.ca/v2/vm/<vm-id>/disk/1"
},
"capacityGB": 300,
"unit": 1
},
{
"_links": {
"self": "https://vss-api.eis.utoronto.ca/v2/vm/<vm-id>/disk/2"
},
"capacityGB": 300,
"unit": 2"
},
{
"_links": {
"self": "https://vss-api.eis.utoronto.ca/v2/vm/<vm-id>/disk/3"
},
"capacityGB": 300,
"unit": 3
}
],
"meta": {
"count": 2,
"time": "0.05709s",
"user": "jm"
}
}
Related articles