Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

Version 1 Next »

Scheduling changes provides flexibility to execute API actions at any given time. For instance, scheduling to automatically upgrade VMware Tools, or to Shutdown VM and then increase memory or CPU can be accomplished by just adding the schedule attribute to any PUT request in any virutal machine resource /vm/<resource>. This guide, will exemplify how to schedule the following actions:

  • Power Off VM
  • Add CPU
  • Add Memory
  • Power On VM

Prerequisites

  1. Valid access token
  2. Access to Virtual Machine.

Step-by-step guide

  1. Get virtual machine UUID using the search feature in the /vm resource:

    Request
    http -a $TK GET "https://vss-api.eis.utoronto.ca:8001/v2/vm?name=coreos0&summary"
    Response Body
    {
        "_links": {
            "api": "https://vss-api.eis.utoronto.ca:8001/v2/",
            "self": "https://vss-api.eis.utoronto.ca:8001/v2/vm"
        },
        "data": [
            {
                "_links": {
                    "self": "https://vss-api.eis.utoronto.ca:8001/v2/vm/<vm_uuid>"
                },
                "name": "1606T-coreos0",
                "uuid": "<vm_uuid>"
            }
        ],
        "meta": {
            "count": 1,
            "time": "1.13983s",
            "user": "jm"
        }
    }
  2. This would be a simple VM State change via a PUT request to /vm/<uuid>/state with the attribute value set to poweredOff but, by adding the schedule attribute will be added as a scheduled change. The following example will schedule its execution at 4:00am on 2016-07-13:

    http -a $TK PUT "https://vss-api.eis.utoronto.ca:8001/v2/vm/5012abcb-a9f3-e112-c1ea-de2fa9dab90a/state" value=poweredOff schedule='2016-07-13 04:00'

    The schedule attribute is expected to be in the following format: yyyy-mm-dd HH:MM

    Response from the API will provide feedback upon request. Please, make sure it state is Scheduled:

    Response Body
    {
        "data": {
            "_links": {
                "request": "https://vss-api.eis.utoronto.ca:8001/v2/request/change/114"
            },
            "message": "VM Change Request has been accepted for processing",
            "name": "Accepted",
            "state": "Scheduled",
            "status": 202
        },
        "meta": {
            "time": "0.86168s",
            "user": "jm"
        }
    }
  3. Then, memory and CPU updates could be executed five and seven minutes later:

    http -a $TK PUT "https://vss-api.eis.utoronto.ca:8001/v2/vm/5012abcb-a9f3-e112-c1ea-de2fa9dab90a/memory" value=3 schedule='2016-07-13 04:05'
    http -a $TK PUT "https://vss-api.eis.utoronto.ca:8001/v2/vm/5012abcb-a9f3-e112-c1ea-de2fa9dab90a/cpu" value=2 schedule='2016-07-13 04:07'
  4. Verifying your request has been successfully scheduled is also possible using the /request/change/<id> resource, for instance:

    Response Body
    {
        "_link": {
            "request": "https://vss-api.eis.utoronto.ca:8001/v2/request/change",
            "self": "https://vss-api.eis.utoronto.ca:8001/v2/request/change/116"
        },
        "data": {
            "_links": {
                "vm": "https://vss-api.eis.utoronto.ca:8001/v2/vm/5012abcb-a9f3-e112-c1ea-de2fa9dab90a"
            },
            "attribute": "cpu",
            "created_on": "2016-07-12 13:34:56 EDT",
            "id": 116,
            "message": {},
            "scheduled": true,                                   # scheduled OK
            "scheduled_datetime": "2016-07-13 04:07:00 EDT",     # scheduled OK
            "status": "Scheduled",
            "task_id": null,									 # task not created yet
            "updated_on": "2016-07-12 13:34:56 EDT",
            "user": {
                "_links": {
                    "self": "https://vss-api.eis.utoronto.ca:8001/v2/user"
                },
                "username": "jm"
            },
            "user_id": 1,
            "value": {
                "cpu": 2
            },
            "vm_name": "1606T-coreos0",
            "vm_uuid": "5012abcb-a9f3-e112-c1ea-de2fa9dab90a"
        },
        "meta": {
            "count": 15,
            "time": "0.01072s",
            "user": "jm"
        }
    }
  5. At this point just wait for the email confirmation or check periodically the status of the request.

  • No labels