To perform a power action (except for reset) on a VM using the API:
Perform a GET request to obtain the VM object and find the VM state link
Create a virtualmachinestate object
Send a PUT request to the VM state link
...
Here are some examples of virtualmachinestate objects and notes about changing VM states
Hard power off
Code Block {"state": "OFF"}
When you perform a power off via API, the response will include a link where you can monitor the progress of this operation. For an example of a hard power off, seeĀ https://wiki.abiquo.com/api/latest/VirtualMachinesResource.html#change-the-state-of-a-virtual-machine
Graceful shutdown
Code Block {"state": "OFF", "gracefulShutdown": true}
To perform a graceful shutdown, your VM will need to have guest extensions installed on it. After an operation completes, you can view the status of the task by going to the link in the accepted request link of the response. In this case, the graceful shutdown was successful.
Code Block curl -X PUT 'https://nardo40.bcn.abiquo.com:443/api/cloud/virtualdatacenters/2486/virtualappliances/2990/virtualmachines/19454/state' \ -k --verbose \ -H 'Accept: application/vnd.abiquo.acceptedrequest+json; version=5.0' \ -H 'Content-Type: application/vnd.abiquo.virtualmachinestate+json; version=5.0' \ -d '{"state": "OFF", "gracefulShutdown": true}' \ -u user:password | jq .
Code Block { "taskId": "d62be542-f34c-4fed-b9f8-6443f2db4cc1", "userId": "10", "type": "SHUTDOWN", "ownerId": "19454", "state": "FINISHED_SUCCESSFULLY", "creationTimestamp": 1596040226, "timestamp": 1596040226, "jobs": { "links": [], "collection": [ { "id": "d62be542-f34c-4fed-b9f8-6443f2db4cc1.2cd94a0c-179d-4506-a71d-fabaf29a4d43", "parentTaskId": "d62be542-f34c-4fed-b9f8-6443f2db4cc1", "type": "SHUTDOWN", "description": "Shutdown task's shutdown on virtual machine with id 19454", "state": "DONE", "rollbackState": "UNKNOWN", "creationTimestamp": 1596040226, "timestamp": 1596040226, "links": [] } ] }, "links": [ { "rel": "self", "href": "https://nardo40.bcn.abiquo.com:443/api/cloud/virtualdatacenters/2486/virtualappliances/2990/virtualmachines/19454/tasks/d62be542-f34c-4fed-b9f8-6443f2db4cc1" }, { "rel": "parent", "href": "https://nardo40.bcn.abiquo.com:443/api/cloud/virtualdatacenters/2486/virtualappliances/2990/virtualmachines/19454/tasks" }, { "rel": "result", "type": "application/vnd.abiquo.virtualmachine+json", "href": "https://nardo40.bcn.abiquo.com:443/api/cloud/virtualdatacenters/2486/virtualappliances/2990/virtualmachines/19454" }, { "title": "user", "rel": "user", "type": "application/vnd.abiquo.user+json", "href": "https://nardo40.bcn.abiquo.com:443/api/admin/enterprises/336/users/10" }, { "title": "ABQ_2fb11009-8157-4d61-915d-40fa45f440ac", "rel": "virtualmachine", "type": "application/vnd.abiquo.virtualmachine+json", "href": "https://nardo40.bcn.abiquo.com:443/api/cloud/virtualdatacenters/2486/virtualappliances/2990/virtualmachines/19454" } ] }
Power on
Code Block {"state": "ON"}
Pause
Code Block {"state": "PAUSED"}
Azure power off and deallocate
Azure has two power off states - powered off and deallocated.
To power off a VM in Azure via the Abiquo API, use the graceful shutdown
To deallocate a VM in Azure via the Abiquo API, use the hard power off
The deallocated VM will have a "deallocated" attribute that is set to "true".
To reset a VM using the API, use a POST request to the reset action link. If you are using a test environment, you may wish to add the --insecure option.
cURL:
Code Block |
---|
curl -X POST 'https://nardo40.bcn.abiquo.com:443/api/cloud/virtualdatacenters/2486/virtualappliances/2990/virtualmachines/19454/action/reset' \ -k --verbose \ -H 'Accept: application/vnd.abiquo.acceptedrequest+json; version=5.0' \ -u user:password | jq . |
...