Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

The VM state link is a link in the VM object with the "rel" attribute set to state. The "title" attribute contains the current state. You can send a PUT request of a virtualmachine state object to the link (in the "href" attribute) to change the power state of the VM.

Code Block
    {
      "hreftitle": "https://mjsabiquo.bcn.abiquo.com:443/api/cloud/virtualdatacenters/2/virtualappliances/1/virtualmachines/47/stateON",
      "typerel": "application/vnd.abiquo.virtualmachinestate+jsonstate",
      "reltype": "stateapplication/vnd.abiquo.virtualmachinestate+json",
      "titlehref": "ONhttps://nardo40.bcn.abiquo.com:443/api/cloud/virtualdatacenters/2486/virtualappliances/2990/virtualmachines/19454/state"
    }, 

...


Here are some examples of virtualmachinestate objects and notes about changing VM states

  • Hard power off

    Code Block
    {"state": "OFF"}

    Graceful shutdown

    Code Block
    {"state": "OFF", "gracefulShutdown": true}

    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".

Example of VM hard power off via API

...

  • When you perform a power off via API, the response will include a link where you can monitor the progress of this operation.

...

Example of failed graceful shutdown

  • 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.

...

  • Expand
    titleClick here to show or hide the request example


    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": 

...

Reset a VM using the API

  • "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.

Expand

cURL:

Code Block
curl -X POST http'https://mjsabiquonardo40.bcn.abiquo.com:443/api/cloud/virtualdatacenters/22486/virtualappliances/12990/virtualmachines/4719454/action/reset' \ 
	-k --verbose \
-H 'Accept: application/vnd.abiquo.acceptedrequest+json; version=5.0' \ 
	
-u user:password --verbose | jq . 

Success status code: 202

Request payload:

--none--

Response payload:

Code Block
{
  "message": "You can keep track of the progress in the link",
  "links": [
    {
      "title": "status",
      "rel": "status",
      "type": "application/vnd.abiquo.task+json",
      "href": "https://mjsabiquonardo40.bcn.abiquo.com:443/api/cloud/virtualdatacenters/22486/virtualappliances/12990/virtualmachines/4719454/tasks/af40013cedec6cf1-ed148874-4872451d-8906a4c0-0dc698df46c857f4c24da371"
    }
  ]
}