ISO Images

Introduction

Installing a guest operating system is a very common task upon VM creation, and in order to reduce deployment time, we have included the ability of mounting an ISO image right after a VM has been created, so users can power on the VM and start installing the desired OS without remotely mounting the ISO image, which depending of user's bandwidth, could take longer because it has to transmit the ISO file contents to the VM. 

On this page:

Our ISO image catalog is composed by more than 220 ISO images (and growing) stored within our virtual environment to make a faster VM-ISO interaction, where users can pick and choose the most common Linux distributions, Windows, Solaris, etc. or any other Software like SQL Server.

The following table shows a brief description and HTTP methods allowed to interact with ISO images available to customers.

ResourceURIDescriptionGETPOSTPUTPATCHOPTIONS
Public ISO images/isoCD/DVD iso images available to customers.(tick) 


(tick)
Personal ISO images/user/image/isoCD/DVD ISO images in user's personal store(tick)

(tick)

TK stores the Cloud API Token generated as a result of the following POST request to the /auth/request-token resource:

curl -X POST https://vss-api.eis.utoronto.ca/auth/request-token -u <username>

For example, extracting the token with the jq command:

TK=$(curl -X POST https://vss-api.eis.utoronto.ca/auth/request-token -u <username> | jq -r '.token')

List Personal ISOs

In order to list available ISO images in your personal https://vskey-stor.eis.utoronto.ca account you should make a GET request to the endpoint /v2/user/image/iso passing your access token.

The following examples implements HTTPie and CURL to list available ISO images:

http GET "https://vss-api.eis.utoronto.ca/v2/user/image/iso" "Authorization: Bearer $TK"

curl -H "Authorization: Bearer $TK" -X GET "https://vss-api.eis.utoronto.ca/v2/user/image/iso"
Response Body
{
    "_links": {
        "self": "https://vss-api.eis.utoronto.ca/v2/user/image/iso",
        "user": "https://vss-api.eis.utoronto.ca/v2/user/image"
    },
    "data": [
        {
            "created_on": "2017-11-17 13:51:31 EST",
            "data_store": "vssUser-xfers",
            "id": 223,
            "name": "501219a5-a563-787c-f334-e7b65e829dca-ud.iso",
            "path": "[vssUser-xfers] josem/config-drive/501219a5-a563-787c-f334-e7b65e829dca-ud.iso",
            "public": false,
            "updated_on": "2017-11-17 13:51:31 EST"
        },
        {
            "created_on": "2017-11-17 13:51:31 EST",
            "data_store": "vssUser-xfers",
            "id": 224,
            "name": "50128758-774e-a3df-7137-5b6aa38aa760-ud.iso",
            "path": "[vssUser-xfers] josem/config-drive/50128758-774e-a3df-7137-5b6aa38aa760-ud.iso",
            "public": false,
            "updated_on": "2017-11-17 13:51:31 EST"
        }
    ],
    "meta": {
        "count": 2,
        "time": "0.00372s",
        "user": "josem"
    }
}

Sync personal ISOS

Before listing personal ISOs, please be sure you have uploaded the desired file to https://vskey-stor.eis.utoronto.ca and then execute a Synchronization task as follows:

http PATCH https://vss-api.eis.utoronto.ca/v2/user/image/iso "Authorization: Bearer $TK"

curl -H "Authorization: Bearer $TK" -X PATCH "https://vss-api.eis.utoronto.ca/v2/user/image/iso"

A synchronization task should be submitted and your ISO images should appear momentaneously on /v2/user/image/iso

List Public ISOs

In order to list available ISO images you should make a GET request to the endpoint /v2/iso passing your access token. As a result, you will get list of ISO images URL reference.

The following examples implements HTTPie and CURL to list available ISO images:

http GET "https://vss-api.eis.utoronto.ca/v2/iso" "Authorization: Bearer $TK"

curl -H "Authorization: Bearer $TK" -X GET "https://vss-api.eis.utoronto.ca/v2/iso"
Response Body
{
    "data": [
        "https://vss-api.eis.utoronto.ca/v2/iso/1",
        "https://vss-api.eis.utoronto.ca/v2/iso/2",
        "https://vss-api.eis.utoronto.ca/v2/iso/3",
        "https://vss-api.eis.utoronto.ca/v2/iso/4",
        "https://vss-api.eis.utoronto.ca/v2/iso/5",
        "https://vss-api.eis.utoronto.ca/v2/iso/6",
        "https://vss-api.eis.utoronto.ca/v2/iso/7",
        "https://vss-api.eis.utoronto.ca/v2/iso/8",
        "https://vss-api.eis.utoronto.ca/v2/iso/9",
        "https://vss-api.eis.utoronto.ca/v2/iso/10"
    ],
    "meta": {
        "_link": {
            "self": "https://vss-api.eis.utoronto.ca/v2/iso"
        },
        "count": 10,
        "pages": {
            "first_url": "https://vss-api.eis.utoronto.ca/v2/iso?per_page=10&page=1",
            "last_url": "https://vss-api.eis.utoronto.ca/v2/iso?per_page=10&page=23",
            "next_url": "https://vss-api.eis.utoronto.ca/v2/iso?per_page=10&page=2",
            "page": 1,
            "pages": 23,
            "per_page": 10,
            "prev_url": null,
            "total": 224
        },
        "time": "0.00862s",
        "user": "josem"
    }
}

Expand

You can also expand given resources by adding the parameter to the query string expand=1 as follows:

http GET "https://vss-api.eis.utoronto.ca/v2/iso?expand=1" "Authorization: Bearer $TK"

curl -H "Authorization: Bearer $TK" -X GET "https://vss-api.eis.utoronto.ca/v2/iso?expand=1"
Response Body
{
    "data": [
	...
        {
            "created_on": "2017-11-17 13:43:11 EST",
            "data_store": "vss-ISOs",
            "id": 10,
            "name": "MS_Win2003std_R2_SP2_DISK1.iso",
            "path": "[vss-ISOs] Windows/Win2003/MS_Win2003std_R2_SP2_DISK1.iso",
            "public": true,
            "updated_on": "2017-11-17 13:43:11 EST"
        }
	...
    ],
    "meta": {
        "_link": {
            "self": "https://vss-api.eis.utoronto.ca/v2/iso"
        },
        "count": 10,
        "pages": {
            "first_url": "https://vss-api.eis.utoronto.ca/v2/iso?per_page=10&page=1",
            "last_url": "https://vss-api.eis.utoronto.ca/v2/iso?per_page=10&page=23",
            "next_url": "https://vss-api.eis.utoronto.ca/v2/iso?per_page=10&page=2",
            "page": 1,
            "pages": 23,
            "per_page": 10,
            "prev_url": null,
            "total": 224
        },
        "time": "0.00862s",
        "user": "josem"
    }
}

Paging

All requests to the /iso URL are paginated. The response body includes a 'meta.pages' key with everything to navigate through the results, for instance:

KeyDescription
first_urlContain the URLs to navigate through results.
last_url
prev_url
next_url
pageCurrent page
pagesTotal number of pages
per_pageResults per page. Maximum 250; Default 10.
totalTotal number of results

Results per page can be set by including the parameter in the URL query, so we can get the desired number of elements per page, for example:

http GET "https://vss-api.eis.utoronto.ca/v2/iso?per_page=250&expand=1" "Authorization: Bearer $TK"
curl -X GET -H "Authorization: Bearer $TK" "https://vss-api.eis.utoronto.ca/v2/iso?per_page=250&expand=1"

Filtering

ISOs can be filtered by adding the filter argument to the query string in the following format:

filter=<field_name>,<operator>,<value>

Operators can be:

OperatorDescription
eqEquals
neNot equal
ltLower than
leLower equal
gtGreater than
geGreater equal
likeMatching pattern
inMatch value in many items separated by commas

A resource can be filtered by as many attributes the request has, for instance /iso can be filtered by name, path, created_on, updated_on, etc. Thus, the following example will filter only CentOS images:

http GET "https://vss-api.eis.utoronto.ca/v2/iso?per_page=250&expand=1&filter=name,like,CentO%" "Authorization: Bearer $TK"

Sorting

ISO images can be sorted by adding the sort parameter in the URL query string in the following format:

sort=<field_name>,<asc|desc>

The following example shows how to filter by date (latest first):

http GET "https://vss-api.eis.utoronto.ca/v2/iso?per_page=250&expand=1&filter=name,like,CentO%&sort=name,desc" "Authorization: Bearer $TK"

curl -X GET -H "Authorization: Bearer $TK" "https://vss-api.eis.utoronto.ca/v2/iso?per_page=250&expand=1&filter=name,like,CentO%&sort=name,desc"